gsd-pi 2.29.0-dev.77f06e2 → 2.29.0-dev.f08b4fe

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (251) hide show
  1. package/dist/extension-registry.d.ts +63 -0
  2. package/dist/extension-registry.js +166 -0
  3. package/dist/headless.js +4 -0
  4. package/dist/loader.js +10 -1
  5. package/dist/resource-loader.js +11 -1
  6. package/dist/resources/extensions/async-jobs/extension-manifest.json +13 -0
  7. package/dist/resources/extensions/bg-shell/extension-manifest.json +14 -0
  8. package/dist/resources/extensions/browser-tools/extension-manifest.json +37 -0
  9. package/dist/resources/extensions/context7/extension-manifest.json +12 -0
  10. package/dist/resources/extensions/google-search/extension-manifest.json +12 -0
  11. package/dist/resources/extensions/gsd/auto-dashboard.ts +31 -0
  12. package/dist/resources/extensions/gsd/auto-dispatch.ts +32 -3
  13. package/dist/resources/extensions/gsd/auto-post-unit.ts +39 -10
  14. package/dist/resources/extensions/gsd/auto-prompts.ts +40 -17
  15. package/dist/resources/extensions/gsd/auto-recovery.ts +2 -1
  16. package/dist/resources/extensions/gsd/auto-start.ts +18 -32
  17. package/dist/resources/extensions/gsd/auto-worktree.ts +21 -182
  18. package/dist/resources/extensions/gsd/auto.ts +2 -9
  19. package/dist/resources/extensions/gsd/captures.ts +4 -10
  20. package/dist/resources/extensions/gsd/commands-extensions.ts +328 -0
  21. package/dist/resources/extensions/gsd/commands-handlers.ts +2 -1
  22. package/dist/resources/extensions/gsd/commands.ts +53 -2
  23. package/dist/resources/extensions/gsd/detection.ts +2 -1
  24. package/dist/resources/extensions/gsd/doctor-checks.ts +49 -1
  25. package/dist/resources/extensions/gsd/doctor-types.ts +3 -1
  26. package/dist/resources/extensions/gsd/extension-manifest.json +18 -0
  27. package/dist/resources/extensions/gsd/forensics.ts +2 -2
  28. package/dist/resources/extensions/gsd/git-service.ts +3 -2
  29. package/dist/resources/extensions/gsd/gitignore.ts +9 -63
  30. package/dist/resources/extensions/gsd/gsd-db.ts +1 -165
  31. package/dist/resources/extensions/gsd/guided-flow.ts +8 -5
  32. package/dist/resources/extensions/gsd/index.ts +3 -3
  33. package/dist/resources/extensions/gsd/md-importer.ts +3 -2
  34. package/dist/resources/extensions/gsd/mechanical-completion.ts +430 -0
  35. package/dist/resources/extensions/gsd/migrate/command.ts +3 -2
  36. package/dist/resources/extensions/gsd/migrate/writer.ts +2 -1
  37. package/dist/resources/extensions/gsd/migrate-external.ts +123 -0
  38. package/dist/resources/extensions/gsd/paths.ts +24 -2
  39. package/dist/resources/extensions/gsd/post-unit-hooks.ts +6 -5
  40. package/dist/resources/extensions/gsd/preferences-models.ts +7 -1
  41. package/dist/resources/extensions/gsd/preferences-validation.ts +2 -1
  42. package/dist/resources/extensions/gsd/preferences.ts +10 -5
  43. package/dist/resources/extensions/gsd/prompts/discuss-headless.md +4 -2
  44. package/dist/resources/extensions/gsd/prompts/guided-discuss-milestone.md +1 -1
  45. package/dist/resources/extensions/gsd/prompts/plan-milestone.md +26 -2
  46. package/dist/resources/extensions/gsd/prompts/plan-slice.md +15 -1
  47. package/dist/resources/extensions/gsd/repo-identity.ts +148 -0
  48. package/dist/resources/extensions/gsd/resource-version.ts +99 -0
  49. package/dist/resources/extensions/gsd/session-forensics.ts +4 -3
  50. package/dist/resources/extensions/gsd/tests/activity-log.test.ts +2 -2
  51. package/dist/resources/extensions/gsd/tests/auto-recovery.test.ts +3 -3
  52. package/dist/resources/extensions/gsd/tests/auto-worktree.test.ts +0 -58
  53. package/dist/resources/extensions/gsd/tests/doctor-runtime.test.ts +3 -4
  54. package/dist/resources/extensions/gsd/tests/feature-branch-lifecycle-integration.test.ts +5 -18
  55. package/dist/resources/extensions/gsd/tests/git-service.test.ts +10 -37
  56. package/dist/resources/extensions/gsd/tests/knowledge.test.ts +4 -4
  57. package/dist/resources/extensions/gsd/tests/mechanical-completion.test.ts +356 -0
  58. package/dist/resources/extensions/gsd/tests/plan-slice-prompt.test.ts +1 -0
  59. package/dist/resources/extensions/gsd/tests/token-profile.test.ts +14 -16
  60. package/dist/resources/extensions/gsd/triage-resolution.ts +2 -1
  61. package/dist/resources/extensions/gsd/types.ts +2 -0
  62. package/dist/resources/extensions/gsd/worktree-command.ts +1 -11
  63. package/dist/resources/extensions/gsd/worktree-manager.ts +3 -2
  64. package/dist/resources/extensions/gsd/worktree.ts +42 -5
  65. package/dist/resources/extensions/mac-tools/extension-manifest.json +16 -0
  66. package/dist/resources/extensions/mcporter/extension-manifest.json +12 -0
  67. package/dist/resources/extensions/remote-questions/extension-manifest.json +11 -0
  68. package/dist/resources/extensions/search-the-web/extension-manifest.json +13 -0
  69. package/dist/resources/extensions/slash-commands/extension-manifest.json +11 -0
  70. package/dist/resources/extensions/subagent/extension-manifest.json +13 -0
  71. package/dist/resources/extensions/ttsr/extension-manifest.json +11 -0
  72. package/dist/resources/extensions/universal-config/extension-manifest.json +13 -0
  73. package/dist/resources/extensions/voice/extension-manifest.json +12 -0
  74. package/dist/resources/skills/create-gsd-extension/SKILL.md +87 -0
  75. package/dist/resources/skills/create-gsd-extension/references/compaction-session-control.md +77 -0
  76. package/dist/resources/skills/create-gsd-extension/references/custom-commands.md +139 -0
  77. package/dist/resources/skills/create-gsd-extension/references/custom-rendering.md +108 -0
  78. package/dist/resources/skills/create-gsd-extension/references/custom-tools.md +183 -0
  79. package/dist/resources/skills/create-gsd-extension/references/custom-ui.md +490 -0
  80. package/dist/resources/skills/create-gsd-extension/references/events-reference.md +126 -0
  81. package/dist/resources/skills/create-gsd-extension/references/extension-lifecycle.md +64 -0
  82. package/dist/resources/skills/create-gsd-extension/references/extensionapi-reference.md +75 -0
  83. package/dist/resources/skills/create-gsd-extension/references/extensioncontext-reference.md +53 -0
  84. package/dist/resources/skills/create-gsd-extension/references/key-rules-gotchas.md +36 -0
  85. package/dist/resources/skills/create-gsd-extension/references/mode-behavior.md +32 -0
  86. package/dist/resources/skills/create-gsd-extension/references/model-provider-management.md +89 -0
  87. package/dist/resources/skills/create-gsd-extension/references/packaging-distribution.md +55 -0
  88. package/dist/resources/skills/create-gsd-extension/references/remote-execution-overrides.md +90 -0
  89. package/dist/resources/skills/create-gsd-extension/references/state-management.md +70 -0
  90. package/dist/resources/skills/create-gsd-extension/references/system-prompt-modification.md +52 -0
  91. package/dist/resources/skills/create-gsd-extension/templates/extension-skeleton.ts +51 -0
  92. package/dist/resources/skills/create-gsd-extension/templates/stateful-tool-skeleton.ts +143 -0
  93. package/dist/resources/skills/create-gsd-extension/workflows/add-capability.md +57 -0
  94. package/dist/resources/skills/create-gsd-extension/workflows/create-extension.md +156 -0
  95. package/dist/resources/skills/create-gsd-extension/workflows/debug-extension.md +74 -0
  96. package/dist/resources/skills/create-skill/SKILL.md +184 -0
  97. package/dist/resources/skills/create-skill/references/api-security.md +226 -0
  98. package/dist/resources/skills/create-skill/references/be-clear-and-direct.md +531 -0
  99. package/dist/resources/skills/create-skill/references/common-patterns.md +595 -0
  100. package/dist/resources/skills/create-skill/references/core-principles.md +437 -0
  101. package/dist/resources/skills/create-skill/references/executable-code.md +175 -0
  102. package/dist/resources/skills/create-skill/references/gsd-skill-ecosystem.md +68 -0
  103. package/dist/resources/skills/create-skill/references/iteration-and-testing.md +474 -0
  104. package/dist/resources/skills/create-skill/references/recommended-structure.md +168 -0
  105. package/dist/resources/skills/create-skill/references/skill-structure.md +372 -0
  106. package/dist/resources/skills/create-skill/references/use-xml-tags.md +466 -0
  107. package/dist/resources/skills/create-skill/references/using-scripts.md +113 -0
  108. package/dist/resources/skills/create-skill/references/using-templates.md +112 -0
  109. package/dist/resources/skills/create-skill/references/workflows-and-validation.md +510 -0
  110. package/dist/resources/skills/create-skill/templates/router-skill.md +73 -0
  111. package/dist/resources/skills/create-skill/templates/simple-skill.md +33 -0
  112. package/dist/resources/skills/create-skill/workflows/add-reference.md +96 -0
  113. package/dist/resources/skills/create-skill/workflows/add-script.md +93 -0
  114. package/dist/resources/skills/create-skill/workflows/add-template.md +74 -0
  115. package/dist/resources/skills/create-skill/workflows/add-workflow.md +120 -0
  116. package/dist/resources/skills/create-skill/workflows/audit-skill.md +148 -0
  117. package/dist/resources/skills/create-skill/workflows/create-new-skill.md +196 -0
  118. package/dist/resources/skills/create-skill/workflows/get-guidance.md +121 -0
  119. package/dist/resources/skills/create-skill/workflows/upgrade-to-router.md +161 -0
  120. package/dist/resources/skills/create-skill/workflows/verify-skill.md +204 -0
  121. package/dist/resources/skills/react-best-practices/SKILL.md +1 -1
  122. package/package.json +1 -1
  123. package/packages/native/dist/native.d.ts +2 -0
  124. package/packages/native/dist/native.js +19 -5
  125. package/packages/native/src/native.ts +23 -9
  126. package/packages/pi-coding-agent/dist/core/lsp/client.d.ts.map +1 -1
  127. package/packages/pi-coding-agent/dist/core/lsp/client.js +3 -0
  128. package/packages/pi-coding-agent/dist/core/lsp/client.js.map +1 -1
  129. package/packages/pi-coding-agent/src/core/lsp/client.ts +3 -0
  130. package/src/resources/extensions/async-jobs/extension-manifest.json +13 -0
  131. package/src/resources/extensions/bg-shell/extension-manifest.json +14 -0
  132. package/src/resources/extensions/browser-tools/extension-manifest.json +37 -0
  133. package/src/resources/extensions/context7/extension-manifest.json +12 -0
  134. package/src/resources/extensions/google-search/extension-manifest.json +12 -0
  135. package/src/resources/extensions/gsd/auto-dashboard.ts +31 -0
  136. package/src/resources/extensions/gsd/auto-dispatch.ts +32 -3
  137. package/src/resources/extensions/gsd/auto-post-unit.ts +39 -10
  138. package/src/resources/extensions/gsd/auto-prompts.ts +40 -17
  139. package/src/resources/extensions/gsd/auto-recovery.ts +2 -1
  140. package/src/resources/extensions/gsd/auto-start.ts +18 -32
  141. package/src/resources/extensions/gsd/auto-worktree.ts +21 -182
  142. package/src/resources/extensions/gsd/auto.ts +2 -9
  143. package/src/resources/extensions/gsd/captures.ts +4 -10
  144. package/src/resources/extensions/gsd/commands-extensions.ts +328 -0
  145. package/src/resources/extensions/gsd/commands-handlers.ts +2 -1
  146. package/src/resources/extensions/gsd/commands.ts +53 -2
  147. package/src/resources/extensions/gsd/detection.ts +2 -1
  148. package/src/resources/extensions/gsd/doctor-checks.ts +49 -1
  149. package/src/resources/extensions/gsd/doctor-types.ts +3 -1
  150. package/src/resources/extensions/gsd/extension-manifest.json +18 -0
  151. package/src/resources/extensions/gsd/forensics.ts +2 -2
  152. package/src/resources/extensions/gsd/git-service.ts +3 -2
  153. package/src/resources/extensions/gsd/gitignore.ts +9 -63
  154. package/src/resources/extensions/gsd/gsd-db.ts +1 -165
  155. package/src/resources/extensions/gsd/guided-flow.ts +8 -5
  156. package/src/resources/extensions/gsd/index.ts +3 -3
  157. package/src/resources/extensions/gsd/md-importer.ts +3 -2
  158. package/src/resources/extensions/gsd/mechanical-completion.ts +430 -0
  159. package/src/resources/extensions/gsd/migrate/command.ts +3 -2
  160. package/src/resources/extensions/gsd/migrate/writer.ts +2 -1
  161. package/src/resources/extensions/gsd/migrate-external.ts +123 -0
  162. package/src/resources/extensions/gsd/paths.ts +24 -2
  163. package/src/resources/extensions/gsd/post-unit-hooks.ts +6 -5
  164. package/src/resources/extensions/gsd/preferences-models.ts +7 -1
  165. package/src/resources/extensions/gsd/preferences-validation.ts +2 -1
  166. package/src/resources/extensions/gsd/preferences.ts +10 -5
  167. package/src/resources/extensions/gsd/prompts/discuss-headless.md +4 -2
  168. package/src/resources/extensions/gsd/prompts/guided-discuss-milestone.md +1 -1
  169. package/src/resources/extensions/gsd/prompts/plan-milestone.md +26 -2
  170. package/src/resources/extensions/gsd/prompts/plan-slice.md +15 -1
  171. package/src/resources/extensions/gsd/repo-identity.ts +148 -0
  172. package/src/resources/extensions/gsd/resource-version.ts +99 -0
  173. package/src/resources/extensions/gsd/session-forensics.ts +4 -3
  174. package/src/resources/extensions/gsd/tests/activity-log.test.ts +2 -2
  175. package/src/resources/extensions/gsd/tests/auto-recovery.test.ts +3 -3
  176. package/src/resources/extensions/gsd/tests/auto-worktree.test.ts +0 -58
  177. package/src/resources/extensions/gsd/tests/doctor-runtime.test.ts +3 -4
  178. package/src/resources/extensions/gsd/tests/feature-branch-lifecycle-integration.test.ts +5 -18
  179. package/src/resources/extensions/gsd/tests/git-service.test.ts +10 -37
  180. package/src/resources/extensions/gsd/tests/knowledge.test.ts +4 -4
  181. package/src/resources/extensions/gsd/tests/mechanical-completion.test.ts +356 -0
  182. package/src/resources/extensions/gsd/tests/plan-slice-prompt.test.ts +1 -0
  183. package/src/resources/extensions/gsd/tests/token-profile.test.ts +14 -16
  184. package/src/resources/extensions/gsd/triage-resolution.ts +2 -1
  185. package/src/resources/extensions/gsd/types.ts +2 -0
  186. package/src/resources/extensions/gsd/worktree-command.ts +1 -11
  187. package/src/resources/extensions/gsd/worktree-manager.ts +3 -2
  188. package/src/resources/extensions/gsd/worktree.ts +42 -5
  189. package/src/resources/extensions/mac-tools/extension-manifest.json +16 -0
  190. package/src/resources/extensions/mcporter/extension-manifest.json +12 -0
  191. package/src/resources/extensions/remote-questions/extension-manifest.json +11 -0
  192. package/src/resources/extensions/search-the-web/extension-manifest.json +13 -0
  193. package/src/resources/extensions/slash-commands/extension-manifest.json +11 -0
  194. package/src/resources/extensions/subagent/extension-manifest.json +13 -0
  195. package/src/resources/extensions/ttsr/extension-manifest.json +11 -0
  196. package/src/resources/extensions/universal-config/extension-manifest.json +13 -0
  197. package/src/resources/extensions/voice/extension-manifest.json +12 -0
  198. package/src/resources/skills/create-gsd-extension/SKILL.md +87 -0
  199. package/src/resources/skills/create-gsd-extension/references/compaction-session-control.md +77 -0
  200. package/src/resources/skills/create-gsd-extension/references/custom-commands.md +139 -0
  201. package/src/resources/skills/create-gsd-extension/references/custom-rendering.md +108 -0
  202. package/src/resources/skills/create-gsd-extension/references/custom-tools.md +183 -0
  203. package/src/resources/skills/create-gsd-extension/references/custom-ui.md +490 -0
  204. package/src/resources/skills/create-gsd-extension/references/events-reference.md +126 -0
  205. package/src/resources/skills/create-gsd-extension/references/extension-lifecycle.md +64 -0
  206. package/src/resources/skills/create-gsd-extension/references/extensionapi-reference.md +75 -0
  207. package/src/resources/skills/create-gsd-extension/references/extensioncontext-reference.md +53 -0
  208. package/src/resources/skills/create-gsd-extension/references/key-rules-gotchas.md +36 -0
  209. package/src/resources/skills/create-gsd-extension/references/mode-behavior.md +32 -0
  210. package/src/resources/skills/create-gsd-extension/references/model-provider-management.md +89 -0
  211. package/src/resources/skills/create-gsd-extension/references/packaging-distribution.md +55 -0
  212. package/src/resources/skills/create-gsd-extension/references/remote-execution-overrides.md +90 -0
  213. package/src/resources/skills/create-gsd-extension/references/state-management.md +70 -0
  214. package/src/resources/skills/create-gsd-extension/references/system-prompt-modification.md +52 -0
  215. package/src/resources/skills/create-gsd-extension/templates/extension-skeleton.ts +51 -0
  216. package/src/resources/skills/create-gsd-extension/templates/stateful-tool-skeleton.ts +143 -0
  217. package/src/resources/skills/create-gsd-extension/workflows/add-capability.md +57 -0
  218. package/src/resources/skills/create-gsd-extension/workflows/create-extension.md +156 -0
  219. package/src/resources/skills/create-gsd-extension/workflows/debug-extension.md +74 -0
  220. package/src/resources/skills/create-skill/SKILL.md +184 -0
  221. package/src/resources/skills/create-skill/references/api-security.md +226 -0
  222. package/src/resources/skills/create-skill/references/be-clear-and-direct.md +531 -0
  223. package/src/resources/skills/create-skill/references/common-patterns.md +595 -0
  224. package/src/resources/skills/create-skill/references/core-principles.md +437 -0
  225. package/src/resources/skills/create-skill/references/executable-code.md +175 -0
  226. package/src/resources/skills/create-skill/references/gsd-skill-ecosystem.md +68 -0
  227. package/src/resources/skills/create-skill/references/iteration-and-testing.md +474 -0
  228. package/src/resources/skills/create-skill/references/recommended-structure.md +168 -0
  229. package/src/resources/skills/create-skill/references/skill-structure.md +372 -0
  230. package/src/resources/skills/create-skill/references/use-xml-tags.md +466 -0
  231. package/src/resources/skills/create-skill/references/using-scripts.md +113 -0
  232. package/src/resources/skills/create-skill/references/using-templates.md +112 -0
  233. package/src/resources/skills/create-skill/references/workflows-and-validation.md +510 -0
  234. package/src/resources/skills/create-skill/templates/router-skill.md +73 -0
  235. package/src/resources/skills/create-skill/templates/simple-skill.md +33 -0
  236. package/src/resources/skills/create-skill/workflows/add-reference.md +96 -0
  237. package/src/resources/skills/create-skill/workflows/add-script.md +93 -0
  238. package/src/resources/skills/create-skill/workflows/add-template.md +74 -0
  239. package/src/resources/skills/create-skill/workflows/add-workflow.md +120 -0
  240. package/src/resources/skills/create-skill/workflows/audit-skill.md +148 -0
  241. package/src/resources/skills/create-skill/workflows/create-new-skill.md +196 -0
  242. package/src/resources/skills/create-skill/workflows/get-guidance.md +121 -0
  243. package/src/resources/skills/create-skill/workflows/upgrade-to-router.md +161 -0
  244. package/src/resources/skills/create-skill/workflows/verify-skill.md +204 -0
  245. package/src/resources/skills/react-best-practices/SKILL.md +1 -1
  246. package/dist/resources/extensions/gsd/auto-worktree-sync.ts +0 -199
  247. package/dist/resources/extensions/gsd/tests/worktree-db-integration.test.ts +0 -205
  248. package/dist/resources/extensions/gsd/tests/worktree-db.test.ts +0 -442
  249. package/src/resources/extensions/gsd/auto-worktree-sync.ts +0 -199
  250. package/src/resources/extensions/gsd/tests/worktree-db-integration.test.ts +0 -205
  251. package/src/resources/extensions/gsd/tests/worktree-db.test.ts +0 -442
@@ -0,0 +1,184 @@
1
+ ---
2
+ name: create-skill
3
+ description: Expert guidance for creating, writing, building, and refining GSD skills. Use when working with SKILL.md files, authoring new skills, improving existing skills, or understanding skill structure and best practices.
4
+ ---
5
+
6
+ <essential_principles>
7
+ ## How Skills Work
8
+
9
+ Skills are modular, filesystem-based capabilities that provide domain expertise on demand. This skill teaches how to create effective skills.
10
+
11
+ ### 1. Skills Are Prompts
12
+
13
+ All prompting best practices apply. Be clear, be direct, use XML structure. Assume Claude is smart - only add context Claude doesn't have.
14
+
15
+ ### 2. SKILL.md Is Always Loaded
16
+
17
+ When a skill is invoked, Claude reads SKILL.md. Use this guarantee:
18
+ - Essential principles go in SKILL.md (can't be skipped)
19
+ - Workflow-specific content goes in workflows/
20
+ - Reusable knowledge goes in references/
21
+
22
+ ### 3. Router Pattern for Complex Skills
23
+
24
+ ```
25
+ skill-name/
26
+ ├── SKILL.md # Router + principles
27
+ ├── workflows/ # Step-by-step procedures (FOLLOW)
28
+ ├── references/ # Domain knowledge (READ)
29
+ ├── templates/ # Output structures (COPY + FILL)
30
+ └── scripts/ # Reusable code (EXECUTE)
31
+ ```
32
+
33
+ SKILL.md asks "what do you want to do?" → routes to workflow → workflow specifies which references to read.
34
+
35
+ **When to use each folder:**
36
+ - **workflows/** - Multi-step procedures Claude follows
37
+ - **references/** - Domain knowledge Claude reads for context
38
+ - **templates/** - Consistent output structures Claude copies and fills (plans, specs, configs)
39
+ - **scripts/** - Executable code Claude runs as-is (deploy, setup, API calls)
40
+
41
+ ### 4. Pure XML Structure
42
+
43
+ No markdown headings (#, ##, ###) in skill body. Use semantic XML tags:
44
+ ```xml
45
+ <objective>...</objective>
46
+ <process>...</process>
47
+ <success_criteria>...</success_criteria>
48
+ ```
49
+
50
+ Keep markdown formatting within content (bold, lists, code blocks).
51
+
52
+ ### 5. Progressive Disclosure
53
+
54
+ SKILL.md under 500 lines. Split detailed content into reference files. Load only what's needed for the current workflow.
55
+ </essential_principles>
56
+
57
+ <routing>
58
+ ## Understanding User Intent
59
+
60
+ Based on the user's message, route directly to the appropriate workflow:
61
+
62
+ **Creating new skills:**
63
+ - Domain expertise (exhaustive knowledge base) → **Use `create-domain-expertise` skill instead** (separate skill with batched subagent orchestration)
64
+ - Task-execution skill (does specific things) → workflows/create-new-skill.md
65
+
66
+ **Working with existing skills:**
67
+ - Audit, review, check → workflows/audit-skill.md
68
+ - Verify content is current → workflows/verify-skill.md
69
+ - Add workflow → workflows/add-workflow.md
70
+ - Add reference → workflows/add-reference.md
71
+ - Add template → workflows/add-template.md
72
+ - Add script → workflows/add-script.md
73
+ - Upgrade to router pattern → workflows/upgrade-to-router.md
74
+
75
+ **Need help deciding:**
76
+ - General guidance → workflows/get-guidance.md
77
+
78
+ **If user intent is unclear, ask minimal clarifying questions:**
79
+ - "Create a MIDI skill" → "Task-execution skill (does MIDI tasks) or domain expertise (complete MIDI knowledge base)?"
80
+ - "Work on my skill" → "Which skill? What do you want to do with it?"
81
+
82
+ Then proceed directly to the workflow.
83
+ </routing>
84
+
85
+ <quick_reference>
86
+ ## Skill Structure Quick Reference
87
+
88
+ **Skill directories:**
89
+ - Global: `~/.gsd/agent/skills/{skill-name}/`
90
+ - Project-local: `.pi/agent/skills/{skill-name}/`
91
+
92
+ **Simple skill (single file):**
93
+ ```yaml
94
+ ---
95
+ name: skill-name
96
+ description: What it does and when to use it.
97
+ ---
98
+
99
+ <objective>What this skill does</objective>
100
+ <quick_start>Immediate actionable guidance</quick_start>
101
+ <process>Step-by-step procedure</process>
102
+ <success_criteria>How to know it worked</success_criteria>
103
+ ```
104
+
105
+ **Complex skill (router pattern):**
106
+ ```
107
+ SKILL.md:
108
+ <essential_principles> - Always applies
109
+ <intake> - Question to ask
110
+ <routing> - Maps answers to workflows
111
+
112
+ workflows/:
113
+ <required_reading> - Which refs to load
114
+ <process> - Steps
115
+ <success_criteria> - Done when...
116
+
117
+ references/:
118
+ Domain knowledge, patterns, examples
119
+
120
+ templates/:
121
+ Output structures Claude copies and fills
122
+ (plans, specs, configs, documents)
123
+
124
+ scripts/:
125
+ Executable code Claude runs as-is
126
+ (deploy, setup, API calls, data processing)
127
+ ```
128
+ </quick_reference>
129
+
130
+ <reference_index>
131
+ ## Domain Knowledge
132
+
133
+ All in `references/`:
134
+
135
+ **Structure:** recommended-structure.md, skill-structure.md
136
+ **Principles:** core-principles.md, be-clear-and-direct.md, use-xml-tags.md
137
+ **Patterns:** common-patterns.md, workflows-and-validation.md
138
+ **Assets:** using-templates.md, using-scripts.md
139
+ **Advanced:** executable-code.md, api-security.md, iteration-and-testing.md
140
+ **GSD-specific:** gsd-skill-ecosystem.md
141
+ </reference_index>
142
+
143
+ <workflows_index>
144
+ ## Workflows
145
+
146
+ All in `workflows/`:
147
+
148
+ | Workflow | Purpose |
149
+ |----------|---------|
150
+ | create-new-skill.md | Build a task-execution skill from scratch |
151
+ | audit-skill.md | Analyze skill against best practices |
152
+ | verify-skill.md | Check if content is still accurate |
153
+ | add-workflow.md | Add a workflow to existing skill |
154
+ | add-reference.md | Add a reference to existing skill |
155
+ | add-template.md | Add a template to existing skill |
156
+ | add-script.md | Add a script to existing skill |
157
+ | upgrade-to-router.md | Convert simple skill to router pattern |
158
+ | get-guidance.md | Help decide what kind of skill to build |
159
+ </workflows_index>
160
+
161
+ <yaml_requirements>
162
+ ## YAML Frontmatter
163
+
164
+ Required fields:
165
+ ```yaml
166
+ ---
167
+ name: skill-name # lowercase-with-hyphens, matches directory
168
+ description: ... # What it does AND when to use it (third person)
169
+ ---
170
+ ```
171
+
172
+ Name conventions: `create-*`, `manage-*`, `setup-*`, `generate-*`, `build-*`
173
+ </yaml_requirements>
174
+
175
+ <success_criteria>
176
+ A well-structured skill:
177
+ - Has valid YAML frontmatter
178
+ - Uses pure XML structure (no markdown headings in body)
179
+ - Has essential principles inline in SKILL.md
180
+ - Routes directly to appropriate workflows based on user intent
181
+ - Keeps SKILL.md under 500 lines
182
+ - Asks minimal clarifying questions only when truly needed
183
+ - Has been tested with real usage
184
+ </success_criteria>
@@ -0,0 +1,226 @@
1
+ <overview>
2
+ When building skills that make API calls requiring credentials (API keys, tokens, secrets), follow this protocol to prevent credentials from appearing in chat.
3
+ </overview>
4
+
5
+ <the_problem>
6
+ Raw curl commands with environment variables expose credentials:
7
+
8
+ ```bash
9
+ # ❌ BAD - API key visible in chat
10
+ curl -H "Authorization: Bearer $API_KEY" https://api.example.com/data
11
+ ```
12
+
13
+ When Claude executes this, the full command with expanded `$API_KEY` appears in the conversation.
14
+ </the_problem>
15
+
16
+ <the_solution>
17
+ Use `~/.claude/scripts/secure-api.sh` - a wrapper that loads credentials internally.
18
+
19
+ <for_supported_services>
20
+ ```bash
21
+ # ✅ GOOD - No credentials visible
22
+ ~/.claude/scripts/secure-api.sh <service> <operation> [args]
23
+
24
+ # Examples:
25
+ ~/.claude/scripts/secure-api.sh facebook list-campaigns
26
+ ~/.claude/scripts/secure-api.sh ghl search-contact "email@example.com"
27
+ ```
28
+ </for_supported_services>
29
+
30
+ <adding_new_services>
31
+ When building a new skill that requires API calls:
32
+
33
+ 1. **Add operations to the wrapper** (`~/.claude/scripts/secure-api.sh`):
34
+
35
+ ```bash
36
+ case "$SERVICE" in
37
+ yourservice)
38
+ case "$OPERATION" in
39
+ list-items)
40
+ curl -s -G \
41
+ -H "Authorization: Bearer $YOUR_API_KEY" \
42
+ "https://api.yourservice.com/items"
43
+ ;;
44
+ get-item)
45
+ ITEM_ID=$1
46
+ curl -s -G \
47
+ -H "Authorization: Bearer $YOUR_API_KEY" \
48
+ "https://api.yourservice.com/items/$ITEM_ID"
49
+ ;;
50
+ *)
51
+ echo "Unknown operation: $OPERATION" >&2
52
+ exit 1
53
+ ;;
54
+ esac
55
+ ;;
56
+ esac
57
+ ```
58
+
59
+ 2. **Add profile support to the wrapper** (if service needs multiple accounts):
60
+
61
+ ```bash
62
+ # In secure-api.sh, add to profile remapping section:
63
+ yourservice)
64
+ SERVICE_UPPER="YOURSERVICE"
65
+ YOURSERVICE_API_KEY=$(eval echo \$${SERVICE_UPPER}_${PROFILE_UPPER}_API_KEY)
66
+ YOURSERVICE_ACCOUNT_ID=$(eval echo \$${SERVICE_UPPER}_${PROFILE_UPPER}_ACCOUNT_ID)
67
+ ;;
68
+ ```
69
+
70
+ 3. **Add credential placeholders to `~/.claude/.env`** using profile naming:
71
+
72
+ ```bash
73
+ # Check if entries already exist
74
+ grep -q "YOURSERVICE_MAIN_API_KEY=" ~/.claude/.env 2>/dev/null || \
75
+ echo -e "\n# Your Service - Main profile\nYOURSERVICE_MAIN_API_KEY=\nYOURSERVICE_MAIN_ACCOUNT_ID=" >> ~/.claude/.env
76
+
77
+ echo "Added credential placeholders to ~/.claude/.env - user needs to fill them in"
78
+ ```
79
+
80
+ 4. **Document profile workflow in your SKILL.md**:
81
+
82
+ ```markdown
83
+ ## Profile Selection Workflow
84
+
85
+ **CRITICAL:** Always use profile selection to prevent using wrong account credentials.
86
+
87
+ ### When user requests YourService operation:
88
+
89
+ 1. **Check for saved profile:**
90
+ ```bash
91
+ ~/.claude/scripts/profile-state get yourservice
92
+ ```
93
+
94
+ 2. **If no profile saved, discover available profiles:**
95
+ ```bash
96
+ ~/.claude/scripts/list-profiles yourservice
97
+ ```
98
+
99
+ 3. **If only ONE profile:** Use it automatically and announce:
100
+ ```
101
+ "Using YourService profile 'main' to list items..."
102
+ ```
103
+
104
+ 4. **If MULTIPLE profiles:** Ask user which one:
105
+ ```
106
+ "Which YourService profile: main, clienta, or clientb?"
107
+ ```
108
+
109
+ 5. **Save user's selection:**
110
+ ```bash
111
+ ~/.claude/scripts/profile-state set yourservice <selected_profile>
112
+ ```
113
+
114
+ 6. **Always announce which profile before calling API:**
115
+ ```
116
+ "Using YourService profile 'main' to list items..."
117
+ ```
118
+
119
+ 7. **Make API call with profile:**
120
+ ```bash
121
+ ~/.claude/scripts/secure-api.sh yourservice:<profile> list-items
122
+ ```
123
+
124
+ ## Secure API Calls
125
+
126
+ All API calls use profile syntax:
127
+
128
+ ```bash
129
+ ~/.claude/scripts/secure-api.sh yourservice:<profile> <operation> [args]
130
+
131
+ # Examples:
132
+ ~/.claude/scripts/secure-api.sh yourservice:main list-items
133
+ ~/.claude/scripts/secure-api.sh yourservice:main get-item <ITEM_ID>
134
+ ```
135
+
136
+ **Profile persists for session:** Once selected, use same profile for subsequent operations unless user explicitly changes it.
137
+ ```
138
+ </adding_new_services>
139
+ </the_solution>
140
+
141
+ <pattern_guidelines>
142
+ <simple_get_requests>
143
+ ```bash
144
+ curl -s -G \
145
+ -H "Authorization: Bearer $API_KEY" \
146
+ "https://api.example.com/endpoint"
147
+ ```
148
+ </simple_get_requests>
149
+
150
+ <post_with_json_body>
151
+ ```bash
152
+ ITEM_ID=$1
153
+ curl -s -X POST \
154
+ -H "Authorization: Bearer $API_KEY" \
155
+ -H "Content-Type: application/json" \
156
+ -d @- \
157
+ "https://api.example.com/items/$ITEM_ID"
158
+ ```
159
+
160
+ Usage:
161
+ ```bash
162
+ echo '{"name":"value"}' | ~/.claude/scripts/secure-api.sh service create-item
163
+ ```
164
+ </post_with_json_body>
165
+
166
+ <post_with_form_data>
167
+ ```bash
168
+ curl -s -X POST \
169
+ -F "field1=value1" \
170
+ -F "field2=value2" \
171
+ -F "access_token=$API_TOKEN" \
172
+ "https://api.example.com/endpoint"
173
+ ```
174
+ </post_with_form_data>
175
+ </pattern_guidelines>
176
+
177
+ <credential_storage>
178
+ **Location:** `~/.claude/.env` (global for all skills, accessible from any directory)
179
+
180
+ **Format:**
181
+ ```bash
182
+ # Service credentials
183
+ SERVICE_API_KEY=your-key-here
184
+ SERVICE_ACCOUNT_ID=account-id-here
185
+
186
+ # Another service
187
+ OTHER_API_TOKEN=token-here
188
+ OTHER_BASE_URL=https://api.other.com
189
+ ```
190
+
191
+ **Loading in script:**
192
+ ```bash
193
+ set -a
194
+ source ~/.claude/.env 2>/dev/null || { echo "Error: ~/.claude/.env not found" >&2; exit 1; }
195
+ set +a
196
+ ```
197
+ </credential_storage>
198
+
199
+ <best_practices>
200
+ 1. **Never use raw curl with `$VARIABLE` in skill examples** - always use the wrapper
201
+ 2. **Add all operations to the wrapper** - don't make users figure out curl syntax
202
+ 3. **Auto-create credential placeholders** - add empty fields to `~/.claude/.env` immediately when creating the skill
203
+ 4. **Keep credentials in `~/.claude/.env`** - one central location, works everywhere
204
+ 5. **Document each operation** - show examples in SKILL.md
205
+ 6. **Handle errors gracefully** - check for missing env vars, show helpful error messages
206
+ </best_practices>
207
+
208
+ <testing>
209
+ Test the wrapper without exposing credentials:
210
+
211
+ ```bash
212
+ # This command appears in chat
213
+ ~/.claude/scripts/secure-api.sh facebook list-campaigns
214
+
215
+ # But API keys never appear - they're loaded inside the script
216
+ ```
217
+
218
+ Verify credentials are loaded:
219
+ ```bash
220
+ # Check .env exists
221
+ ls -la ~/.claude/.env
222
+
223
+ # Check specific variables (without showing values)
224
+ grep -q "YOUR_API_KEY=" ~/.claude/.env && echo "API key configured" || echo "API key missing"
225
+ ```
226
+ </testing>