Skills
Skills are markdown files with YAML frontmatter that define reusable agent behaviors — coding standards, creative workflows, review checklists. The agent reads thedescription during discovery and pulls in the full body only when a task matches, so skills extend what the agent knows without bloating every prompt.
SKILL.md Format
A skill is a directory with aSKILL.md file — frontmatter followed by markdown instructions:
Registration Lifecycle
- Author — write
SKILL.mdin a skill directory (e.g.scripts/skills/<slug>/SKILL.md) - Publish — run
pnpm exec tsx scripts/skills/publish-skill.ts <slug>which POSTs to StackNet’s/v1/skillsendpoint. The server computes a LODE fingerprint, deducts registration cost (1000× multiplier), publishes askill/<name>rack repo, and pins to IPFS. - Discover — the rack surfaces the skill in
/studio/skillsand HQ’sSkillsLibrary. Theis_publicflag is flipped totrueon publish so the network can discover it. - Track — each invocation fires a
POST /skills/:id/usageincrement (best-effort, fire-and-forget) sousage_countreflects real activity.
Discovery Scopes
Skills are discovered in priority order — higher scope wins on name collision:
Geoff Code scans local directories; the Studio and HQ UIs browse rack-published skills. See Geoff Code Skills for the local file layout.
Invocation Patterns
- Slash command —
/skill:<name>in Geoff Code, optionally followed by instructions - Automatic — the agent activates a skill when a task matches its
description - Studio Flow — add skills to a cart at
/studio/skills, then “Use in studio” opens a chat seeded with all selected skills - MCP —
skills_invokewith a skill ID and input text; see MCP Tools Reference - @-mention — in Geoff chat,
@blueprint-lyricsresolves to the skill via theSKILL_IDSregistry inlib/skills.ts
Publishing Workflow
The publish script (scripts/skills/publish-skill.ts) handles the full flow:
- Reads
SKILL.md, parses frontmatter (requiresname+description) - POSTs
{ name, description, skill_md, content_type, category, tags, version }to/v1/skills - Flips
is_public: trueviaPUT /skills/:idso the skill is network-discoverable - Outputs the
skill_id— add it toSKILL_IDSinlib/skills.tsto wire a stable handle
--dry-run to preview without publishing, or --private to keep a skill staged privately.
Architecture
lib/skills.ts— registry mapping friendly names to StackNet skill UUIDs (SKILL_IDS) and label helpers for @-mention pillslib/skills-client.ts— createsSkillsClientinstances (client + server) via@stacknet/stacks, pointing at the StackNet base URLlib/stacknet-skills.ts— server-side fetch + cache layer. CachesSkillRecord(including fullskill_md) for 5 minutes. Usage tracking viabumpSkillUsage()is fire-and-forget — never blocks the user-visible stream- Studio UI (
/studio/skills) — shopping-cart “Flow” pattern browsing rack repos withkind: skill, filterable by category tags - HQ UI (
/hq/skills) — three-paneSkillsLibraryfrom@stacknet/agentutils, driven by the workspace’s default catalog - MCP server — exposes
skills_list,skills_get,skills_invoke,skills_publishwrapping the catalog API
Related
Geoff Code Skills
Local skill discovery, directory layout, and activation in the CLI.
MCP Tools Reference
Skills tools: list, get, invoke, publish.