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,8 +1,6 @@
1
1
  ---
2
- name: 'step-01-select'
3
- description: 'Select skill to rename and validate the new name'
4
2
  nextStepFile: './step-02-execute.md'
5
- versionPathsKnowledge: '../../../knowledge/version-paths.md'
3
+ versionPathsKnowledge: 'knowledge/version-paths.md'
6
4
  ---
7
5
 
8
6
  # Step 1: Select Rename Target
@@ -11,46 +9,12 @@ versionPathsKnowledge: '../../../knowledge/version-paths.md'
11
9
 
12
10
  Identify the skill the user wants to rename, validate the new name against the agentskills.io spec (kebab-case, length, uniqueness), warn about source authority implications, enumerate every version that will be touched, and obtain explicit user confirmation before any filesystem operation is scheduled. Every selection decision is stored in context so step-02 can execute the rename transactionally.
13
11
 
14
- ## MANDATORY EXECUTION RULES (READ FIRST):
12
+ ## Rules
15
13
 
16
- ### Universal Rules:
17
-
18
- - 🛑 NEVER schedule a rename without explicit user confirmation
19
- - 🛑 NEVER accept a new name that collides with an existing skill
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
- - ⚙️ 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
- - ✅ YOU MUST ALWAYS SPEAK OUTPUT in your Agent communication style with the config `{communication_language}`
25
-
26
- ### Role Reinforcement:
27
-
28
- - ✅ You are Ferris in Management mode — a precision surgeon for transactional renames
29
- - ✅ You validate the new name against agentskills.io spec constraints before anything moves
30
- - ✅ You enumerate the full blast radius (every affected version and directory) before asking for confirmation
31
- - ✅ Safety via copy-before-delete — the old skill is untouched until step-02 finishes verification
32
-
33
- ### Step-Specific Rules:
34
-
35
- - 🎯 Focus only on selection, validation, and confirmation
36
- - 🚫 FORBIDDEN to proceed without explicit user confirmation at the final gate
37
- - 🚫 FORBIDDEN to modify the manifest, copy, or delete any files in this step — execution happens in step-02
38
- - 🚫 FORBIDDEN to accept a new name that fails validation (kebab-case, length, uniqueness)
39
- - 💬 Present the list of affected versions clearly so the user understands the scope before committing
40
-
41
- ## EXECUTION PROTOCOLS:
42
-
43
- - 🎯 Load version-paths knowledge and the export manifest (if present) alongside an on-disk skill scan
44
- - 💾 Gather all selection decisions into context for step-02
45
- - 📖 Show the full list of affected versions and the resolved paths clearly
46
- - 🚫 Halt only if neither the manifest nor an on-disk scan yields any skill — rename must still work for draft skills that were never exported, so a missing or empty manifest is not fatal
47
-
48
- ## CONTEXT BOUNDARIES:
49
-
50
- - Available: Export manifest v2, SKF module config variables, on-disk skill directory listing, version-paths knowledge (Rename section)
51
- - Focus: Selection, validation, and user confirmation
52
- - Limits: Do not write to the manifest, do not copy or delete any files — execution is deferred to step-02
53
- - Dependencies: At least one skill must exist in the export manifest (or on disk); otherwise the workflow halts
14
+ - Focus only on selection, validation, and confirmation — do not modify manifest, copy, or delete files
15
+ - Do not proceed without explicit user confirmation at the final gate
16
+ - Do not accept a new name that fails validation (kebab-case, length, uniqueness)
17
+ - Present the list of affected versions clearly so the user understands the scope
54
18
 
55
19
  ## MANDATORY SEQUENCE
56
20
 
@@ -108,7 +72,7 @@ Available skills:
108
72
  "**Which skill would you like to rename?**
109
73
  Enter the skill name or its number from the list above."
110
74
 
111
- Wait for user input. Accept either the numeric index or the skill name (exact match).
75
+ Wait for user input. Accept either the numeric index or the skill name (exact match). **GATE [default: use args]** — If `{headless_mode}` and old skill name was provided as argument: select that skill and auto-proceed. If not provided, HALT: "headless mode requires old_name argument."
112
76
 
113
77
  **If the user's input does not match any listed skill:** Re-display the list and ask again.
114
78
 
@@ -119,7 +83,9 @@ Store the selection as `old_name`.
119
83
  "**What is the new name for this skill?**
120
84
  The new name must be kebab-case: lowercase alphanumeric with hyphens, 1-64 characters, matching the regex `^[a-z][a-z0-9-]*[a-z0-9]$` (single-character names may be a single lowercase letter or digit)."
121
85
 
122
- Wait for user input. Trim whitespace. Apply the following validations in order:
86
+ Wait for user input. Trim whitespace. **GATE [default: use args]** If `{headless_mode}` and new_name was provided as argument: use it and auto-proceed through validation. If not provided, HALT: "headless mode requires new_name argument."
87
+
88
+ Apply the following validations in order:
123
89
 
124
90
  1. **Kebab-case format:** Must match `^[a-z][a-z0-9-]*[a-z0-9]$` (or `^[a-z0-9]$` for the single-character case). If it fails:
125
91
  "**Invalid name format.** The new name must be lowercase alphanumeric with hyphens, starting with a letter and ending with a letter or digit. Try again."
@@ -222,6 +188,8 @@ directories are removed and the old skill remains intact.
222
188
  Proceed? [Y/N]
223
189
  ```
224
190
 
191
+ **GATE [default: Y]** — If `{headless_mode}`: auto-proceed with [Y], log: "headless: auto-confirmed rename {old_name} → {new_name}"
192
+
225
193
  Wait for explicit user response.
226
194
 
227
195
  - **If `Y`** → proceed to section 9
@@ -250,32 +218,3 @@ Load, read the full file, and then execute `{nextStepFile}`.
250
218
 
251
219
  ONLY WHEN the user has confirmed with `Y` at the confirmation gate AND all selection decisions have been stored in context, will you then load and read fully `{nextStepFile}` to execute the rename.
252
220
 
253
- ---
254
-
255
- ## 🚨 SYSTEM SUCCESS/FAILURE METRICS
256
-
257
- ### ✅ SUCCESS:
258
-
259
- - Version-paths knowledge loaded and the Rename section internalized before any decision
260
- - Export manifest read and validated (halt if empty/missing)
261
- - Complete skill list displayed with version counts and active version
262
- - Old name selected by explicit user input
263
- - New name validated against kebab-case regex, length, identity, and collision checks
264
- - `source_authority: "official"` warning shown and acknowledged when applicable
265
- - `affected_versions` enumerated from both the manifest and the on-disk directory listing
266
- - All four outer paths resolved from templates (no hardcoding)
267
- - Explicit user confirmation (`Y`) received at the confirmation gate
268
- - All selection decisions stored in context for step-02
269
-
270
- ### ❌ SYSTEM FAILURE:
271
-
272
- - Proceeding without reading version-paths knowledge
273
- - Halting when the manifest is missing but on-disk skills exist — the fallback on-disk scan MUST be attempted before any "nothing to rename" halt
274
- - Accepting a new name that fails any of the four validation checks
275
- - Missing the source_authority warning when `"official"` is present
276
- - Hardcoding directory paths instead of using `{skill_package}`, `{skill_group}`, `{forge_version}`, `{forge_group}` templates
277
- - Modifying the manifest, copying, or deleting files in this step (execution belongs to step-02)
278
- - Skipping the confirmation gate or proceeding on any response other than `Y`
279
- - Not storing decisions in context for step-02
280
-
281
- **Master Rule:** Skipping steps, optimizing sequences, or not following exact instructions is FORBIDDEN and constitutes SYSTEM FAILURE. No filesystem operation proceeds without explicit user confirmation, and no invalid new name is ever accepted.
@@ -1,9 +1,7 @@
1
1
  ---
2
- name: 'step-02-execute'
3
- description: 'Execute the rename transactionally — copy, verify, then delete old'
4
2
  nextStepFile: './step-03-report.md'
5
- versionPathsKnowledge: '../../../knowledge/version-paths.md'
6
- managedSectionLogic: '../../export-skill/data/managed-section-format.md'
3
+ versionPathsKnowledge: 'knowledge/version-paths.md'
4
+ managedSectionLogic: 'skf-export-skill/assets/managed-section-format.md'
7
5
  ---
8
6
 
9
7
  # Step 2: Execute Rename (Transactional)
@@ -12,46 +10,13 @@ managedSectionLogic: '../../export-skill/data/managed-section-format.md'
12
10
 
13
11
  Execute the rename decisions recorded in step-01 as a transaction. Copy the old `{skill_group}` and `{forge_group}` to the new name, rename inner directories, rewrite every in-file reference, verify no trace of the old name remains inside the new location, update the export manifest, rebuild platform context files, and only then delete the old directories. Any failure before the final delete rolls back by removing the new directories — the old skill remains intact.
14
12
 
15
- ## MANDATORY EXECUTION RULES (READ FIRST):
13
+ ## Rules
16
14
 
17
- ### Universal Rules:
18
-
19
- - 🛑 **NEVER** delete `{old_skill_group}` or `{old_forge_group}` until sections 1-7 have all succeeded
20
- - 🛑 **NEVER** modify content outside `<!-- SKF:BEGIN/END -->` markers in platform context files
21
- - 🛑 **NEVER** skip verification the rename is not committed until section 5 passes
22
- - 📖 CRITICAL: Read the complete step file before taking any action
23
- - 🔄 CRITICAL: When loading next step, ensure entire file is read
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
- - ✅ YOU MUST ALWAYS SPEAK OUTPUT in your Agent communication style with the config `{communication_language}`
26
-
27
- ### Role Reinforcement:
28
-
29
- - ✅ You are Ferris in Management mode — a transactional rename surgeon
30
- - ✅ Copy-before-delete: the new name is fully materialized and verified before the old name is touched
31
- - ✅ Every step before section 8 is reversible — on any failure, delete `{new_skill_group}` and `{new_forge_group}` and halt
32
- - ✅ Surgical precision on platform context files: preserve all content outside `<!-- SKF:BEGIN/END -->` markers
33
-
34
- ### Step-Specific Rules:
35
-
36
- - 🎯 Execute sections strictly in order — each section depends on the previous one
37
- - 🚫 FORBIDDEN to re-prompt the user — decisions were made in step-01
38
- - 🚫 FORBIDDEN to delete anything from `{old_skill_group}` or `{old_forge_group}` before section 8
39
- - 🚫 FORBIDDEN to proceed past a verification failure in section 5
40
- - 💬 Report each section's outcome as it completes so the user sees progress
41
-
42
- ## EXECUTION PROTOCOLS:
43
-
44
- - 🎯 Re-read version-paths knowledge at the start to avoid drift between step files
45
- - 💾 Hold a copy of the manifest in memory before modifying it so section 6 can roll back on failure
46
- - 📖 Rebuild managed sections from the **updated** manifest (after section 6), not from memory
47
- - 🚫 If any section before section 8 fails, execute the rollback procedure defined for that section and halt
48
-
49
- ## CONTEXT BOUNDARIES:
50
-
51
- - Available: Decisions from step-01 (`old_name`, `new_name`, `affected_versions`, `old_skill_group`, `new_skill_group`, `old_forge_group`, `new_forge_group`), SKF module config, version-paths knowledge, managed-section format
52
- - Focus: Copy → rename inner dirs → rewrite files → verify → update manifest → rebuild context → delete old
53
- - Limits: Only touch paths inside `{skills_output_folder}` and `{forge_data_folder}`; only modify content between `<!-- SKF:BEGIN/END -->` markers in platform context files
54
- - Dependencies: Step-01 must have completed and stored all decisions in context
15
+ - Execute sections strictly in order — each section depends on the previous one
16
+ - Do not re-prompt the user — decisions were made in step-01
17
+ - Do not delete anything from old directories before section 8
18
+ - Do not proceed past a verification failure in section 5
19
+ - Report each section's outcome as it completes
55
20
 
56
21
  ## MANDATORY SEQUENCE
57
22
 
@@ -116,13 +81,10 @@ For each version `v` in `affected_versions`, operate on the files inside `{new_s
116
81
 
117
82
  - Path: `{new_skill_group}/{v}/{new_name}/context-snippet.md`
118
83
  - Replace the display name header `[{old_name} v...]` → `[{new_name} v...]` (preserving the version suffix)
119
- - Rewrite every `root:` path that references the old name to use the new name. This must handle both platform paths and draft paths:
120
- - `root: .claude/skills/{old_name}/` → `root: .claude/skills/{new_name}/`
121
- - `root: .cursor/skills/{old_name}/` → `root: .cursor/skills/{new_name}/`
122
- - `root: .agents/skills/{old_name}/` → `root: .agents/skills/{new_name}/`
123
- - `root: skills/{old_name}/` → `root: skills/{new_name}/` (draft form written by create-skill/quick-skill/create-stack-skill before first export)
124
- - Legacy pre-fix form `root: skills/{old_name}/active/{old_name}/` (from older skills created before the create-skill template was corrected) → `root: skills/{new_name}/` (also normalize to flat form during rename)
125
- - Any other `root:` prefix ending in `{old_name}/` → replace the `{old_name}/` segment with `{new_name}/`
84
+ - Rewrite every `root:` path that references the old name to use the new name. Parse the `root:` line as `root: {prefix}{old_name}/`, preserve the prefix as-is, and replace `{old_name}` with `{new_name}`. This generically handles any IDE's skill root path (e.g., `.claude/skills/`, `.windsurf/skills/`, `.github/skills/`) as well as the draft `skills/` prefix and legacy forms — no enumeration of known prefixes needed.
85
+ - Example: `root: .windsurf/skills/{old_name}/` → `root: .windsurf/skills/{new_name}/`
86
+ - Example: `root: skills/{old_name}/` → `root: skills/{new_name}/`
87
+ - Legacy pre-fix form `root: skills/{old_name}/active/{old_name}/` → `root: skills/{new_name}/` (normalize to flat form during rename)
126
88
  - If the file is missing, record it in `section3_warnings` and continue
127
89
 
128
90
  **3d. provenance-map.json:**
@@ -206,33 +168,27 @@ Set context flag `manifest_updated = true`.
206
168
 
207
169
  Report: "**Manifest updated** — re-keyed `exports.{old_name}` → `exports.{new_name}`."
208
170
 
209
- ### 7. Rebuild Platform Context Files
210
-
211
- Load the `ides` list from `config.yaml`. The installer writes installer-specific IDE identifiers (e.g. `claude-code`, `github-copilot`, `codex`, `cline`, `roo`, `windsurf`, `cursor`, `other`), NOT platform values — these must be mapped to platforms before any target-file lookup.
171
+ ### 7. Rebuild Context Files
212
172
 
213
- **Resolve `target_platforms`** using the "IDE → Platform Mapping" table in `{managedSectionLogic}`:
173
+ Load the `ides` list from `config.yaml`. The installer writes IDE identifiers — these must be mapped to context files and skill roots using the "IDE → Context File Mapping" table in `{managedSectionLogic}`.
214
174
 
215
- 1. For each entry in `config.yaml.ides`, look up its platform value (`claude-code` `claude`, `github-copilot` → `copilot`, `codex`/`cline`/`roo`/`windsurf`/`other` → `copilot`, `cursor` → `cursor`)
216
- 2. For any entry not found in the table, default to `copilot` and emit a warning: "Unknown IDE '{value}' in config.yaml — defaulting to copilot"
217
- 3. Deduplicate the resulting platform list (e.g. both `codex` and `cline` collapse to a single `copilot` entry)
218
- 4. If `config.yaml.ides` is absent or the mapping yields an empty list, fall back to `["copilot"]` and emit a note: "No IDEs configured in config.yaml — defaulting to copilot (AGENTS.md)"
175
+ **Resolve `target_context_files`** using the canonical mapping table in `{managedSectionLogic}`:
219
176
 
220
- Store the result as `target_platforms` for this section.
177
+ 1. For each entry in `config.yaml.ides`, look up its `context_file` and `skill_root` from the mapping table
178
+ 2. For any entry not found in the table, default to AGENTS.md / `.agents/skills/` and emit a warning: "Unknown IDE '{value}' in config.yaml — defaulting to AGENTS.md"
179
+ 3. Deduplicate by `context_file` — when multiple IDEs map to the same context file, use the first configured IDE's `skill_root`
180
+ 4. If `config.yaml.ides` is absent or the mapping yields an empty list, fall back to `[{context_file: "AGENTS.md", skill_root: ".agents/skills/"}]` and emit a note: "No IDEs configured in config.yaml — defaulting to AGENTS.md"
221
181
 
222
- For each platform in `target_platforms`:
182
+ Store the result as `target_context_files` for this section.
223
183
 
224
- 1. **Resolve target file** using the "Platform Target Files" table in `{managedSectionLogic}`:
184
+ For each entry in `target_context_files`:
225
185
 
226
- | Platform | Target File |
227
- |----------|-------------|
228
- | `claude` | `{project-root}/CLAUDE.md` |
229
- | `cursor` | `{project-root}/.cursorrules` |
230
- | `copilot` | `{project-root}/AGENTS.md` |
186
+ 1. **Resolve target file** at `{context_file}`.
231
187
 
232
188
  2. **Read the current file.**
233
- - If the file does not exist, skip this platform (nothing to rebuild — the file will be re-created next time export-skill runs)
234
- - If the file exists but contains no `<!-- SKF:BEGIN -->` marker, skip this platform (no managed section to rewrite)
235
- - If the file contains `<!-- SKF:BEGIN -->` but no matching `<!-- SKF:END -->`, record the error against that platform and continue to the next IDE — do not halt the entire rename on a malformed context file
189
+ - If the file does not exist, skip this context file (nothing to rebuild — the file will be re-created next time export-skill runs)
190
+ - If the file exists but contains no `<!-- SKF:BEGIN -->` marker, skip this context file (no managed section to rewrite)
191
+ - If the file contains `<!-- SKF:BEGIN -->` but no matching `<!-- SKF:END -->`, record the error against that context file and continue to the next entry — do not halt the entire rename on a malformed context file
236
192
 
237
193
  3. **Build the exported skill set (version-aware, deprecated-excluded)** using the same logic as export-skill step-04 section 4b and the snippet resolution logic from section 4c:
238
194
  - Read the manifest's `exports` object (already updated in section 6, so `{new_name}` is present and `{old_name}` is absent)
@@ -241,15 +197,9 @@ For each platform in `target_platforms`:
241
197
  - For each remaining `{skill-name, active_version}` pair, read `{skills_output_folder}/{skill-name}/{active_version}/{skill-name}/context-snippet.md`
242
198
  - If missing, fall back to the `active` symlink path; if still missing, skip with a warning
243
199
 
244
- 4. **Rewrite root paths for the current platform** using export-skill step-04 section 4d logic:
200
+ 4. **Rewrite root paths for the current context file** using the generic rewrite algorithm from export-skill step-04 section 4d:
245
201
 
246
- | Platform | Root Path Prefix |
247
- |----------|-----------------|
248
- | `claude` | `.claude/skills/` |
249
- | `cursor` | `.cursor/skills/` |
250
- | `copilot` | `.agents/skills/` |
251
-
252
- For each snippet, detect its current `root:` prefix and rewrite it to the current platform's prefix if different.
202
+ For each snippet, parse the `root:` line (`root: {prefix}{skill-name}/`), strip the trailing `{skill-name}/` to extract the current prefix, and replace it with the current entry's `skill_root` if different. **Override guard:** If `snippet_skill_root_override` is set in config.yaml AND the extracted prefix equals the override value, skip the rewrite — leave the root path untouched. See `skf-export-skill/steps-c/step-04-update-context.md` §4d for full semantics.
253
203
 
254
204
  5. **Sort skills alphabetically by name.** Count totals (skills, stack skills).
255
205
 
@@ -282,12 +232,12 @@ For each platform in `target_platforms`:
282
232
  - Confirm `{new_name}` appears between the markers (if this skill's active version is not deprecated)
283
233
  - Confirm content outside the markers is byte-identical to what was preserved
284
234
 
285
- 9. **On per-file failure:** record the error against that platform and continue to the next IDE. Do not halt the rename on a recoverable per-platform error — the manifest and filesystem are already consistent; platform context files can be re-rebuilt later via `[EX] Export Skill`.
235
+ 9. **On per-file failure:** record the error against that context file and continue to the next entry. Do not halt the rename on a recoverable per-context-file error — the manifest and filesystem are already consistent; context files can be re-rebuilt later via `[EX] Export Skill`.
286
236
 
287
237
  **After the loop:**
288
238
 
289
- - Record `platform_files_updated` as the list of files that were successfully rewritten
290
- - Record `platform_files_failed` as the list of any that failed
239
+ - Record `context_files_updated` as the list of files that were successfully rewritten
240
+ - Record `context_files_failed` as the list of any that failed
291
241
 
292
242
  Report: "**Rebuilt managed sections in:** {list of updated files}. {if any failed: 'Failed: {list} — re-run `[EX] Export Skill` to retry.'}"
293
243
 
@@ -330,8 +280,8 @@ Store the following for step-03:
330
280
  - `affected_versions_count` — integer count
331
281
  - `files_updated_per_version` — structured summary (SKILL.md, metadata.json, context-snippet.md, provenance-map.json — each with ×count)
332
282
  - `manifest_rekeyed` — boolean (true if section 6 succeeded)
333
- - `platform_files_updated` — list of successfully rebuilt files
334
- - `platform_files_failed` — list of files that failed to rebuild (empty if none)
283
+ - `context_files_updated` — list of successfully rebuilt files
284
+ - `context_files_failed` — list of files that failed to rebuild (empty if none)
335
285
  - `section2_warnings` — list of orphaned version warnings (empty if none)
336
286
  - `section3_warnings` — list of missing file warnings (empty if none)
337
287
  - `verification_warnings` — list of informational SKILL.md body mentions of `{old_name}` retained (empty if none)
@@ -358,34 +308,3 @@ Load, read the full file, and then execute `{nextStepFile}`.
358
308
 
359
309
  ONLY WHEN all execution sections have been attempted (copy, inner rename, file updates, symlink fix, verification, manifest re-key, context rebuild, old delete) and results have been stored in context, will you then load and read fully `{nextStepFile}` to generate the final report.
360
310
 
361
- ---
362
-
363
- ## 🚨 SYSTEM SUCCESS/FAILURE METRICS
364
-
365
- ### ✅ SUCCESS:
366
-
367
- - Version-paths knowledge and managed-section format re-read at the start of the step
368
- - `{new_skill_group}` and `{new_forge_group}` copied from the old paths with symlinks preserved
369
- - Inner version directories renamed from `{old_name}/` to `{new_name}/` across every affected version
370
- - SKILL.md frontmatter, metadata.json, context-snippet.md (display name + root paths), and provenance-map.json updated across every version
371
- - `active` symlink in the new location points to the correct version
372
- - Verification grep confirms no structural references to `{old_name}` remain inside the new directories
373
- - Export manifest re-keyed from `exports.{old_name}` to `exports.{new_name}` preserving `active_version` and `versions` map
374
- - Platform context files rebuilt from the updated manifest using export-skill step-04 logic with surgical marker replacement
375
- - Old `{skill_group}` and `{forge_group}` deleted only after all previous sections succeeded
376
- - All failures before section 8 trigger a full rollback; failures in section 8 are recorded for manual cleanup
377
- - All results stored in context for step-03
378
-
379
- ### ❌ SYSTEM FAILURE:
380
-
381
- - Deleting any part of `{old_skill_group}` or `{old_forge_group}` before section 8
382
- - Proceeding past a verification failure in section 5 instead of rolling back
383
- - Failing to restore the manifest from backup after a write failure in section 6
384
- - Rewriting content outside `<!-- SKF:BEGIN/END -->` markers in platform context files
385
- - Rebuilding managed sections from the pre-update manifest instead of the re-keyed one
386
- - Leaving structural references to `{old_name}` inside `{new_skill_group}` or `{new_forge_group}`
387
- - Hardcoding paths instead of using `{skill_package}`, `{skill_group}`, `{forge_version}`, `{forge_group}` templates
388
- - Halting the entire workflow on a recoverable per-platform error in section 7
389
- - Not storing results in context for step-03
390
-
391
- **Master Rule:** The rename is transactional. Copy-before-delete is inviolable. Every section before section 8 must have a concrete rollback procedure, and rollback must be executed on failure without exception. The old skill is canonical until the new name is fully verified.
@@ -0,0 +1,83 @@
1
+ ---
2
+ nextStepFile: './step-04-health-check.md'
3
+ ---
4
+
5
+ # Step 3: Report Rename Results
6
+
7
+ ## STEP GOAL:
8
+
9
+ Present a clear, final summary of what the rename workflow changed — old and new names, versions renamed, file-level update counts, manifest re-key, platform context rebuild, and any residual warnings or deletion errors — so the user can verify the outcome and know whether any manual follow-up is required.
10
+
11
+ ## Rules
12
+
13
+ - Focus only on reporting results stored in context by step-02 — do not re-execute any part of the rename
14
+ - Do not hide verification warnings, context file rebuild failures, or deletion errors
15
+ - Present next-steps guidance so the user knows which downstream workflows to run
16
+ - Chains to the local health-check step via `{nextStepFile}` after completion — the user-facing report is NOT the terminal step
17
+
18
+ ## MANDATORY SEQUENCE
19
+
20
+ **CRITICAL:** Follow this sequence exactly.
21
+
22
+ ### 1. Render the Report
23
+
24
+ Display the following block, filling in values from context:
25
+
26
+ ```
27
+ **Rename complete.**
28
+
29
+ From: {old_name}
30
+ To: {new_name}
31
+
32
+ Versions renamed: {affected_versions_count} ({comma-separated affected_versions})
33
+
34
+ References updated:
35
+ - SKILL.md frontmatter (×{affected_versions_count})
36
+ - metadata.json (×{affected_versions_count})
37
+ - context-snippet.md (×{affected_versions_count})
38
+ - provenance-map.json (×{affected_versions_count})
39
+
40
+ Manifest updated: {if manifest_rekeyed: "exports.{new_name} (re-keyed from exports.{old_name})" else: "(no manifest entry existed for {old_name})"}
41
+ Context files rebuilt: {list from context_files_updated, or "(none)"}
42
+ {if context_files_failed is non-empty:}
43
+ Context files FAILED: {list from context_files_failed}
44
+ → Re-run `[EX] Export Skill` to retry the managed section rebuild for these files.
45
+
46
+ {if section2_warnings is non-empty:}
47
+ Warnings (inner directory rename):
48
+ {list each warning from section2_warnings}
49
+
50
+ {if section3_warnings is non-empty:}
51
+ Warnings (missing files during content update):
52
+ {list each warning from section3_warnings}
53
+
54
+ {if verification_warnings is non-empty:}
55
+ Informational: the old name still appears in SKILL.md body text (prose only, non-structural) in:
56
+ {list each path from verification_warnings}
57
+ → These are typically historical notes or changelog entries. Review and edit manually if you want them updated.
58
+
59
+ {if deletion_errors is non-empty:}
60
+ **Post-commit deletion errors:**
61
+ {list each error}
62
+ → The new name is fully committed. Remove the remnants manually with `rm -rf {path}`.
63
+
64
+ ---
65
+
66
+ **Next steps:**
67
+ - Run `@Ferris EX` if you want to re-verify the managed sections in platform context files
68
+ - If you had QMD collections or external tooling registered under `{old_name}`, re-run `@Ferris SF` (or your registration command) to re-index under `{new_name}`
69
+ - If this skill was published to agentskills.io under `{old_name}`, the registry version is unchanged — this rename is a LOCAL operation only
70
+ ```
71
+
72
+ ### Result Contract
73
+
74
+ Write the result contract per `shared/references/output-contract-schema.md`: the per-run record at `{skills_output_folder}/{new_name}/rename-skill-result-{YYYYMMDD-HHmmss}.json` (UTC timestamp, resolution to seconds) and a copy at `{skills_output_folder}/{new_name}/rename-skill-result-latest.json` (stable path for pipeline consumers — copy, not symlink). Include all updated file paths (SKILL.md, metadata.json, context-snippet.md, provenance-map.json) in `outputs`; include `old_name`, `new_name`, and `versions_renamed` in `summary`.
75
+
76
+ ### 2. Chain to Health Check
77
+
78
+ ONLY WHEN the rename report has been rendered and the result contract saved 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.
79
+
80
+ ## CRITICAL STEP COMPLETION NOTE
81
+
82
+ 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 rename-skill workflow is fully done. Do not re-run any earlier step automatically — if the user wants another rename, they should re-invoke the workflow from the top.
83
+
@@ -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 4: 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 rename-skill — 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-03
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,55 @@
1
+ ---
2
+ name: skf-setup
3
+ description: Initialize forge environment, detect tools, and set capability tier (Quick/Forge/Forge+/Deep). Use when the user requests to "set up" or "initialize the forge."
4
+ ---
5
+
6
+ # Setup Forge
7
+
8
+ ## Overview
9
+
10
+ Initializes the forge environment by detecting available tools, determining the capability tier (Quick/Forge/Forge+/Deep), writing persistent configuration, and optionally indexing the project for deep search. This is a fully autonomous workflow — no user interaction is required during execution.
11
+
12
+ ## Role
13
+
14
+ You are a system executor performing environment resolution. Run each step in sequence, write configuration files, and report results at completion.
15
+
16
+ ## Workflow Rules
17
+
18
+ These rules apply to every step in this workflow:
19
+
20
+ - Fully autonomous — all steps auto-proceed with no user interaction until the final report
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
+ - Always communicate in `{communication_language}`
25
+ - If `{headless_mode}` is true, auto-proceed through confirmation gates with their default action and log each auto-decision
26
+
27
+ ## Stages
28
+
29
+ | # | Step | File | Auto-proceed |
30
+ |---|------|------|--------------|
31
+ | 1 | Detect Tools & Set Tier | steps-c/step-01-detect-and-tier.md | Yes |
32
+ | 1b | CCC Index | steps-c/step-01b-ccc-index.md | Yes |
33
+ | 2 | Write Config | steps-c/step-02-write-config.md | Yes |
34
+ | 3 | QMD Hygiene | steps-c/step-03-auto-index.md | Yes |
35
+ | 4 | Report | steps-c/step-04-report.md | Yes |
36
+ | 5 | Workflow Health Check | steps-c/step-05-health-check.md | Yes |
37
+
38
+ ## Invocation Contract
39
+
40
+ | Aspect | Detail |
41
+ |--------|--------|
42
+ | **Inputs** | (none — fully autonomous) |
43
+ | **Gates** | One optional: orphaned QMD collection removal (step 3, Deep tier only; default: Keep) |
44
+ | **Outputs** | forge-tier.yaml, preferences.yaml, forge-data directories |
45
+ | **Headless** | All gates auto-resolve with default action when `{headless_mode}` is true |
46
+
47
+ ## On Activation
48
+
49
+ 1. Load config from `{project-root}/_bmad/skf/config.yaml` and resolve:
50
+ - `project_name` (from installer-generated config.yaml, not module.yaml), `output_folder`, `user_name`, `communication_language`, `document_output_language`
51
+ - `skills_output_folder`, `forge_data_folder`, `sidecar_path`
52
+
53
+ 2. **Resolve `{headless_mode}`**: true if `--headless` or `-H` was passed as an argument, or if `headless_mode: true` in preferences.yaml. Default: false.
54
+
55
+ 3. Load, read the full file, and then execute `./steps-c/step-01-detect-and-tier.md` to begin the workflow.
@@ -1,9 +1,6 @@
1
1
  ---
2
- name: 'step-01-detect-and-tier'
3
- description: 'Detect available tools and determine forge capability tier'
4
-
5
2
  nextStepFile: './step-01b-ccc-index.md'
6
- tierRulesData: '../data/tier-rules.md'
3
+ tierRulesData: 'references/tier-rules.md'
7
4
  ---
8
5
 
9
6
  # Step 1: Detect Tools and Determine Tier
@@ -12,41 +9,11 @@ tierRulesData: '../data/tier-rules.md'
12
9
 
13
10
  Verify availability of the four forge tools (ast-grep, gh, qmd, ccc), read any existing configuration for re-run comparison, check for tier override, and calculate the capability tier.
14
11
 
15
- ## MANDATORY EXECUTION RULES (READ FIRST):
16
-
17
- ### Universal Rules:
18
-
19
- - 📖 CRITICAL: Read the complete step file before taking any action
20
- - 🔄 CRITICAL: When loading next step, ensure entire file is read
21
- - 🎯 Execute all operations autonomously — no user interaction
22
-
23
- ### Role Reinforcement:
24
-
25
- - ✅ You are a system executor performing environment resolution
26
- - ✅ Tool detection must be empirical — run actual commands, never assume
27
- - ✅ Record exact results (version strings, error messages)
28
-
29
- ### Step-Specific Rules:
30
-
31
- - 🎯 Focus only on tool detection and tier calculation
32
- - 🚫 FORBIDDEN to write any files — that is step-02's job
33
- - 🚫 FORBIDDEN to skip any tool check — all 4 must be verified
34
- - 💬 Tool command failures are NOT errors — they indicate unavailability
35
-
36
- ## EXECUTION PROTOCOLS:
37
-
38
- - 🎯 Follow the MANDATORY SEQUENCE exactly
39
- - 💾 Store all results in memory for step-02
40
- - 📖 Load tier-rules.md for calculation reference
41
- - 🚫 FORBIDDEN to proceed without checking all 4 tools
12
+ ## Rules
42
13
 
43
- ## CONTEXT BOUNDARIES:
44
-
45
- - This is the first stepno prior context exists
46
- - Available: forge-tier.yaml and preferences.yaml may exist from prior runs
47
- - Focus: tool verification and tier calculation only
48
- - Produces: `{detected_tools}`, `{calculated_tier}`, `{previous_tier}`, `{tier_override}` for downstream steps
49
- - Dependencies: none — this step bootstraps everything
14
+ - Focus only on tool detection and tier calculation — do not write any files (Step 02)
15
+ - Do not skip any tool check — all 4 must be verified
16
+ - Tool command failures are not errors they indicate unavailability
50
17
 
51
18
  ## MANDATORY SEQUENCE
52
19
 
@@ -119,7 +86,7 @@ ccc availability gates the Forge+ tier and enhances Deep tier when present.
119
86
 
120
87
  **If no override, apply tier rules from {tierRulesData} in order — the first matching rule wins. Do not continue checking once a match is found:**
121
88
  - `{ast_grep}` AND `{gh_cli}` AND `{qmd}` all true → **Deep**
122
- - `{ast_grep}` AND `{ccc}` both true (regardless of gh/qmd) → **Forge+**
89
+ - `{ast_grep}` AND `{ccc}` both true, but NOT (`{gh_cli}` AND `{qmd}`) → **Forge+**
123
90
  - `{ast_grep}` true (regardless of ccc/gh/qmd) → **Forge**
124
91
  - Otherwise → **Quick**
125
92
 
@@ -142,26 +109,3 @@ ccc availability gates the Forge+ tier and enhances Deep tier when present.
142
109
 
143
110
  ONLY WHEN all 4 core tools have been verified, optional security scan checked, and the tier calculated will you load and read fully `{nextStepFile}` to execute the CCC index check step.
144
111
 
145
- ---
146
-
147
- ## 🚨 SYSTEM SUCCESS/FAILURE METRICS
148
-
149
- ### ✅ SUCCESS:
150
-
151
- - All 4 tools checked via verification commands (not existence checks)
152
- - Existing forge-tier.yaml read for re-run comparison (if present)
153
- - Existing preferences.yaml read for tier_override (if present)
154
- - Tier correctly calculated from tool results or override applied
155
- - All results stored in context for step-01b and step-02
156
- - Auto-proceeded to step-01b
157
-
158
- ### ❌ SYSTEM FAILURE:
159
-
160
- - Skipping any tool verification (ast-grep, gh, qmd, ccc — all 4 must be checked)
161
- - Using `which` or `command -v` instead of verification commands
162
- - Assuming tool availability without running the command
163
- - Writing files in this step (that is step-02)
164
- - Not checking for existing configuration on re-runs
165
- - Not checking ccc availability (both binary and daemon health)
166
-
167
- **Master Rule:** Every tool MUST be verified empirically. No assumptions, no shortcuts.