bmad-module-skill-forge 0.9.0 → 0.10.1-alpha.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 (268) hide show
  1. package/.claude-plugin/marketplace.json +39 -0
  2. package/.gitattributes +16 -0
  3. package/README.md +105 -38
  4. package/docs/404.md +13 -10
  5. package/docs/RELEASING.md +185 -0
  6. package/docs/STABILITY.md +123 -0
  7. package/docs/_data/pinned.yaml +98 -0
  8. package/docs/agents.md +16 -11
  9. package/docs/architecture.md +221 -0
  10. package/docs/bmad-synergy.md +11 -13
  11. package/docs/concepts.md +18 -108
  12. package/docs/examples.md +121 -80
  13. package/docs/getting-started.md +85 -147
  14. package/docs/how-it-works.md +25 -536
  15. package/docs/index.md +44 -27
  16. package/docs/skill-model.md +328 -0
  17. package/docs/troubleshooting.md +39 -0
  18. package/docs/verifying-a-skill.md +232 -0
  19. package/docs/why-skf.md +93 -0
  20. package/docs/workflows.md +119 -13
  21. package/package.json +25 -4
  22. package/src/README.md +23 -25
  23. package/src/forger/forge-tier.yaml +4 -2
  24. package/src/forger/preferences.yaml +7 -1
  25. package/src/knowledge/agentskills-spec.md +1 -1
  26. package/src/knowledge/architecture-verification.md +1 -1
  27. package/src/knowledge/ccc-bridge.md +16 -15
  28. package/src/knowledge/overview.md +11 -11
  29. package/src/knowledge/progressive-capability.md +3 -3
  30. package/src/knowledge/provenance-tracking.md +9 -3
  31. package/src/knowledge/qmd-registry.md +8 -8
  32. package/src/knowledge/skf-knowledge-index.csv +2 -2
  33. package/src/knowledge/skill-lifecycle.md +16 -1
  34. package/src/knowledge/split-body-strategy.md +1 -1
  35. package/src/knowledge/version-paths.md +17 -12
  36. package/src/module-help.csv +18 -17
  37. package/src/module.yaml +4 -0
  38. package/src/shared/health-check.md +372 -0
  39. package/src/shared/references/feasibility-report-schema.md +86 -0
  40. package/src/shared/references/headless-gate-convention.md +62 -0
  41. package/src/shared/references/output-contract-schema.md +35 -0
  42. package/src/shared/references/pipeline-contracts.md +102 -0
  43. package/src/shared/scripts/skf-atomic-write.py +370 -0
  44. package/src/shared/scripts/skf-manifest-ops.py +236 -0
  45. package/src/shared/scripts/skf-preflight.py +164 -0
  46. package/src/shared/scripts/skf-rebuild-managed-sections.py +201 -0
  47. package/src/shared/scripts/skf-severity-classify.py +163 -0
  48. package/src/shared/scripts/skf-skill-inventory.py +210 -0
  49. package/src/shared/scripts/skf-structural-diff.py +257 -0
  50. package/src/shared/scripts/skf-validate-frontmatter.py +318 -0
  51. package/src/shared/scripts/skf-validate-output.py +247 -0
  52. package/src/skf-analyze-source/SKILL.md +57 -0
  53. package/src/skf-analyze-source/assets/skill-brief-schema.md +125 -0
  54. package/src/skf-analyze-source/references/unit-detection-heuristics.md +124 -0
  55. package/src/{workflows/analyze-source → skf-analyze-source}/steps-c/step-01-init.md +6 -66
  56. package/src/{workflows/analyze-source → skf-analyze-source}/steps-c/step-01b-continue.md +4 -59
  57. package/src/{workflows/analyze-source → skf-analyze-source}/steps-c/step-02-scan-project.md +7 -68
  58. package/src/{workflows/analyze-source → skf-analyze-source}/steps-c/step-03-identify-units.md +6 -66
  59. package/src/{workflows/analyze-source → skf-analyze-source}/steps-c/step-04-map-and-detect.md +7 -68
  60. package/src/{workflows/analyze-source → skf-analyze-source}/steps-c/step-05-recommend.md +6 -66
  61. package/src/{workflows/analyze-source → skf-analyze-source}/steps-c/step-06-generate-briefs.md +14 -66
  62. package/src/skf-analyze-source/steps-c/step-07-health-check.md +22 -0
  63. package/src/skf-audit-skill/SKILL.md +59 -0
  64. package/src/{workflows/audit-skill/data → skf-audit-skill/assets}/drift-report-template.md +7 -7
  65. package/src/{workflows/audit-skill/data → skf-audit-skill/references}/severity-rules.md +11 -11
  66. package/src/{workflows/audit-skill → skf-audit-skill}/steps-c/step-01-init.md +24 -68
  67. package/src/{workflows/audit-skill → skf-audit-skill}/steps-c/step-02-re-index.md +36 -71
  68. package/src/{workflows/audit-skill → skf-audit-skill}/steps-c/step-03-structural-diff.md +21 -63
  69. package/src/{workflows/audit-skill → skf-audit-skill}/steps-c/step-04-semantic-diff.md +6 -65
  70. package/src/{workflows/audit-skill → skf-audit-skill}/steps-c/step-05-severity-classify.md +5 -63
  71. package/src/{workflows/audit-skill → skf-audit-skill}/steps-c/step-06-report.md +10 -59
  72. package/src/skf-audit-skill/steps-c/step-07-health-check.md +22 -0
  73. package/src/skf-brief-skill/SKILL.md +53 -0
  74. package/src/{workflows/brief-skill/data → skf-brief-skill/assets}/scope-templates.md +23 -0
  75. package/src/skf-brief-skill/assets/skill-brief-schema.md +206 -0
  76. package/src/{workflows/brief-skill → skf-brief-skill}/steps-c/step-01-gather-intent.md +6 -67
  77. package/src/{workflows/brief-skill → skf-brief-skill}/steps-c/step-02-analyze-target.md +6 -66
  78. package/src/{workflows/brief-skill → skf-brief-skill}/steps-c/step-03-scope-definition.md +12 -68
  79. package/src/{workflows/brief-skill → skf-brief-skill}/steps-c/step-04-confirm-brief.md +5 -63
  80. package/src/{workflows/brief-skill → skf-brief-skill}/steps-c/step-05-write-brief.md +10 -69
  81. package/src/skf-brief-skill/steps-c/step-06-health-check.md +22 -0
  82. package/src/skf-create-skill/SKILL.md +63 -0
  83. package/src/{workflows/create-skill/data → skf-create-skill/assets}/compile-assembly-rules.md +60 -0
  84. package/src/{workflows/create-skill/data → skf-create-skill/assets}/skill-sections.md +92 -23
  85. package/src/skf-create-skill/assets/tessl-dismissal-rules.md +102 -0
  86. package/src/{workflows/create-skill/data → skf-create-skill/references}/extraction-patterns-tracing.md +13 -13
  87. package/src/{workflows/create-skill/data → skf-create-skill/references}/extraction-patterns.md +8 -3
  88. package/src/skf-create-skill/references/source-resolution-protocols.md +239 -0
  89. package/src/{workflows/create-skill/data → skf-create-skill/references}/tier-degradation-rules.md +8 -7
  90. package/src/{workflows/create-skill → skf-create-skill}/steps-c/step-01-load-brief.md +25 -63
  91. package/src/{workflows/create-skill → skf-create-skill}/steps-c/step-02-ecosystem-check.md +8 -64
  92. package/src/skf-create-skill/steps-c/step-03-extract.md +379 -0
  93. package/src/{workflows/create-skill → skf-create-skill}/steps-c/step-03d-component-extraction.md +18 -35
  94. package/src/{workflows/create-skill → skf-create-skill}/steps-c/step-04-enrich.md +12 -69
  95. package/src/{workflows/create-skill → skf-create-skill}/steps-c/step-05-compile.md +71 -75
  96. package/src/skf-create-skill/steps-c/step-06-validate.md +267 -0
  97. package/src/{workflows/create-skill → skf-create-skill}/steps-c/step-07-generate-artifacts.md +30 -74
  98. package/src/skf-create-skill/steps-c/step-08-report.md +145 -0
  99. package/src/skf-create-skill/steps-c/step-09-health-check.md +23 -0
  100. package/src/{workflows/create-skill/steps-c → skf-create-skill/steps-c/sub}/step-02b-ccc-discover.md +8 -66
  101. package/src/skf-create-skill/steps-c/sub/step-03b-fetch-temporal.md +229 -0
  102. package/src/{workflows/create-skill/steps-c → skf-create-skill/steps-c/sub}/step-03c-fetch-docs.md +18 -42
  103. package/src/skf-create-stack-skill/SKILL.md +64 -0
  104. package/src/{workflows/create-stack-skill/data → skf-create-stack-skill/assets}/stack-skill-template.md +2 -1
  105. package/src/{workflows/create-stack-skill/data → skf-create-stack-skill/references}/compose-mode-rules.md +19 -5
  106. package/src/{workflows/create-stack-skill/data → skf-create-stack-skill/references}/integration-patterns.md +1 -1
  107. package/src/{workflows/create-stack-skill/data → skf-create-stack-skill/references}/manifest-patterns.md +10 -10
  108. package/src/{workflows/create-stack-skill → skf-create-stack-skill}/steps-c/step-01-init.md +14 -55
  109. package/src/{workflows/create-stack-skill → skf-create-stack-skill}/steps-c/step-02-detect-manifests.md +29 -63
  110. package/src/{workflows/create-stack-skill → skf-create-stack-skill}/steps-c/step-03-rank-and-confirm.md +9 -59
  111. package/src/{workflows/create-stack-skill → skf-create-stack-skill}/steps-c/step-04-parallel-extract.md +29 -64
  112. package/src/skf-create-stack-skill/steps-c/step-05-detect-integrations.md +164 -0
  113. package/src/{workflows/create-stack-skill → skf-create-stack-skill}/steps-c/step-06-compile-stack.md +7 -60
  114. package/src/skf-create-stack-skill/steps-c/step-07-generate-output.md +328 -0
  115. package/src/{workflows/create-stack-skill → skf-create-stack-skill}/steps-c/step-08-validate.md +17 -63
  116. package/src/skf-create-stack-skill/steps-c/step-09-report.md +128 -0
  117. package/src/skf-create-stack-skill/steps-c/step-10-health-check.md +22 -0
  118. package/src/skf-drop-skill/SKILL.md +57 -0
  119. package/src/{workflows/drop-skill → skf-drop-skill}/steps-c/step-01-select.md +9 -69
  120. package/src/{workflows/drop-skill → skf-drop-skill}/steps-c/step-02-execute.md +30 -106
  121. package/src/skf-drop-skill/steps-c/step-03-report.md +83 -0
  122. package/src/skf-drop-skill/steps-c/step-04-health-check.md +22 -0
  123. package/src/skf-export-skill/SKILL.md +57 -0
  124. package/src/skf-export-skill/assets/managed-section-format.md +138 -0
  125. package/src/{workflows/export-skill/data → skf-export-skill/assets}/snippet-format.md +8 -12
  126. package/src/skf-export-skill/steps-c/step-01-load-skill.md +247 -0
  127. package/src/{workflows/export-skill → skf-export-skill}/steps-c/step-02-package.md +5 -58
  128. package/src/{workflows/export-skill → skf-export-skill}/steps-c/step-03-generate-snippet.md +15 -77
  129. package/src/{workflows/export-skill → skf-export-skill}/steps-c/step-04-update-context.md +59 -133
  130. package/src/{workflows/export-skill → skf-export-skill}/steps-c/step-05-token-report.md +4 -58
  131. package/src/{workflows/export-skill → skf-export-skill}/steps-c/step-06-summary.md +20 -64
  132. package/src/skf-export-skill/steps-c/step-07-health-check.md +22 -0
  133. package/src/skf-forger/SKILL.md +110 -0
  134. package/src/skf-forger/bmad-skill-manifest.yaml +11 -0
  135. package/src/skf-quick-skill/SKILL.md +56 -0
  136. package/src/{workflows/quick-skill/data → skf-quick-skill/references}/registry-resolution.md +6 -6
  137. package/src/{workflows/quick-skill → skf-quick-skill}/steps-c/step-01-resolve-target.md +9 -62
  138. package/src/{workflows/quick-skill → skf-quick-skill}/steps-c/step-02-ecosystem-check.md +5 -59
  139. package/src/{workflows/quick-skill → skf-quick-skill}/steps-c/step-03-quick-extract.md +18 -61
  140. package/src/{workflows/quick-skill → skf-quick-skill}/steps-c/step-04-compile.md +6 -60
  141. package/src/{workflows/quick-skill → skf-quick-skill}/steps-c/step-05-validate.md +58 -78
  142. package/src/skf-quick-skill/steps-c/step-06-write.md +73 -0
  143. package/src/skf-quick-skill/steps-c/step-07-health-check.md +22 -0
  144. package/src/skf-refine-architecture/SKILL.md +57 -0
  145. package/src/{workflows/refine-architecture/data → skf-refine-architecture/references}/refinement-rules.md +16 -16
  146. package/src/{workflows/refine-architecture → skf-refine-architecture}/steps-c/step-01-init.md +6 -63
  147. package/src/{workflows/refine-architecture → skf-refine-architecture}/steps-c/step-02-gap-analysis.md +29 -71
  148. package/src/{workflows/refine-architecture → skf-refine-architecture}/steps-c/step-03-issue-detection.md +5 -65
  149. package/src/{workflows/refine-architecture → skf-refine-architecture}/steps-c/step-04-improvements.md +5 -64
  150. package/src/{workflows/refine-architecture → skf-refine-architecture}/steps-c/step-05-compile.md +5 -56
  151. package/src/{workflows/refine-architecture → skf-refine-architecture}/steps-c/step-06-report.md +14 -64
  152. package/src/skf-refine-architecture/steps-c/step-07-health-check.md +22 -0
  153. package/src/skf-rename-skill/SKILL.md +58 -0
  154. package/src/{workflows/rename-skill → skf-rename-skill}/steps-c/step-01-select.md +12 -73
  155. package/src/{workflows/rename-skill → skf-rename-skill}/steps-c/step-02-execute.md +32 -113
  156. package/src/skf-rename-skill/steps-c/step-03-report.md +83 -0
  157. package/src/skf-rename-skill/steps-c/step-04-health-check.md +22 -0
  158. package/src/skf-setup/SKILL.md +55 -0
  159. package/src/{workflows/setup-forge → skf-setup}/steps-c/step-01-detect-and-tier.md +6 -62
  160. package/src/{workflows/setup-forge → skf-setup}/steps-c/step-01b-ccc-index.md +9 -65
  161. package/src/{workflows/setup-forge → skf-setup}/steps-c/step-02-write-config.md +15 -60
  162. package/src/{workflows/setup-forge → skf-setup}/steps-c/step-03-auto-index.md +7 -66
  163. package/src/skf-setup/steps-c/step-04-report.md +92 -0
  164. package/src/skf-setup/steps-c/step-05-health-check.md +22 -0
  165. package/src/skf-test-skill/SKILL.md +59 -0
  166. package/src/skf-test-skill/references/migration-section-rules.md +114 -0
  167. package/src/skf-test-skill/references/scoring-rules.md +207 -0
  168. package/src/skf-test-skill/references/source-access-protocol.md +109 -0
  169. package/src/skf-test-skill/scripts/compute-score.py +310 -0
  170. package/src/skf-test-skill/steps-c/step-01-init.md +238 -0
  171. package/src/{workflows/test-skill → skf-test-skill}/steps-c/step-02-detect-mode.md +4 -62
  172. package/src/skf-test-skill/steps-c/step-03-coverage-check.md +347 -0
  173. package/src/skf-test-skill/steps-c/step-04-coherence-check.md +239 -0
  174. package/src/{workflows/test-skill → skf-test-skill}/steps-c/step-04b-external-validators.md +42 -77
  175. package/src/skf-test-skill/steps-c/step-05-score.md +266 -0
  176. package/src/skf-test-skill/steps-c/step-06-report.md +290 -0
  177. package/src/skf-test-skill/steps-c/step-07-health-check.md +25 -0
  178. package/src/skf-test-skill/templates/test-report-template.md +58 -0
  179. package/src/skf-update-skill/SKILL.md +58 -0
  180. package/src/{workflows/update-skill/data → skf-update-skill/references}/manual-section-rules.md +6 -6
  181. package/src/{workflows/update-skill/data → skf-update-skill/references}/merge-conflict-rules.md +5 -5
  182. package/src/skf-update-skill/references/remote-source-resolution.md +94 -0
  183. package/src/{workflows/update-skill → skf-update-skill}/steps-c/step-01-init.md +22 -69
  184. package/src/skf-update-skill/steps-c/step-02-detect-changes.md +255 -0
  185. package/src/skf-update-skill/steps-c/step-03-re-extract.md +336 -0
  186. package/src/{workflows/update-skill → skf-update-skill}/steps-c/step-04-merge.md +60 -72
  187. package/src/{workflows/update-skill → skf-update-skill}/steps-c/step-05-validate.md +5 -62
  188. package/src/skf-update-skill/steps-c/step-06-write.md +278 -0
  189. package/src/{workflows/update-skill → skf-update-skill}/steps-c/step-07-report.md +11 -66
  190. package/src/skf-update-skill/steps-c/step-08-health-check.md +22 -0
  191. package/src/skf-verify-stack/SKILL.md +60 -0
  192. package/src/skf-verify-stack/assets/feasibility-report-template.md +76 -0
  193. package/src/{workflows/verify-stack/data → skf-verify-stack/references}/coverage-patterns.md +12 -4
  194. package/src/skf-verify-stack/references/integration-verification-rules.md +78 -0
  195. package/src/skf-verify-stack/steps-c/step-01-init.md +178 -0
  196. package/src/{workflows/verify-stack → skf-verify-stack}/steps-c/step-02-coverage.md +27 -72
  197. package/src/skf-verify-stack/steps-c/step-03-integrations.md +179 -0
  198. package/src/{workflows/verify-stack → skf-verify-stack}/steps-c/step-04-requirements.md +14 -67
  199. package/src/skf-verify-stack/steps-c/step-05-synthesize.md +147 -0
  200. package/src/skf-verify-stack/steps-c/step-06-report.md +156 -0
  201. package/src/skf-verify-stack/steps-c/step-07-health-check.md +25 -0
  202. package/tools/cli/commands/install.js +1 -1
  203. package/tools/cli/commands/status.js +21 -23
  204. package/tools/cli/commands/uninstall.js +11 -19
  205. package/tools/cli/commands/update.js +2 -2
  206. package/tools/cli/lib/ide-skills.js +216 -0
  207. package/tools/cli/lib/installer.js +29 -52
  208. package/tools/cli/lib/manifest.js +11 -5
  209. package/tools/cli/lib/platform-codes.yaml +223 -0
  210. package/tools/cli/lib/ui.js +76 -47
  211. package/tools/validate-docs-drift.js +193 -0
  212. package/src/agents/forger.agent.yaml +0 -114
  213. package/src/workflows/README.md +0 -174
  214. package/src/workflows/analyze-source/data/skill-brief-schema.md +0 -125
  215. package/src/workflows/analyze-source/data/unit-detection-heuristics.md +0 -124
  216. package/src/workflows/analyze-source/workflow.md +0 -61
  217. package/src/workflows/audit-skill/workflow.md +0 -64
  218. package/src/workflows/brief-skill/data/skill-brief-schema.md +0 -159
  219. package/src/workflows/brief-skill/workflow.md +0 -58
  220. package/src/workflows/create-skill/data/source-resolution-protocols.md +0 -200
  221. package/src/workflows/create-skill/steps-c/step-03-extract.md +0 -301
  222. package/src/workflows/create-skill/steps-c/step-03b-fetch-temporal.md +0 -253
  223. package/src/workflows/create-skill/steps-c/step-06-validate.md +0 -254
  224. package/src/workflows/create-skill/steps-c/step-08-report.md +0 -176
  225. package/src/workflows/create-skill/workflow.md +0 -53
  226. package/src/workflows/create-stack-skill/steps-c/step-05-detect-integrations.md +0 -196
  227. package/src/workflows/create-stack-skill/steps-c/step-07-generate-output.md +0 -270
  228. package/src/workflows/create-stack-skill/steps-c/step-09-report.md +0 -145
  229. package/src/workflows/create-stack-skill/workflow.md +0 -59
  230. package/src/workflows/drop-skill/steps-c/step-03-report.md +0 -135
  231. package/src/workflows/drop-skill/workflow.md +0 -63
  232. package/src/workflows/export-skill/data/managed-section-format.md +0 -103
  233. package/src/workflows/export-skill/steps-c/step-01-load-skill.md +0 -237
  234. package/src/workflows/export-skill/workflow.md +0 -58
  235. package/src/workflows/quick-skill/steps-c/step-06-write.md +0 -179
  236. package/src/workflows/quick-skill/workflow.md +0 -58
  237. package/src/workflows/refine-architecture/workflow.md +0 -61
  238. package/src/workflows/rename-skill/steps-c/step-03-report.md +0 -132
  239. package/src/workflows/rename-skill/workflow.md +0 -64
  240. package/src/workflows/setup-forge/steps-c/step-04-report.md +0 -156
  241. package/src/workflows/setup-forge/workflow.md +0 -51
  242. package/src/workflows/test-skill/data/scoring-rules.md +0 -123
  243. package/src/workflows/test-skill/data/source-access-protocol.md +0 -51
  244. package/src/workflows/test-skill/steps-c/step-01-init.md +0 -217
  245. package/src/workflows/test-skill/steps-c/step-03-coverage-check.md +0 -280
  246. package/src/workflows/test-skill/steps-c/step-04-coherence-check.md +0 -271
  247. package/src/workflows/test-skill/steps-c/step-05-score.md +0 -222
  248. package/src/workflows/test-skill/steps-c/step-06-report.md +0 -207
  249. package/src/workflows/test-skill/templates/test-report-template.md +0 -28
  250. package/src/workflows/test-skill/workflow.md +0 -57
  251. package/src/workflows/update-skill/data/remote-source-resolution.md +0 -57
  252. package/src/workflows/update-skill/steps-c/step-02-detect-changes.md +0 -221
  253. package/src/workflows/update-skill/steps-c/step-03-re-extract.md +0 -256
  254. package/src/workflows/update-skill/steps-c/step-06-write.md +0 -265
  255. package/src/workflows/update-skill/workflow.md +0 -56
  256. package/src/workflows/verify-stack/data/feasibility-report-template.md +0 -63
  257. package/src/workflows/verify-stack/data/integration-verification-rules.md +0 -73
  258. package/src/workflows/verify-stack/steps-c/step-01-init.md +0 -179
  259. package/src/workflows/verify-stack/steps-c/step-03-integrations.md +0 -195
  260. package/src/workflows/verify-stack/steps-c/step-05-synthesize.md +0 -191
  261. package/src/workflows/verify-stack/steps-c/step-06-report.md +0 -197
  262. package/src/workflows/verify-stack/workflow.md +0 -61
  263. package/tools/cli/lib/compiler.js +0 -306
  264. package/tools/cli/lib/ide-commands.js +0 -244
  265. /package/src/{workflows/analyze-source → skf-analyze-source}/templates/analysis-report-template.md +0 -0
  266. /package/src/{workflows/quick-skill/data → skf-quick-skill/assets}/skill-template.md +0 -0
  267. /package/src/{workflows/setup-forge/data → skf-setup/references}/tier-rules.md +0 -0
  268. /package/src/{workflows/test-skill/data → skf-test-skill/assets}/output-section-formats.md +0 -0
@@ -0,0 +1,206 @@
1
+ # Skill Brief Schema
2
+
3
+ ## Required Fields
4
+
5
+ | Field | Type | Constraint | Description |
6
+ |-------------|--------|--------------------------------------------------|-----------------------------------------------------------------------------|
7
+ | name | string | kebab-case `[a-z0-9-]+` | Unique skill identifier |
8
+ | version | string | Semantic version (`X.Y.Z` or `X.Y.Z-prerelease`) | Auto-detect from source (see Version Detection below), fall back to `1.0.0`. **Side effect on remote sources:** `skf-create-skill` treats `version` as an **implicit** `target_version` hint when `target_version` itself is absent — it will try to resolve `{version}` or `v{version}` to a git tag before cloning and fall back to HEAD with a warning if no tag matches. See `skf-create-skill/references/source-resolution-protocols.md` → "Implicit Tag Resolution". |
9
+ | source_repo | string | GitHub URL or local path | Repository or project root (optional when `source_type: "docs-only"`) |
10
+ | language | string | Recognized language | Primary programming language |
11
+ | scope | object | See Scope Object below | Boundary definition |
12
+ | description | string | 1-3 sentences | What the skill covers |
13
+ | forge_tier | string | `Quick` / `Forge` / `Forge+` / `Deep` | Inherited from forge-tier.yaml (Title Case) |
14
+ | created | string | ISO date `YYYY-MM-DD` | Generation date |
15
+ | created_by | string | user_name from config | Who generated the brief |
16
+
17
+ ## Optional Fields
18
+
19
+ | Field | Type | Constraint | Description |
20
+ |--------------------|--------|--------------------------------------------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
21
+ | source_type | string | `source` or `docs-only` | Default `source`. When `docs-only`: `source_repo` optional, `doc_urls` required |
22
+ | doc_urls | array | `{url, label}` objects | Documentation URLs for T3 content. Required when `source_type: "docs-only"` |
23
+ | `scripts_intent` | string | `detect` / `none` / free-text | Describes whether scripts should be extracted. Values: `detect` (auto-detect from source — default when absent), `none` (skip scripts), or a free-text description of expected scripts (e.g., "CLI validation tools in bin/"). |
24
+ | `assets_intent` | string | `detect` / `none` / free-text | Describes whether assets should be extracted. Values: `detect` (auto-detect from source — default when absent), `none` (skip assets), or a free-text description of expected assets (e.g., "JSON schemas in schemas/"). |
25
+ | `target_version` | string | Semantic version (`X.Y.Z` or `X.Y.Z-prerelease`) | User-specified target version. When present, overrides auto-detection and becomes the skill's version. Recommended for docs-only skills where auto-detection is unavailable. |
26
+ | `source_authority` | string | `official` / `community` / `internal` | Default `community`. Set to `official` only when the skill creator is the library maintainer. Forced to `community` when `source_type: "docs-only"`. |
27
+ | `source_ref` | string | Git ref (tag/branch/HEAD) | Resolved git ref used for source access. Set automatically during tag resolution — do not set manually. |
28
+ | `scope.tier_a_include` | array | Glob patterns | Optional. Narrower tier-A include list for stratified-scope monorepo skills. When present, `skf-test-skill` re-derives the coverage denominator from this list instead of the coarse `scope.include`, so the denominator reflects the authoring surface rather than incidentally-matched internal infrastructure. See `skf-test-skill/references/source-access-protocol.md` stratified-scope resolution. |
29
+
30
+ When `source_type: "docs-only"`:
31
+ - `source_repo` becomes optional (set to doc site URL for reference)
32
+ - `doc_urls` must have at least one entry
33
+ - `source_authority` is forced to `community` (T3 external documentation cannot be `official`)
34
+ - All extracted content gets `[EXT:{url}]` citations
35
+
36
+ ## Version Detection
37
+
38
+ During brief creation, attempt to auto-detect the source version before defaulting to `"1.0.0"`. Check the first matching file in the source:
39
+
40
+ - **Python:** `pyproject.toml` `[project] version` (static) → if `dynamic = ["version"]`, check `__init__.py` for `__version__` → `_version.py` if exists → `setup.py` `version=` → `git describe --tags --abbrev=0`
41
+ - **JavaScript/TypeScript:** root `package.json` (`"version"`) → if root has `"private": true` with a `"workspaces"` array or lacks a `"version"` field, fall back to a primary workspace package's `package.json` (e.g., `code/core/package.json`, or the first matching `packages/*/package.json`). For GitHub sources, prefer `gh api repos/{owner}/{repo}/releases/latest` → `tag_name` when a non-pre-release tag exists, over a default-branch pre-release. Treat a version containing `-alpha`, `-beta`, `-rc`, `-next`, or `-canary` as a pre-release.
42
+ - **Rust:** `Cargo.toml` `[package] version` (static) → if `version = { workspace = true }`, resolve from workspace root `Cargo.toml` → `git describe --tags --abbrev=0`
43
+ - **Go:** version tag from `go.mod` or `git describe --tags --abbrev=0`
44
+
45
+ If the source is a remote GitHub repo, use `gh api repos/{owner}/{repo}/contents/{file}` to read the version file. If the source is local, read the file directly.
46
+
47
+ If detection succeeds, use the detected version. If it fails or returns a non-semver value, fall back to `"1.0.0"`.
48
+
49
+ The create-skill workflow (step-03-extract) also performs version reconciliation at extraction time — if the source version has changed since the brief was created, the extraction step warns and uses the source version.
50
+
51
+ **Target version override:** When `target_version` is present in the brief, it takes precedence over auto-detection. Auto-detection still runs for informational purposes (displayed as "Detected version" alongside the user-specified "Target version"), but the `target_version` value is used as the brief's `version` field. This is particularly useful for docs-only skills (where no package manifest exists) and when the user wants to compile a skill for a specific older version.
52
+
53
+ **Pre-release handling:** If the detected version contains a pre-release tag (e.g., `1.0.0-beta.0`, `2.0.0-rc.1`), preserve it as-is. Pre-release tags are valid semver and must not be stripped. When comparing versions during reconciliation, use semver-aware comparison that respects pre-release ordering.
54
+
55
+ ## Scope Object Structure
56
+
57
+ ```yaml
58
+ scope:
59
+ type: full-library | specific-modules | public-api | component-library | reference-app | docs-only
60
+ include:
61
+ - "src/**/*.ts" # Glob patterns for included files/directories
62
+ exclude:
63
+ - "**/*.test.*" # Glob patterns for excluded files
64
+ - "**/node_modules/**"
65
+ # Optional: narrower tier-A include list for stratified-scope monorepos
66
+ # tier_a_include:
67
+ # - "code/core/src/manager-api/**"
68
+ # - "code/core/src/preview-api/**"
69
+ notes: "Optional notes about scope decisions"
70
+ # Optional: amendment log for scope decisions made during create-skill §2a
71
+ # amendments:
72
+ # - path: "apps/docs/public/llms.txt"
73
+ # action: "promoted" # "promoted" | "skipped"
74
+ # reason: "authoritative AI docs — only source for canonical install command"
75
+ # heuristic: "llms.txt"
76
+ # date: "2026-04-11"
77
+ # workflow: "skf-create-skill"
78
+ # Additional fields when scope.type is "component-library":
79
+ # registry_path: "path/to/registry.ts" # Optional — auto-detected if omitted
80
+ # ui_variants: # Optional — design system variants
81
+ # - name: "shadcnui"
82
+ # package: "packages/components/react-shadcn"
83
+ # demo_patterns: # Optional — auto-detected if omitted
84
+ # - "**/demo/**"
85
+ # - "**/*.stories.*"
86
+ ```
87
+
88
+ ### Scope Amendments (Optional)
89
+
90
+ `scope.amendments[]` is an additive, optional audit log of scope decisions made by workflows after the brief was first authored. Its primary writer is `skf-create-skill` §2a (Discovered Authoritative Files Protocol), which appends entries when extraction discovers authoritative AI documentation files (`llms.txt`, `AGENTS.md`, etc.) that the original scope patterns excluded.
91
+
92
+ **Entry fields:**
93
+
94
+ | Field | Type | Required | Description |
95
+ |---|---|---|---|
96
+ | `path` | string | yes | Relative path from source root to the file being amended. Matches the literal path added to `scope.include` (for `promoted` actions). |
97
+ | `action` | string | yes | One of: `promoted` (file added to scope with a literal `scope.include` entry), `skipped` (user declined promotion; file remains out of scope, decision recorded to prevent re-prompting). |
98
+ | `reason` | string | yes | Human-readable sentence explaining the decision. Either user-provided at prompt time or auto-generated ("authoritative AI docs — matched heuristic {basename}"). |
99
+ | `heuristic` | string | yes | The basename heuristic that matched (`llms.txt`, `AGENTS.md`, etc.) so future audits can verify the file still matches its original classification. |
100
+ | `date` | string | yes | ISO date (`YYYY-MM-DD`) when the amendment was recorded. |
101
+ | `workflow` | string | yes | Workflow name that wrote the amendment (`skf-create-skill`, `skf-update-skill`). Identifies which workflow's §2a-equivalent made the decision. |
102
+
103
+ **Promotion write-through:** When `action: "promoted"`, the workflow also appends the literal path to `scope.include`. This is a belt-and-suspenders design: future `skf-create-skill` runs read `scope.include` during §2 and include the file in the filtered list automatically, so §2a finds no candidate and does not re-prompt. The `amendments[]` entry is the human-readable audit trail of *why* the path was added.
104
+
105
+ **Skip recording:** When `action: "skipped"`, the workflow does NOT modify `scope.include` or `scope.exclude`. The amendment entry alone is enough to prevent re-prompting, because §2a checks `amendments[]` before prompting.
106
+
107
+ **Backward compatibility:** `scope.amendments` is optional. Briefs without this field validate unchanged. Treat missing as an empty list.
108
+
109
+ **Who reads `amendments[]`:**
110
+
111
+ - `skf-create-skill` §2a consults it to avoid re-prompting on decided files.
112
+ - `skf-update-skill` §1b (mirror of §2a) consults it for the same reason.
113
+ - `skf-audit-skill` may optionally report on stale promotions (promoted files that no longer exist in source) as a future enhancement — not currently implemented.
114
+ - Humans reading the brief see the audit trail of non-obvious scope decisions.
115
+
116
+ **Who writes `amendments[]`:**
117
+
118
+ - `skf-create-skill` §2a (Discovered Authoritative Files Protocol)
119
+ - `skf-update-skill` §1b (mirror of §2a applied during change detection)
120
+ - Manual edits by the brief author are permitted but should include all required fields above.
121
+
122
+ ## YAML Template
123
+
124
+ ```yaml
125
+ ---
126
+ name: "{skill-name}"
127
+ version: "{detected-version or 1.0.0}" # Auto-detect from source, fall back to 1.0.0
128
+ source_type: "source" # "source" (default) or "docs-only"
129
+ source_repo: "{github-url-or-local-path}"
130
+ language: "{detected-language}"
131
+ description: "{brief-description}"
132
+ forge_tier: "{Quick|Forge|Forge+|Deep}"
133
+ created: "{date}"
134
+ created_by: "{user_name}"
135
+ scope:
136
+ type: "{full-library|specific-modules|public-api|component-library|reference-app|docs-only}"
137
+ include:
138
+ - "{pattern}"
139
+ exclude:
140
+ - "{pattern}"
141
+ notes: "{optional-scope-notes}"
142
+ # target_version: "X.Y.Z" # Optional: overrides auto-detection when specified
143
+ # source_ref: "v0.5.0" # Auto-resolved — do not set manually
144
+ # Optional: documentation URLs for T3 content (required when source_type: "docs-only")
145
+ # doc_urls:
146
+ # - url: "https://docs.example.com/api"
147
+ # label: "API Reference"
148
+ # scripts_intent: detect # Optional: detect | none | description
149
+ # assets_intent: detect # Optional: detect | none | description
150
+ # source_authority: community # Optional: official | community | internal
151
+ ---
152
+ ```
153
+
154
+ ## Human-Readable Presentation Format
155
+
156
+ When presenting the brief for confirmation (brief-skill step 04 only — not applicable to analyze-source batch generation), display as:
157
+
158
+ ```
159
+ Skill Brief: {name}
160
+ ====================
161
+
162
+ Target: {source_repo}
163
+ Language: {language}
164
+ Forge Tier: {forge_tier}
165
+ Description: {description}
166
+
167
+ Scope: {scope.type}
168
+ Include: {scope.include patterns, one per line}
169
+ Exclude: {scope.exclude patterns, one per line}
170
+ Notes: {scope.notes}
171
+
172
+ {If source_type is "docs-only":}
173
+ Source Type: docs-only
174
+ Doc URLs:
175
+ {doc_urls, one per line with labels}
176
+
177
+ {If source_type is "source" AND supplemental doc_urls collected:}
178
+ Supplemental Docs:
179
+ {doc_urls, one per line with labels}
180
+
181
+ {If scripts_intent or assets_intent was explicitly set (not default "detect"):}
182
+ Scripts: {scripts_intent}
183
+ Assets: {assets_intent}
184
+
185
+ Source Authority: {source_authority}
186
+
187
+ {If target_version is set:}
188
+ Target Version: {target_version} (user-specified)
189
+ Detected Version: {detected_version or "N/A"}
190
+ {Else:}
191
+ Version: {version}
192
+ {End if}
193
+ Created: {created}
194
+ Created by: {created_by}
195
+ ```
196
+
197
+ ## Validation Rules
198
+
199
+ 1. `name` must be unique within {forge_data_folder}
200
+ 2. `source_repo` must be accessible (gh api for GitHub, path exists for local)
201
+ 3. `language` must be a recognized programming language
202
+ 4. `scope.type` must be one of the six defined types
203
+ 5. `scope.include` must have at least one pattern (exception: `docs-only` scope, where include patterns are optional since no source code is available)
204
+ 6. `forge_tier` must be one of: Quick, Forge, Forge+, Deep (Title Case, must match the tier from forge-tier.yaml, or default to Quick)
205
+ 7. When `source_type: "docs-only"`: `doc_urls` must have >= 1 entry, `source_repo` becomes optional
206
+ 8. Each `doc_urls` entry must have a valid `url` field
@@ -1,7 +1,4 @@
1
1
  ---
2
- name: 'step-01-gather-intent'
3
- description: 'Initialize brief-skill workflow, discover forge tier, and gather user intent for skill creation'
4
-
5
2
  nextStepFile: './step-02-analyze-target.md'
6
3
  forgeTierFile: '{sidecar_path}/forge-tier.yaml'
7
4
  ---
@@ -12,45 +9,11 @@ forgeTierFile: '{sidecar_path}/forge-tier.yaml'
12
9
 
13
10
  To initialize the brief-skill workflow by discovering the forge tier configuration, then gathering the user's target repository, intent, and any upfront scope hints for skill creation.
14
11
 
15
- ## MANDATORY EXECUTION RULES (READ FIRST):
16
-
17
- ### Universal Rules:
18
-
19
- - 🛑 NEVER generate content without user input
20
- - 📖 CRITICAL: Read the complete step file before taking any action
21
- - 🔄 CRITICAL: When loading next step with 'C', ensure entire file is read
22
- - 📋 YOU ARE A FACILITATOR, not a content generator
23
- - ✅ YOU MUST ALWAYS SPEAK OUTPUT In your Agent communication style with the config `{communication_language}`
24
- - ⚙️ TOOL/SUBPROCESS FALLBACK: If any instruction references a subprocess, subagent, or tool you do not have access to, you MUST still achieve the outcome in your main context thread
25
-
26
- ### Role Reinforcement:
27
-
28
- - ✅ You are a skill scoping architect in Ferris Architect mode (exploratory, collaborative)
29
- - ✅ If you already have been given a name, communication_style and identity, continue to use those while playing this new role
30
- - ✅ We engage in collaborative dialogue, not command-response
31
- - ✅ You bring source code analysis and skill design expertise, user brings their domain knowledge and use case
32
- - ✅ Maintain a warm, guiding tone — this is a discovery conversation
33
-
34
- ### Step-Specific Rules:
35
-
36
- - 🎯 Focus only on gathering intent — do not analyze the repo yet (that's step 02)
37
- - 🚫 FORBIDDEN to examine source code or list exports in this step
38
- - 💬 Approach: Open-ended discovery facilitation — "What interests you about this library?"
39
- - 📋 Collect: target repo, user intent, scope hints, skill name
40
-
41
- ## EXECUTION PROTOCOLS:
42
-
43
- - 🎯 Follow the MANDATORY SEQUENCE exactly
44
- - 💾 Accumulate gathered information conversationally for use in subsequent steps
45
- - 📖 This is the init step — sets up everything that follows
46
- - 🚫 FORBIDDEN to proceed without a confirmed target repository
12
+ ## Rules
47
13
 
48
- ## CONTEXT BOUNDARIES:
49
-
50
- - Available context: Module config (forge_data_folder, user_name), forge-tier.yaml (if available)
51
- - Focus: Understanding WHAT the user wants to skill and WHY
52
- - Limits: Do not analyze source code, detect language, or list exports — that's step 02
53
- - Dependencies: None — this is the first step
14
+ - Focus only on gathering intent — do not analyze the repo yet (Step 02)
15
+ - Do not examine source code or list exports in this step
16
+ - Open-ended discovery facilitation collect target repo, user intent, scope hints, skill name
54
17
 
55
18
  ## MANDATORY SEQUENCE
56
19
 
@@ -67,7 +30,7 @@ Attempt to load `{forgeTierFile}`:
67
30
  **Apply tier override:** Read `{sidecar_path}/preferences.yaml`. If `tier_override` is set and is a valid tier value (Quick, Forge, Forge+, or Deep), use it instead of the detected tier.
68
31
 
69
32
  **If not found:**
70
- - "**Cannot proceed.** forge-tier.yaml not found at `{forgeTierFile}`. Please run the **setup-forge** workflow first to configure your forge tier (Quick/Forge/Forge+/Deep)."
33
+ - "**Cannot proceed.** forge-tier.yaml not found at `{forgeTierFile}`. Please run the **setup** workflow first to configure your forge tier (Quick/Forge/Forge+/Deep)."
71
34
  - HALT — do not proceed.
72
35
 
73
36
  ### 2. Welcome and Explain
@@ -207,34 +170,10 @@ Display: "**Select:** [C] Continue to Target Analysis"
207
170
  #### EXECUTION RULES:
208
171
 
209
172
  - ALWAYS halt and wait for user input after presenting menu
173
+ - **GATE [default: use args]** — If `{headless_mode}`: consume pre-supplied arguments (target_repo, skill_name, scope_hint, language_hint) and auto-proceed. If required args missing, HALT: "headless mode requires target_repo and skill_name arguments."
210
174
  - ONLY proceed to next step when user selects 'C'
211
175
 
212
176
  ## CRITICAL STEP COMPLETION NOTE
213
177
 
214
178
  ONLY WHEN C is selected and target repository is confirmed will you load and read fully `./step-02-analyze-target.md` to execute target analysis.
215
179
 
216
- ---
217
-
218
- ## 🚨 SYSTEM SUCCESS/FAILURE METRICS
219
-
220
- ### ✅ SUCCESS:
221
-
222
- - Forge tier discovered (HALT if missing), override applied if set in preferences.yaml
223
- - Target repository confirmed (GitHub URL or local path)
224
- - User intent captured with enough context for scoping
225
- - Skill name derived and confirmed
226
- - Scope hints noted (if provided)
227
- - Source type and source authority captured
228
- - Target version captured (if provided)
229
- - User ready to proceed to analysis
230
-
231
- ### ❌ SYSTEM FAILURE:
232
-
233
- - Analyzing source code in this step (too early)
234
- - Proceeding without a confirmed target repository
235
- - Not halting when forge tier is missing
236
- - Not attempting to discover forge tier
237
- - Generating a skill name without user confirmation
238
- - Skipping the intent gathering conversation
239
-
240
- **Master Rule:** Skipping steps, optimizing sequences, or not following exact instructions is FORBIDDEN and constitutes SYSTEM FAILURE.
@@ -1,7 +1,4 @@
1
1
  ---
2
- name: 'step-02-analyze-target'
3
- description: 'Analyze target repository structure, detect language, and list modules and exports'
4
-
5
2
  nextStepFile: './step-03-scope-definition.md'
6
3
  ---
7
4
 
@@ -11,45 +8,11 @@ nextStepFile: './step-03-scope-definition.md'
11
8
 
12
9
  To analyze the target repository by resolving its location, reading its structure, detecting the primary language, and listing top-level modules and exports — providing the user with a factual foundation for scoping decisions.
13
10
 
14
- ## MANDATORY EXECUTION RULES (READ FIRST):
15
-
16
- ### Universal Rules:
17
-
18
- - 🛑 NEVER generate content without user input
19
- - 📖 CRITICAL: Read the complete step file before taking any action
20
- - 🔄 CRITICAL: When loading next step with 'C', ensure entire file is read
21
- - 📋 YOU ARE A FACILITATOR, not a content generator
22
- - ✅ YOU MUST ALWAYS SPEAK OUTPUT In your Agent communication style with the config `{communication_language}`
23
- - ⚙️ TOOL/SUBPROCESS FALLBACK: If any instruction references a subprocess, subagent, or tool you do not have access to, you MUST still achieve the outcome in your main context thread
24
-
25
- ### Role Reinforcement:
26
-
27
- - ✅ You are a source code analyst in Ferris Architect mode
28
- - ✅ If you already have been given a name, communication_style and identity, continue to use those while playing this new role
29
- - ✅ Report ONLY what is found — zero hallucination tolerance
30
- - ✅ You bring structural analysis expertise, user brings their domain understanding
31
-
32
- ### Step-Specific Rules:
33
-
34
- - 🎯 Focus only on analysis — do not define scope yet (that's step 03)
35
- - 🚫 FORBIDDEN to make scoping decisions or recommendations in this step
36
- - 🚫 FORBIDDEN to hallucinate or guess about repository contents
37
- - 💬 Approach: Prescriptive — exact analysis instructions, factual reporting
38
- - 📋 Report everything found; let the user interpret for scoping
39
-
40
- ## EXECUTION PROTOCOLS:
41
-
42
- - 🎯 Follow the MANDATORY SEQUENCE exactly
43
- - 💾 Analysis results are accumulated conversationally for use in step 03
44
- - 📖 This step is autonomous — minimal user interaction required
45
- - 🚫 FORBIDDEN to proceed if target is inaccessible — halt with actionable error
11
+ ## Rules
46
12
 
47
- ## CONTEXT BOUNDARIES:
48
-
49
- - Available context: Target repo (URL or path), user intent, skill name, forge tier — all from step 01
50
- - Focus: Structural analysis of the repository
51
- - Limits: Do not read file contents deeply — only structure, exports, and metadata
52
- - Dependencies: Confirmed target repository from step 01
13
+ - Focus only on analysis — do not define scope yet (Step 03)
14
+ - Do not make scoping decisions or recommendations
15
+ - Do not hallucinate or guess about repository contents
53
16
 
54
17
  ## MANDATORY SEQUENCE
55
18
 
@@ -148,7 +111,7 @@ If `tools.ccc` is true in forge-tier.yaml, supplement the module listing with a
148
111
  - **Cursor:** Use `ccc` MCP server `search` tool with query `"{repo_name} public API exports modules"` and path `{source_path}`
149
112
  - **CLI fallback:** `ccc search "{repo_name} public API exports modules" --path {source_path} --limit 10`
150
113
 
151
- See [knowledge/tool-resolution.md](../../../knowledge/tool-resolution.md) for full bridge-to-tool mapping.
114
+ See `knowledge/tool-resolution.md` for full bridge-to-tool mapping.
152
115
 
153
116
  If results are returned, display:
154
117
 
@@ -168,7 +131,7 @@ If CCC is unavailable or returns no results: skip this subsection silently.
168
131
  Attempt to auto-detect the source version using the rules from the skill-brief-schema.md Version Detection section:
169
132
 
170
133
  **For Python:** Check `pyproject.toml` `[project] version` (static) → if `dynamic = ["version"]`, check `__init__.py` for `__version__` → `_version.py` if exists → `setup.py` `version=` → `git describe --tags --abbrev=0`
171
- **For JavaScript/TypeScript:** Check `package.json` `"version"` field
134
+ **For JavaScript/TypeScript:** Check root `package.json` `"version"` field → if root has `"private": true` with a `"workspaces"` array or lacks a `"version"` field, fall back to a primary workspace package's `package.json` (e.g., `code/core/package.json`, or the first matching `packages/*/package.json`). For GitHub sources, prefer `gh api repos/{owner}/{repo}/releases/latest` → `tag_name` when a non-pre-release tag exists, over a default-branch pre-release. Treat a version containing `-alpha`, `-beta`, `-rc`, `-next`, or `-canary` as a pre-release.
172
135
  **For Rust:** Check `Cargo.toml` `[package] version` (static) → if `version = { workspace = true }`, resolve from workspace root `Cargo.toml` → `git describe --tags --abbrev=0`
173
136
  **For Go:** Check `go.mod` or `git describe --tags --abbrev=0`
174
137
 
@@ -239,26 +202,3 @@ Pause briefly for user input. If the user provides corrections or asks questions
239
202
 
240
203
  ONLY WHEN the analysis is complete and the summary has been presented to the user will you load and read fully `./step-03-scope-definition.md` to begin scope definition.
241
204
 
242
- ---
243
-
244
- ## 🚨 SYSTEM SUCCESS/FAILURE METRICS
245
-
246
- ### ✅ SUCCESS:
247
-
248
- - Target repository resolved and accessible
249
- - Repository structure listed clearly
250
- - Primary language detected with confidence level
251
- - Top-level modules and exports identified
252
- - Source version detected (or default noted)
253
- - Analysis summary presented factually
254
- - Auto-proceeded to scope definition (with pause for corrections)
255
-
256
- ### ❌ SYSTEM FAILURE:
257
-
258
- - Hallucinating or guessing about repository contents
259
- - Making scoping recommendations (too early — that's step 03)
260
- - Proceeding when target is inaccessible (must halt with error)
261
- - Not detecting or reporting the primary language
262
- - Skipping the analysis summary
263
-
264
- **Master Rule:** Skipping steps, optimizing sequences, or not following exact instructions is FORBIDDEN and constitutes SYSTEM FAILURE.
@@ -1,9 +1,6 @@
1
1
  ---
2
- name: 'step-03-scope-definition'
3
- description: 'Collaboratively define skill scope boundaries using analysis findings and scope templates'
4
-
5
2
  nextStepFile: './step-04-confirm-brief.md'
6
- scopeTemplatesFile: '../data/scope-templates.md'
3
+ scopeTemplatesFile: 'assets/scope-templates.md'
7
4
  advancedElicitationSkill: '/bmad-advanced-elicitation'
8
5
  partyModeSkill: '/bmad-party-mode'
9
6
  ---
@@ -14,45 +11,11 @@ partyModeSkill: '/bmad-party-mode'
14
11
 
15
12
  To collaboratively define the skill's inclusion and exclusion boundaries using the analysis findings from step 02, scope templates, and the user's intent from step 01.
16
13
 
17
- ## MANDATORY EXECUTION RULES (READ FIRST):
18
-
19
- ### Universal Rules:
20
-
21
- - 🛑 NEVER generate content without user input
22
- - 📖 CRITICAL: Read the complete step file before taking any action
23
- - 🔄 CRITICAL: When loading next step with 'C', ensure entire file is read
24
- - 📋 YOU ARE A FACILITATOR, not a content generator
25
- - ✅ YOU MUST ALWAYS SPEAK OUTPUT In your Agent communication style with the config `{communication_language}`
26
- - ⚙️ TOOL/SUBPROCESS FALLBACK: If any instruction references a subprocess, subagent, or tool you do not have access to, you MUST still achieve the outcome in your main context thread
27
-
28
- ### Role Reinforcement:
29
-
30
- - ✅ You are a skill boundary architect in Ferris Architect mode (collaborative, exploratory)
31
- - ✅ If you already have been given a name, communication_style and identity, continue to use those while playing this new role
32
- - ✅ We engage in collaborative dialogue, not command-response
33
- - ✅ You bring API surface design expertise, user brings their domain knowledge of what's valuable
34
- - ✅ Maintain warm, guiding tone — help the user make informed scoping decisions
35
-
36
- ### Step-Specific Rules:
37
-
38
- - 🎯 Focus only on defining scope boundaries — do not write the brief yet (that's step 05)
39
- - 🚫 FORBIDDEN to make scope decisions unilaterally — user drives all scope choices
40
- - 💬 Approach: Intent-based discovery — "Which parts are most relevant to your use case?"
41
- - 📋 Produce: scope type, include patterns, exclude patterns
42
-
43
- ## EXECUTION PROTOCOLS:
44
-
45
- - 🎯 Follow the MANDATORY SEQUENCE exactly
46
- - 💾 Accumulate scope decisions conversationally for use in subsequent steps
47
- - 📖 Reference analysis findings from step 02 throughout
48
- - 🚫 FORBIDDEN to proceed without user confirmation of scope boundaries
14
+ ## Rules
49
15
 
50
- ## CONTEXT BOUNDARIES:
51
-
52
- - Available context: Target repo, user intent, skill name, forge tier (step 01), repo structure, detected language, modules, exports (step 02)
53
- - Focus: Defining WHAT is in scope and what is NOT
54
- - Limits: Do not generate the brief — only define boundaries
55
- - Dependencies: Analysis findings from step 02
16
+ - Focus only on defining scope boundaries — do not write the brief yet (Step 05)
17
+ - Do not make scope decisions unilaterally — user drives all scope choices
18
+ - Produce: scope type, include patterns, exclude patterns
56
19
 
57
20
  ## MANDATORY SEQUENCE
58
21
 
@@ -104,9 +67,11 @@ Wait for confirmation. Record any changes to `doc_urls`.
104
67
 
105
68
  **If no supplemental doc_urls were collected:** Skip this subsection.
106
69
 
70
+ **Scope guidance for first-time users:** A well-scoped skill covers one cohesive capability with 3-8 primary functions. If the scope includes unrelated concerns (e.g., authentication AND data visualization), suggest splitting into separate briefs. If the scope is too narrow (single utility function), suggest expanding to the surrounding capability surface.
71
+
107
72
  ### 2c. Offer Scope Templates
108
73
 
109
- Load `{scopeTemplatesFile}` for the scope type options ([F], [M], [P], [C]) and their descriptions.
74
+ Load `{scopeTemplatesFile}` for the scope type options ([F], [M], [P], [C], [R]) and their descriptions.
110
75
 
111
76
  Present: "**How broadly should this skill cover the library?**" followed by the scope type options from the loaded reference.
112
77
 
@@ -116,7 +81,7 @@ Wait for user selection.
116
81
 
117
82
  ### 3. Define Boundaries Based on Selection
118
83
 
119
- Using the boundary definitions from `{scopeTemplatesFile}`, present the appropriate flow for the user's selected scope type ([F], [M], [P], or [C]). Follow each type's prompts and wait for user input at each phase before proceeding.
84
+ Using the boundary definitions from `{scopeTemplatesFile}`, present the appropriate flow for the user's selected scope type ([F], [M], [P], [C], or [R]). Follow each type's prompts and wait for user input at each phase before proceeding.
120
85
 
121
86
  ### 4. Handle Language Override
122
87
 
@@ -132,7 +97,7 @@ Wait for confirmation or override.
132
97
 
133
98
  "**Scope Summary:**
134
99
 
135
- **Type:** {Full Library / Specific Modules / Public API / Component Library}
100
+ **Type:** {Full Library / Specific Modules / Public API / Component Library / Reference App}
136
101
 
137
102
  **Include:**
138
103
  {bulleted list of include patterns}
@@ -151,7 +116,7 @@ Wait for confirmation. Make adjustments if requested.
151
116
 
152
117
  ### 5b. Scripts & Assets Intent (Optional)
153
118
 
154
- **Only ask when `scope.type` is `full-library`, `specific-modules`, or `component-library` (skip for `public-api` and `docs-only`).**
119
+ **Only ask when `scope.type` is `full-library`, `specific-modules`, `component-library`, or `reference-app` (skip for `public-api` and `docs-only`). Reference apps routinely ship wiring scripts and build-config assets — prompt for them.**
155
120
 
156
121
  "Does this library include executable scripts (CLI tools, validation scripts, setup helpers) or static assets (config templates, JSON schemas, example configs) that should be packaged with the skill?"
157
122
 
@@ -175,6 +140,7 @@ Display: **Select an Option:** [A] Advanced Elicitation [P] Party Mode [C] Conti
175
140
  #### EXECUTION RULES:
176
141
 
177
142
  - ALWAYS halt and wait for user input after presenting menu
143
+ - **GATE [default: C]** — If `{headless_mode}`: accept auto-detected scope (full-repo or manifest-based) and auto-proceed, log: "headless: using auto-detected scope"
178
144
  - ONLY proceed to next step when user selects 'C'
179
145
  - After other menu items execution, return to this menu
180
146
  - User can chat or ask questions — always respond and then redisplay menu
@@ -183,25 +149,3 @@ Display: **Select an Option:** [A] Advanced Elicitation [P] Party Mode [C] Conti
183
149
 
184
150
  ONLY WHEN C is selected and scope boundaries are confirmed will you load and read fully `./step-04-confirm-brief.md` to present the complete brief for confirmation.
185
151
 
186
- ---
187
-
188
- ## 🚨 SYSTEM SUCCESS/FAILURE METRICS
189
-
190
- ### ✅ SUCCESS:
191
-
192
- - Scope type selected by user (Full Library, Specific Modules, Public API, or Component Library)
193
- - Include patterns defined and confirmed
194
- - Exclude patterns defined and confirmed
195
- - Language confirmed (or overridden if detection was low confidence)
196
- - User confirmed the scope summary
197
- - Menu presented and user input handled correctly
198
-
199
- ### ❌ SYSTEM FAILURE:
200
-
201
- - Making scope decisions without user input
202
- - Not presenting the scope templates for user selection
203
- - Skipping the scope summary confirmation
204
- - Not handling language override when detection confidence was low
205
- - Writing the brief in this step (too early — that's step 05)
206
-
207
- **Master Rule:** Skipping steps, optimizing sequences, or not following exact instructions is FORBIDDEN and constitutes SYSTEM FAILURE.
@@ -1,10 +1,7 @@
1
1
  ---
2
- name: 'step-04-confirm-brief'
3
- description: 'Present complete skill brief for user review and confirmation before writing'
4
-
5
2
  nextStepFile: './step-05-write-brief.md'
6
3
  reviseStepFile: './step-03-scope-definition.md'
7
- briefSchemaFile: '../data/skill-brief-schema.md'
4
+ briefSchemaFile: 'assets/skill-brief-schema.md'
8
5
  advancedElicitationSkill: '/bmad-advanced-elicitation'
9
6
  partyModeSkill: '/bmad-party-mode'
10
7
  ---
@@ -15,44 +12,10 @@ partyModeSkill: '/bmad-party-mode'
15
12
 
16
13
  To present the complete skill brief in human-readable format, highlighting all fields that will be written to skill-brief.yaml, and obtain explicit user approval before writing.
17
14
 
18
- ## MANDATORY EXECUTION RULES (READ FIRST):
19
-
20
- ### Universal Rules:
21
-
22
- - 🛑 NEVER generate content without user input
23
- - 📖 CRITICAL: Read the complete step file before taking any action
24
- - 🔄 CRITICAL: When loading next step with 'C', ensure entire file is read
25
- - 📋 YOU ARE A FACILITATOR, not a content generator
26
- - ✅ YOU MUST ALWAYS SPEAK OUTPUT In your Agent communication style with the config `{communication_language}`
27
- - ⚙️ TOOL/SUBPROCESS FALLBACK: If any instruction references a subprocess, subagent, or tool you do not have access to, you MUST still achieve the outcome in your main context thread
28
-
29
- ### Role Reinforcement:
30
-
31
- - ✅ You are a quality reviewer in Ferris Architect mode
32
- - ✅ If you already have been given a name, communication_style and identity, continue to use those while playing this new role
33
- - ✅ Present information precisely and clearly — this is a confirmation gate
34
- - ✅ Highlight anything with low confidence or defaults that the user should verify
35
-
36
- ### Step-Specific Rules:
37
-
38
- - 🎯 Focus only on presenting and confirming — do not write files yet (that's step 05)
39
- - 🚫 FORBIDDEN to proceed without explicit user approval
40
- - 💬 Approach: Prescriptive — exact presentation format showing all YAML fields
41
- - 📋 This is a P2 confirmation gate — the user MUST approve before continuing
42
-
43
- ## EXECUTION PROTOCOLS:
44
-
45
- - 🎯 Follow the MANDATORY SEQUENCE exactly
46
- - 💾 Load the schema to ensure all required fields are presented
47
- - 📖 This is a mandatory checkpoint — no auto-proceed
48
- - 🚫 FORBIDDEN to write skill-brief.yaml in this step
15
+ ## Rules
49
16
 
50
- ## CONTEXT BOUNDARIES:
51
-
52
- - Available context: All gathered data from steps 01-03 (target, intent, name, tier, language, scope)
53
- - Focus: Presenting the complete brief for final review
54
- - Limits: Do not write files — only present for approval
55
- - Dependencies: Confirmed scope boundaries from step 03
17
+ - Focus only on presenting and confirming — do not write files yet (Step 05)
18
+ - Do not proceed without explicit user approval (P2 confirmation gate)
56
19
 
57
20
  ## MANDATORY SEQUENCE
58
21
 
@@ -182,6 +145,7 @@ Display: **Select an Option:** [R] Revise Scope [A] Advanced Elicitation [P] Par
182
145
  #### EXECUTION RULES:
183
146
 
184
147
  - ALWAYS halt and wait for user input after presenting menu
148
+ - **GATE [default: C]** — If `{headless_mode}`: auto-proceed with [C] Confirm, log: "headless: auto-confirm brief"
185
149
  - ONLY proceed to write step when user selects 'C'
186
150
  - After other menu items execution, return to this menu
187
151
  - User can chat, request field changes, or ask questions — always respond and then redisplay menu
@@ -190,25 +154,3 @@ Display: **Select an Option:** [R] Revise Scope [A] Advanced Elicitation [P] Par
190
154
 
191
155
  ONLY WHEN C is selected and the user has explicitly approved the brief will you load and read fully `./step-05-write-brief.md` to write the skill-brief.yaml file.
192
156
 
193
- ---
194
-
195
- ## 🚨 SYSTEM SUCCESS/FAILURE METRICS
196
-
197
- ### ✅ SUCCESS:
198
-
199
- - Schema loaded for field reference
200
- - Complete brief assembled from all gathered data
201
- - Brief presented in human-readable format
202
- - Low-confidence or defaulted fields highlighted
203
- - User explicitly approved the brief
204
- - Menu presented with revise option
205
-
206
- ### ❌ SYSTEM FAILURE:
207
-
208
- - Writing skill-brief.yaml in this step (too early)
209
- - Proceeding without explicit user approval
210
- - Not presenting all required fields
211
- - Not highlighting defaulted or low-confidence values
212
- - Not offering the [R] Revise option
213
-
214
- **Master Rule:** Skipping steps, optimizing sequences, or not following exact instructions is FORBIDDEN and constitutes SYSTEM FAILURE.