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 repocreate_skill_from_docs(url, output_dir, depth?, name?)— generate from a docs sitelist_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)
Release files for agentskillsmith 2.0.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| agentskillsmith-2.0.0.tar.gz | 281.1 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| agentskillsmith-2.0.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 305.9 kB
Release files / agentskillsmith-2.0.0.tar.gz
| Download URL | agentskillsmith-2.0.0.tar.gz |
|---|---|
| Size | 281.1 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
8b61ce7fd723aae8e9249d42cffac776f42ab39630fbd4801a19aacb2eeac62c
|
|
BLAKE2b-256 checksum How to use checksums |
e3c885c9c8372538764c0ad0a9b162ee23efca84a37d76f2c911ad5eea4900c0
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.7.20
|
Release files / agentskillsmith-2.0.0-py3-none-any.whl
| Download URL | agentskillsmith-2.0.0-py3-none-any.whl |
|---|---|
| Size | 24.9 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
984d84b052fcede3cf9b5b69abc0d24b731e3803e197815e98a9e82b0af9eb5b
|
|
BLAKE2b-256 checksum How to use checksums |
a5458257e7ff5ef8895ef4f40ba70883b36215e722756d8f013bc532c15acfa6
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.7.20
|