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 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)
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
8b61ce7fd723aae8e9249d42cffac776f42ab39630fbd4801a19aacb2eeac62c
|
|
| MD5 |
d82d4fc738e2db25fd5693c9a15f172d
|
|
| BLAKE2b-256 |
e3c885c9c8372538764c0ad0a9b162ee23efca84a37d76f2c911ad5eea4900c0
|
File details
Details for the file agentskillsmith-2.0.0-py3-none-any.whl.
File metadata
- Download URL: agentskillsmith-2.0.0-py3-none-any.whl
- Upload date:
- Size: 24.9 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.7.20
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
984d84b052fcede3cf9b5b69abc0d24b731e3803e197815e98a9e82b0af9eb5b
|
|
| MD5 |
5ca571974cab47c98ac2cc92a2b1ff15
|
|
| BLAKE2b-256 |
a5458257e7ff5ef8895ef4f40ba70883b36215e722756d8f013bc532c15acfa6
|