name: create-gsd-extension description: Créer, déboguer et itérer sur des extensions GSD (modules TypeScript qui ajoutent des outils, commandes, event hooks, UI personnalisée et providers à GSD). Utiliser quand on demande de construire une extension, d'ajouter un outil que le LLM peut appeler, d'enregistrer une slash command, de se connecter à des événements GSD, de créer des composants TUI personnalisés ou de modifier le comportement de GSD. Se déclenche sur « create extension », « build extension », « add a tool », « register command », « hook into gsd », « custom tool », « gsd plugin », « gsd extension ».
tags: [gsd-2, skills, create-gsd-extension, debugging, typescript, llm]
------|---------|
| @mariozechner/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 |
| @mariozechner/pi-ai | StringEnum (required for string enums), Type re-export |
| @mariozechner/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> Selon l'intention de l'utilisateur, router vers le workflow approprié :
Construire une nouvelle extension :
- « Create an extension », « build a tool », « I want to add a command » →
workflows/create-extension.md
Ajouter des capacités à une extension existante :
- « Add a tool to my extension », « add event hook », « add custom rendering » →
workflows/add-capability.md
Déboguer une extension :
- « My extension doesn't work », « tool not showing up », « event not firing » →
workflows/debug-extension.md
Si l'intention est claire d'après le contexte, skip la question et aller directement au workflow. </routing>
<reference_index>
Tout le domaine de connaissances dans references/ :
Architecture core : extension-lifecycle.md, events-reference.md Surface API : extensionapi-reference.md, extensioncontext-reference.md Capacités : 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 Gotchas : key-rules-gotchas.md </reference_index>
<workflows_index> | Workflow | Objectif | |----------|---------| | create-extension.md | Construire une nouvelle extension à partir de zéro | | add-capability.md | Ajouter des outils, commandes, hooks, UI à une extension existante | | debug-extension.md | Diagnostiquer et corriger les problèmes d'extension | </workflows_index>
<success_criteria> Une extension est complète quand :
- TypeScript compile sans erreurs (jiti gère cela au runtime)
- L'extension se charge au démarrage de GSD ou avec
/reloadsans erreurs - Les outils apparaissent dans le system prompt du LLM et sont appelables
- Les commandes répondent à l'entrée
/command - Les event hooks se déclenchent aux points du cycle de vie attendus
- L'UI personnalisée s'affiche correctement dans la largeur du terminal
- L'état persiste correctement à travers les redémarrages de session (si stateful)
- La sortie est tronquée aux limites sûres (si les outils produisent une sortie variable) </success_criteria>