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
@@ -1,7 +1,4 @@
1
1
  ---
2
- name: 'step-01b-ccc-index'
3
- description: 'Ensure ccc project index exists — Forge+ and Deep tiers when ccc is available'
4
-
5
2
  nextStepFile: './step-02-write-config.md'
6
3
  ---
7
4
 
@@ -13,40 +10,12 @@ If ccc is available (`{ccc: true}` from step-01), configure CCC exclusion patter
13
10
 
14
11
  For Quick and Forge tiers, or when ccc is unavailable, skip silently and proceed.
15
12
 
16
- ## MANDATORY EXECUTION RULES (READ FIRST):
17
-
18
- ### Universal Rules:
19
-
20
- - 📖 CRITICAL: Read the complete step file before taking any action
21
- - 🔄 CRITICAL: When loading next step, ensure entire file is read
22
- - 🎯 Execute all operations autonomously — no user interaction
23
-
24
- ### Role Reinforcement:
25
-
26
- - ✅ You are a system executor verifying the ccc index state
27
- - ✅ ccc indexing failure is never a workflow error — degrade gracefully
28
- - ✅ No negative messaging for tiers that skip this step
29
-
30
- ### Step-Specific Rules:
31
-
32
- - 🎯 Focus only on ccc index verification and creation
33
- - 🚫 FORBIDDEN to display skip messages for Quick/Forge tiers
34
- - 🚫 FORBIDDEN to fail the workflow if ccc indexing fails
35
- - 🚫 FORBIDDEN to re-index if ccc index already exists and is fresh (< staleness threshold) UNLESS new exclusion patterns were applied to settings.yml
36
-
37
- ## EXECUTION PROTOCOLS:
38
-
39
- - 🎯 Follow the MANDATORY SEQUENCE exactly
40
- - 💾 Store ccc index state in context for step-02
41
- - 🚫 FORBIDDEN to write forge-tier.yaml — that is step-02's job
13
+ ## Rules
42
14
 
43
- ## CONTEXT BOUNDARIES:
44
-
45
- - Available: {ccc} boolean and {ccc_daemon} status from step-01
46
- - Available: {calculated_tier} from step-01
47
- - Available: existing forge-tier.yaml may contain prior `ccc_index` state
48
- - Focus: ccc index state verification and creation only
49
- - Dependencies: step-01 must have completed with tool detection results
15
+ - Focus only on ccc index verification and creation
16
+ - Do not display skip messages for Quick/Forge tiers
17
+ - Do not fail the workflow if ccc indexing fails
18
+ - Do not re-index if ccc index already exists and is fresh, unless new exclusion patterns were applied
50
19
 
51
20
  ## MANDATORY SEQUENCE
52
21
 
@@ -84,17 +53,15 @@ SKF infrastructure and output directories must be excluded from the CCC index
84
53
 
85
54
  **Build the SKF exclusion list:**
86
55
 
87
- 1. Read `{project-root}/_bmad/_config/skf-manifest.yaml` to resolve configurable paths:
88
- - `skills_output_folder` (default: `skills` if manifest is missing or field is absent)
89
- - `forge_data_folder` (default: `forge-data` if manifest is missing or field is absent)
56
+ 1. Use `{skills_output_folder}` and `{forge_data_folder}` from the workflow activation context (resolved in On Activation from `{project-root}/_bmad/skf/config.yaml`).
90
57
 
91
58
  2. Assemble the exclusion patterns using `**/` prefix format (matching `.cocoindex_code/settings.yml` convention — e.g., `**/node_modules`):
92
59
  - `**/_bmad` — SKF framework module (workflows, agents, knowledge files)
93
60
  - `**/_bmad-output` — Build output artifacts
94
61
  - `**/.claude` — Claude Code configuration
95
62
  - `**/_skf-learn` — SKF learning materials
96
- - `**/{skills_output_folder}` — Generated skill files (resolved from manifest)
97
- - `**/{forge_data_folder}` — Compilation workspace (resolved from manifest)
63
+ - `**/{skills_output_folder}` — Generated skill files (from activation context)
64
+ - `**/{forge_data_folder}` — Compilation workspace (from activation context)
98
65
 
99
66
  3. Store `{ccc_exclude_patterns}` in context for step-02 to write into forge-tier.yaml.
100
67
 
@@ -119,7 +86,7 @@ If `{settings_yml_existed}` is false: the exclusions will be applied after `ccc
119
86
 
120
87
  ### 3. Create or Refresh CCC Index
121
88
 
122
- **If `{ccc_daemon}` is `"stopped"` or undefined (healthy daemon where no explicit state was recorded):**
89
+ **If `{ccc_daemon}` is `"stopped"` or `"healthy"`:**
123
90
 
124
91
  The `ccc index` command auto-starts the daemon when needed. Proceed with indexing below.
125
92
 
@@ -177,26 +144,3 @@ ccc index
177
144
 
178
145
  ONLY WHEN ccc index verification is complete (or step is skipped for ccc unavailable) will you load and read fully `{nextStepFile}` to execute the configuration write step.
179
146
 
180
- ---
181
-
182
- ## 🚨 SYSTEM SUCCESS/FAILURE METRICS
183
-
184
- ### ✅ SUCCESS:
185
-
186
- - ccc unavailable: skipped silently with no output, context variables set to null/none
187
- - ccc available with fresh index: verified freshness, exclusions configured, skipped re-index, context variables set
188
- - ccc available with stale/missing index: exclusions configured, index created, context variables set with fresh timestamp
189
- - ccc indexing fails: logged gracefully, workflow continues, context variables set to failed/null
190
- - Auto-proceeded to step-02
191
-
192
- ### ❌ SYSTEM FAILURE:
193
-
194
- - Displaying skip messages when ccc is unavailable
195
- - Halting the workflow on ccc index failure
196
- - Re-indexing when index is already fresh and path matches (unless exclusion patterns changed)
197
- - Writing forge-tier.yaml (that is step-02's responsibility)
198
- - Not storing ccc index context variables for step-02
199
- - Indexing without configuring SKF exclusion patterns in `.cocoindex_code/settings.yml`
200
- - Overwriting user customizations in `.cocoindex_code/settings.yml` instead of appending
201
-
202
- **Master Rule:** CCC indexing is always best-effort. Failures degrade gracefully. The workflow never halts over ccc issues.
@@ -1,7 +1,4 @@
1
1
  ---
2
- name: 'step-02-write-config'
3
- description: 'Write forge-tier.yaml, create preferences.yaml defaults, ensure forge-data/ exists'
4
-
5
2
  nextStepFile: './step-03-auto-index.md'
6
3
  ---
7
4
 
@@ -11,40 +8,12 @@ nextStepFile: './step-03-auto-index.md'
11
8
 
12
9
  Write the detected tool availability and calculated tier to forge-tier.yaml, create preferences.yaml with defaults if it does not exist, and ensure the forge-data/ directory is present.
13
10
 
14
- ## MANDATORY EXECUTION RULES (READ FIRST):
15
-
16
- ### Universal Rules:
17
-
18
- - 📖 CRITICAL: Read the complete step file before taking any action
19
- - 🔄 CRITICAL: When loading next step, ensure entire file is read
20
- - 🎯 Execute all operations autonomously — no user interaction
21
-
22
- ### Role Reinforcement:
23
-
24
- - ✅ You are a system executor writing configuration files
25
- - ✅ File operations must be precise — correct paths, correct YAML structure
26
- - ✅ Preserve user data (preferences.yaml) — never overwrite existing
27
-
28
- ### Step-Specific Rules:
29
-
30
- - 🎯 Focus only on writing configuration files and creating directories
31
- - 🚫 FORBIDDEN to re-detect tools — use results from step-01
32
- - 🚫 FORBIDDEN to overwrite existing preferences.yaml
33
- - 💬 File write failures ARE errors — report clearly if they occur
34
-
35
- ## EXECUTION PROTOCOLS:
36
-
37
- - 🎯 Follow the MANDATORY SEQUENCE exactly
38
- - 💾 Write files to the forger-sidecar directory
39
- - 📖 Use context from step-01 (detected_tools, calculated_tier)
40
- - 🚫 FORBIDDEN to proceed if forge-tier.yaml write fails
41
-
42
- ## CONTEXT BOUNDARIES:
11
+ ## Rules
43
12
 
44
- - Available: {detected_tools}, {calculated_tier}, {previous_tier} from step-01; {ccc_index_result}, {ccc_indexed_path}, {ccc_last_indexed}, {ccc_file_count}, {ccc_exclude_patterns} from step-01b
45
- - Focus: file I/O operations only
46
- - Limits: do not modify preferences.yaml if it exists
47
- - Dependencies: step-01 and step-01b must have completed with tool detection and CCC index results
13
+ - Focus only on writing configuration files and creating directories
14
+ - Do not re-detect tools — use results from step-01
15
+ - Do not overwrite existing preferences.yaml
16
+ - File write failures are errors report clearly
48
17
 
49
18
  ## MANDATORY SEQUENCE
50
19
 
@@ -56,7 +25,7 @@ Write to `{project-root}/_bmad/_memory/forger-sidecar/forge-tier.yaml`:
56
25
 
57
26
  ```yaml
58
27
  # Ferris Sidecar: Forge Tier State
59
- # Written by setup-forge workflow
28
+ # Written by setup workflow
60
29
 
61
30
  # Tool availability (detected during [SF] Setup Forge)
62
31
  tools:
@@ -72,7 +41,7 @@ tools:
72
41
  tier: {calculated_tier}
73
42
  tier_detected_at: {current ISO timestamp}
74
43
 
75
- # CCC semantic index state (managed by setup-forge step-01b and extraction workflows)
44
+ # CCC semantic index state (managed by setup step-01b and extraction workflows)
76
45
  ccc_index:
77
46
  indexed_path: {ccc_indexed_path from step-01b, or ~}
78
47
  last_indexed: {ccc_last_indexed from step-01b, or ~}
@@ -104,7 +73,7 @@ Check if `{project-root}/_bmad/_memory/forger-sidecar/preferences.yaml` exists:
104
73
 
105
74
  ```yaml
106
75
  # Ferris Sidecar: User Preferences
107
- # Created by setup-forge workflow on first run
76
+ # Created by setup workflow on first run
108
77
  # Edit this file to customize Ferris behavior
109
78
 
110
79
  # Override detected tier (set to Quick, Forge, Forge+, or Deep to force a tier)
@@ -113,6 +82,12 @@ tier_override: ~
113
82
  # Passive context injection (set to false to skip snippet generation and CLAUDE.md updates during export)
114
83
  passive_context: true
115
84
 
85
+ # Headless mode (set to true to skip confirmation gates in all workflows)
86
+ headless_mode: false
87
+
88
+ # Compact greeting (set to true to skip the full capabilities table on session start)
89
+ compact_greeting: false
90
+
116
91
  # Reserved for future use — these fields are not yet consumed by any workflow step
117
92
  # output_language: ~
118
93
  # skill_format_version: ~
@@ -144,25 +119,5 @@ Check if `{forge_data_folder}` directory exists:
144
119
 
145
120
  ## CRITICAL STEP COMPLETION NOTE
146
121
 
147
- ONLY WHEN forge-tier.yaml has been written successfully and preferences.yaml exists (created or pre-existing) will you load and read fully `{nextStepFile}` to execute the auto-index step.
148
-
149
- ---
150
-
151
- ## 🚨 SYSTEM SUCCESS/FAILURE METRICS
152
-
153
- ### ✅ SUCCESS:
154
-
155
- - forge-tier.yaml written with accurate tool booleans (including ccc), tier, timestamp, ccc_index state (including exclude_patterns), and preserved qmd_collections/ccc_index_registry arrays
156
- - preferences.yaml exists (created with defaults on first run, preserved on re-run)
157
- - forge-data/ directory exists (created or pre-existing)
158
- - Auto-proceeded to step-03
159
-
160
- ### ❌ SYSTEM FAILURE:
161
-
162
- - forge-tier.yaml write fails and workflow continues
163
- - preferences.yaml overwritten when it already existed
164
- - Incorrect tool values written (not matching step-01 detection)
165
- - Missing tier_detected_at timestamp
166
- - Re-detecting tools instead of using step-01 results
122
+ ONLY WHEN forge-tier.yaml has been written successfully and preferences.yaml exists (created or pre-existing) will you load and read fully `{nextStepFile}` to execute the QMD hygiene step.
167
123
 
168
- **Master Rule:** forge-tier.yaml must be written accurately. preferences.yaml must never be overwritten. These are the foundation for all downstream workflows.
@@ -1,7 +1,4 @@
1
1
  ---
2
- name: 'step-03-auto-index'
3
- description: 'Verify and clean QMD collections against the forge-tier.yaml registry (Deep tier only) and CCC index registry hygiene (Forge+/Deep)'
4
-
5
2
  nextStepFile: './step-04-report.md'
6
3
  ---
7
4
 
@@ -11,45 +8,15 @@ nextStepFile: './step-04-report.md'
11
8
 
12
9
  If the detected tier is Deep, verify the health of existing QMD collections by cross-referencing them against the `qmd_collections` registry in `forge-tier.yaml`. Identify orphaned collections (in QMD but not in registry) and stale registry entries (in registry but collection missing from QMD). Prompt the user before removing orphaned collections.
13
10
 
14
- For Quick and Forge tiers (without ccc), skip silently and proceed. For Forge+ tier, skip QMD hygiene but the step routes correctly to the next step.
15
-
16
- ## MANDATORY EXECUTION RULES (READ FIRST):
17
-
18
- ### Universal Rules:
19
-
20
- - 📖 CRITICAL: Read the complete step file before taking any action
21
- - 🔄 CRITICAL: When loading next step, ensure entire file is read
22
- - 🎯 Execute all operations autonomously — minimal user interaction (only prompt before deletion)
23
-
24
- ### Role Reinforcement:
25
-
26
- - ✅ You are a system executor performing QMD collection maintenance
27
- - ✅ Graceful degradation is paramount — never fail the workflow over hygiene checks
28
- - ✅ No negative messaging — do not mention what non-Deep tiers are missing
29
-
30
- ### Step-Specific Rules:
31
-
32
- - 🎯 Focus only on verifying and cleaning QMD collections (Deep tier) or graceful skip (other tiers)
33
- - 🚫 FORBIDDEN to display "missing" or "skipped" messages for non-Deep tiers
34
- - 🚫 FORBIDDEN to fail the workflow if QMD hygiene encounters errors
35
- - 🚫 FORBIDDEN to create new QMD collections — that responsibility belongs to create-skill
36
- - 🚫 FORBIDDEN to silently delete collections — always prompt user before removal
37
- - 💬 If hygiene fails: log the issue, note that it can be retried, continue
38
-
39
- ## EXECUTION PROTOCOLS:
11
+ For Quick and Forge tiers, skip silently and proceed (QMD is not available at those tiers). For Forge+ tier, skip QMD hygiene but the step routes correctly to the next step.
40
12
 
41
- - 🎯 Follow the MANDATORY SEQUENCE exactly
42
- - 💾 QMD hygiene only verifies and cleans — it does NOT index new content
43
- - 📖 Use {calculated_tier} from step-01 context
44
- - 🚫 FORBIDDEN to attempt QMD hygiene for Quick, Forge, or Forge+ tiers (Forge+ has no qmd)
13
+ ## Rules
45
14
 
46
- ## CONTEXT BOUNDARIES:
47
-
48
- - Available: {calculated_tier} from step-01, forge-tier.yaml written in step-02
49
- - Available: {project_name} from workflow config
50
- - Focus: QMD collection verification and cleanup only
51
- - Limits: only run if Deep tier
52
- - Dependencies: step-02 must have completed (forge-tier.yaml exists with qmd_collections registry)
15
+ - Focus only on verifying and cleaning QMD collections (Deep tier) or graceful skip (other tiers)
16
+ - Do not display negative framing for non-Deep tiers
17
+ - Do not fail the workflow if QMD hygiene encounters errors
18
+ - Do not create new QMD collections — that belongs to create-skill
19
+ - Do not silently delete collections always prompt user before removal
53
20
 
54
21
  ## MANDATORY SEQUENCE
55
22
 
@@ -182,29 +149,3 @@ Store in context for step-04 reporting:
182
149
 
183
150
  ONLY WHEN the hygiene check has been performed (or skipped for non-Deep tiers) will you load and read fully `{nextStepFile}` to execute the report step.
184
151
 
185
- ---
186
-
187
- ## 🚨 SYSTEM SUCCESS/FAILURE METRICS
188
-
189
- ### ✅ SUCCESS:
190
-
191
- - Deep tier: forge-tier.yaml registry cross-referenced with live QMD collections
192
- - Healthy collections identified and verified
193
- - Orphaned collections flagged and user prompted before removal
194
- - Stale registry entries cleaned from forge-tier.yaml
195
- - Hygiene results stored for step-04 reporting
196
- - Quick/Forge/Forge+ tier: skipped silently with no negative messaging
197
- - Workflow continues regardless of hygiene outcome
198
- - Auto-proceeded to step-04
199
-
200
- ### ❌ SYSTEM FAILURE:
201
-
202
- - Creating new QMD collections (that's create-skill's responsibility)
203
- - Silently deleting collections without user prompt
204
- - Attempting QMD hygiene for Quick, Forge, or Forge+ tiers
205
- - Displaying "skipped" or "missing" messages for non-Deep tiers
206
- - Halting the workflow due to QMD hygiene failure
207
- - Indexing project directories (old auto-index behavior — removed)
208
- - Not proceeding to step-04 after this step
209
-
210
- **Master Rule:** This step ONLY verifies and cleans. It never indexes new content. QMD collection creation is the responsibility of create-skill. Non-Deep tiers skip silently. Always prompt before removing orphaned collections.
@@ -0,0 +1,92 @@
1
+ ---
2
+ tierRulesData: 'references/tier-rules.md'
3
+ nextStepFile: './step-05-health-check.md'
4
+ ---
5
+
6
+ # Step 4: Forge Status Report
7
+
8
+ ## STEP GOAL:
9
+
10
+ Display the forge status report with positive capability framing and report tier changes on re-run.
11
+
12
+ ## Rules
13
+
14
+ - Focus only on displaying the status report
15
+ - Do not use negative framing ("missing", "lacking", "unavailable")
16
+ - Do not list tools that are not available
17
+ - Use tier capability descriptions from tier-rules.md
18
+ - Chains to the local health-check step via `{nextStepFile}` after completion — the user-facing status report is NOT the terminal step
19
+
20
+ ## MANDATORY SEQUENCE
21
+
22
+ **CRITICAL:** Follow this sequence exactly. Do not skip, reorder, or improvise.
23
+
24
+ ### 1. Load Capability Descriptions
25
+
26
+ Load and read {tierRulesData} for the tier capability descriptions and re-run messages.
27
+
28
+ ### 2. Display Forge Status Report
29
+
30
+ **Format the report as follows:**
31
+
32
+ ```
33
+ ═══════════════════════════════════════
34
+ FORGE STATUS
35
+ ═══════════════════════════════════════
36
+
37
+ Tier: {calculated_tier}
38
+ {tier capability description from tier-rules.md}
39
+
40
+ Tools Detected:
41
+ {for each tool that is available, show: tool name — version}
42
+
43
+ {if hygiene_result is "completed":}
44
+ QMD Registry:
45
+ {hygiene_healthy} collection(s) healthy
46
+ {if hygiene_orphaned_removed > 0: {hygiene_orphaned_removed} orphaned collection(s) removed}
47
+ {if hygiene_orphaned_kept > 0: {hygiene_orphaned_kept} orphaned collection(s) kept}
48
+ {if hygiene_stale_cleaned > 0: {hygiene_stale_cleaned} stale QMD registry entry/entries cleaned}
49
+ {end if}
50
+
51
+ {if ccc_registry_stale_cleaned > 0:}
52
+ CCC Registry: {ccc_registry_stale_cleaned} stale entry/entries cleaned
53
+ {end if}
54
+
55
+ {if hygiene_result is "completed" and hygiene_healthy is 0:}
56
+ QMD Registry: empty — collections are created automatically when you run [CS] Create Skill.
57
+ {end if}
58
+
59
+ {if tools.ccc is true:}
60
+ CCC Index:
61
+ {if ccc_index_result is "fresh": up to date — semantic discovery ready}
62
+ {if ccc_index_result is "created": indexed this run — semantic discovery ready}
63
+ {if ccc_index_result is "failed": indexing failed — semantic discovery unavailable this session}
64
+ {end if}
65
+
66
+ {if tier_override is active:}
67
+ Note: Tier override active (set in preferences.yaml)
68
+
69
+ {if re-run with tier change:}
70
+ {appropriate upgrade/downgrade message from tier-rules.md}
71
+
72
+ {if re-run with same tier:}
73
+ {same-tier message from tier-rules.md}
74
+
75
+ ═══════════════════════════════════════
76
+ Forge ready. {calculated_tier} tier active.
77
+ ═══════════════════════════════════════
78
+ ```
79
+
80
+ **Tool display rules:**
81
+ - Only show tools that ARE available with their version strings
82
+ - Do NOT list unavailable tools
83
+ - Do NOT show a "missing" column or section
84
+
85
+ ### 3. Chain to Health Check
86
+
87
+ ONLY WHEN the forge status report has been displayed will you then load, read the full file, and execute `{nextStepFile}`. The health-check step is the true terminal step — do not stop here even though the report reads as final.
88
+
89
+ ## CRITICAL STEP COMPLETION NOTE
90
+
91
+ This step chains to the local health-check step (`{nextStepFile}`), which in turn delegates to `shared/health-check.md`. After the health check completes, the setup workflow is fully done.
92
+
@@ -0,0 +1,22 @@
1
+ ---
2
+ # `shared/health-check.md` resolves relative to the SKF module root
3
+ # (`_bmad/skf/` when installed, `src/` during development), NOT relative
4
+ # to this step file.
5
+ nextStepFile: 'shared/health-check.md'
6
+ ---
7
+
8
+ # Step 5: Workflow Health Check
9
+
10
+ ## STEP GOAL:
11
+
12
+ Chain to the shared workflow self-improvement health check at `{nextStepFile}`. This is the terminal step of setup — after the shared health check completes, the workflow is fully done.
13
+
14
+ ## Rules
15
+
16
+ - No user-facing reports, file writes, or result contracts in this step — those belong in step-04
17
+ - Delegate directly to `{nextStepFile}` with no additional commentary
18
+ - Do not attempt any other action between loading this step and executing `{nextStepFile}`
19
+
20
+ ## MANDATORY SEQUENCE
21
+
22
+ Load `{nextStepFile}`, read it fully, then execute it.
@@ -0,0 +1,59 @@
1
+ ---
2
+ name: skf-test-skill
3
+ description: Cognitive completeness verification — quality gate before export. Use when the user requests to "test a skill" or "verify skill completeness."
4
+ ---
5
+
6
+ # Test Skill
7
+
8
+ ## Overview
9
+
10
+ Verifies that a skill is complete enough to be useful to an AI agent by checking coverage of the public API surface (naive mode) or validating SKILL.md + references coherence (contextual mode). Produces a completeness score and gap report as a quality gate before export. Every finding must trace to actual code with file:line citations.
11
+
12
+ ## Role
13
+
14
+ You are a skill auditor and completeness analyst operating in Ferris's Audit mode. This is a deterministic quality gate — you bring AST-backed analysis expertise and zero-hallucination verification, while the skill artifacts provide the evidence.
15
+
16
+ ## Workflow Rules
17
+
18
+ These rules apply to every step in this workflow:
19
+
20
+ - Zero hallucination — every finding must trace to actual code with file:line citations
21
+ - Read each step file completely before taking any action
22
+ - Follow the mandatory sequence in each step exactly — do not skip, reorder, or optimize
23
+ - Only load one step file at a time — never preload future steps
24
+ - Update `stepsCompleted` in output file frontmatter before loading next step
25
+ - If any instruction references a subprocess or tool you lack, achieve the outcome in your main context thread
26
+ - Always communicate in `{communication_language}`
27
+ - If `{headless_mode}` is true, auto-proceed through confirmation gates with their default action and log each auto-decision
28
+
29
+ ## Stages
30
+
31
+ | # | Step | File | Auto-proceed |
32
+ |---|------|------|--------------|
33
+ | 1 | Initialize & Load Skill | steps-c/step-01-init.md | Yes |
34
+ | 2 | Detect Mode | steps-c/step-02-detect-mode.md | Yes |
35
+ | 3 | Coverage Check | steps-c/step-03-coverage-check.md | Yes |
36
+ | 4 | Coherence Check | steps-c/step-04-coherence-check.md | Yes |
37
+ | 4b | External Validators | steps-c/step-04b-external-validators.md | Yes |
38
+ | 5 | Score | steps-c/step-05-score.md | Yes |
39
+ | 6 | Report | steps-c/step-06-report.md | No (confirm) |
40
+ | 7 | Workflow Health Check | steps-c/step-07-health-check.md | Yes |
41
+
42
+ ## Invocation Contract
43
+
44
+ | Aspect | Detail |
45
+ |--------|--------|
46
+ | **Inputs** | skill_name [required] |
47
+ | **Gates** | step-06: Confirm Gate [C] |
48
+ | **Outputs** | test-report-{skill_name}.md with completeness score and result (PASS/FAIL) |
49
+ | **Headless** | All gates auto-resolve with default action when `{headless_mode}` is true |
50
+
51
+ ## On Activation
52
+
53
+ 1. Load config from `{project-root}/_bmad/skf/config.yaml` and resolve:
54
+ - `project_name`, `user_name`, `communication_language`, `document_output_language`
55
+ - `skills_output_folder`, `forge_data_folder`, `sidecar_path`
56
+
57
+ 2. **Resolve `{headless_mode}`**: true if `--headless` or `-H` was passed as an argument, or if `headless_mode: true` in preferences.yaml. Default: false.
58
+
59
+ 3. Load, read the full file, and then execute `./steps-c/step-01-init.md` to begin the workflow.
@@ -0,0 +1,114 @@
1
+ # Migration & Deprecation Section Rules (§2b / §5b)
2
+
3
+ > **Single source of truth.** Both `step-04-coherence-check.md` §2b (naive path)
4
+ > and §5b (contextual path) apply the rules in this file verbatim. Update this
5
+ > file — not the step file sections — when the rule set changes.
6
+
7
+ ## Gate Check
8
+
9
+ Execute this check ONLY IF both conditions are met:
10
+
11
+ 1. Forge tier is **Deep** (tool-gated)
12
+ 2. `{forge_data_folder}/{skill_name}/evidence-report.md` exists (data-gated)
13
+
14
+ If either condition fails, skip silently and proceed to the next section.
15
+
16
+ The check runs regardless of naive/contextual mode. T2-future annotations are a
17
+ property of the source code and enrichment data, not the skill type.
18
+
19
+ ## Scope of Section 4b (Authoring Rule This Gate Enforces)
20
+
21
+ Section 4b (SKILL.md "Migration & Deprecation Warnings") is scoped to
22
+ *forward-looking* breaking changes only — what T2-future annotations capture.
23
+ Current-state signature gotchas (e.g. "this function is sync not async") belong
24
+ alongside the function in Full API Reference, **not here**.
25
+
26
+ This scoping is authoritative per `skf-create-skill/assets/skill-sections.md`
27
+ ("Section 4b (Migration & Deprecation Warnings) is conditional: only emitted
28
+ for Deep tier when T2-future annotations exist").
29
+
30
+ Two legitimate exceptions for the `T2-future = 0 AND Section 4b present` case
31
+ are formalized in the rules below:
32
+
33
+ - **(a) historical migration** content — past, shipped package renames or
34
+ consolidated import paths that remain load-bearing for correcting model
35
+ training-data drift → Info severity, no justification required.
36
+ - **(b) other non-migration content** — reviewer may downgrade to Low with
37
+ inline justification.
38
+
39
+ Do not relax the gate otherwise — that would desync the test workflow from the
40
+ authoring rule.
41
+
42
+ ## Case Rules
43
+
44
+ Check whether SKILL.md contains a "Migration & Deprecation Warnings" section
45
+ (Section 4b). Then parse `evidence-report.md`'s **YAML frontmatter** for the
46
+ pinned `t2_future_count` field — this is the authoritative count, not the
47
+ narrative body.
48
+
49
+ **Detection contract (MANDATORY).** Read the frontmatter deterministically:
50
+
51
+ ```bash
52
+ # Extract t2_future_count from frontmatter. Requires a `---` delimiter pair.
53
+ awk '/^---$/{c++;next} c==1 && /^t2_future_count:/{print $2; exit}' \
54
+ {forge_data_folder}/{skill_name}/evidence-report.md
55
+ ```
56
+
57
+ - **Frontmatter missing OR `t2_future_count` absent** → treat as Case 4 (see
58
+ below) and skip silently. Do NOT fall back to grepping prose (`grep "T2-future"`) —
59
+ prose drift (heading renames, alt phrasings like "forward-looking
60
+ annotations", capitalization variance) silently breaks detection and can
61
+ invert Case-1 vs Case-2/3 severity.
62
+ - **`t2_future_count` parsed** → use its integer value for the Case Rules
63
+ below.
64
+
65
+ The pinned field is emitted by `skf-create-skill/steps-c/step-05-compile.md`
66
+ §7 (frontmatter-pinned fields), which ALWAYS writes `t2_future_count: N`
67
+ (including 0). Legacy skills whose `evidence-report.md` predates the pinned
68
+ field land in Case 4.
69
+
70
+ ### Case 1 — T2-future > 0 AND Section 4b absent
71
+
72
+ Flag as **Medium** severity gap:
73
+
74
+ > "Migration section missing — T2-future annotations exist but Section 4b is
75
+ > not present in SKILL.md Tier 1."
76
+
77
+ ### Case 2 — T2-future = 0 AND Section 4b present AND content is historical migration
78
+
79
+ Flag as **Info** severity (not Medium). Historical migration content covers
80
+ completed package renames (e.g. `@oldscope/*` → `@newscope/*`), consolidated
81
+ import paths, and shipped API cutovers that still surface in training-data
82
+ drift — load-bearing for correcting model knowledge even though no
83
+ forward-looking change is pending.
84
+
85
+ Recognizable patterns: old-name → new-name rewrites, citations to
86
+ already-shipped PRs/issues, "migrated in version N" or "consolidated from X to
87
+ Y" language.
88
+
89
+ Recommend in the gap report that a future skill revision rename Section 4b to
90
+ "Import Corrections" or "Ecosystem Notes" to free the Migration & Deprecation
91
+ heading for its forward-looking contract. No inline justification required —
92
+ the historical-migration classification is itself the rationale.
93
+
94
+ ### Case 3 — T2-future = 0 AND Section 4b present AND content is non-migration
95
+
96
+ Flag as **Medium** severity gap:
97
+
98
+ > "Migration section unexpected — Section 4b contains non-migration content and
99
+ > no T2-future annotations were produced."
100
+
101
+ Reviewer may downgrade to Low with inline justification on a case-by-case
102
+ basis.
103
+
104
+ ### Case 4 — evidence-report.md unavailable
105
+
106
+ Skip silently. Record the note:
107
+
108
+ > "Section 4b verification skipped — evidence-report.md not found."
109
+
110
+ ## Output
111
+
112
+ Append any resulting finding(s) to the coherence analysis results. Both the
113
+ naive path (§2b) and the contextual path (§5b) funnel findings into the same
114
+ Coherence Analysis section of `{outputFile}`.