superpowers-spec 1.0.0

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 (301) hide show
  1. package/LICENSE +22 -0
  2. package/README.md +141 -0
  3. package/agents/code-reviewer.md +48 -0
  4. package/bin/openspec.js +3 -0
  5. package/bin/superpowers.js +3 -0
  6. package/dist/cli/index.d.ts +2 -0
  7. package/dist/cli/index.js +482 -0
  8. package/dist/commands/change.d.ts +35 -0
  9. package/dist/commands/change.js +277 -0
  10. package/dist/commands/completion.d.ts +72 -0
  11. package/dist/commands/completion.js +257 -0
  12. package/dist/commands/config.d.ts +36 -0
  13. package/dist/commands/config.js +552 -0
  14. package/dist/commands/feedback.d.ts +9 -0
  15. package/dist/commands/feedback.js +183 -0
  16. package/dist/commands/schema.d.ts +6 -0
  17. package/dist/commands/schema.js +869 -0
  18. package/dist/commands/show.d.ts +14 -0
  19. package/dist/commands/show.js +132 -0
  20. package/dist/commands/spec.d.ts +15 -0
  21. package/dist/commands/spec.js +225 -0
  22. package/dist/commands/validate.d.ts +24 -0
  23. package/dist/commands/validate.js +294 -0
  24. package/dist/commands/workflow/index.d.ts +17 -0
  25. package/dist/commands/workflow/index.js +12 -0
  26. package/dist/commands/workflow/instructions.d.ts +29 -0
  27. package/dist/commands/workflow/instructions.js +381 -0
  28. package/dist/commands/workflow/new-change.d.ts +11 -0
  29. package/dist/commands/workflow/new-change.js +44 -0
  30. package/dist/commands/workflow/schemas.d.ts +10 -0
  31. package/dist/commands/workflow/schemas.js +34 -0
  32. package/dist/commands/workflow/shared.d.ts +57 -0
  33. package/dist/commands/workflow/shared.js +116 -0
  34. package/dist/commands/workflow/status.d.ts +14 -0
  35. package/dist/commands/workflow/status.js +75 -0
  36. package/dist/commands/workflow/templates.d.ts +16 -0
  37. package/dist/commands/workflow/templates.js +68 -0
  38. package/dist/core/archive.d.ts +11 -0
  39. package/dist/core/archive.js +318 -0
  40. package/dist/core/artifact-graph/graph.d.ts +56 -0
  41. package/dist/core/artifact-graph/graph.js +141 -0
  42. package/dist/core/artifact-graph/index.d.ts +7 -0
  43. package/dist/core/artifact-graph/index.js +13 -0
  44. package/dist/core/artifact-graph/instruction-loader.d.ts +143 -0
  45. package/dist/core/artifact-graph/instruction-loader.js +214 -0
  46. package/dist/core/artifact-graph/resolver.d.ts +81 -0
  47. package/dist/core/artifact-graph/resolver.js +257 -0
  48. package/dist/core/artifact-graph/schema.d.ts +13 -0
  49. package/dist/core/artifact-graph/schema.js +108 -0
  50. package/dist/core/artifact-graph/state.d.ts +12 -0
  51. package/dist/core/artifact-graph/state.js +54 -0
  52. package/dist/core/artifact-graph/types.d.ts +45 -0
  53. package/dist/core/artifact-graph/types.js +43 -0
  54. package/dist/core/available-tools.d.ts +16 -0
  55. package/dist/core/available-tools.js +30 -0
  56. package/dist/core/command-generation/adapters/amazon-q.d.ts +13 -0
  57. package/dist/core/command-generation/adapters/amazon-q.js +26 -0
  58. package/dist/core/command-generation/adapters/antigravity.d.ts +13 -0
  59. package/dist/core/command-generation/adapters/antigravity.js +26 -0
  60. package/dist/core/command-generation/adapters/auggie.d.ts +13 -0
  61. package/dist/core/command-generation/adapters/auggie.js +27 -0
  62. package/dist/core/command-generation/adapters/claude.d.ts +13 -0
  63. package/dist/core/command-generation/adapters/claude.js +50 -0
  64. package/dist/core/command-generation/adapters/cline.d.ts +14 -0
  65. package/dist/core/command-generation/adapters/cline.js +27 -0
  66. package/dist/core/command-generation/adapters/codebuddy.d.ts +13 -0
  67. package/dist/core/command-generation/adapters/codebuddy.js +28 -0
  68. package/dist/core/command-generation/adapters/codex.d.ts +16 -0
  69. package/dist/core/command-generation/adapters/codex.js +39 -0
  70. package/dist/core/command-generation/adapters/continue.d.ts +13 -0
  71. package/dist/core/command-generation/adapters/continue.js +28 -0
  72. package/dist/core/command-generation/adapters/costrict.d.ts +13 -0
  73. package/dist/core/command-generation/adapters/costrict.js +27 -0
  74. package/dist/core/command-generation/adapters/crush.d.ts +13 -0
  75. package/dist/core/command-generation/adapters/crush.js +30 -0
  76. package/dist/core/command-generation/adapters/cursor.d.ts +14 -0
  77. package/dist/core/command-generation/adapters/cursor.js +44 -0
  78. package/dist/core/command-generation/adapters/factory.d.ts +13 -0
  79. package/dist/core/command-generation/adapters/factory.js +27 -0
  80. package/dist/core/command-generation/adapters/gemini.d.ts +13 -0
  81. package/dist/core/command-generation/adapters/gemini.js +26 -0
  82. package/dist/core/command-generation/adapters/github-copilot.d.ts +13 -0
  83. package/dist/core/command-generation/adapters/github-copilot.js +26 -0
  84. package/dist/core/command-generation/adapters/iflow.d.ts +13 -0
  85. package/dist/core/command-generation/adapters/iflow.js +29 -0
  86. package/dist/core/command-generation/adapters/index.d.ts +29 -0
  87. package/dist/core/command-generation/adapters/index.js +29 -0
  88. package/dist/core/command-generation/adapters/kilocode.d.ts +14 -0
  89. package/dist/core/command-generation/adapters/kilocode.js +23 -0
  90. package/dist/core/command-generation/adapters/kiro.d.ts +13 -0
  91. package/dist/core/command-generation/adapters/kiro.js +26 -0
  92. package/dist/core/command-generation/adapters/opencode.d.ts +13 -0
  93. package/dist/core/command-generation/adapters/opencode.js +29 -0
  94. package/dist/core/command-generation/adapters/pi.d.ts +14 -0
  95. package/dist/core/command-generation/adapters/pi.js +41 -0
  96. package/dist/core/command-generation/adapters/qoder.d.ts +13 -0
  97. package/dist/core/command-generation/adapters/qoder.js +30 -0
  98. package/dist/core/command-generation/adapters/qwen.d.ts +13 -0
  99. package/dist/core/command-generation/adapters/qwen.js +26 -0
  100. package/dist/core/command-generation/adapters/roocode.d.ts +14 -0
  101. package/dist/core/command-generation/adapters/roocode.js +27 -0
  102. package/dist/core/command-generation/adapters/windsurf.d.ts +14 -0
  103. package/dist/core/command-generation/adapters/windsurf.js +51 -0
  104. package/dist/core/command-generation/generator.d.ts +21 -0
  105. package/dist/core/command-generation/generator.js +27 -0
  106. package/dist/core/command-generation/index.d.ts +22 -0
  107. package/dist/core/command-generation/index.js +24 -0
  108. package/dist/core/command-generation/registry.d.ts +36 -0
  109. package/dist/core/command-generation/registry.js +92 -0
  110. package/dist/core/command-generation/types.d.ts +56 -0
  111. package/dist/core/command-generation/types.js +8 -0
  112. package/dist/core/completions/command-registry.d.ts +7 -0
  113. package/dist/core/completions/command-registry.js +461 -0
  114. package/dist/core/completions/completion-provider.d.ts +60 -0
  115. package/dist/core/completions/completion-provider.js +102 -0
  116. package/dist/core/completions/factory.d.ts +64 -0
  117. package/dist/core/completions/factory.js +75 -0
  118. package/dist/core/completions/generators/bash-generator.d.ts +32 -0
  119. package/dist/core/completions/generators/bash-generator.js +174 -0
  120. package/dist/core/completions/generators/fish-generator.d.ts +32 -0
  121. package/dist/core/completions/generators/fish-generator.js +157 -0
  122. package/dist/core/completions/generators/powershell-generator.d.ts +33 -0
  123. package/dist/core/completions/generators/powershell-generator.js +207 -0
  124. package/dist/core/completions/generators/zsh-generator.d.ts +44 -0
  125. package/dist/core/completions/generators/zsh-generator.js +250 -0
  126. package/dist/core/completions/installers/bash-installer.d.ts +87 -0
  127. package/dist/core/completions/installers/bash-installer.js +318 -0
  128. package/dist/core/completions/installers/fish-installer.d.ts +43 -0
  129. package/dist/core/completions/installers/fish-installer.js +143 -0
  130. package/dist/core/completions/installers/powershell-installer.d.ts +88 -0
  131. package/dist/core/completions/installers/powershell-installer.js +327 -0
  132. package/dist/core/completions/installers/zsh-installer.d.ts +125 -0
  133. package/dist/core/completions/installers/zsh-installer.js +449 -0
  134. package/dist/core/completions/templates/bash-templates.d.ts +6 -0
  135. package/dist/core/completions/templates/bash-templates.js +24 -0
  136. package/dist/core/completions/templates/fish-templates.d.ts +7 -0
  137. package/dist/core/completions/templates/fish-templates.js +39 -0
  138. package/dist/core/completions/templates/powershell-templates.d.ts +6 -0
  139. package/dist/core/completions/templates/powershell-templates.js +25 -0
  140. package/dist/core/completions/templates/zsh-templates.d.ts +6 -0
  141. package/dist/core/completions/templates/zsh-templates.js +36 -0
  142. package/dist/core/completions/types.d.ts +79 -0
  143. package/dist/core/completions/types.js +2 -0
  144. package/dist/core/config-prompts.d.ts +9 -0
  145. package/dist/core/config-prompts.js +34 -0
  146. package/dist/core/config-schema.d.ts +86 -0
  147. package/dist/core/config-schema.js +213 -0
  148. package/dist/core/config.d.ts +17 -0
  149. package/dist/core/config.js +33 -0
  150. package/dist/core/converters/json-converter.d.ts +6 -0
  151. package/dist/core/converters/json-converter.js +51 -0
  152. package/dist/core/global-config.d.ts +44 -0
  153. package/dist/core/global-config.js +125 -0
  154. package/dist/core/index.d.ts +2 -0
  155. package/dist/core/index.js +3 -0
  156. package/dist/core/init.d.ts +39 -0
  157. package/dist/core/init.js +634 -0
  158. package/dist/core/legacy-cleanup.d.ts +162 -0
  159. package/dist/core/legacy-cleanup.js +512 -0
  160. package/dist/core/list.d.ts +9 -0
  161. package/dist/core/list.js +171 -0
  162. package/dist/core/migration.d.ts +23 -0
  163. package/dist/core/migration.js +108 -0
  164. package/dist/core/parsers/change-parser.d.ts +13 -0
  165. package/dist/core/parsers/change-parser.js +193 -0
  166. package/dist/core/parsers/markdown-parser.d.ts +22 -0
  167. package/dist/core/parsers/markdown-parser.js +187 -0
  168. package/dist/core/parsers/requirement-blocks.d.ts +37 -0
  169. package/dist/core/parsers/requirement-blocks.js +201 -0
  170. package/dist/core/profile-sync-drift.d.ts +38 -0
  171. package/dist/core/profile-sync-drift.js +200 -0
  172. package/dist/core/profiles.d.ts +26 -0
  173. package/dist/core/profiles.js +40 -0
  174. package/dist/core/project-config.d.ts +64 -0
  175. package/dist/core/project-config.js +223 -0
  176. package/dist/core/schemas/base.schema.d.ts +13 -0
  177. package/dist/core/schemas/base.schema.js +13 -0
  178. package/dist/core/schemas/change.schema.d.ts +73 -0
  179. package/dist/core/schemas/change.schema.js +31 -0
  180. package/dist/core/schemas/index.d.ts +4 -0
  181. package/dist/core/schemas/index.js +4 -0
  182. package/dist/core/schemas/spec.schema.d.ts +18 -0
  183. package/dist/core/schemas/spec.schema.js +15 -0
  184. package/dist/core/shared/index.d.ts +8 -0
  185. package/dist/core/shared/index.js +8 -0
  186. package/dist/core/shared/skill-generation.d.ts +49 -0
  187. package/dist/core/shared/skill-generation.js +96 -0
  188. package/dist/core/shared/tool-detection.d.ts +71 -0
  189. package/dist/core/shared/tool-detection.js +158 -0
  190. package/dist/core/specs-apply.d.ts +73 -0
  191. package/dist/core/specs-apply.js +384 -0
  192. package/dist/core/styles/palette.d.ts +7 -0
  193. package/dist/core/styles/palette.js +8 -0
  194. package/dist/core/templates/index.d.ts +8 -0
  195. package/dist/core/templates/index.js +9 -0
  196. package/dist/core/templates/skill-templates.d.ts +19 -0
  197. package/dist/core/templates/skill-templates.js +18 -0
  198. package/dist/core/templates/types.d.ts +19 -0
  199. package/dist/core/templates/types.js +5 -0
  200. package/dist/core/templates/workflows/apply-change.d.ts +10 -0
  201. package/dist/core/templates/workflows/apply-change.js +313 -0
  202. package/dist/core/templates/workflows/archive-change.d.ts +10 -0
  203. package/dist/core/templates/workflows/archive-change.js +271 -0
  204. package/dist/core/templates/workflows/bulk-archive-change.d.ts +10 -0
  205. package/dist/core/templates/workflows/bulk-archive-change.js +488 -0
  206. package/dist/core/templates/workflows/continue-change.d.ts +10 -0
  207. package/dist/core/templates/workflows/continue-change.js +232 -0
  208. package/dist/core/templates/workflows/explore.d.ts +10 -0
  209. package/dist/core/templates/workflows/explore.js +469 -0
  210. package/dist/core/templates/workflows/feedback.d.ts +9 -0
  211. package/dist/core/templates/workflows/feedback.js +108 -0
  212. package/dist/core/templates/workflows/ff-change.d.ts +10 -0
  213. package/dist/core/templates/workflows/ff-change.js +198 -0
  214. package/dist/core/templates/workflows/new-change.d.ts +10 -0
  215. package/dist/core/templates/workflows/new-change.js +143 -0
  216. package/dist/core/templates/workflows/onboard.d.ts +10 -0
  217. package/dist/core/templates/workflows/onboard.js +565 -0
  218. package/dist/core/templates/workflows/propose.d.ts +10 -0
  219. package/dist/core/templates/workflows/propose.js +223 -0
  220. package/dist/core/templates/workflows/sync-specs.d.ts +10 -0
  221. package/dist/core/templates/workflows/sync-specs.js +272 -0
  222. package/dist/core/templates/workflows/verify-change.d.ts +10 -0
  223. package/dist/core/templates/workflows/verify-change.js +332 -0
  224. package/dist/core/update.d.ts +77 -0
  225. package/dist/core/update.js +537 -0
  226. package/dist/core/validation/constants.d.ts +34 -0
  227. package/dist/core/validation/constants.js +40 -0
  228. package/dist/core/validation/types.d.ts +18 -0
  229. package/dist/core/validation/types.js +2 -0
  230. package/dist/core/validation/validator.d.ts +33 -0
  231. package/dist/core/validation/validator.js +409 -0
  232. package/dist/core/view.d.ts +8 -0
  233. package/dist/core/view.js +168 -0
  234. package/dist/index.d.ts +3 -0
  235. package/dist/index.js +3 -0
  236. package/dist/prompts/searchable-multi-select.d.ts +28 -0
  237. package/dist/prompts/searchable-multi-select.js +159 -0
  238. package/dist/telemetry/config.d.ts +32 -0
  239. package/dist/telemetry/config.js +68 -0
  240. package/dist/telemetry/index.d.ts +31 -0
  241. package/dist/telemetry/index.js +180 -0
  242. package/dist/ui/ascii-patterns.d.ts +16 -0
  243. package/dist/ui/ascii-patterns.js +133 -0
  244. package/dist/ui/welcome-screen.d.ts +10 -0
  245. package/dist/ui/welcome-screen.js +146 -0
  246. package/dist/utils/change-metadata.d.ts +51 -0
  247. package/dist/utils/change-metadata.js +147 -0
  248. package/dist/utils/change-utils.d.ts +62 -0
  249. package/dist/utils/change-utils.js +121 -0
  250. package/dist/utils/command-references.d.ts +18 -0
  251. package/dist/utils/command-references.js +20 -0
  252. package/dist/utils/file-system.d.ts +36 -0
  253. package/dist/utils/file-system.js +281 -0
  254. package/dist/utils/index.d.ts +6 -0
  255. package/dist/utils/index.js +9 -0
  256. package/dist/utils/interactive.d.ts +18 -0
  257. package/dist/utils/interactive.js +21 -0
  258. package/dist/utils/item-discovery.d.ts +4 -0
  259. package/dist/utils/item-discovery.js +72 -0
  260. package/dist/utils/match.d.ts +3 -0
  261. package/dist/utils/match.js +22 -0
  262. package/dist/utils/shell-detection.d.ts +20 -0
  263. package/dist/utils/shell-detection.js +41 -0
  264. package/dist/utils/task-progress.d.ts +8 -0
  265. package/dist/utils/task-progress.js +36 -0
  266. package/extension-manifest.json +9 -0
  267. package/hooks/hooks.json +16 -0
  268. package/hooks/run-hook.cmd +46 -0
  269. package/hooks/session-start +51 -0
  270. package/package.json +87 -0
  271. package/schemas/spec-driven/schema.yaml +153 -0
  272. package/schemas/spec-driven/templates/design.md +19 -0
  273. package/schemas/spec-driven/templates/proposal.md +23 -0
  274. package/schemas/spec-driven/templates/spec.md +8 -0
  275. package/schemas/spec-driven/templates/tasks.md +9 -0
  276. package/scripts/postinstall.js +147 -0
  277. package/skills/dispatching-parallel-agents/SKILL.md +113 -0
  278. package/skills/finishing-a-development-branch/SKILL.md +200 -0
  279. package/skills/receiving-code-review/SKILL.md +213 -0
  280. package/skills/requesting-code-review/SKILL.md +73 -0
  281. package/skills/requesting-code-review/code-reviewer.md +146 -0
  282. package/skills/subagent-driven-development/SKILL.md +98 -0
  283. package/skills/subagent-driven-development/code-quality-reviewer-prompt.md +20 -0
  284. package/skills/subagent-driven-development/implementer-prompt.md +78 -0
  285. package/skills/systematic-debugging/CREATION-LOG.md +119 -0
  286. package/skills/systematic-debugging/SKILL.md +296 -0
  287. package/skills/systematic-debugging/condition-based-waiting-example.ts +158 -0
  288. package/skills/systematic-debugging/condition-based-waiting.md +115 -0
  289. package/skills/systematic-debugging/defense-in-depth.md +122 -0
  290. package/skills/systematic-debugging/find-polluter.sh +63 -0
  291. package/skills/systematic-debugging/root-cause-tracing.md +169 -0
  292. package/skills/systematic-debugging/test-academic.md +14 -0
  293. package/skills/systematic-debugging/test-pressure-1.md +58 -0
  294. package/skills/systematic-debugging/test-pressure-2.md +68 -0
  295. package/skills/systematic-debugging/test-pressure-3.md +69 -0
  296. package/skills/test-driven-development/SKILL.md +356 -0
  297. package/skills/test-driven-development/testing-anti-patterns.md +299 -0
  298. package/skills/using-git-worktrees/SKILL.md +212 -0
  299. package/skills/using-superpowers/SKILL.md +95 -0
  300. package/skills/verification-before-completion/SKILL.md +126 -0
  301. package/skills/writing-skills/SKILL.md +148 -0
@@ -0,0 +1,126 @@
1
+ ---
2
+ name: verification-before-completion
3
+ description: Use when about to claim work is complete, fixed, or passing, before committing or creating PRs - requires running verification commands and confirming output before making any success claims; evidence before assertions always
4
+ ---
5
+
6
+ # Verification Before Completion
7
+
8
+ ## Overview
9
+
10
+ Claiming work is complete without verification is dishonesty, not efficiency.
11
+
12
+ **Core principle:** Evidence before claims, always.
13
+
14
+ **Violating the letter of this rule is violating the spirit of this rule.**
15
+
16
+ ## The Iron Law
17
+
18
+ ```
19
+ NO COMPLETION CLAIMS WITHOUT FRESH VERIFICATION EVIDENCE
20
+ ```
21
+
22
+ If you haven't run the verification command in this message, you cannot claim it passes.
23
+
24
+ ## The Gate Function
25
+
26
+ ```
27
+ BEFORE claiming any status or expressing satisfaction:
28
+
29
+ 1. IDENTIFY: What command proves this claim?
30
+ 2. RUN: Execute the FULL command (fresh, complete)
31
+ 3. READ: Full output, check exit code, count failures
32
+ 4. VERIFY: Does output confirm the claim?
33
+ - If NO: State actual status with evidence
34
+ - If YES: State claim WITH evidence
35
+ 5. ONLY THEN: Make the claim
36
+
37
+ Skip any step = lying, not verifying
38
+ ```
39
+
40
+ ## Common Failures
41
+
42
+ | Claim | Requires | Not Sufficient |
43
+ |-------|----------|----------------|
44
+ | Tests pass | Test command output: 0 failures | Previous run, "should pass" |
45
+ | Linter clean | Linter output: 0 errors | Partial check, extrapolation |
46
+ | Build succeeds | Build command: exit 0 | Linter passing, logs look good |
47
+ | Bug fixed | Test original symptom: passes | Code changed, assumed fixed |
48
+ | Agent completed | VCS diff shows changes | Agent reports "success" |
49
+ | Requirements met | Line-by-line checklist | Tests passing |
50
+
51
+ ## Red Flags - STOP
52
+
53
+ - Using "should", "probably", "seems to"
54
+ - Expressing satisfaction before verification ("Great!", "Perfect!", "Done!", etc.)
55
+ - About to commit/push/PR without verification
56
+ - Trusting agent success reports
57
+ - Relying on partial verification
58
+ - **ANY wording implying success without having run verification**
59
+
60
+ ## Rationalization Prevention
61
+
62
+ | Excuse | Reality |
63
+ |--------|---------|
64
+ | "Should work now" | RUN the verification |
65
+ | "I'm confident" | Confidence ≠ evidence |
66
+ | "Just this once" | No exceptions |
67
+ | "Agent said success" | Verify independently |
68
+ | "Partial check is enough" | Partial proves nothing |
69
+
70
+ ## Key Patterns
71
+
72
+ **Tests:**
73
+ ```
74
+ ✅ [Run test command] [See: 34/34 pass] "All tests pass"
75
+ ❌ "Should pass now" / "Looks correct"
76
+ ```
77
+
78
+ **Regression tests (TDD Red-Green):**
79
+ ```
80
+ ✅ Write → Run (pass) → Revert fix → Run (MUST FAIL) → Restore → Run (pass)
81
+ ❌ "I've written a regression test" (without red-green verification)
82
+ ```
83
+
84
+ **Build:**
85
+ ```
86
+ ✅ [Run build] [See: exit 0] "Build passes"
87
+ ❌ "Linter passed" (linter doesn't check compilation)
88
+ ```
89
+
90
+ **Requirements:**
91
+ ```
92
+ ✅ Re-read plan → Create checklist → Verify each → Report gaps or completion
93
+ ❌ "Tests pass, phase complete"
94
+ ```
95
+
96
+ **Agent delegation:**
97
+ ```
98
+ ✅ Agent reports success → Check VCS diff → Verify changes → Report actual state
99
+ ❌ Trust agent report
100
+ ```
101
+
102
+ ## Why This Matters
103
+
104
+ From 24 failure memories:
105
+ - your human partner said "I don't believe you" - trust broken
106
+ - Undefined functions shipped - would crash
107
+ - Missing requirements shipped - incomplete features
108
+ - Time wasted on false completion → redirect → rework
109
+ - Violates: "Honesty is a core value. If you lie, you'll be replaced."
110
+
111
+ ## When To Apply
112
+
113
+ **ALWAYS before:**
114
+ - ANY variation of success/completion claims
115
+ - ANY expression of satisfaction
116
+ - Committing, PR creation, task completion
117
+ - Moving to next task
118
+ - Delegating to agents
119
+
120
+ ## The Bottom Line
121
+
122
+ **No shortcuts for verification.**
123
+
124
+ Run the command. Read the output. THEN claim the result.
125
+
126
+ This is non-negotiable.
@@ -0,0 +1,148 @@
1
+ ---
2
+ name: writing-skills
3
+ description: Use when creating new skills, editing existing skills, or verifying skills work before deployment
4
+ ---
5
+
6
+ # Writing Skills
7
+
8
+ ## Overview
9
+
10
+ **Writing skills IS Test-Driven Development applied to process documentation.**
11
+
12
+ You write test cases (pressure scenarios with subagents), watch them fail (baseline behavior), write the skill (documentation), watch tests pass (agents comply), and refactor (close loopholes).
13
+
14
+ **Core principle:** If you didn't watch an agent fail without the skill, you don't know if the skill teaches the right thing.
15
+
16
+ **REQUIRED BACKGROUND:** You MUST understand superpowers:test-driven-development before using this skill.
17
+
18
+ ## What is a Skill?
19
+
20
+ A **skill** is a reference guide for proven techniques, patterns, or tools. Skills help future agent instances find and apply effective approaches.
21
+
22
+ **Skills are:** Reusable techniques, patterns, tools, reference guides
23
+
24
+ **Skills are NOT:** Narratives about how you solved a problem once
25
+
26
+ ## When to Create a Skill
27
+
28
+ **Create when:**
29
+ - Technique wasn't intuitively obvious to you
30
+ - You'd reference this again across projects
31
+ - Pattern applies broadly (not project-specific)
32
+ - Others would benefit
33
+
34
+ **Don't create for:**
35
+ - One-off solutions
36
+ - Standard practices well-documented elsewhere
37
+ - Project-specific conventions (put in CLAUDE.md/AGENTS.md)
38
+
39
+ ## Skill Types
40
+
41
+ ### Technique
42
+ Concrete method with steps to follow
43
+
44
+ ### Pattern
45
+ Way of thinking about problems
46
+
47
+ ### Reference
48
+ API docs, syntax guides, tool documentation
49
+
50
+ ## Directory Structure
51
+
52
+ ```
53
+ skills/
54
+ skill-name/
55
+ SKILL.md # Main reference (required)
56
+ supporting-file.* # Only if needed
57
+ ```
58
+
59
+ ## SKILL.md Structure
60
+
61
+ **Frontmatter (YAML):**
62
+ - Only two fields supported: `name` and `description`
63
+ - `name`: Use letters, numbers, and hyphens only
64
+ - `description`: Third-person, describes ONLY when to use (NOT what it does)
65
+ - Start with "Use when..." to focus on triggering conditions
66
+ - **NEVER summarize the skill's process or workflow**
67
+
68
+ ```markdown
69
+ ---
70
+ name: skill-name
71
+ description: Use when [specific triggering conditions and symptoms]
72
+ ---
73
+
74
+ # Skill Name
75
+
76
+ ## Overview
77
+ What is this? Core principle in 1-2 sentences.
78
+
79
+ ## When to Use
80
+ Bullet list with SYMPTOMS and use cases
81
+
82
+ ## Core Pattern
83
+ Before/after examples
84
+
85
+ ## Quick Reference
86
+ Table or bullets for scanning
87
+
88
+ ## Common Mistakes
89
+ What goes wrong + fixes
90
+ ```
91
+
92
+ ## Critical: Description = When to Use, NOT What the Skill Does
93
+
94
+ **The trap:** Descriptions that summarize workflow create a shortcut agents take. The skill body becomes documentation agents skip.
95
+
96
+ ```yaml
97
+ # ❌ BAD: Summarizes workflow
98
+ description: Use when executing plans - dispatches subagent per task with code review between tasks
99
+
100
+ # ✅ GOOD: Just triggering conditions
101
+ description: Use when executing implementation plans with independent tasks
102
+ ```
103
+
104
+ ## Token Efficiency
105
+
106
+ **Target word counts:**
107
+ - Frequently-loaded skills: <200 words total
108
+ - Other skills: <500 words (still be concise)
109
+
110
+ **Move details to tool help:**
111
+ ```bash
112
+ # ❌ BAD: Document all flags in SKILL.md
113
+ # ✅ GOOD: Reference --help
114
+ ```
115
+
116
+ ## The Iron Law (Same as TDD)
117
+
118
+ ```
119
+ NO SKILL WITHOUT A FAILING TEST FIRST
120
+ ```
121
+
122
+ Write skill before testing? Delete it. Start over.
123
+
124
+ **No exceptions:**
125
+ - Not for "simple additions"
126
+ - Not for "just adding a section"
127
+
128
+ ## Flowcharts
129
+
130
+ Use flowcharts ONLY for:
131
+ - Non-obvious decision points
132
+ - Process loops where you might stop too early
133
+ - "When to use A vs B" decisions
134
+
135
+ ## Cross-Referencing Other Skills
136
+
137
+ Use skill name only, with explicit requirement markers:
138
+ - ✅ `**REQUIRED:** Use superpowers:test-driven-development`
139
+ - ❌ `@skills/test-driven-development/SKILL.md` (force-loads, burns context)
140
+
141
+ ## Common Rationalizations for Skipping Testing
142
+
143
+ | Excuse | Reality |
144
+ |--------|---------|
145
+ | "Skill is obviously clear" | Clear to you ≠ clear to other agents. Test it. |
146
+ | "It's just a reference" | References can have gaps. Test retrieval. |
147
+ | "Testing is overkill" | Untested skills have issues. Always. |
148
+ | "No time to test" | Deploying untested skill wastes more time fixing it later. |