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#

  1. Dashboard /registry → card → Import.
  2. POST /registry/items/<id>/import — backend fetches the raw URL with a 1h in-memory cache (avoids hammering raw.githubusercontent.com on repeat clicks).
  3. Backend INSERTs a row into the user's skills table with name = registry-<id> and the upstream content as skill_md. Re-importing the same entry upserts the row (ON CONFLICT).
  4. 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.