gsd-headless
Orchestrate GSD (Git Ship Done) projects programmatically via headless CLI. Use when an agent…
Create, debug, and iterate on GSD extensions (TypeScript modules adding tools, commands, event hooks, custom UI, and providers). Use when asked to build an extension, add a tool the LLM can call, register a slash command, hook into GSD events, create custom TUI components, or
$ npx -y skills add open-gsd/gsd-pi --skill create-gsd-extension --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
/create-gsd-extensionContext preview
The summary Claude sees to decide when to auto-load this skill.
Create, debug, and iterate on GSD extensions (TypeScript modules adding tools, commands, event hooks, custom UI, and providers). Use when asked to build an extension, add a tool the LLM can call, register a slash command, hook into GSD events, create custom TUI components, or
name: create-gsd-extension description: Create, debug, and iterate on GSD extensions (TypeScript modules adding tools, commands, event hooks, custom UI, and providers). Use when asked to build an extension, add a tool the LLM can call, register a slash command, hook into GSD events, create custom TUI components, or modify GSD behavior. Triggers on "create/build extension", "add a tool", "register command", "hook into gsd", "gsd plugin".
<essential_principles>
**Extensions are TypeScript modules** that hook into GSD's runtime (built on pi). They export a default function receiving `ExtensionAPI` and use it to subscribe to events, register tools/commands/shortcuts, and interact with the session.
**GSD extension paths (community/user-installed extensions):**
Note: `~/.gsd/agent/extensions/` is reserved for bundled extensions synced from the gsd-pi package. Community extensions placed there are silently ignored by the loader.
**The three primitives:**
1. **Events** — Listen and react (`pi.on("event", handler)`). Can block tool calls, modify messages, inject context. 2. **Tools** — Give the LLM new abilities (`pi.registerTool()`). LLM calls them autonomously. 3. **Commands** — Give users slash commands (`pi.registerCommand()`). Users type `/mycommand`.
**Non-negotiable rules:**
**Available imports:**
| Package | Purpose | |---------|---------| | `@gsd/pi-coding-agent` | `ExtensionAPI`, `ExtensionContext`, `Theme`, event types, tool utilities, `DynamicBorder`, `BorderedLoader`, `CustomEditor`, `highlightCode` | | `@sinclair/typebox` | `Type.Object`, `Type.String`, `Type.Number`, `Type.Optional`, `Type.Boolean`, `Type.Array` | | `@gsd/pi-ai` | `StringEnum` (required for string enums), `Type` re-export | | `@gsd/pi-tui` | `Text`, `Box`, `Container`, `Spacer`, `Markdown`, `SelectList`, `Input`, `matchesKey`, `Key`, `truncateToWidth`, `visibleWidth` | | Node.js built-ins | `node:fs`, `node:path`, `node:child_process`, etc. |
</essential_principles>
<routing> Based on user intent, route to the appropriate workflow:
**Building a new extension:**
**Adding capabilities to an existing extension:**
**Debugging an extension:**
**If user intent is clear from context, skip the question and go directly to the workflow.** </routing>
<reference_index> All domain knowledge in `references/`:
**Core architecture:** extension-lifecycle.md, events-reference.md **API surface:** extensionapi-reference.md, extensioncontext-reference.md **Capabilities:** custom-tools.md, custom-commands.md, custom-ui.md, custom-rendering.md **Patterns:** state-management.md, system-prompt-modification.md, compaction-session-control.md **Infrastructure:** model-provider-management.md, remote-execution-overrides.md, packaging-distribution.md, mode-behavior.md **Spec:** `docs/extension-sdk/manifest-spec.md` — manifest format, tiers, validation **Testing:** `docs/extension-sdk/testing.md` — mock patterns, test conventions **SDK:** `docs/extension-sdk/` — the authoritative gsd-pi extension guide **Gotchas:** key-rules-gotchas.md </reference_index>
<workflows_index> | Workflow | Purpose | |----------|---------| | create-extension.md | Build a new extension from scratch | | add-capability.md | Add tools, commands, hooks, UI to an existing extension | | debug-extension.md | Diagnose and fix extension issues | </workflows_index>
<success_criteria> Extension is complete when:
</success_criteria>
GSD Pi is a local-first coding agent for planning, implementing, verifying, and tracking project work from the command line.
Repo: open-gsd/gsd-pi
Orchestrate GSD (Git Ship Done) projects programmatically via headless CLI. Use when an agent…
Audit and improve web accessibility following WCAG 2.1 guidelines. Use when asked to "improve…
Browser automation CLI for AI agents. Use when interacting with websites — navigating pages,…
Design or review an HTTP/REST/GraphQL API for versioning, pagination, error shapes,…
Apply modern web development best practices for security, compatibility, and code quality.…
Ask a quick side question about your current work without derailing the main task. Answers…