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.
- package/.claude-plugin/marketplace.json +1 -1
- package/README.md +49 -49
- package/docs/404.md +10 -8
- package/docs/_data/pinned.yaml +22 -13
- package/docs/_internal/STABILITY.md +58 -35
- package/docs/agents.md +39 -53
- package/docs/architecture.md +65 -51
- package/docs/bmad-synergy.md +53 -51
- package/docs/campaign.md +127 -75
- package/docs/concepts.md +34 -28
- package/docs/examples.md +70 -68
- package/docs/forge-auto.md +34 -31
- package/docs/getting-started.md +118 -57
- package/docs/how-it-works.md +25 -21
- package/docs/index.md +15 -15
- package/docs/skill-model.md +70 -59
- package/docs/troubleshooting.md +143 -18
- package/docs/verifying-a-skill.md +87 -57
- package/docs/why-skf.md +24 -22
- package/docs/workflows.md +274 -110
- package/package.json +18 -10
- package/src/forger/preferences.yaml +8 -1
- package/src/knowledge/agentskills-spec.md +2 -0
- package/src/knowledge/ccc-bridge.md +40 -24
- package/src/knowledge/confidence-tiers.md +9 -5
- package/src/knowledge/overview.md +3 -3
- package/src/knowledge/progressive-capability.md +8 -8
- package/src/knowledge/provenance-tracking.md +9 -5
- package/src/knowledge/qmd-registry.md +3 -3
- package/src/knowledge/skf-knowledge-index.csv +2 -2
- package/src/knowledge/skill-lifecycle.md +18 -11
- package/src/knowledge/split-body-strategy.md +0 -3
- package/src/knowledge/tool-resolution.md +4 -2
- package/src/knowledge/version-paths.md +101 -15
- package/src/module-help.csv +3 -3
- package/src/module.yaml +10 -0
- package/src/shared/data/ast-grep-recipes.yaml +608 -0
- package/src/shared/data/ide-context-files.json +30 -0
- package/src/shared/health-check.md +31 -59
- package/src/shared/references/description-guard-protocol.md +12 -9
- package/src/shared/references/feasibility-report-schema.md +19 -13
- package/src/shared/references/headless-gate-convention.md +55 -3
- package/src/shared/references/output-contract-schema.md +19 -8
- package/src/shared/references/pipeline-contracts.md +94 -29
- package/src/shared/references/tessl-review.md +77 -0
- package/src/shared/scripts/schemas/skf-analyze-result-envelope.v1.json +194 -0
- package/src/shared/scripts/schemas/skf-audit-result-envelope.v1.json +192 -0
- package/src/shared/scripts/schemas/skf-brief-result-envelope.v1.json +32 -4
- package/src/shared/scripts/schemas/skf-campaign-result-envelope.v1.json +174 -0
- package/src/shared/scripts/schemas/skf-create-skill-result-envelope.v1.json +284 -0
- package/src/shared/scripts/schemas/skf-drop-skill-result-envelope.v1.json +164 -0
- package/src/shared/scripts/schemas/skf-export-result-envelope.v1.json +160 -0
- package/src/shared/scripts/schemas/skf-quick-skill-result-envelope.v1.json +261 -0
- package/src/shared/scripts/schemas/skf-refine-architecture-result-envelope.v1.json +192 -0
- package/src/shared/scripts/schemas/skf-rename-skill-result-envelope.v1.json +179 -0
- package/src/shared/scripts/schemas/skf-setup-result-envelope.v1.json +27 -11
- package/src/shared/scripts/schemas/skf-stack-result-envelope.v1.json +176 -0
- package/src/shared/scripts/schemas/skf-test-result-envelope.v1.json +173 -0
- package/src/shared/scripts/schemas/skf-update-result-envelope.v1.json +19 -5
- package/src/shared/scripts/schemas/skf-verify-stack-result-envelope.v1.json +180 -0
- package/src/shared/scripts/schemas/skill-brief.v1.json +34 -0
- package/src/shared/scripts/schemas/workspace-detection.v1.json +1 -1
- package/src/shared/scripts/skf-atomic-write.py +233 -64
- package/src/shared/scripts/skf-build-change-manifest.py +2753 -28
- package/src/shared/scripts/skf-ccc-git-hygiene.py +532 -0
- package/src/shared/scripts/skf-check-unit-records.py +184 -0
- package/src/shared/scripts/skf-check-workspace-drift.py +538 -9
- package/src/shared/scripts/skf-classify-changed-files.py +772 -0
- package/src/shared/scripts/skf-comention-pairs.py +1333 -123
- package/src/shared/scripts/skf-compare-file-hashes.py +267 -105
- package/src/shared/scripts/skf-count-imports.py +1867 -0
- package/src/shared/scripts/skf-count-tokens.py +1 -1
- package/src/shared/scripts/skf-derive-assembly-shape.py +21 -3
- package/src/shared/scripts/skf-description-guard.py +99 -11
- package/src/shared/scripts/skf-detect-docs.py +694 -2
- package/src/shared/scripts/skf-detect-language.py +486 -107
- package/src/shared/scripts/skf-detect-registry.py +887 -0
- package/src/shared/scripts/skf-detect-scripts-assets.py +197 -55
- package/src/shared/scripts/skf-detect-tools.py +209 -27
- package/src/shared/scripts/skf-detect-workspaces.py +506 -30
- package/src/shared/scripts/skf-disqualify-candidates.py +821 -182
- package/src/shared/scripts/skf-emit-brief-result-envelope.py +69 -191
- package/src/shared/scripts/skf-emit-result-envelope.py +1604 -106
- package/src/shared/scripts/skf-enumerate-stack-skills.py +986 -117
- package/src/shared/scripts/skf-extract-public-api.py +5247 -96
- package/src/shared/scripts/skf-extraction-inventory.py +1280 -0
- package/src/shared/scripts/skf-extraction-snapshot.py +664 -0
- package/src/shared/scripts/skf-fetch-temporal.py +674 -0
- package/src/shared/scripts/skf-find-cycles.py +97 -29
- package/src/shared/scripts/skf-find-test-report.py +476 -0
- package/src/shared/scripts/skf-forge-tier-rw.py +469 -205
- package/src/shared/scripts/skf-github-fetch.py +365 -0
- package/src/shared/scripts/skf-github-probe.py +700 -0
- package/src/shared/scripts/skf-hash-content.py +180 -20
- package/src/shared/scripts/skf-language-corpora.py +1 -1
- package/src/shared/scripts/skf-load-provenance.py +161 -27
- package/src/shared/scripts/skf-manifest-ops.py +1 -1
- package/src/shared/scripts/skf-merge-ccc-exclusions.py +2307 -223
- package/src/shared/scripts/skf-merge-doc-urls.py +143 -20
- package/src/shared/scripts/skf-names-present.py +221 -0
- package/src/shared/scripts/skf-pair-intersect.py +119 -28
- package/src/shared/scripts/skf-parse-gaps.py +1384 -0
- package/src/shared/scripts/skf-preapply.py +1 -1
- package/src/shared/scripts/skf-preflight.py +176 -28
- package/src/shared/scripts/skf-promote-staged.py +430 -0
- package/src/shared/scripts/skf-provenance-gap-dispatch.py +64 -8
- package/src/shared/scripts/skf-qmd-classify-collections.py +229 -45
- package/src/shared/scripts/skf-quick-batch.py +774 -0
- package/src/shared/scripts/skf-rebuild-managed-sections.py +972 -88
- package/src/shared/scripts/skf-recommend-scope-type.py +323 -156
- package/src/shared/scripts/skf-render-metadata-stats.py +156 -12
- package/src/shared/scripts/skf-render-quick-metadata.py +132 -28
- package/src/shared/scripts/skf-render-stack-metadata.py +976 -0
- package/src/shared/scripts/skf-resolve-authoritative-files.py +155 -14
- package/src/shared/scripts/skf-resolve-package.py +523 -106
- package/src/shared/scripts/skf-rewrite-skill-name.py +433 -47
- package/src/shared/scripts/skf-run-lock.py +577 -0
- package/src/shared/scripts/skf-scan-manifests.py +998 -57
- package/src/shared/scripts/skf-scan-skill-md-structure.py +1341 -37
- package/src/shared/scripts/skf-severity-classify.py +712 -108
- package/src/shared/scripts/skf-shape-detect.py +298 -204
- package/src/shared/scripts/skf-shard-body.py +9 -8
- package/src/shared/scripts/skf-skill-inventory.py +2412 -89
- package/src/shared/scripts/skf-skills-module.py +472 -0
- package/src/shared/scripts/skf-source-tree.py +1796 -0
- package/src/shared/scripts/skf-structural-diff.py +787 -121
- package/src/shared/scripts/skf-tessl-review.py +706 -0
- package/src/shared/scripts/skf-update-active-symlink.py +120 -67
- package/src/shared/scripts/skf-update-run-state.py +624 -0
- package/src/shared/scripts/skf-validate-brief-inputs.py +92 -29
- package/src/shared/scripts/skf-validate-brief-schema.py +23 -2
- package/src/shared/scripts/skf-validate-feasibility-report.py +577 -66
- package/src/shared/scripts/skf-validate-frontmatter.py +103 -26
- package/src/shared/scripts/skf-validate-output.py +712 -64
- package/src/shared/scripts/skf-validate-pins.py +1 -1
- package/src/shared/scripts/skf-verify-no-trace.py +116 -10
- package/src/shared/scripts/skf-verify-provenance-completeness.py +3945 -152
- package/src/shared/scripts/skf-write-skill-brief.py +406 -25
- package/src/shared/tool-requirements.yaml +201 -0
- package/src/skf-analyze-source/SKILL.md +41 -36
- package/src/skf-analyze-source/assets/skill-brief-schema.md +7 -8
- package/src/skf-analyze-source/customize.toml +36 -24
- package/src/skf-analyze-source/references/auto-docs-only.md +58 -20
- package/src/skf-analyze-source/references/continue.md +2 -13
- package/src/skf-analyze-source/references/discover-additional-source.md +147 -0
- package/src/skf-analyze-source/references/generate-briefs.md +121 -55
- package/src/skf-analyze-source/references/headless-contract.md +42 -15
- package/src/skf-analyze-source/references/identify-units.md +96 -110
- package/src/skf-analyze-source/references/init.md +73 -71
- package/src/skf-analyze-source/references/map-and-detect.md +123 -105
- package/src/skf-analyze-source/references/map-unit-exports.md +68 -0
- package/src/skf-analyze-source/references/recommend.md +51 -70
- package/src/skf-analyze-source/references/scan-project.md +60 -84
- package/src/skf-analyze-source/references/scan-root.md +39 -0
- package/src/skf-analyze-source/references/step-auto-scope-coexistence.md +47 -0
- package/src/skf-analyze-source/references/step-auto-scope-corpora.md +53 -0
- package/src/skf-analyze-source/references/step-auto-scope-split.md +91 -0
- package/src/skf-analyze-source/references/step-auto-scope.md +208 -293
- package/src/skf-analyze-source/references/step-shape-detect.md +14 -12
- package/src/skf-analyze-source/references/unit-detection-heuristics.md +37 -42
- package/src/skf-audit-skill/SKILL.md +43 -51
- package/src/skf-audit-skill/assets/drift-report-template.md +28 -3
- package/src/skf-audit-skill/customize.toml +41 -20
- package/src/skf-audit-skill/references/constituent-freshness.md +91 -0
- package/src/skf-audit-skill/references/doc-drift.md +141 -0
- package/src/skf-audit-skill/references/headless-contract.md +29 -0
- package/src/skf-audit-skill/references/health-check.md +2 -0
- package/src/skf-audit-skill/references/init.md +149 -210
- package/src/skf-audit-skill/references/re-index.md +103 -110
- package/src/skf-audit-skill/references/report.md +96 -33
- package/src/skf-audit-skill/references/semantic-diff.md +34 -25
- package/src/skf-audit-skill/references/severity-classify.md +79 -65
- package/src/skf-audit-skill/references/severity-rules.md +15 -6
- package/src/skf-audit-skill/references/structural-diff.md +80 -90
- package/src/skf-audit-skill/references/upstream-checkout.md +77 -0
- package/src/skf-audit-skill/scripts/render-drift-tables.py +712 -0
- package/src/skf-brief-skill/SKILL.md +37 -26
- package/src/skf-brief-skill/assets/description-voice-examples.md +1 -1
- package/src/skf-brief-skill/assets/scope-templates.md +18 -25
- package/src/skf-brief-skill/assets/skill-brief-schema.md +30 -23
- package/src/skf-brief-skill/customize.toml +48 -20
- package/src/skf-brief-skill/references/analyze-target.md +144 -127
- package/src/skf-brief-skill/references/confirm-brief.md +11 -9
- package/src/skf-brief-skill/references/draft-checkpoint.md +36 -17
- package/src/skf-brief-skill/references/gather-intent-ratify.md +68 -0
- package/src/skf-brief-skill/references/gather-intent.md +87 -182
- package/src/skf-brief-skill/references/headless-args.md +84 -16
- package/src/skf-brief-skill/references/health-check.md +1 -1
- package/src/skf-brief-skill/references/invocation-contract.md +18 -13
- package/src/skf-brief-skill/references/portfolio-similarity-check.md +1 -1
- package/src/skf-brief-skill/references/qmd-collection-registration.md +7 -10
- package/src/skf-brief-skill/references/scope-definition.md +123 -47
- package/src/skf-brief-skill/references/step-auto-brief.md +26 -100
- package/src/skf-brief-skill/references/step-auto-validate.md +20 -121
- package/src/skf-brief-skill/references/version-resolution.md +7 -10
- package/src/skf-brief-skill/references/write-brief.md +66 -57
- package/src/skf-campaign/SKILL.md +31 -34
- package/src/skf-campaign/assets/campaign-state-schema.json +25 -4
- package/src/skf-campaign/customize.toml +47 -16
- package/src/skf-campaign/references/campaign-contracts.md +39 -29
- package/src/skf-campaign/references/campaign-directive-spec.md +4 -2
- package/src/skf-campaign/references/health-check.md +7 -16
- package/src/skf-campaign/references/step-01-setup.md +46 -84
- package/src/skf-campaign/references/step-02-strategy.md +31 -30
- package/src/skf-campaign/references/step-03-pins.md +26 -18
- package/src/skf-campaign/references/step-04-provenance.md +24 -23
- package/src/skf-campaign/references/step-05-skill-loop.md +67 -48
- package/src/skf-campaign/references/step-06-batch.md +41 -34
- package/src/skf-campaign/references/step-07-capstone.md +40 -25
- package/src/skf-campaign/references/step-08-verify.md +28 -29
- package/src/skf-campaign/references/step-09-refine.md +29 -30
- package/src/skf-campaign/references/step-10-export.md +48 -36
- package/src/skf-campaign/references/step-11-maintenance.md +31 -34
- package/src/skf-campaign/references/step-resume.md +37 -68
- package/src/skf-campaign/scripts/campaign-deps.py +57 -18
- package/src/skf-campaign/scripts/campaign-parse-manifest.py +361 -54
- package/src/skf-campaign/scripts/campaign-provenance.py +96 -53
- package/src/skf-campaign/scripts/campaign-quality-gate.py +592 -0
- package/src/skf-campaign/scripts/campaign-render-batch.py +257 -49
- package/src/skf-campaign/scripts/campaign-render-kickoff.py +343 -50
- package/src/skf-campaign/scripts/campaign-report.py +204 -37
- package/src/skf-campaign/scripts/campaign-state.py +1128 -0
- package/src/skf-campaign/scripts/campaign-status.py +10 -74
- package/src/skf-campaign/scripts/campaign-validate-pins.py +30 -3
- package/src/skf-campaign/scripts/campaign-validate-state.py +34 -4
- package/src/skf-campaign/templates/campaign-brief-template.yaml +4 -5
- package/src/skf-campaign/templates/campaign-report-template.md +5 -1
- package/src/skf-campaign/templates/kickoff-template.md +0 -14
- package/src/skf-create-skill/SKILL.md +27 -20
- package/src/skf-create-skill/assets/compile-assembly-rules.md +11 -8
- package/src/skf-create-skill/assets/skill-sections.md +21 -11
- package/src/skf-create-skill/customize.toml +20 -8
- package/src/skf-create-skill/references/authoritative-files-protocol.md +36 -58
- package/src/skf-create-skill/references/batch-mode.md +81 -0
- package/src/skf-create-skill/references/ccc-index-check.md +27 -0
- package/src/skf-create-skill/references/compile.md +119 -70
- package/src/skf-create-skill/references/component-extraction.md +113 -91
- package/src/skf-create-skill/references/enrich.md +41 -23
- package/src/skf-create-skill/references/entry-points-by-hand.md +37 -0
- package/src/skf-create-skill/references/extract.md +204 -162
- package/src/skf-create-skill/references/extraction-patterns-by-hand.md +141 -0
- package/src/skf-create-skill/references/extraction-patterns-tracing.md +11 -11
- package/src/skf-create-skill/references/extraction-patterns.md +588 -201
- package/src/skf-create-skill/references/generate-artifacts.md +145 -93
- package/src/skf-create-skill/references/health-check.md +1 -1
- package/src/skf-create-skill/references/load-brief.md +53 -36
- package/src/skf-create-skill/references/relabel-rule.md +12 -0
- package/src/skf-create-skill/references/report.md +37 -57
- package/src/skf-create-skill/references/source-resolution-protocols.md +58 -169
- package/src/skf-create-skill/references/step-auto-shard.md +20 -93
- package/src/skf-create-skill/references/step-doc-rot.md +44 -60
- package/src/skf-create-skill/references/step-doc-sources.md +28 -19
- package/src/skf-create-skill/references/sub/ccc-discover.md +18 -7
- package/src/skf-create-skill/references/sub/fetch-docs.md +106 -59
- package/src/skf-create-skill/references/sub/fetch-temporal.md +53 -166
- package/src/skf-create-skill/references/tier-degradation-rules.md +18 -9
- package/src/skf-create-skill/references/validate.md +173 -99
- package/src/skf-create-skill/scripts/scan-doc-rot.py +232 -99
- package/src/skf-create-stack-skill/SKILL.md +29 -56
- package/src/skf-create-stack-skill/assets/metadata-contract.md +51 -0
- package/src/skf-create-stack-skill/assets/provenance-map-schema.md +15 -15
- package/src/skf-create-stack-skill/assets/stack-skill-template.md +23 -57
- package/src/skf-create-stack-skill/customize.toml +23 -12
- package/src/skf-create-stack-skill/references/compile-stack.md +57 -66
- package/src/skf-create-stack-skill/references/compose-mode-rules.md +24 -44
- package/src/skf-create-stack-skill/references/detect-integrations.md +92 -95
- package/src/skf-create-stack-skill/references/detect-manifests.md +46 -71
- package/src/skf-create-stack-skill/references/generate-output.md +138 -128
- package/src/skf-create-stack-skill/references/init.md +90 -32
- package/src/skf-create-stack-skill/references/integration-patterns.md +1 -17
- package/src/skf-create-stack-skill/references/invocation-contract.md +34 -0
- package/src/skf-create-stack-skill/references/manifest-patterns.md +32 -20
- package/src/skf-create-stack-skill/references/parallel-extract.md +112 -38
- package/src/skf-create-stack-skill/references/rank-and-confirm.md +57 -75
- package/src/skf-create-stack-skill/references/report.md +39 -33
- package/src/skf-create-stack-skill/references/validate.md +20 -39
- package/src/skf-drop-skill/SKILL.md +28 -51
- package/src/skf-drop-skill/customize.toml +44 -30
- package/src/skf-drop-skill/references/execute.md +83 -146
- package/src/skf-drop-skill/references/health-check.md +2 -0
- package/src/skf-drop-skill/references/invocation-contract.md +64 -0
- package/src/skf-drop-skill/references/report.md +46 -30
- package/src/skf-drop-skill/references/select.md +122 -124
- package/src/skf-drop-skill/scripts/dir-sizes.py +54 -26
- package/src/skf-drop-skill/scripts/drop-roster.py +322 -0
- package/src/skf-export-skill/SKILL.md +40 -62
- package/src/skf-export-skill/assets/managed-section-format.md +14 -50
- package/src/skf-export-skill/assets/snippet-format.md +3 -1
- package/src/skf-export-skill/customize.toml +42 -13
- package/src/skf-export-skill/references/generate-snippet.md +54 -46
- package/src/skf-export-skill/references/health-check.md +2 -0
- package/src/skf-export-skill/references/invocation-contract.md +15 -0
- package/src/skf-export-skill/references/load-skill.md +88 -62
- package/src/skf-export-skill/references/manifest-rebuild.md +9 -10
- package/src/skf-export-skill/references/multi-skill-mode.md +4 -4
- package/src/skf-export-skill/references/orphan-context-detection.md +13 -5
- package/src/skf-export-skill/references/orphan-row-detection.md +31 -22
- package/src/skf-export-skill/references/package.md +15 -73
- package/src/skf-export-skill/references/preflight-snippet-root-probe.md +51 -70
- package/src/skf-export-skill/references/result-envelope.md +31 -16
- package/src/skf-export-skill/references/summary.md +41 -17
- package/src/skf-export-skill/references/token-report.md +4 -12
- package/src/skf-export-skill/references/update-context.md +118 -237
- package/src/skf-forger/SKILL.md +61 -37
- package/src/skf-forger/bmad-skill-manifest.yaml +4 -1
- package/src/skf-forger/customize.toml +43 -0
- package/src/skf-forger/references/pipeline-mode.md +73 -18
- package/src/skf-forger/scripts/forge-status.py +299 -0
- package/src/skf-forger/scripts/parse-pipeline.py +322 -54
- package/src/skf-forger/scripts/pipeline-gate.py +428 -0
- package/src/skf-forger/scripts/pipeline-journal.py +1052 -0
- package/src/skf-quick-skill/SKILL.md +54 -53
- package/src/skf-quick-skill/assets/skill-template.md +4 -2
- package/src/skf-quick-skill/customize.toml +51 -20
- package/src/skf-quick-skill/references/batch-mode.md +74 -21
- package/src/skf-quick-skill/references/compile.md +30 -31
- package/src/skf-quick-skill/references/ecosystem-check.md +7 -57
- package/src/skf-quick-skill/references/finalize.md +69 -18
- package/src/skf-quick-skill/references/halt-contract.md +41 -29
- package/src/skf-quick-skill/references/health-check.md +5 -3
- package/src/skf-quick-skill/references/quick-extract.md +114 -45
- package/src/skf-quick-skill/references/registry-resolution.md +9 -64
- package/src/skf-quick-skill/references/resolve-target.md +116 -66
- package/src/skf-quick-skill/references/write-and-validate.md +79 -40
- package/src/skf-refine-architecture/SKILL.md +43 -53
- package/src/skf-refine-architecture/customize.toml +49 -20
- package/src/skf-refine-architecture/references/compile.md +97 -54
- package/src/skf-refine-architecture/references/exit-codes.md +30 -0
- package/src/skf-refine-architecture/references/finding-storage.md +21 -0
- package/src/skf-refine-architecture/references/gap-analysis.md +101 -38
- package/src/skf-refine-architecture/references/improvements.md +14 -20
- package/src/skf-refine-architecture/references/init.md +98 -57
- package/src/skf-refine-architecture/references/issue-detection.md +32 -39
- package/src/skf-refine-architecture/references/refinement-rules.md +37 -48
- package/src/skf-refine-architecture/references/report.md +65 -54
- package/src/skf-refine-architecture/scripts/skf-check-preservation.py +1619 -0
- package/src/skf-rename-skill/SKILL.md +19 -54
- package/src/skf-rename-skill/customize.toml +32 -26
- package/src/skf-rename-skill/references/execute.md +230 -184
- package/src/skf-rename-skill/references/exit-codes.md +7 -7
- package/src/skf-rename-skill/references/health-check.md +1 -7
- package/src/skf-rename-skill/references/invocation-contract.md +25 -0
- package/src/skf-rename-skill/references/report.md +63 -52
- package/src/skf-rename-skill/references/select.md +197 -115
- package/src/skf-rename-skill/scripts/skf-validate-rename-name.py +161 -21
- package/src/skf-setup/SKILL.md +26 -26
- package/src/skf-setup/customize.toml +14 -10
- package/src/skf-setup/references/auto-index.md +50 -63
- package/src/skf-setup/references/ccc-index.md +29 -90
- package/src/skf-setup/references/detect-and-tier.md +58 -67
- package/src/skf-setup/references/health-check.md +2 -0
- package/src/skf-setup/references/invocation-contract.md +14 -0
- package/src/skf-setup/references/report.md +43 -166
- package/src/skf-setup/references/tier-rules.md +5 -5
- package/src/skf-setup/references/write-config.md +34 -57
- package/src/skf-test-skill/SKILL.md +17 -57
- package/src/skf-test-skill/assets/output-section-formats.md +33 -34
- package/src/skf-test-skill/customize.toml +27 -13
- package/src/skf-test-skill/references/coherence-check.md +134 -62
- package/src/skf-test-skill/references/coverage-check-tiers.md +35 -0
- package/src/skf-test-skill/references/coverage-check.md +209 -264
- package/src/skf-test-skill/references/detect-mode.md +5 -5
- package/src/skf-test-skill/references/external-validators.md +94 -82
- package/src/skf-test-skill/references/health-check.md +6 -7
- package/src/skf-test-skill/references/init.md +164 -91
- package/src/skf-test-skill/references/invocation-contract.md +66 -0
- package/src/skf-test-skill/references/migration-section-rules.md +5 -2
- package/src/skf-test-skill/references/report.md +164 -142
- package/src/skf-test-skill/references/score.md +80 -107
- package/src/skf-test-skill/references/scoring-rules.md +42 -155
- package/src/skf-test-skill/references/source-access-protocol.md +18 -94
- package/src/skf-test-skill/references/step-hard-gate.md +51 -33
- package/src/skf-test-skill/scripts/aggregate-coherence.py +218 -30
- package/src/skf-test-skill/scripts/build-result-context.py +380 -0
- package/src/skf-test-skill/scripts/check-metadata-coherence.py +37 -4
- package/src/skf-test-skill/scripts/combine-external-scores.py +23 -6
- package/src/skf-test-skill/scripts/compute-score.py +223 -45
- package/src/skf-test-skill/scripts/gap-ledger.py +1666 -0
- package/src/skf-test-skill/scripts/hard-gate.py +203 -0
- package/src/skf-test-skill/scripts/load-coverage-inputs.py +1198 -0
- package/src/skf-test-skill/scripts/locate-export-segments.py +835 -0
- package/src/skf-test-skill/scripts/reconcile-coverage.py +547 -79
- package/src/skf-test-skill/scripts/score-signatures.py +479 -0
- package/src/skf-test-skill/scripts/stage-helper-payload.py +148 -0
- package/src/skf-test-skill/scripts/validate-inventory.py +311 -16
- package/src/skf-test-skill/scripts/verify-declared-numerator.py +133 -56
- package/src/skf-test-skill/templates/test-report-template.md +21 -15
- package/src/skf-update-skill/SKILL.md +38 -25
- package/src/skf-update-skill/customize.toml +27 -12
- package/src/skf-update-skill/references/detect-changes.md +253 -223
- package/src/skf-update-skill/references/gap-driven.md +336 -0
- package/src/skf-update-skill/references/health-check.md +31 -5
- package/src/skf-update-skill/references/init.md +254 -84
- package/src/skf-update-skill/references/invocation-contract.md +12 -0
- package/src/skf-update-skill/references/manual-section-rules.md +6 -23
- package/src/skf-update-skill/references/merge.md +182 -49
- package/src/skf-update-skill/references/re-extract.md +53 -262
- package/src/skf-update-skill/references/report.md +102 -35
- package/src/skf-update-skill/references/write.md +357 -155
- package/src/skf-update-skill/scripts/skf-new-file-diff.py +183 -46
- package/src/skf-verify-stack/SKILL.md +23 -42
- package/src/skf-verify-stack/assets/feasibility-report-template.md +11 -5
- package/src/skf-verify-stack/customize.toml +55 -22
- package/src/skf-verify-stack/references/coverage-patterns.md +17 -8
- package/src/skf-verify-stack/references/coverage.md +67 -64
- package/src/skf-verify-stack/references/exit-codes.md +21 -8
- package/src/skf-verify-stack/references/init.md +107 -62
- package/src/skf-verify-stack/references/integration-verification-rules.md +12 -13
- package/src/skf-verify-stack/references/integrations.md +106 -65
- package/src/skf-verify-stack/references/report.md +59 -42
- package/src/skf-verify-stack/references/requirements.md +32 -9
- package/src/skf-verify-stack/references/synthesize.md +53 -39
- package/src/skf-verify-stack/scripts/skf-coverage-tally.py +398 -52
- package/src/skf-verify-stack/scripts/skf-previous-report.py +330 -0
- package/src/skf-verify-stack/scripts/skf-report-delta.py +453 -49
- package/src/skf-verify-stack/scripts/skf-verdict-rollup.py +240 -27
- package/tools/cli/commands/install.js +11 -4
- package/tools/cli/commands/status.js +15 -3
- package/tools/cli/commands/update.js +11 -4
- package/tools/cli/lib/tool-check.js +320 -0
- package/tools/cli/lib/version-check.js +22 -9
- package/tools/cli/skf-cli.js +4 -1
- package/.gitattributes +0 -16
- package/.nvmrc +0 -1
- package/docs/_internal/RELEASING.md +0 -679
- package/release-audits/v1.0.0-launch-audit.md +0 -728
- package/src/skf-audit-skill/references/step-doc-drift.md +0 -177
- package/src/skf-brief-skill/references/headless-source-authority-detection.md +0 -26
- package/src/skf-campaign/manifest.yaml +0 -15
- package/src/skf-create-skill/assets/tessl-dismissal-rules.md +0 -106
- package/src/skf-create-skill/references/ecosystem-check.md +0 -74
- package/src/skf-drop-skill/references/headless-contract.md +0 -18
- package/src/skf-update-skill/references/merge-conflict-rules.md +0 -15
- package/src/skf-update-skill/references/remote-source-resolution.md +0 -98
- package/src/skf-update-skill/references/validate.md +0 -124
- package/tools/validate-docs-drift.js +0 -233
- package/tools/validate-docs-links.js +0 -665
package/docs/getting-started.md
CHANGED
|
@@ -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
|
|
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:
|
|
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
|
|
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.
|
|
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
|
|
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
|
-
- **"
|
|
41
|
-
- **"
|
|
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
|
|
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
|
|
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
|
-
|
|
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.
|
|
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
|
|
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
|
|
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
|
|
121
|
-
#
|
|
122
|
-
@Ferris CS # Create
|
|
123
|
-
#
|
|
124
|
-
@Ferris TS # Test
|
|
125
|
-
#
|
|
126
|
-
@Ferris EX # Export
|
|
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
|
|
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
|
-
|
|
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
|
|
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
|
|
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
|
|
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
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
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
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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)
|
|
194
|
-
- [Campaign](/docs/campaign.md)
|
|
195
|
-
- [Agents](/docs/agents.md)
|
|
196
|
-
- [Workflows](/docs/workflows.md)
|
|
197
|
-
- [Examples](/docs/examples.md)
|
|
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
|
|
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)
|
|
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`
|
|
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)
|
|
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).
|
package/docs/how-it-works.md
CHANGED
|
@@ -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
|
|
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
|
|
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
|
|
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
|
-
|
|
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
|
-
|
|
30
|
+
### 3. He extracts the API
|
|
31
31
|
|
|
32
|
-
|
|
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
|
-
|
|
34
|
+
### 4. You review the skill before it is written
|
|
35
35
|
|
|
36
|
-
|
|
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
|
-
|
|
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
|
|
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
|
|
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
|
|
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
|
-
|
|
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)
|
|
61
|
-
- **[Skill Model](/docs/skill-model.md)
|
|
62
|
-
- **[Verifying a Skill](/docs/verifying-a-skill.md)
|
|
63
|
-
- **[BMAD Synergy](/docs/bmad-synergy.md)
|
|
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
|
|
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
|
|
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
|
|
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">
|
|
29
|
-
<code class="receipt-sample__chip">[AST:cognee/api/v1/search/search.py:
|
|
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
|
-
|
|
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`) |
|
|
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
|
|
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.
|
|
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.
|
|
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
|
|
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
|
|
70
|
-
@Ferris forge-auto <repo-or-url> #
|
|
71
|
-
@Ferris QS <package>
|
|
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
|
|
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.
|