bmad-module-skill-forge 2.2.0 → 4.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (437) hide show
  1. package/.claude-plugin/marketplace.json +1 -1
  2. package/README.md +49 -49
  3. package/docs/404.md +10 -8
  4. package/docs/_data/pinned.yaml +22 -13
  5. package/docs/_internal/STABILITY.md +58 -35
  6. package/docs/agents.md +39 -53
  7. package/docs/architecture.md +65 -51
  8. package/docs/bmad-synergy.md +53 -51
  9. package/docs/campaign.md +127 -75
  10. package/docs/concepts.md +34 -28
  11. package/docs/examples.md +70 -68
  12. package/docs/forge-auto.md +34 -31
  13. package/docs/getting-started.md +118 -57
  14. package/docs/how-it-works.md +25 -21
  15. package/docs/index.md +15 -15
  16. package/docs/skill-model.md +70 -59
  17. package/docs/troubleshooting.md +143 -18
  18. package/docs/verifying-a-skill.md +87 -57
  19. package/docs/why-skf.md +24 -22
  20. package/docs/workflows.md +274 -110
  21. package/package.json +18 -10
  22. package/src/forger/preferences.yaml +8 -1
  23. package/src/knowledge/agentskills-spec.md +2 -0
  24. package/src/knowledge/ccc-bridge.md +40 -24
  25. package/src/knowledge/confidence-tiers.md +9 -5
  26. package/src/knowledge/overview.md +3 -3
  27. package/src/knowledge/progressive-capability.md +8 -8
  28. package/src/knowledge/provenance-tracking.md +9 -5
  29. package/src/knowledge/qmd-registry.md +3 -3
  30. package/src/knowledge/skf-knowledge-index.csv +2 -2
  31. package/src/knowledge/skill-lifecycle.md +18 -11
  32. package/src/knowledge/split-body-strategy.md +0 -3
  33. package/src/knowledge/tool-resolution.md +4 -2
  34. package/src/knowledge/version-paths.md +101 -15
  35. package/src/module-help.csv +3 -3
  36. package/src/module.yaml +10 -0
  37. package/src/shared/data/ast-grep-recipes.yaml +608 -0
  38. package/src/shared/data/ide-context-files.json +30 -0
  39. package/src/shared/health-check.md +31 -59
  40. package/src/shared/references/description-guard-protocol.md +12 -9
  41. package/src/shared/references/feasibility-report-schema.md +19 -13
  42. package/src/shared/references/headless-gate-convention.md +55 -3
  43. package/src/shared/references/output-contract-schema.md +19 -8
  44. package/src/shared/references/pipeline-contracts.md +94 -29
  45. package/src/shared/references/tessl-review.md +77 -0
  46. package/src/shared/scripts/schemas/skf-analyze-result-envelope.v1.json +194 -0
  47. package/src/shared/scripts/schemas/skf-audit-result-envelope.v1.json +192 -0
  48. package/src/shared/scripts/schemas/skf-brief-result-envelope.v1.json +32 -4
  49. package/src/shared/scripts/schemas/skf-campaign-result-envelope.v1.json +174 -0
  50. package/src/shared/scripts/schemas/skf-create-skill-result-envelope.v1.json +284 -0
  51. package/src/shared/scripts/schemas/skf-drop-skill-result-envelope.v1.json +164 -0
  52. package/src/shared/scripts/schemas/skf-export-result-envelope.v1.json +160 -0
  53. package/src/shared/scripts/schemas/skf-quick-skill-result-envelope.v1.json +261 -0
  54. package/src/shared/scripts/schemas/skf-refine-architecture-result-envelope.v1.json +192 -0
  55. package/src/shared/scripts/schemas/skf-rename-skill-result-envelope.v1.json +179 -0
  56. package/src/shared/scripts/schemas/skf-setup-result-envelope.v1.json +27 -11
  57. package/src/shared/scripts/schemas/skf-stack-result-envelope.v1.json +176 -0
  58. package/src/shared/scripts/schemas/skf-test-result-envelope.v1.json +173 -0
  59. package/src/shared/scripts/schemas/skf-update-result-envelope.v1.json +19 -5
  60. package/src/shared/scripts/schemas/skf-verify-stack-result-envelope.v1.json +180 -0
  61. package/src/shared/scripts/schemas/skill-brief.v1.json +34 -0
  62. package/src/shared/scripts/schemas/workspace-detection.v1.json +1 -1
  63. package/src/shared/scripts/skf-atomic-write.py +233 -64
  64. package/src/shared/scripts/skf-build-change-manifest.py +2753 -28
  65. package/src/shared/scripts/skf-ccc-git-hygiene.py +532 -0
  66. package/src/shared/scripts/skf-check-unit-records.py +184 -0
  67. package/src/shared/scripts/skf-check-workspace-drift.py +538 -9
  68. package/src/shared/scripts/skf-classify-changed-files.py +772 -0
  69. package/src/shared/scripts/skf-comention-pairs.py +1333 -123
  70. package/src/shared/scripts/skf-compare-file-hashes.py +267 -105
  71. package/src/shared/scripts/skf-count-imports.py +1867 -0
  72. package/src/shared/scripts/skf-count-tokens.py +1 -1
  73. package/src/shared/scripts/skf-derive-assembly-shape.py +21 -3
  74. package/src/shared/scripts/skf-description-guard.py +99 -11
  75. package/src/shared/scripts/skf-detect-docs.py +694 -2
  76. package/src/shared/scripts/skf-detect-language.py +486 -107
  77. package/src/shared/scripts/skf-detect-registry.py +887 -0
  78. package/src/shared/scripts/skf-detect-scripts-assets.py +197 -55
  79. package/src/shared/scripts/skf-detect-tools.py +209 -27
  80. package/src/shared/scripts/skf-detect-workspaces.py +506 -30
  81. package/src/shared/scripts/skf-disqualify-candidates.py +821 -182
  82. package/src/shared/scripts/skf-emit-brief-result-envelope.py +69 -191
  83. package/src/shared/scripts/skf-emit-result-envelope.py +1604 -106
  84. package/src/shared/scripts/skf-enumerate-stack-skills.py +986 -117
  85. package/src/shared/scripts/skf-extract-public-api.py +5247 -96
  86. package/src/shared/scripts/skf-extraction-inventory.py +1280 -0
  87. package/src/shared/scripts/skf-extraction-snapshot.py +664 -0
  88. package/src/shared/scripts/skf-fetch-temporal.py +674 -0
  89. package/src/shared/scripts/skf-find-cycles.py +97 -29
  90. package/src/shared/scripts/skf-find-test-report.py +476 -0
  91. package/src/shared/scripts/skf-forge-tier-rw.py +469 -205
  92. package/src/shared/scripts/skf-github-fetch.py +365 -0
  93. package/src/shared/scripts/skf-github-probe.py +700 -0
  94. package/src/shared/scripts/skf-hash-content.py +180 -20
  95. package/src/shared/scripts/skf-language-corpora.py +1 -1
  96. package/src/shared/scripts/skf-load-provenance.py +161 -27
  97. package/src/shared/scripts/skf-manifest-ops.py +1 -1
  98. package/src/shared/scripts/skf-merge-ccc-exclusions.py +2307 -223
  99. package/src/shared/scripts/skf-merge-doc-urls.py +143 -20
  100. package/src/shared/scripts/skf-names-present.py +221 -0
  101. package/src/shared/scripts/skf-pair-intersect.py +119 -28
  102. package/src/shared/scripts/skf-parse-gaps.py +1384 -0
  103. package/src/shared/scripts/skf-preapply.py +1 -1
  104. package/src/shared/scripts/skf-preflight.py +176 -28
  105. package/src/shared/scripts/skf-promote-staged.py +430 -0
  106. package/src/shared/scripts/skf-provenance-gap-dispatch.py +64 -8
  107. package/src/shared/scripts/skf-qmd-classify-collections.py +229 -45
  108. package/src/shared/scripts/skf-quick-batch.py +774 -0
  109. package/src/shared/scripts/skf-rebuild-managed-sections.py +972 -88
  110. package/src/shared/scripts/skf-recommend-scope-type.py +323 -156
  111. package/src/shared/scripts/skf-render-metadata-stats.py +156 -12
  112. package/src/shared/scripts/skf-render-quick-metadata.py +132 -28
  113. package/src/shared/scripts/skf-render-stack-metadata.py +976 -0
  114. package/src/shared/scripts/skf-resolve-authoritative-files.py +155 -14
  115. package/src/shared/scripts/skf-resolve-package.py +523 -106
  116. package/src/shared/scripts/skf-rewrite-skill-name.py +433 -47
  117. package/src/shared/scripts/skf-run-lock.py +577 -0
  118. package/src/shared/scripts/skf-scan-manifests.py +998 -57
  119. package/src/shared/scripts/skf-scan-skill-md-structure.py +1341 -37
  120. package/src/shared/scripts/skf-severity-classify.py +712 -108
  121. package/src/shared/scripts/skf-shape-detect.py +298 -204
  122. package/src/shared/scripts/skf-shard-body.py +9 -8
  123. package/src/shared/scripts/skf-skill-inventory.py +2412 -89
  124. package/src/shared/scripts/skf-skills-module.py +472 -0
  125. package/src/shared/scripts/skf-source-tree.py +1796 -0
  126. package/src/shared/scripts/skf-structural-diff.py +787 -121
  127. package/src/shared/scripts/skf-tessl-review.py +706 -0
  128. package/src/shared/scripts/skf-update-active-symlink.py +120 -67
  129. package/src/shared/scripts/skf-update-run-state.py +624 -0
  130. package/src/shared/scripts/skf-validate-brief-inputs.py +92 -29
  131. package/src/shared/scripts/skf-validate-brief-schema.py +23 -2
  132. package/src/shared/scripts/skf-validate-feasibility-report.py +577 -66
  133. package/src/shared/scripts/skf-validate-frontmatter.py +103 -26
  134. package/src/shared/scripts/skf-validate-output.py +712 -64
  135. package/src/shared/scripts/skf-validate-pins.py +1 -1
  136. package/src/shared/scripts/skf-verify-no-trace.py +116 -10
  137. package/src/shared/scripts/skf-verify-provenance-completeness.py +3945 -152
  138. package/src/shared/scripts/skf-write-skill-brief.py +406 -25
  139. package/src/shared/tool-requirements.yaml +201 -0
  140. package/src/skf-analyze-source/SKILL.md +41 -36
  141. package/src/skf-analyze-source/assets/skill-brief-schema.md +7 -8
  142. package/src/skf-analyze-source/customize.toml +36 -24
  143. package/src/skf-analyze-source/references/auto-docs-only.md +58 -20
  144. package/src/skf-analyze-source/references/continue.md +2 -13
  145. package/src/skf-analyze-source/references/discover-additional-source.md +147 -0
  146. package/src/skf-analyze-source/references/generate-briefs.md +121 -55
  147. package/src/skf-analyze-source/references/headless-contract.md +42 -15
  148. package/src/skf-analyze-source/references/identify-units.md +96 -110
  149. package/src/skf-analyze-source/references/init.md +73 -71
  150. package/src/skf-analyze-source/references/map-and-detect.md +123 -105
  151. package/src/skf-analyze-source/references/map-unit-exports.md +68 -0
  152. package/src/skf-analyze-source/references/recommend.md +51 -70
  153. package/src/skf-analyze-source/references/scan-project.md +60 -84
  154. package/src/skf-analyze-source/references/scan-root.md +39 -0
  155. package/src/skf-analyze-source/references/step-auto-scope-coexistence.md +47 -0
  156. package/src/skf-analyze-source/references/step-auto-scope-corpora.md +53 -0
  157. package/src/skf-analyze-source/references/step-auto-scope-split.md +91 -0
  158. package/src/skf-analyze-source/references/step-auto-scope.md +208 -293
  159. package/src/skf-analyze-source/references/step-shape-detect.md +14 -12
  160. package/src/skf-analyze-source/references/unit-detection-heuristics.md +37 -42
  161. package/src/skf-audit-skill/SKILL.md +43 -51
  162. package/src/skf-audit-skill/assets/drift-report-template.md +28 -3
  163. package/src/skf-audit-skill/customize.toml +41 -20
  164. package/src/skf-audit-skill/references/constituent-freshness.md +91 -0
  165. package/src/skf-audit-skill/references/doc-drift.md +141 -0
  166. package/src/skf-audit-skill/references/headless-contract.md +29 -0
  167. package/src/skf-audit-skill/references/health-check.md +2 -0
  168. package/src/skf-audit-skill/references/init.md +149 -210
  169. package/src/skf-audit-skill/references/re-index.md +103 -110
  170. package/src/skf-audit-skill/references/report.md +96 -33
  171. package/src/skf-audit-skill/references/semantic-diff.md +34 -25
  172. package/src/skf-audit-skill/references/severity-classify.md +79 -65
  173. package/src/skf-audit-skill/references/severity-rules.md +15 -6
  174. package/src/skf-audit-skill/references/structural-diff.md +80 -90
  175. package/src/skf-audit-skill/references/upstream-checkout.md +77 -0
  176. package/src/skf-audit-skill/scripts/render-drift-tables.py +712 -0
  177. package/src/skf-brief-skill/SKILL.md +37 -26
  178. package/src/skf-brief-skill/assets/description-voice-examples.md +1 -1
  179. package/src/skf-brief-skill/assets/scope-templates.md +18 -25
  180. package/src/skf-brief-skill/assets/skill-brief-schema.md +30 -23
  181. package/src/skf-brief-skill/customize.toml +48 -20
  182. package/src/skf-brief-skill/references/analyze-target.md +144 -127
  183. package/src/skf-brief-skill/references/confirm-brief.md +11 -9
  184. package/src/skf-brief-skill/references/draft-checkpoint.md +36 -17
  185. package/src/skf-brief-skill/references/gather-intent-ratify.md +68 -0
  186. package/src/skf-brief-skill/references/gather-intent.md +87 -182
  187. package/src/skf-brief-skill/references/headless-args.md +84 -16
  188. package/src/skf-brief-skill/references/health-check.md +1 -1
  189. package/src/skf-brief-skill/references/invocation-contract.md +18 -13
  190. package/src/skf-brief-skill/references/portfolio-similarity-check.md +1 -1
  191. package/src/skf-brief-skill/references/qmd-collection-registration.md +7 -10
  192. package/src/skf-brief-skill/references/scope-definition.md +123 -47
  193. package/src/skf-brief-skill/references/step-auto-brief.md +26 -100
  194. package/src/skf-brief-skill/references/step-auto-validate.md +20 -121
  195. package/src/skf-brief-skill/references/version-resolution.md +7 -10
  196. package/src/skf-brief-skill/references/write-brief.md +66 -57
  197. package/src/skf-campaign/SKILL.md +31 -34
  198. package/src/skf-campaign/assets/campaign-state-schema.json +25 -4
  199. package/src/skf-campaign/customize.toml +47 -16
  200. package/src/skf-campaign/references/campaign-contracts.md +39 -29
  201. package/src/skf-campaign/references/campaign-directive-spec.md +4 -2
  202. package/src/skf-campaign/references/health-check.md +7 -16
  203. package/src/skf-campaign/references/step-01-setup.md +46 -84
  204. package/src/skf-campaign/references/step-02-strategy.md +31 -30
  205. package/src/skf-campaign/references/step-03-pins.md +26 -18
  206. package/src/skf-campaign/references/step-04-provenance.md +24 -23
  207. package/src/skf-campaign/references/step-05-skill-loop.md +67 -48
  208. package/src/skf-campaign/references/step-06-batch.md +41 -34
  209. package/src/skf-campaign/references/step-07-capstone.md +40 -25
  210. package/src/skf-campaign/references/step-08-verify.md +28 -29
  211. package/src/skf-campaign/references/step-09-refine.md +29 -30
  212. package/src/skf-campaign/references/step-10-export.md +48 -36
  213. package/src/skf-campaign/references/step-11-maintenance.md +31 -34
  214. package/src/skf-campaign/references/step-resume.md +37 -68
  215. package/src/skf-campaign/scripts/campaign-deps.py +57 -18
  216. package/src/skf-campaign/scripts/campaign-parse-manifest.py +361 -54
  217. package/src/skf-campaign/scripts/campaign-provenance.py +96 -53
  218. package/src/skf-campaign/scripts/campaign-quality-gate.py +592 -0
  219. package/src/skf-campaign/scripts/campaign-render-batch.py +257 -49
  220. package/src/skf-campaign/scripts/campaign-render-kickoff.py +343 -50
  221. package/src/skf-campaign/scripts/campaign-report.py +204 -37
  222. package/src/skf-campaign/scripts/campaign-state.py +1128 -0
  223. package/src/skf-campaign/scripts/campaign-status.py +10 -74
  224. package/src/skf-campaign/scripts/campaign-validate-pins.py +30 -3
  225. package/src/skf-campaign/scripts/campaign-validate-state.py +34 -4
  226. package/src/skf-campaign/templates/campaign-brief-template.yaml +4 -5
  227. package/src/skf-campaign/templates/campaign-report-template.md +5 -1
  228. package/src/skf-campaign/templates/kickoff-template.md +0 -14
  229. package/src/skf-create-skill/SKILL.md +27 -20
  230. package/src/skf-create-skill/assets/compile-assembly-rules.md +11 -8
  231. package/src/skf-create-skill/assets/skill-sections.md +21 -11
  232. package/src/skf-create-skill/customize.toml +20 -8
  233. package/src/skf-create-skill/references/authoritative-files-protocol.md +36 -58
  234. package/src/skf-create-skill/references/batch-mode.md +81 -0
  235. package/src/skf-create-skill/references/ccc-index-check.md +27 -0
  236. package/src/skf-create-skill/references/compile.md +119 -70
  237. package/src/skf-create-skill/references/component-extraction.md +113 -91
  238. package/src/skf-create-skill/references/enrich.md +41 -23
  239. package/src/skf-create-skill/references/entry-points-by-hand.md +37 -0
  240. package/src/skf-create-skill/references/extract.md +204 -162
  241. package/src/skf-create-skill/references/extraction-patterns-by-hand.md +141 -0
  242. package/src/skf-create-skill/references/extraction-patterns-tracing.md +11 -11
  243. package/src/skf-create-skill/references/extraction-patterns.md +588 -201
  244. package/src/skf-create-skill/references/generate-artifacts.md +145 -93
  245. package/src/skf-create-skill/references/health-check.md +1 -1
  246. package/src/skf-create-skill/references/load-brief.md +53 -36
  247. package/src/skf-create-skill/references/relabel-rule.md +12 -0
  248. package/src/skf-create-skill/references/report.md +37 -57
  249. package/src/skf-create-skill/references/source-resolution-protocols.md +58 -169
  250. package/src/skf-create-skill/references/step-auto-shard.md +20 -93
  251. package/src/skf-create-skill/references/step-doc-rot.md +44 -60
  252. package/src/skf-create-skill/references/step-doc-sources.md +28 -19
  253. package/src/skf-create-skill/references/sub/ccc-discover.md +18 -7
  254. package/src/skf-create-skill/references/sub/fetch-docs.md +106 -59
  255. package/src/skf-create-skill/references/sub/fetch-temporal.md +53 -166
  256. package/src/skf-create-skill/references/tier-degradation-rules.md +18 -9
  257. package/src/skf-create-skill/references/validate.md +173 -99
  258. package/src/skf-create-skill/scripts/scan-doc-rot.py +232 -99
  259. package/src/skf-create-stack-skill/SKILL.md +29 -56
  260. package/src/skf-create-stack-skill/assets/metadata-contract.md +51 -0
  261. package/src/skf-create-stack-skill/assets/provenance-map-schema.md +15 -15
  262. package/src/skf-create-stack-skill/assets/stack-skill-template.md +23 -57
  263. package/src/skf-create-stack-skill/customize.toml +23 -12
  264. package/src/skf-create-stack-skill/references/compile-stack.md +57 -66
  265. package/src/skf-create-stack-skill/references/compose-mode-rules.md +24 -44
  266. package/src/skf-create-stack-skill/references/detect-integrations.md +92 -95
  267. package/src/skf-create-stack-skill/references/detect-manifests.md +46 -71
  268. package/src/skf-create-stack-skill/references/generate-output.md +138 -128
  269. package/src/skf-create-stack-skill/references/init.md +90 -32
  270. package/src/skf-create-stack-skill/references/integration-patterns.md +1 -17
  271. package/src/skf-create-stack-skill/references/invocation-contract.md +34 -0
  272. package/src/skf-create-stack-skill/references/manifest-patterns.md +32 -20
  273. package/src/skf-create-stack-skill/references/parallel-extract.md +112 -38
  274. package/src/skf-create-stack-skill/references/rank-and-confirm.md +57 -75
  275. package/src/skf-create-stack-skill/references/report.md +39 -33
  276. package/src/skf-create-stack-skill/references/validate.md +20 -39
  277. package/src/skf-drop-skill/SKILL.md +28 -51
  278. package/src/skf-drop-skill/customize.toml +44 -30
  279. package/src/skf-drop-skill/references/execute.md +83 -146
  280. package/src/skf-drop-skill/references/health-check.md +2 -0
  281. package/src/skf-drop-skill/references/invocation-contract.md +64 -0
  282. package/src/skf-drop-skill/references/report.md +46 -30
  283. package/src/skf-drop-skill/references/select.md +122 -124
  284. package/src/skf-drop-skill/scripts/dir-sizes.py +54 -26
  285. package/src/skf-drop-skill/scripts/drop-roster.py +322 -0
  286. package/src/skf-export-skill/SKILL.md +40 -62
  287. package/src/skf-export-skill/assets/managed-section-format.md +14 -50
  288. package/src/skf-export-skill/assets/snippet-format.md +3 -1
  289. package/src/skf-export-skill/customize.toml +42 -13
  290. package/src/skf-export-skill/references/generate-snippet.md +54 -46
  291. package/src/skf-export-skill/references/health-check.md +2 -0
  292. package/src/skf-export-skill/references/invocation-contract.md +15 -0
  293. package/src/skf-export-skill/references/load-skill.md +88 -62
  294. package/src/skf-export-skill/references/manifest-rebuild.md +9 -10
  295. package/src/skf-export-skill/references/multi-skill-mode.md +4 -4
  296. package/src/skf-export-skill/references/orphan-context-detection.md +13 -5
  297. package/src/skf-export-skill/references/orphan-row-detection.md +31 -22
  298. package/src/skf-export-skill/references/package.md +15 -73
  299. package/src/skf-export-skill/references/preflight-snippet-root-probe.md +51 -70
  300. package/src/skf-export-skill/references/result-envelope.md +31 -16
  301. package/src/skf-export-skill/references/summary.md +41 -17
  302. package/src/skf-export-skill/references/token-report.md +4 -12
  303. package/src/skf-export-skill/references/update-context.md +118 -237
  304. package/src/skf-forger/SKILL.md +61 -37
  305. package/src/skf-forger/bmad-skill-manifest.yaml +4 -1
  306. package/src/skf-forger/customize.toml +43 -0
  307. package/src/skf-forger/references/pipeline-mode.md +73 -18
  308. package/src/skf-forger/scripts/forge-status.py +299 -0
  309. package/src/skf-forger/scripts/parse-pipeline.py +322 -54
  310. package/src/skf-forger/scripts/pipeline-gate.py +428 -0
  311. package/src/skf-forger/scripts/pipeline-journal.py +1052 -0
  312. package/src/skf-quick-skill/SKILL.md +54 -53
  313. package/src/skf-quick-skill/assets/skill-template.md +4 -2
  314. package/src/skf-quick-skill/customize.toml +51 -20
  315. package/src/skf-quick-skill/references/batch-mode.md +74 -21
  316. package/src/skf-quick-skill/references/compile.md +30 -31
  317. package/src/skf-quick-skill/references/ecosystem-check.md +7 -57
  318. package/src/skf-quick-skill/references/finalize.md +69 -18
  319. package/src/skf-quick-skill/references/halt-contract.md +41 -29
  320. package/src/skf-quick-skill/references/health-check.md +5 -3
  321. package/src/skf-quick-skill/references/quick-extract.md +114 -45
  322. package/src/skf-quick-skill/references/registry-resolution.md +9 -64
  323. package/src/skf-quick-skill/references/resolve-target.md +116 -66
  324. package/src/skf-quick-skill/references/write-and-validate.md +79 -40
  325. package/src/skf-refine-architecture/SKILL.md +43 -53
  326. package/src/skf-refine-architecture/customize.toml +49 -20
  327. package/src/skf-refine-architecture/references/compile.md +97 -54
  328. package/src/skf-refine-architecture/references/exit-codes.md +30 -0
  329. package/src/skf-refine-architecture/references/finding-storage.md +21 -0
  330. package/src/skf-refine-architecture/references/gap-analysis.md +101 -38
  331. package/src/skf-refine-architecture/references/improvements.md +14 -20
  332. package/src/skf-refine-architecture/references/init.md +98 -57
  333. package/src/skf-refine-architecture/references/issue-detection.md +32 -39
  334. package/src/skf-refine-architecture/references/refinement-rules.md +37 -48
  335. package/src/skf-refine-architecture/references/report.md +65 -54
  336. package/src/skf-refine-architecture/scripts/skf-check-preservation.py +1619 -0
  337. package/src/skf-rename-skill/SKILL.md +19 -54
  338. package/src/skf-rename-skill/customize.toml +32 -26
  339. package/src/skf-rename-skill/references/execute.md +230 -184
  340. package/src/skf-rename-skill/references/exit-codes.md +7 -7
  341. package/src/skf-rename-skill/references/health-check.md +1 -7
  342. package/src/skf-rename-skill/references/invocation-contract.md +25 -0
  343. package/src/skf-rename-skill/references/report.md +63 -52
  344. package/src/skf-rename-skill/references/select.md +197 -115
  345. package/src/skf-rename-skill/scripts/skf-validate-rename-name.py +161 -21
  346. package/src/skf-setup/SKILL.md +26 -26
  347. package/src/skf-setup/customize.toml +14 -10
  348. package/src/skf-setup/references/auto-index.md +50 -63
  349. package/src/skf-setup/references/ccc-index.md +29 -90
  350. package/src/skf-setup/references/detect-and-tier.md +58 -67
  351. package/src/skf-setup/references/health-check.md +2 -0
  352. package/src/skf-setup/references/invocation-contract.md +14 -0
  353. package/src/skf-setup/references/report.md +43 -166
  354. package/src/skf-setup/references/tier-rules.md +5 -5
  355. package/src/skf-setup/references/write-config.md +34 -57
  356. package/src/skf-test-skill/SKILL.md +17 -57
  357. package/src/skf-test-skill/assets/output-section-formats.md +33 -34
  358. package/src/skf-test-skill/customize.toml +27 -13
  359. package/src/skf-test-skill/references/coherence-check.md +134 -62
  360. package/src/skf-test-skill/references/coverage-check-tiers.md +35 -0
  361. package/src/skf-test-skill/references/coverage-check.md +209 -264
  362. package/src/skf-test-skill/references/detect-mode.md +5 -5
  363. package/src/skf-test-skill/references/external-validators.md +94 -82
  364. package/src/skf-test-skill/references/health-check.md +6 -7
  365. package/src/skf-test-skill/references/init.md +164 -91
  366. package/src/skf-test-skill/references/invocation-contract.md +66 -0
  367. package/src/skf-test-skill/references/migration-section-rules.md +5 -2
  368. package/src/skf-test-skill/references/report.md +164 -142
  369. package/src/skf-test-skill/references/score.md +80 -107
  370. package/src/skf-test-skill/references/scoring-rules.md +42 -155
  371. package/src/skf-test-skill/references/source-access-protocol.md +18 -94
  372. package/src/skf-test-skill/references/step-hard-gate.md +51 -33
  373. package/src/skf-test-skill/scripts/aggregate-coherence.py +218 -30
  374. package/src/skf-test-skill/scripts/build-result-context.py +380 -0
  375. package/src/skf-test-skill/scripts/check-metadata-coherence.py +37 -4
  376. package/src/skf-test-skill/scripts/combine-external-scores.py +23 -6
  377. package/src/skf-test-skill/scripts/compute-score.py +223 -45
  378. package/src/skf-test-skill/scripts/gap-ledger.py +1666 -0
  379. package/src/skf-test-skill/scripts/hard-gate.py +203 -0
  380. package/src/skf-test-skill/scripts/load-coverage-inputs.py +1198 -0
  381. package/src/skf-test-skill/scripts/locate-export-segments.py +835 -0
  382. package/src/skf-test-skill/scripts/reconcile-coverage.py +547 -79
  383. package/src/skf-test-skill/scripts/score-signatures.py +479 -0
  384. package/src/skf-test-skill/scripts/stage-helper-payload.py +148 -0
  385. package/src/skf-test-skill/scripts/validate-inventory.py +311 -16
  386. package/src/skf-test-skill/scripts/verify-declared-numerator.py +133 -56
  387. package/src/skf-test-skill/templates/test-report-template.md +21 -15
  388. package/src/skf-update-skill/SKILL.md +38 -25
  389. package/src/skf-update-skill/customize.toml +27 -12
  390. package/src/skf-update-skill/references/detect-changes.md +253 -223
  391. package/src/skf-update-skill/references/gap-driven.md +336 -0
  392. package/src/skf-update-skill/references/health-check.md +31 -5
  393. package/src/skf-update-skill/references/init.md +254 -84
  394. package/src/skf-update-skill/references/invocation-contract.md +12 -0
  395. package/src/skf-update-skill/references/manual-section-rules.md +6 -23
  396. package/src/skf-update-skill/references/merge.md +182 -49
  397. package/src/skf-update-skill/references/re-extract.md +53 -262
  398. package/src/skf-update-skill/references/report.md +102 -35
  399. package/src/skf-update-skill/references/write.md +357 -155
  400. package/src/skf-update-skill/scripts/skf-new-file-diff.py +183 -46
  401. package/src/skf-verify-stack/SKILL.md +23 -42
  402. package/src/skf-verify-stack/assets/feasibility-report-template.md +11 -5
  403. package/src/skf-verify-stack/customize.toml +55 -22
  404. package/src/skf-verify-stack/references/coverage-patterns.md +17 -8
  405. package/src/skf-verify-stack/references/coverage.md +67 -64
  406. package/src/skf-verify-stack/references/exit-codes.md +21 -8
  407. package/src/skf-verify-stack/references/init.md +107 -62
  408. package/src/skf-verify-stack/references/integration-verification-rules.md +12 -13
  409. package/src/skf-verify-stack/references/integrations.md +106 -65
  410. package/src/skf-verify-stack/references/report.md +59 -42
  411. package/src/skf-verify-stack/references/requirements.md +32 -9
  412. package/src/skf-verify-stack/references/synthesize.md +53 -39
  413. package/src/skf-verify-stack/scripts/skf-coverage-tally.py +398 -52
  414. package/src/skf-verify-stack/scripts/skf-previous-report.py +330 -0
  415. package/src/skf-verify-stack/scripts/skf-report-delta.py +453 -49
  416. package/src/skf-verify-stack/scripts/skf-verdict-rollup.py +240 -27
  417. package/tools/cli/commands/install.js +11 -4
  418. package/tools/cli/commands/status.js +15 -3
  419. package/tools/cli/commands/update.js +11 -4
  420. package/tools/cli/lib/tool-check.js +320 -0
  421. package/tools/cli/lib/version-check.js +22 -9
  422. package/tools/cli/skf-cli.js +4 -1
  423. package/.gitattributes +0 -16
  424. package/.nvmrc +0 -1
  425. package/docs/_internal/RELEASING.md +0 -679
  426. package/release-audits/v1.0.0-launch-audit.md +0 -728
  427. package/src/skf-audit-skill/references/step-doc-drift.md +0 -177
  428. package/src/skf-brief-skill/references/headless-source-authority-detection.md +0 -26
  429. package/src/skf-campaign/manifest.yaml +0 -15
  430. package/src/skf-create-skill/assets/tessl-dismissal-rules.md +0 -106
  431. package/src/skf-create-skill/references/ecosystem-check.md +0 -74
  432. package/src/skf-drop-skill/references/headless-contract.md +0 -18
  433. package/src/skf-update-skill/references/merge-conflict-rules.md +0 -15
  434. package/src/skf-update-skill/references/remote-source-resolution.md +0 -98
  435. package/src/skf-update-skill/references/validate.md +0 -124
  436. package/tools/validate-docs-drift.js +0 -233
  437. package/tools/validate-docs-links.js +0 -665
@@ -5,15 +5,15 @@ description: Install Skill Forge and generate your first verified skill in under
5
5
 
6
6
  ## In 60 seconds
7
7
 
8
- One command. One verified skill. Here's a real snippet from a cognee skill SKF compiled:
8
+ One command. One verified skill. Here's what an instruction in a cognee skill looks like:
9
9
 
10
10
  ```python
11
- await cognee.search( # [AST:cognee/api/v1/search/search.py:L26]
11
+ await cognee.search( # [AST:cognee/api/v1/search/search.py:L27]
12
12
  query_text="What does Cognee do?"
13
13
  )
14
14
  ```
15
15
 
16
- Every instruction carries a receipt — a file, a line, and a commit SHA from the upstream repo. Your AI reads these instead of guessing from training data, and you can open the source at the pinned commit to confirm the function exists. Nothing is made up; everything is falsifiable.
16
+ Every instruction carries a receipt: the file and line in the upstream repo it came from. `AST` means ast-grep matched the definition there; an export SKF read by eye instead carries an `[SRC:...]` receipt and a lower confidence label. The skill's `metadata.json` records the commit SHA those lines were read at. Your AI reads these instead of guessing from training data, and you can open the source at that commit to confirm the function exists. Nothing is made up, and everything can be checked.
17
17
 
18
18
  Want to see the full audit on a real shipped skill before you install anything? → [Verifying a Skill](/docs/verifying-a-skill.md).
19
19
 
@@ -21,13 +21,13 @@ Want to see the full audit on a real shipped skill before you install anything?
21
21
 
22
22
  ## Install
23
23
 
24
- One command, on any platform. Requires Node.js ≥ 22, Python ≥ 3.10, and `uv` ([full tool matrix below](#prerequisites-full-reference)).
24
+ One command, on any platform. Requires Node.js ≥ 22, Python ≥ 3.11, and `uv` ([full tool matrix below](#prerequisites-full-reference)).
25
25
 
26
26
  ```bash
27
27
  npx bmad-module-skill-forge install
28
28
  ```
29
29
 
30
- You'll be prompted for project name, output folders, and which IDEs to configure. The installer copies skill directories to each IDE's skills folder (e.g. `.claude/skills/`, `.cursor/skills/`) so skills are available natively.
30
+ You'll be asked for a project name, where to save your skills and SKF's workspace files, which IDEs to configure, and whether to add the learning material (a copy of these docs in `_skf-learn/`). The installer puts SKF in `_bmad/skf/` and copies its skills to each IDE's skills folder (for example `.claude/skills/` or `.cursor/skills/`), so your IDE loads them natively.
31
31
 
32
32
  ### As a custom module during BMAD Method installation
33
33
 
@@ -37,9 +37,8 @@ npx bmad-method install
37
37
 
38
38
  Step through the installer prompts:
39
39
 
40
- - **"Would you like to browse community modules?"** — No (SKF isn't in the community catalog yet)
41
- - **"Would you like to install from a custom source (Git URL or local path)?"** — Yes
42
- - **"Git URL or local path:"** — paste the SKF repo URL:
40
+ - **"Do you want to install custom or community modules (Git URL or local path)?"**: Yes
41
+ - **"Git URL or local path:"**: paste the SKF repo URL:
43
42
 
44
43
  ```
45
44
  https://github.com/armelhbobdad/bmad-module-skill-forge
@@ -51,7 +50,7 @@ Or, if you've already cloned the repo locally, provide the path to the repo root
51
50
  /path/to/bmad-module-skill-forge
52
51
  ```
53
52
 
54
- This installs BMAD core + SKF together with full IDE integration, manifests, and help catalog. Best when you want the complete BMAD development workflow. See [BMAD Synergy](/docs/bmad-synergy.md) for how SKF workflows pair with BMM phases and other BMAD modules.
53
+ This installs BMAD core + SKF together with full IDE integration, manifests, and help catalog. Best when you want the complete BMAD development workflow. See [BMAD Synergy](/docs/bmad-synergy.md) for how SKF workflows pair with the phases of BMM (BMAD's software development module) and other BMAD modules.
55
54
 
56
55
  ### Add SKF to an existing BMAD project
57
56
 
@@ -71,21 +70,46 @@ To move to a newer (or older) SKF version, run the installer again in your proje
71
70
  npx bmad-module-skill-forge@latest install
72
71
  ```
73
72
 
74
- The installer reads the installed version from your manifest and shows the delta in the prompt — for example `v0.10.0 → v1.0.0 available`. Pick **Update** to replace SKF files while keeping your `config.yaml` intact. The option label adapts to the direction you're moving (upgrade, reinstall the same version, or downgrade) so you always see exactly what you're about to apply. Pick **Fresh install** instead if you want to wipe everything and start clean.
73
+ The installer reads the installed version from your manifest and shows the change in the prompt, for example `v0.10.0 → v1.0.0 available`. Pick **Update** to replace the SKF files while keeping your `config.yaml` and your forge state (tier and preferences). The option label names the direction you're moving (upgrade, reinstall of the same version, or downgrade), so you always see exactly what you're about to apply. Pick **Fresh install** to remove the installed SKF files in `_bmad/skf/` and answer the install questions again, with your previous answers filled in. Neither option touches the skills you generated or your forge state. The installer then prints its [tool report](#the-tool-report). Afterwards, run `@Ferris SF` so SKF re-detects your tools.
75
74
 
76
75
  > The `@latest` suffix forces npx to fetch the newest published version instead of reusing a cached copy from a previous run.
77
76
 
77
+ ### Other installer commands
78
+
79
+ Run these from your project folder:
80
+
81
+ - `npx bmad-module-skill-forge@latest update` refreshes SKF files without asking questions. It keeps `config.yaml` and your forge state (tier and preferences). It then prints the [tool report](#the-tool-report), followed by the update notice when a newer SKF version is published.
82
+ - `npx bmad-module-skill-forge status` shows the installation, its IDEs, your forge tier and the tools the last setup detected. Below them it prints the [tool report](#the-tool-report), which lists each tool installed now against its minimum version, with the command that upgrades it, and then the output folders.
83
+ - `npx bmad-module-skill-forge uninstall` lists what it will remove and asks first. It removes SKF, your forge state in `_bmad/_memory/forger-sidecar/`, `_skf-learn/` and the SKF skills in your IDE skill folders. It keeps the skills you generated, your `forge-data/`, and the SKF section in `CLAUDE.md`, `AGENTS.md` or `.cursorrules`.
84
+
85
+ ### The tool report
86
+
87
+ After a successful `install` or `update`, and in `status`, the installer checks the tools SKF uses and prints one line per tool: the version it found and how that version compares with the tool's minimum. For example:
88
+
89
+ ```
90
+ Tools
91
+ Node.js 24.21.0 ok
92
+ ast-grep 0.42.2 upgrade to >= 0.45.3 npm install -g @ast-grep/cli@latest
93
+ ccc - optional, Forge+ tier https://github.com/cocoindex-io/cocoindex-code
94
+ ```
95
+
96
+ Each tool reads `ok`, `upgrade to >= <minimum>` with the command that upgrades it, `missing` or `optional` with where to get it, or `installed, version unknown` when SKF cannot read its version. The minimums are the ones in the [Prerequisites](#prerequisites-full-reference) table. The check waits at most about 3 seconds for the tools to answer and never changes the command's exit code. It runs no tool from your project folder and never runs `npx`, so `tessl` and `skill-check`, which SKF runs through `npx`, read as optional when they are not installed.
97
+
98
+ A tier tool below its minimum does not count toward your tier. With an ast-grep older than 0.45.3, `@Ferris SF` leaves you at Quick, whatever else you have installed. Setup's FORGE STATUS report then shows an upgrade line for the tool, and a headless setup adds a `tool_below_minimum` warning to its `SKF_SETUP_RESULT_JSON` envelope. Upgrade the tool and run `@Ferris SF` again. A tool with no minimum, or one whose version SKF cannot read, never lowers your tier.
99
+
78
100
  ---
79
101
 
80
102
  ## Your first skill
81
103
 
82
- ### 1. Setup your forge
104
+ **Talking to Ferris.** These docs write each command as `@Ferris <code>`, which means "ask Ferris to run this". First start Ferris in your IDE. In Claude Code, Cursor and most other IDEs, type `/skf-forger`. In Codex, type `$skf-forger`, and in Pi, `/skill:skf-forger`. Some IDEs have no command: ask to talk to Ferris and the IDE loads him. The installer prints the right command for each IDE you picked. When Ferris shows his menu, type the code, for example `SF`. Each workflow is also a skill of its own, so `/skf-setup` runs Setup Forge without the menu. To leave Ferris, say `dismiss`.
105
+
106
+ ### 1. Set up your forge
83
107
 
84
108
  ```
85
109
  @Ferris SF
86
110
  ```
87
111
 
88
- This detects your tools, sets your capability tier, and initializes the forge environment. You only need to do this once per project.
112
+ This detects your tools and their versions, sets your capability tier (Quick, Forge, Forge+ or Deep, depending on which tools you have; a tool counts only at its minimum version or newer, so an ast-grep older than 0.45.3 leaves you at Quick), and initializes the forge environment. Run it once per project, and again whenever you install, upgrade or remove one of the tools listed under [Prerequisites](#prerequisites-full-reference), so SKF picks up the change.
89
113
 
90
114
  ### 2. Generate your first skill
91
115
 
@@ -94,14 +118,14 @@ This detects your tools, sets your capability tier, and initializes the forge en
94
118
  @Ferris forge-auto https://github.com/honojs/hono
95
119
  ```
96
120
 
97
- One command turns a repo URL (or a doc URL) into a verified skill — auto-scope, auto-brief, a 90% quality gate, and export, with no configuration. If you only read one thing, [start with forge-auto](/docs/forge-auto.md).
121
+ One command turns a repo URL (or a doc URL) into a verified skill. It scopes the skill, writes its brief, compiles, tests and exports it, with no configuration. The test aims for a 90% score: a skill scoring 80% or more still passes, with an evidence report explaining the gap, and one below 80% stops the run. If you only read one thing, [start with forge-auto](/docs/forge-auto.md).
98
122
 
99
123
  **Fastest path (Quick Skill):**
100
124
  ```
101
125
  @Ferris QS https://github.com/bmad-code-org/BMAD-METHOD
102
126
  ```
103
127
 
104
- Ferris reads the repository, extracts the public API, and generates a skill in under a minute.
128
+ Ferris reads the repository, extracts the public API, and generates a skill in under a minute. It is a best-effort draft: it lists the exports and usage examples but carries no receipt on each instruction, so use `forge-auto` or `forge` when you need receipts. The skill lands in your skills folder (`skills/` by default) under `<name>/<version>/<name>/`, as `SKILL.md`, `context-snippet.md` and `metadata.json`. Quick Skill stops there. To test and export the skill in the same run, use `@Ferris forge-quick <package-or-url>` instead, or run `@Ferris TS` and then `@Ferris EX`, each in a fresh session.
105
129
 
106
130
  **Targeting a specific version:** Append `@version` to pin the skill to a library version:
107
131
  ```
@@ -113,22 +137,32 @@ Ferris reads the repository, extracts the public API, and generates a skill in u
113
137
  @Ferris forge https://github.com/cocoindex-io/cocoindex cocoindex
114
138
  ```
115
139
 
116
- `forge` chains Brief → Create → Test → Export. It needs an explicit repo URL **and** a skill name because it starts with Brief Skill (BS), which doesn't guess targets. If you just want a fast skill from a package name, use `@Ferris forge-quick cognee` instead — that starts with Quick Skill (QS), which resolves packages via the registry.
140
+ `forge` chains Brief → Create → Test → Export. It needs an explicit repo URL **and** a skill name because it starts with Brief Skill (BS), which doesn't guess targets. If you just want a fast skill from a package name, use `@Ferris forge-quick cognee` instead: that starts with Quick Skill (QS), which looks the name up on npm, PyPI or crates.io (falling back to a web search) to find its source repo.
117
141
 
118
142
  Or one workflow per session:
119
143
  ```
120
- @Ferris BS # Brief — scope and design the skill
121
- # — clear session —
122
- @Ferris CS # Create — compile from the brief
123
- # — clear session —
124
- @Ferris TS # Test — verify completeness
125
- # — clear session —
126
- @Ferris EX # Export — package for distribution
144
+ @Ferris BS # Brief: scope and design the skill
145
+ # (clear session)
146
+ @Ferris CS # Create: compile from the brief
147
+ # (clear session)
148
+ @Ferris TS # Test: verify completeness
149
+ # (clear session)
150
+ @Ferris EX # Export: package for distribution
127
151
  ```
128
152
 
129
- > **One workflow per session.** Each SKF workflow loads step files, knowledge fragments, and extraction data into the LLM's context as it executes. Running a second workflow in the same session can cause leftover context to interfere — stale references, mode confusion, or degraded output. Clear your session (start a new conversation) before invoking a new workflow. Pipeline mode chains workflows automatically with headless mode; for manual control, start fresh between each one. Sidecar state (forge tier, preferences) persists across sessions, so no configuration is lost.
153
+ > **One workflow per session.** Each SKF workflow loads step files, knowledge fragments, and extraction data into the LLM's context as it executes. Running a second workflow in the same session can cause leftover context to interfere: stale references, mode confusion, or degraded output. Clear your session (start a new conversation) before invoking a new workflow. Pipeline mode (for example `@Ferris forge-auto` or `@Ferris forge`) runs several workflows in one session and answers each question with its default instead of stopping to ask; for manual control, start fresh between each one. Ferris keeps your forge tier and preferences on disk in `_bmad/_memory/forger-sidecar/`, so a new session loses no configuration.
154
+
155
+ ### 3. Install the skill in your project
130
156
 
131
- ### 3. Stack skill (for full projects)
157
+ Export adds a short index of the skill to `CLAUDE.md`, `AGENTS.md` or `.cursorrules`. That index points at your IDE's skill folder, for example `.claude/skills/<name>/`. The skill itself is written to `skills/<name>/<version>/<name>/` (your `skills_output_folder`), so install it once. Export prints the command, for example:
158
+
159
+ ```
160
+ npx skills add ./skills/cognee/1.0.0/cognee
161
+ ```
162
+
163
+ Keep the leading `./`. Without it, the `skills` tool reads the path as a GitHub repository and fails. If your agent does not see the skill yet, reload or restart your IDE.
164
+
165
+ ### 4. Stack skill (for full projects)
132
166
 
133
167
  ```
134
168
  @Ferris SS
@@ -136,37 +170,49 @@ Or one workflow per session:
136
170
 
137
171
  Analyzes your project's dependencies and generates a consolidated stack skill with integration patterns.
138
172
 
139
- > **After every workflow:** Ferris runs a **health check** — a reflection step that captures any friction, bugs, or gaps from the session. Clean runs exit in one line; when something breaks, Ferris offers to file structured findings as GitHub issues (with your approval). **Please let workflows run to completion** so the health check can fire. If it was skipped, ask Ferris to run it (`@Ferris please run the workflow health check for this session`) or [open an issue directly](https://github.com/armelhbobdad/bmad-module-skill-forge/issues/new/choose). See [Workflow Health Check](/docs/workflows.md#terminal-step-health-check).
173
+ > **After every workflow:** Ferris runs a **health check**, a short review of the session that captures any friction, bugs, or gaps in SKF's own instructions. Clean runs exit in one line. When something went wrong, Ferris shows the findings and asks before sending anything: bugs can be filed as GitHub issues, and friction or gaps are saved to a local queue in `forge_data_folder` unless you choose to submit them too. **Please let workflows run to completion** so the health check can fire. If it was skipped, ask Ferris to run it (`@Ferris please run the workflow health check for this session`) or [open an issue directly](https://github.com/armelhbobdad/bmad-module-skill-forge/issues/new/choose). See [Workflow Health Check](/docs/workflows.md#terminal-step-health-check).
140
174
 
141
175
  ---
142
176
 
143
177
  ## Common use cases
144
178
 
145
- > **Looking for end-to-end examples?** See [Examples](/docs/examples.md) for thirteen real-world scenarios with full command transcripts — from Quick Skill under a minute, to brownfield onboarding, stack verification, release-prep drift remediation, and SaaS docs-only skills.
179
+ > **Looking for end-to-end examples?** See [Examples](/docs/examples.md) for thirteen real-world scenarios with full command transcripts, from Quick Skill in under a minute to onboarding an existing codebase, stack verification, release-prep drift fixes, and docs-only skills for SaaS products.
146
180
 
147
181
  ---
148
182
 
149
183
  ## Prerequisites (full reference)
150
184
 
151
- Most users only need Node.js, Python, and `uv` — the rest unlock additional capabilities but SKF detects what's available and sets your tier automatically. You can install them later; your tier upgrades when you do.
185
+ Most users only need Node.js, Python, and `uv`. The other tools unlock more capabilities, and Setup detects which ones you have and their versions, and sets your tier automatically. You can install them later: run `@Ferris SF` again afterwards and your tier goes up.
186
+
187
+ <!-- tool-requirements:start -->
188
+ <!-- Generated from src/shared/tool-requirements.yaml by `node tools/tool-requirements.js --write`: edit that file, not this table. -->
189
+
190
+ | Tool | Used for | Minimum | Tested on | Install |
191
+ | --------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------- | ---------------- | --------------------------------------------------------- |
192
+ | `Node.js` | Installation, npx commands | 22 | 22, 24 | <https://nodejs.org> |
193
+ | `Python` | Deterministic scoring, validation, and utility scripts. The minimum is what the helpers that read package manifests need (used by Quick Skill, Brief Skill, Analyze Source and Stack Skill) | 3.11 | 3.11, 3.12 | <https://www.python.org> |
194
+ | `uv` (Python package runner) | Running Python scripts with automatic dependency management | none | 0.12.15, 0.12.23 | <https://docs.astral.sh/uv/getting-started/installation/> |
195
+ | `git` | Reading remote sources, and checking that a local source is still at the commit a skill was built from | 2.15 | 2.47.3, 2.55.0 | <https://git-scm.com/downloads> |
196
+ | `gh` (GitHub CLI) | Required for the Deep tier, for Campaign, and for `forge-auto --pin`. Optional otherwise, where it makes reading GitHub sources easier | none | 2.102.0 | <https://cli.github.com> |
197
+ | `ast-grep` (CLI tool for code structural search, lint, and rewriting) | Forge, Forge+ and Deep tiers | 0.45.3 | 0.45.3 | <https://ast-grep.github.io> |
198
+ | `ccc` (cocoindex-code semantic code search) | Forge+ tier, and the Deep tier when installed | none | 0.2.41 | <https://github.com/cocoindex-io/cocoindex-code> |
199
+ | `qmd` (local hybrid search engine for project files) | Deep tier | none | 2.8.3 | <https://github.com/tobi/qmd> |
200
+ | `tessl` (Tessl CLI) | Opt-in Tessl Review in Create Skill and Test Skill (`tessl_review_workspace` in preferences) | none | 0.111.0 | <https://tessl.io> |
201
+ | `skill-check` (skill validator) | Spec validation, auto-fix and quality scoring. SKF runs it with npx, so it needs no install; without it, validation is done by hand | none | 1.2.0 | <https://github.com/thedaviddias/skill-check> |
202
+ | `ast-grep` MCP server (recommended alongside CLI) | Optional in Forge, Forge+ and Deep: workflows use it when present and fall back to the CLI | | | <https://github.com/ast-grep/ast-grep-mcp> |
203
+ | `SNYK_TOKEN` (Snyk API token, **Enterprise plan required**) | Optional security scan | | | <https://docs.snyk.io/snyk-api/authentication-for-api> |
152
204
 
153
- | Tool | Required For | Install |
154
- |------------------------------------------------------------------------|---------------------------------------------------------------------------------------|-----------------------------------------------------------|
155
- | `Node.js` >= 22 | Installation, npx commands | <https://nodejs.org> |
156
- | `Python` >= 3.10 | Deterministic scoring, validation, and utility scripts | <https://www.python.org> |
157
- | `uv` (Python package runner) | Running Python scripts with automatic dependency management | <https://docs.astral.sh/uv/getting-started/installation/> |
158
- | `gh` (GitHub CLI) | Required for Deep mode. Optional convenience in Quick/Forge/Forge+ for source access. | <https://cli.github.com> |
159
- | `ast-grep` (CLI tool for code structural search, lint, and rewriting) | Forge + Deep modes | <https://ast-grep.github.io> |
160
- | `ast-grep` MCP server (recommended alongside CLI) | Forge + Deep modes | <https://github.com/ast-grep/ast-grep-mcp> |
161
- | `ccc` (cocoindex-code semantic code search) | Forge+ mode | <https://github.com/cocoindex-io/cocoindex-code> |
162
- | `qmd` (local hybrid search engine for project files) | Deep mode | <https://github.com/tobi/qmd> |
163
- | `SNYK_TOKEN` (Snyk API token — **Enterprise plan required**) | Optional security scan | <https://docs.snyk.io/snyk-api/authentication-for-api> |
205
+ <!-- tool-requirements:end -->
206
+
207
+ **Minimum** is the oldest version SKF supports, and **Tested on** lists the versions SKF's own runs use: CI, the install smoke test or a named release run. `none` means SKF sets no minimum for the tool yet, and `not recorded` means no SKF run has recorded a version of it yet.
208
+
209
+ Setup picks your tier from the tools it finds: Quick needs none of them, Forge needs ast-grep, Forge+ needs ast-grep and ccc, and Deep needs ast-grep, gh and qmd. A tool counts toward a tier only at its **Minimum** version or newer, so an ast-grep older than 0.45.3 leaves you at Quick (see [The tool report](#the-tool-report)).
164
210
 
165
211
  Security scanning via Snyk is optional and requires an Enterprise plan; it does not affect your tier level.
166
212
 
167
213
  ### Platform support
168
214
 
169
- **Linux and Windows** are exercised in CI on every PR (`ubuntu-latest` + `windows-latest` matrix on `validate` and `python` jobs). **macOS** works in practice — POSIX-equivalent to Linux — but isn't CI-gated; if you hit a macOS-specific bug, please [file an issue](https://github.com/armelhbobdad/bmad-module-skill-forge/issues).
215
+ **Linux and Windows** are tested automatically on every pull request. **macOS** works in practice, since it behaves like Linux for SKF's Node and Python tools, but it is not tested automatically; if you hit a macOS-specific bug, please [file an issue](https://github.com/armelhbobdad/bmad-module-skill-forge/issues).
170
216
 
171
217
  On Windows, SKF transparently falls back to NTFS junctions when symlink privilege isn't held, so no Developer Mode or admin rights are required. Git Bash (bundled with [Git for Windows](https://git-scm.com/download/win)), PowerShell, and WSL2 all work.
172
218
 
@@ -174,36 +220,51 @@ On Windows, SKF transparently falls back to NTFS junctions when symlink privileg
174
220
 
175
221
  ## Configuration
176
222
 
177
- SKF has two install-time variables (defined in `src/module.yaml`), one Core Config variable inherited from BMAD, and one runtime preference:
223
+ The installer saves two folder settings in `_bmad/skf/config.yaml`, where you can also add one optional setting by hand. SKF also reads one setting from BMAD's core config, and a few runtime preferences live in `_bmad/_memory/forger-sidecar/preferences.yaml`:
224
+
225
+ | Variable | Purpose | Default |
226
+ |-------------------------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|---------------------------------------------------------------------|
227
+ | `skills_output_folder` | Where generated skills are saved | `{project-root}/skills` |
228
+ | `forge_data_folder` | Where SKF keeps its working files: skill briefs, test and evidence reports, and Verify Stack reports | `{project-root}/forge-data` |
229
+ | `output_folder` | Where Refine Architecture (RA) saves refined architecture documents. *Inherited from BMAD Core Config.* | Set by BMAD Core Config; `_bmad-output` in a standalone SKF install |
230
+ | `tier_override` | Force a specific tier for comparison or testing (in `_bmad/_memory/forger-sidecar/preferences.yaml`) | `~` (auto-detect) |
231
+ | `headless_mode` | Skip confirmation gates in all workflows (in `_bmad/_memory/forger-sidecar/preferences.yaml`) | `false` |
232
+ | `passive_context` | Let Export Skill write `context-snippet.md` and update the SKF section in `CLAUDE.md`, `AGENTS.md` or `.cursorrules`; set to `false` to skip both (in `_bmad/_memory/forger-sidecar/preferences.yaml`) | `true` |
233
+ | `compact_greeting` | Have Ferris greet you briefly instead of showing the full menu when you come back (in `_bmad/_memory/forger-sidecar/preferences.yaml`) | `false` |
234
+ | `tessl_review_workspace` | Opt in to Tessl Review: the Tessl workspace Create Skill and Test Skill review each skill in (in `_bmad/_memory/forger-sidecar/preferences.yaml`). Uploads the skill's files to Tessl and spends Tessl credits; needs the `tessl` CLI and `tessl login` or `TESSL_TOKEN` | `~` (off) |
235
+ | `snippet_skill_root_override` | For a repo that keeps its skills in one folder such as `skills/` instead of an IDE skill folder: the path the context index points at (in `_bmad/skf/config.yaml`). When Export finds existing snippets that point elsewhere, it asks you to set it | unset |
236
+
237
+ **If you use ccc** (the semantic code search tool behind the Forge+ tier), setup keeps everything SKF writes to `skills_output_folder` and `forge_data_folder` out of its search index, so searches find your code rather than generated skills.
238
+
239
+ - **Sharing a folder is fine.** When `skills_output_folder` also holds folders SKF did not generate, such as skills installed from elsewhere, setup excludes only the entries SKF generated and the rest stays searchable. When the folder holds only SKF output plus loose files directly in it, those files are excluded with it, so keep your own files elsewhere.
240
+ - **Run `@Ferris SF` again after you create skills** in a shared folder, so the new ones are excluded too.
241
+ - **Keep both settings away from source you work on.** A folder with none of SKF's output stays indexed, and setup warns about it.
242
+ - **To exclude a folder yourself,** add it to `exclude_patterns` in `.cocoindex_code/settings.yml`, only for a folder SKF leaves indexed and only after setup has run with ccc installed. Setup never removes an entry it did not add, but it treats an entry identical to one of its own as its own.
243
+
244
+ Workflows also write into, move, rename or delete only the skill folders SKF generated. Before a workflow writes a new version into an existing skill folder, moves a flat skill into the versioned layout, renames a skill or deletes one, it checks that the skill's `metadata.json` carries the SKF marker, and stops before changing anything when it does not. Drop and rename also leave a folder in `forge_data_folder` that SKF did not generate where it is. Verify Stack, Refine Architecture and Stack Skill in compose mode read only the skills SKF generated and list the others once as not SKF output. See [Troubleshooting](/docs/troubleshooting.md) for the messages you may see.
178
245
 
179
- | Variable | Purpose | Default |
180
- |------------------------|----------------------------------------------------------------------------------------------------------|-----------------------------|
181
- | `skills_output_folder` | Where generated skills are saved | `{project-root}/skills` |
182
- | `forge_data_folder` | Where workspace artifacts are stored (VS reports, evidence) | `{project-root}/forge-data` |
183
- | `output_folder` | Where refined architecture documents are saved (used by RA workflow). *Inherited from BMAD Core Config.* | Defined by BMAD Core Config |
184
- | `tier_override` | Force a specific tier for comparison or testing (in `_bmad/_memory/forger-sidecar/preferences.yaml`) | `~` (auto-detect) |
185
- | `headless_mode` | Skip confirmation gates in all workflows (in `_bmad/_memory/forger-sidecar/preferences.yaml`) | `false` |
246
+ **Do not add a `!` entry** to `exclude_patterns` for a path in `skills_output_folder` or `forge_data_folder`. ccc applies a `!` entry against every exclusion. While setup excludes the folder whole, even an entry that names a single file or a path that does not exist, such as `!skills/my-tool`, brings back all SKF output in the folder, each skill twice (through its version folder and its `active` link). Such an entry in a `/*` or `/**` form also brings back `node_modules` and hidden folders below it. To keep content of your own in that folder searchable, put it in a folder of its own there and re-run `/skf-setup` (`@Ferris SF`): setup then excludes only the entries SKF generated, and your content stays indexed with no `!` entry. A folder inside a folder that setup always excludes, such as `_bmad-output` or `.claude`, stays excluded whole, so keep content you want searchable outside it. Setup warns on every run while a `!` entry cancels one of its exclusions, including after that content is gone and setup excludes the folder whole again.
186
247
 
187
- Runtime configuration (tool detection, tier, and collection state) is managed by the `setup` workflow and persisted in `forge-tier.yaml`.
248
+ Setup (`@Ferris SF`) records the tools it detected, your tier and the state of your search indexes in `_bmad/_memory/forger-sidecar/forge-tier.yaml`.
188
249
 
189
250
  ---
190
251
 
191
252
  ## What's next?
192
253
 
193
- - [Forge-Auto](/docs/forge-auto.md) — the zero-ceremony path: one command from repo or doc URL to a verified skill
194
- - [Campaign](/docs/campaign.md) — orchestrate many coordinated skills across sessions with dependency tracking and resume
195
- - [Agents](/docs/agents.md) — learn about Ferris
196
- - [Workflows](/docs/workflows.md) — the full command reference
197
- - [Examples](/docs/examples.md) — real-world scenarios with transcripts
254
+ - [Forge-Auto](/docs/forge-auto.md): the zero-ceremony path, one command from repo or doc URL to a verified skill
255
+ - [Campaign](/docs/campaign.md): orchestrate many coordinated skills across sessions with dependency tracking and resume
256
+ - [Agents](/docs/agents.md): learn about Ferris
257
+ - [Workflows](/docs/workflows.md): the full command reference
258
+ - [Examples](/docs/examples.md): real-world scenarios with transcripts
198
259
 
199
260
  ---
200
261
 
201
262
  ## Need help?
202
263
 
203
264
  If you run into issues:
204
- 1. Run `/bmad-help` — analyzes your current state and suggests what to do next
265
+ 1. Run `/bmad-help`: it analyzes your current state and suggests what to do next
205
266
  (e.g. `/bmad-help my quick skill has low confidence scores, how do I improve them?`)
206
- *Provided by the [BMAD Method](https://github.com/bmad-code-org/BMAD-METHOD) — not available in standalone SKF installations.*
267
+ *Provided by the [BMAD Method](https://github.com/bmad-code-org/BMAD-METHOD); not available in standalone SKF installations.*
207
268
  2. Run `@Ferris SF` to check your tool availability and tier
208
- 3. Check `forge-tier.yaml` in your forger sidecar for your current configuration
209
- 4. If a workflow gave you friction, ask Ferris to run the health check for that session, or [open an issue](https://github.com/armelhbobdad/bmad-module-skill-forge/issues/new/choose) — see [Workflow Health Check](/docs/workflows.md#terminal-step-health-check)
269
+ 3. Check `_bmad/_memory/forger-sidecar/forge-tier.yaml` for the tools SKF detected and your current tier
270
+ 4. If a workflow gave you friction, ask Ferris to run the health check for that session, or [open an issue](https://github.com/armelhbobdad/bmad-module-skill-forge/issues/new/choose). See [Workflow Health Check](/docs/workflows.md#terminal-step-health-check).
@@ -15,49 +15,53 @@ Your AI agent keeps hallucinating cognee API calls. You run one command:
15
15
  @Ferris QS https://github.com/topoteretes/cognee
16
16
  ```
17
17
 
18
- In under a minute, you get a `SKILL.md` your agent can load — with every instruction traceable to a specific file and line in cognee's source code. Here's what happens between those two moments.
18
+ In under a minute, plus one preview for you to approve, you get a `SKILL.md` your agent can load. Its content comes from cognee's own source code and README. Here's what happens between those two moments.
19
19
 
20
20
  ### 1. Ferris picks a workflow
21
21
 
22
- `QS` is a trigger — short for *Quick Skill*. Ferris is the single AI agent that runs every Skill Forge workflow. He reads the trigger, loads the Quick Skill workflow, and prepares the context he needs to do the job.
22
+ `QS` is a trigger, short for *Quick Skill*. Ferris is the single AI agent that runs every Skill Forge workflow. He reads the trigger, loads the Quick Skill workflow, and prepares the context he needs to do the job.
23
23
 
24
24
  ### 2. The workflow resolves your target
25
25
 
26
- Ferris confirms the repository exists, detects its language, finds its version from the source manifest (`pyproject.toml`, `package.json`, etc.), and records the exact commit SHA he'll read from. This is the anchor — everything that follows traces back to this one commit.
26
+ Ferris turns your input into a GitHub repository. A GitHub URL is used as given. A package name is looked up on every registry of npm, PyPI and crates.io (a language hint asks only that language's registry), with a web search as the last resort. When more than one registry answers, an interactive run lists every candidate and asks which project you mean, and a headless run keeps the first registry's pick (npm, then PyPI, then crates.io) and records an `also_found_in` warning in its result envelope. He then detects the main language from the repository's files, starting with its manifest (`pyproject.toml`, `package.json`, etc.). By default Quick Skill reads the repository's default branch. To pin a release, add it to the command (`@Ferris QS cognee@1.0.0`): Ferris checks that the matching git tag exists, stops if it doesn't, and reads everything from that tag.
27
27
 
28
- ### 3. He extracts the API
28
+ Quick Skill has a step that checks for an official skill before it reads any code, but it skips that check until agentskills.io offers a registry API to ask, so Ferris goes straight on to extraction.
29
29
 
30
- He reads cognee's source code, identifies the public exports, and pulls out function signatures, parameter types, and return types. Quick Skill always extracts at community quality — it does the same job whatever tools you have installed, reading the source directly to ground every signature. Nothing is invented — if he can't cite it, he doesn't include it.
30
+ ### 3. He extracts the API
31
31
 
32
- ### 4. He writes the skill with receipts
32
+ He reads cognee's README, its manifest (`pyproject.toml` for a Python project) and its top-level entry file (the package's `__init__.py`). From these he takes the version, the dependencies and the list of public exports: each export's name, its kind (function, class and so on) and a short description. Usage examples come from the README. Quick Skill reads the source as plain text, without AST parsing (a structural parse of the code), and does the same job whatever tools you have installed. It does not pull out signatures, parameter types or return types. If the repository looks like something other than a library, such as a docs site or a curated link list, he asks before going on. If he finds no exports, the skill falls back to the README and is marked low confidence. Nothing is invented: every line comes from the source, the README or you.
33
33
 
34
- Each instruction in the output carries a receipt:
34
+ ### 4. You review the skill before it is written
35
35
 
36
- ```python
37
- await cognee.search( # [AST:cognee/api/v1/search/search.py:L26]
38
- query_text="What does Cognee do?"
39
- )
40
- ```
36
+ Ferris assembles three files: `SKILL.md` (an overview, a description, the key exports and usage patterns), `context-snippet.md` and `metadata.json`. He shows you all three and waits. You can continue, edit the description, change the scope and extract again, or quit without writing anything. When you continue, he writes the files and checks them against the agentskills.io format (with `skill-check` when it is installed). Anything that check finds is reported as advice and does not stop the run.
41
37
 
42
- That tag means: *this came from AST extraction of this exact file at this exact line.* You can click through to the upstream source at the pinned commit and see it yourself.
38
+ Quick Skill output carries no per-line receipts. Its `metadata.json` counts every export as T1-low: read from the source, but not structurally verified. Line-level receipts come from the brief-driven path described below.
43
39
 
44
40
  ### 5. You get a skill package
45
41
 
46
- Ferris writes a `SKILL.md` (the full instruction manual your agent loads on demand) and a `context-snippet.md` (an 80–120 token index) alongside it. The snippet is the always-on reminder — *"This skill exists; read it before writing cognee code."* — but it isn't wired in automatically: when you run `export-skill`, the snippet gets injected into your platform context file (`CLAUDE.md`, `AGENTS.md`, or `.cursorrules`). Both halves are load-bearing — see the [Dual-Output Strategy](/docs/skill-model.md#dual-output-strategy) for why.
42
+ Ferris writes a `SKILL.md` (the instructions your agent loads on demand) and a `context-snippet.md` (an index of about 80 to 120 tokens) next to it. With the default settings they land in `skills/cognee/<version>/cognee/`, and `skills/cognee/active` points at that version. The snippet is the always-on reminder: it tells your agent the skill exists and to read `SKILL.md` before writing cognee code instead of relying on training data. It isn't wired in automatically. When you run `export-skill` (`@Ferris EX`), the snippet goes into the context file of each IDE you set up (`CLAUDE.md`, `AGENTS.md`, or `.cursorrules`). Both halves are load-bearing; see the [Dual-Output Strategy](/docs/skill-model.md#dual-output-strategy) for why.
47
43
 
48
44
  ### 6. The audit trail stays on disk
49
45
 
50
- Alongside the skill, Ferris leaves a `metadata.json` (the pinned source, commit SHA, and export count) and a timestamped result contract recording exactly what was written. Commit these with the skill and any teammate — or any skeptic — can see what was built from which commit.
46
+ Alongside the skill, Ferris leaves a `metadata.json` (the source repository, the version, the git tag when you pinned one, and the list and count of exports) and a record of the run (`quick-skill-result-<timestamp>.json`, plus a `quick-skill-result-latest.json` copy) that lists exactly which files were written. Commit these with the skill so any teammate (or any skeptic) can see what it was built from. To tie that record to an exact release, pin a version as shown in step 2 above.
51
47
 
52
- That's the whole pipeline. One trigger in, one verifiable skill out, every claim traceable back to a file and a commit.
48
+ That's the whole pipeline. One trigger in, one reviewed skill out, built from cognee's own source and README. Next, run `@Ferris TS` to score the skill, then `@Ferris EX` to export it.
49
+
50
+ Quick Skill is the fastest path, not the most thorough one. When you want every instruction tied to a file and a line, use the brief-driven [`create-skill`](/docs/workflows.md#create-skill-cs) path instead: describe the skill's scope with `@Ferris BS`, which writes a `skill-brief.yaml`, then compile it with `@Ferris CS`. That path records the exact commit it read, and with ast-grep installed each export an ast-grep rule matches carries a receipt like this one:
51
+
52
+ ```python
53
+ await cognee.search( # [AST:cognee/api/v1/search/search.py:L27]
54
+ query_text="What does Cognee do?"
55
+ )
56
+ ```
53
57
 
54
- Quick Skill is the fastest path, not the most thorough one. When you want a full audit trail — a `provenance-map.json` of every receipt and an `evidence-report.md` build log, both produced from a `skill-brief.yaml` — run the brief-driven [`create-skill`](/docs/workflows.md#create-skill-cs) path instead.
58
+ The `AST` tag means *ast-grep matched this definition in this exact file at this exact line.* An export ast-grep cannot match is read by eye and carries an `[SRC:...]` receipt instead, with a lower confidence label (T1-low), so you can tell which receipts the code's structure backs. The same run writes a `provenance-map.json` that lists every receipt and the tool that read it, and an `evidence-report.md` build log, so you can open the upstream file at the pinned commit and check it yourself.
55
59
 
56
60
  ---
57
61
 
58
62
  ## Next
59
63
 
60
- - **[Architecture](/docs/architecture.md)** — how Ferris loads workflows, how sub-agents handle large extractions, how the 7 tools resolve conflicts, where artifacts land on disk
61
- - **[Skill Model](/docs/skill-model.md)** — what a skill contains, confidence tiers (T1 / T2 / T3), capability tiers (Quick / Forge / Forge+ / Deep), and the dual-output strategy
62
- - **[Verifying a Skill](/docs/verifying-a-skill.md)** — the 60-second audit recipe and how completeness scoring works
63
- - **[BMAD Synergy](/docs/bmad-synergy.md)** — how SKF fits alongside BMAD Method, TEA, BMB, and other modules
64
+ - **[Architecture](/docs/architecture.md)**: how Ferris loads workflows, how sub-agents handle large extractions, the 7 tools and which one wins when they disagree, and where artifacts land on disk
65
+ - **[Skill Model](/docs/skill-model.md)**: what a skill contains, confidence tiers (T1, T1-low, T2, T3), capability tiers (Quick, Forge, Forge+, Deep), and the dual-output strategy
66
+ - **[Verifying a Skill](/docs/verifying-a-skill.md)**: the 60-second audit recipe and how completeness scoring works
67
+ - **[BMAD Synergy](/docs/bmad-synergy.md)**: how SKF fits alongside BMAD Method, TEA, BMB, and other modules
package/docs/index.md CHANGED
@@ -1,10 +1,10 @@
1
1
  ---
2
2
  title: Skill Forge (SKF)
3
- description: Every instruction your AI reads cites a file, a line, and a commit SHA. Verify any claim in 60 seconds.
3
+ description: "Every instruction your AI reads cites its source: a file and line at a pinned commit, or a documentation URL. Verify any claim in 60 seconds."
4
4
  template: splash
5
5
  hero:
6
6
  title: Skill Forge
7
- tagline: Every instruction your AI reads cites a file, a line, and a commit SHA.
7
+ tagline: "Every instruction your AI reads cites its source: a file and line at a pinned commit, or a documentation URL."
8
8
  actions:
9
9
  - text: Why Skill Forge?
10
10
  link: ./why-skf/
@@ -22,15 +22,15 @@ AI agents hallucinate API calls. They invent function names, guess parameter typ
22
22
 
23
23
  ## The fix
24
24
 
25
- Skill Forge reads the source and hands your agent the truth — with receipts. Every function signature, every parameter type, every usage pattern traces back to a file, a line, and a commit SHA in the upstream repository.
25
+ Skill Forge reads a library's source code and docs and writes a skill: an instruction file (SKILL.md) your AI agent loads before it writes code. Every function signature, parameter type, and usage pattern in it comes with a receipt. The receipt points back to where it came from: a file and line at a pinned commit in the upstream repository, or the documentation page it was read from.
26
26
 
27
27
  <div class="receipt-sample">
28
- <span class="receipt-sample__label">A receipt looks like</span>
29
- <code class="receipt-sample__chip">[AST:cognee/api/v1/search/search.py:L26]</code>
28
+ <span class="receipt-sample__label">An ast-grep receipt looks like</span>
29
+ <code class="receipt-sample__chip">[AST:cognee/api/v1/search/search.py:L27]</code>
30
30
  <span class="receipt-sample__check" aria-label="verified">✓</span>
31
31
  </div>
32
32
 
33
- If SKF can't cite a source, it doesn't include the instruction.
33
+ When SKF reads a definition by eye instead, the receipt says so: `[SRC:...]`, with a lower confidence label. When SKF can't cite a source, it leaves the instruction out. The main exception is Quick Skill (QS), a fast, best-effort draft with no receipt on each instruction.
34
34
 
35
35
  <!-- Raw HTML bypasses rehype-markdown-links, so this href ships verbatim and
36
36
  cannot take the `/docs/*.md` form the Markdown links use: nothing would
@@ -46,29 +46,29 @@ If SKF can't cite a source, it doesn't include the instruction.
46
46
 
47
47
  | Approach | What it does well | Where it falls short |
48
48
  |----------|-------------------|----------------------|
49
- | Skill scaffolding (`npx skills init`) | Generates a spec-compliant skill file | The file is empty — you still have to write every instruction by hand |
49
+ | Skill scaffolding (`npx skills init`) | Creates a SKILL.md template in the standard skill format | The template holds only placeholder text, so you still write every instruction by hand |
50
50
  | LLM summarization | Understands context and intent | Generates plausible-sounding content that may not match the actual API |
51
- | RAG / context stuffing | Retrieves relevant code snippets | Returns fragments without synthesis — no coherent skill output |
51
+ | RAG (retrieval) or pasting code into the prompt | Finds relevant code snippets | Hands over loose fragments, not a finished skill your agent can follow |
52
52
  | Manual authoring | High initial accuracy | Drifts as the source code changes, doesn't scale across dependencies |
53
53
  | IDE built-in context (Copilot, Cursor) | Convenient, zero setup | Uses generic training data, not your project's specific integration patterns |
54
- | **Skill Forge** | **Every instruction cites upstream `file:line` at a pinned commit. Falsifiable in 60 seconds.** | **Coverage depends on which tools you've installed (Quick / Forge / Forge+ / Deep tiers).** |
54
+ | **Skill Forge** | **Every instruction cites its source: an upstream `file:line` at a pinned commit, or a doc URL for docs-only skills. You can check any claim in 60 seconds.** | **How deep it digs depends on which analysis tools you have installed. SKF detects them and picks a tier for you: Quick, Forge, Forge+ or Deep.** |
55
55
 
56
56
  </div>
57
57
 
58
58
  ## Quick install
59
59
 
60
- Requires [Node.js](https://nodejs.org/) >= 22, [Python](https://www.python.org/) >= 3.10, and [uv](https://docs.astral.sh/uv/).
60
+ Requires [Node.js](https://nodejs.org/) >= 22, [Python](https://www.python.org/) >= 3.11, and [uv](https://docs.astral.sh/uv/), the tool SKF uses to run its Python scripts.
61
61
 
62
62
  ```bash
63
63
  npx bmad-module-skill-forge install
64
64
  ```
65
65
 
66
- Then generate your first skill:
66
+ Then open your AI coding tool (Claude Code, Cursor, GitHub Copilot and others) and start Ferris, the Skill Forge agent the installer set up there: type `/skf-forger` (`$skf-forger` in Codex), or ask your tool to talk to Ferris. Each line below is a request to Ferris, written as `@Ferris <code>`. Generate your first skill:
67
67
 
68
68
  ```
69
- @Ferris SF # Set up your forge
70
- @Ferris forge-auto <repo-or-url> # Zero-ceremony: a repo or doc URL → verified skill
71
- @Ferris QS <package> # Or a fast skill from a package name in under a minute
69
+ @Ferris SF # Set up your forge (once per project)
70
+ @Ferris forge-auto <repo-or-url> # One command: a repo or doc URL in, a tested skill out
71
+ @Ferris QS <package> # Or a quick best-effort draft from a package name
72
72
  ```
73
73
 
74
- [forge-auto](/docs/forge-auto.md) is the recommended starting point — one command, no configuration. See [Getting Started](/docs/getting-started.md) for platform support, tier selection, and troubleshooting.
74
+ [forge-auto](/docs/forge-auto.md) is the recommended starting point. Once SF has run, it takes one command and asks you nothing along the way. It scopes, compiles, tests, and exports the skill, then adds it to your agent's context file (such as CLAUDE.md or AGENTS.md). See [Getting Started](/docs/getting-started.md) for platform support, the tools that decide your tier, and troubleshooting.