Skip to main content

Convert GitHub repos and documentation websites into Agent Skills

Project description

SkillSmith

Convert GitHub repositories and documentation websites into Agent Skills — structured knowledge documents that teach AI agents how to use a library or API effectively.

How it works

SkillSmith runs a 5-phase pipeline designed to handle large documentation sources without hitting LLM output limits:

Ingest (GitHub API / BFS crawler)
  ↓
Phase 1  Map     — parallel LLM summarization of each page
                   reference pages keep original content (no compression)
  ↓
Phase 2  Reduce  — merge summaries into a unified overview
  ↓
Phase 3  Plan    — decide which files to generate (SKILL.md sections, references/, scripts/)
  ↓
Phase 4  Fan-out — Batch A: reference files (parallel, full token budget each)
                   Batch B: SKILL.md body + scripts (parallel, body knows what refs exist)
  ↓
Phase 5  Assemble → write to disk

Each generated file gets its own full LLM output budget instead of all files competing for a single 8k-token response.

Installation

git clone https://github.com/your-org/skillsmith
cd skillsmith
uv sync

Requires Python 3.11+ and an Anthropic API key (or any OpenAI-compatible endpoint).

Usage

Interactive chat

uv run skillsmith
SkillSmith — Convert repos and docs into Agent Skills
You: Create a skill from https://github.com/anthropics/anthropic-sdk-python
You: Generate a skill from https://docs.pydantic.dev --output ./my-skills

Single message

# From a GitHub repo
uv run skillsmith -m "Create a skill from https://github.com/anthropics/anthropic-sdk-python"

# From a documentation site
uv run skillsmith -m "Generate a skill from https://docs.pydantic.dev" --output ./skills/

# With a custom name
uv run skillsmith -m "Create a skill named fastapi-auth from https://fastapi.tiangolo.com/tutorial/security/"

MCP server

Expose SkillSmith as an MCP tool so other agents (Claude Code, Cursor, etc.) can generate skills on demand:

uv run skillsmith serve --port 8000

Available MCP tools:

  • create_skill_from_github(url, output_dir, name?) — generate from a GitHub repo
  • create_skill_from_docs(url, output_dir, depth?, name?) — generate from a docs site
  • list_skills(directory) — list existing skill folders

Configuration

Priority: CLI flags > environment variables > ~/.skillsmith/config.toml

CLI flag Env var Config key Default
--api-key SKILLSMITH_API_KEY api_key (Anthropic default)
--base-url SKILLSMITH_BASE_URL base_url "" (use Anthropic)
--model SKILLSMITH_MODEL model claude-opus-4-5
--output SKILLSMITH_OUTPUT_DIR output_dir ~/skills

~/.skillsmith/config.toml

api_key = "sk-ant-..."
model   = "claude-opus-4-5"
output_dir = "~/skills"

OpenAI-compatible endpoints

Set base_url to use any OpenAI-compatible API (Ollama, vLLM, OpenRouter, etc.):

SKILLSMITH_BASE_URL=https://api.openai.com/v1 \
SKILLSMITH_MODEL=gpt-4o \
uv run skillsmith -m "Create a skill from https://github.com/openai/openai-python"

Output structure

Each skill is written as a folder following the Agent Skills specification:

skills/
└── anthropic-sdk/
    ├── SKILL.md              # Frontmatter + instructions (<500 lines)
    ├── references/
    │   ├── api-reference.md  # Loaded on demand by the agent
    │   └── error-codes.md
    └── scripts/
        ├── quickstart.py     # Self-contained, runnable
        └── streaming.py

SKILL.md includes cross-references to companion files:

See [API Reference](references/api-reference.md) for full method signatures.
Run scripts/quickstart.py to get started.

Project structure

src/skillsmith/
├── main.py           # CLI entry point (typer)
├── config.py         # Config loading + LLM factory
├── models.py         # Pydantic: Page, ContentBundle, SkillDraft
├── generator.py      # 5-phase Map-Reduce pipeline
├── writer.py         # Write SkillDraft to disk
├── chat.py           # Terminal UI (rich + prompt_toolkit)
├── mcp_server.py     # MCP server (fastmcp)
├── agent/
│   ├── graph.py      # LangGraph StateGraph
│   └── tools.py      # @tool wrappers for agent use
└── ingestors/
    ├── github.py     # GitHub REST API (README + docs/ + root .md files)
    └── docs.py       # BFS crawler (httpx + BeautifulSoup + markdownify)

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

agentskillsmith-2.0.0.tar.gz (281.1 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

agentskillsmith-2.0.0-py3-none-any.whl (24.9 kB view details)

Uploaded Python 3

File details

Details for the file agentskillsmith-2.0.0.tar.gz.

File metadata

  • Download URL: agentskillsmith-2.0.0.tar.gz
  • Upload date:
  • Size: 281.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.7.20

File hashes

Hashes for agentskillsmith-2.0.0.tar.gz
Algorithm Hash digest
SHA256 8b61ce7fd723aae8e9249d42cffac776f42ab39630fbd4801a19aacb2eeac62c
MD5 d82d4fc738e2db25fd5693c9a15f172d
BLAKE2b-256 e3c885c9c8372538764c0ad0a9b162ee23efca84a37d76f2c911ad5eea4900c0

See more details on using hashes here.

File details

Details for the file agentskillsmith-2.0.0-py3-none-any.whl.

File metadata

File hashes

Hashes for agentskillsmith-2.0.0-py3-none-any.whl
Algorithm Hash digest
SHA256 984d84b052fcede3cf9b5b69abc0d24b731e3803e197815e98a9e82b0af9eb5b
MD5 5ca571974cab47c98ac2cc92a2b1ff15
BLAKE2b-256 a5458257e7ff5ef8895ef4f40ba70883b36215e722756d8f013bc532c15acfa6

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page