Registry
Community marketplace — curated SKILL.md files and Claude Code subagent markdowns from a few well-known GitHub repos. One click to import a snapshot into your /skills collection.
Sources (v1)#
- anthropics/skills — official Anthropic skill packs (docx, pdf, pptx, xlsx).
- VoltAgent/awesome-claude-code-subagents — 100+ specialised Claude Code subagents across categories (quality, security, languages, infrastructure, …). We cherry-pick the 12 highest-leverage ones for v1.
Sources are hardcoded in apps/api/internal/registry/catalogue.go. Adding new entries is one struct literal; user-configurable git repos are on the roadmap.
What "Import" does#
- Dashboard /registry → card → Import.
POST /registry/items/<id>/import— backend fetches the raw URL with a 1h in-memory cache (avoids hammering raw.githubusercontent.com on repeat clicks).- Backend INSERTs a row into the user's
skillstable withname = registry-<id>and the upstream content asskill_md. Re-importing the same entry upserts the row (ON CONFLICT). - Subagents land in the same skills table — the description gets a
[subagent imported from ...]prefix so you can spot them when listing.
Why one table#
Both SKILL.md and subagent .md use the same Markdown + YAML-frontmatter format. Treating them as one storage type means you can pick either one into an agent definition's skills array without controlum needing a second concept. The dashboard UI keeps them visually separated via the type tab.
Future: importing as an AgentDefinition#
We don't auto-create an AgentDefinition when you import a subagent. The reason: an AgentDefinition bundles many things (permission_mode, secrets, system prompt, skills) — a single markdown can't supply all of them, so we'd be guessing defaults. v2 will add a "Use as agent" button that opens the AgentDefinition editor prefilled with the imported skill referenced.
Limitations (v1)#
- Sources are hardcoded — no user-configurable repos yet.
- 1 MB body ceiling per fetch (catalogue entries are SKILL.md files, well under).
- Snapshot at import; no auto-update when upstream changes. Re-import to refresh.
- No per-machine sync from /registry — import first, then use the existing /docs/skills Sync flow to push to a daemon.