bmad-module-skill-forge 2.2.0 → 3.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 +135 -18
- package/docs/verifying-a-skill.md +83 -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 +2 -2
- 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 +32 -12
- 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 +30 -14
- package/src/shared/scripts/skf-build-change-manifest.py +2203 -24
- 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 +694 -0
- package/src/shared/scripts/skf-comention-pairs.py +1333 -123
- package/src/shared/scripts/skf-compare-file-hashes.py +1 -1
- 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 +3 -2
- 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 +1 -1
- 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 +4084 -85
- package/src/shared/scripts/skf-extraction-inventory.py +746 -0
- package/src/shared/scripts/skf-extraction-snapshot.py +539 -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 +444 -203
- package/src/shared/scripts/skf-github-fetch.py +365 -0
- package/src/shared/scripts/skf-github-probe.py +661 -0
- package/src/shared/scripts/skf-hash-content.py +166 -12
- package/src/shared/scripts/skf-language-corpora.py +1 -1
- package/src/shared/scripts/skf-load-provenance.py +159 -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 +1 -1
- 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 +161 -27
- package/src/shared/scripts/skf-promote-staged.py +430 -0
- package/src/shared/scripts/skf-provenance-gap-dispatch.py +39 -7
- 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 +128 -13
- 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 +670 -119
- package/src/shared/scripts/skf-tessl-review.py +706 -0
- package/src/shared/scripts/skf-update-active-symlink.py +5 -5
- 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 +4 -1
- 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 +2919 -54
- package/src/shared/scripts/skf-write-skill-brief.py +367 -19
- 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 +27 -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/init.md +148 -210
- package/src/skf-audit-skill/references/re-index.md +96 -108
- package/src/skf-audit-skill/references/report.md +96 -33
- package/src/skf-audit-skill/references/semantic-diff.md +27 -18
- 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 +75 -90
- package/src/skf-audit-skill/references/upstream-checkout.md +77 -0
- package/src/skf-audit-skill/scripts/render-drift-tables.py +685 -0
- package/src/skf-brief-skill/SKILL.md +36 -25
- package/src/skf-brief-skill/assets/description-voice-examples.md +1 -1
- package/src/skf-brief-skill/assets/scope-templates.md +17 -24
- package/src/skf-brief-skill/assets/skill-brief-schema.md +29 -15
- package/src/skf-brief-skill/customize.toml +48 -20
- package/src/skf-brief-skill/references/analyze-target.md +142 -125
- package/src/skf-brief-skill/references/confirm-brief.md +10 -8
- 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 +24 -80
- package/src/skf-brief-skill/references/step-auto-validate.md +20 -121
- package/src/skf-brief-skill/references/version-resolution.md +3 -2
- 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 +6 -5
- package/src/skf-create-skill/assets/skill-sections.md +15 -5
- package/src/skf-create-skill/customize.toml +20 -8
- package/src/skf-create-skill/references/authoritative-files-protocol.md +41 -42
- 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 +107 -29
- 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 +20 -0
- package/src/skf-create-skill/references/extract.md +200 -161
- package/src/skf-create-skill/references/extraction-patterns-by-hand.md +141 -0
- package/src/skf-create-skill/references/extraction-patterns-tracing.md +2 -2
- package/src/skf-create-skill/references/extraction-patterns.md +584 -196
- 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 +28 -59
- package/src/skf-create-skill/references/source-resolution-protocols.md +49 -155
- 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 +79 -146
- 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 +118 -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 +217 -254
- 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 +163 -88
- 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 +162 -142
- package/src/skf-test-skill/references/score.md +80 -107
- package/src/skf-test-skill/references/scoring-rules.md +41 -155
- package/src/skf-test-skill/references/source-access-protocol.md +19 -92
- 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 +287 -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 +1381 -0
- package/src/skf-test-skill/scripts/hard-gate.py +203 -0
- package/src/skf-test-skill/scripts/load-coverage-inputs.py +760 -0
- package/src/skf-test-skill/scripts/locate-export-segments.py +835 -0
- package/src/skf-test-skill/scripts/reconcile-coverage.py +273 -79
- package/src/skf-test-skill/scripts/score-signatures.py +459 -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 +127 -52
- 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 +233 -222
- 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 +250 -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 +180 -47
- package/src/skf-update-skill/references/re-extract.md +53 -262
- package/src/skf-update-skill/references/report.md +100 -35
- package/src/skf-update-skill/references/write.md +331 -149
- package/src/skf-update-skill/scripts/skf-new-file-diff.py +29 -7
- 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/examples.md
CHANGED
|
@@ -35,19 +35,19 @@ description: >
|
|
|
35
35
|
|----------|---------|------------|--------|
|
|
36
36
|
| add() | Ingest text, files, binary data | data, dataset_name | [AST:cognee/api/v1/add/add.py:L22] |
|
|
37
37
|
| cognify() | Build knowledge graph | datasets, graph_model | [AST:cognee/api/v1/cognify/cognify.py:L44] |
|
|
38
|
-
| search() | Query knowledge graph | query_text, query_type | [AST:cognee/api/v1/search/search.py:
|
|
38
|
+
| search() | Query knowledge graph | query_text, query_type | [AST:cognee/api/v1/search/search.py:L27] |
|
|
39
39
|
| memify() | Enrich graph with custom tasks | extraction_tasks, data | [AST:cognee/modules/memify/memify.py:L25] |
|
|
40
40
|
| remember() | V2 one-shot memory ingest | data, dataset_name | [AST:cognee/api/v1/remember/remember.py:L339] |
|
|
41
41
|
| DataPoint | Base class for custom graph nodes | inherit and add fields | [EXT:docs.cognee.ai/guides/custom-data-models] |
|
|
42
42
|
```
|
|
43
43
|
|
|
44
|
-
Every line number above is
|
|
44
|
+
Every line number above is copied from the real SKILL.md and points at the line where that function is defined in the cognee source, so none of it is illustrative. SKF also ships its extraction record for this skill in oh-my-skills: [`forge-data/oms-cognee/1.0.0/provenance-map.json`](https://github.com/armelhbobdad/oh-my-skills/blob/main/forge-data/oms-cognee/1.0.0/provenance-map.json). The tags are copied as published too, and they predate labels that follow the tool: that record lists these functions as read by eye (`source-read`), so SKF 3.0.0 would tag them `[SRC:...]` (T1-low) and keep `[AST:...]` for a definition an ast-grep rule matched. [Verifying a Skill](/docs/verifying-a-skill.md#2-open-the-skills-provenance-mapjson) walks through the `search` entry.
|
|
45
45
|
|
|
46
46
|
Provenance tags trace each instruction to its source:
|
|
47
|
-
- `[AST:file:
|
|
48
|
-
- `[SRC:file:
|
|
49
|
-
- `[
|
|
50
|
-
- `[
|
|
47
|
+
- `[AST:file:Lnn]` (T1): an ast-grep rule matched the definition in the code (highest confidence)
|
|
48
|
+
- `[SRC:file:Lnn]` (T1-low): read from source code by eye, without an ast-grep match, at any forge tier
|
|
49
|
+
- `[QMD:collection:doc]` (T2): surfaced from indexed developer discourse (issues, PRs, changelogs)
|
|
50
|
+
- `[EXT:url]` (T3): sourced from external documentation (lowest confidence)
|
|
51
51
|
|
|
52
52
|
See [Skill Model → Output Architecture](/docs/skill-model.md#output-architecture) for the full output structure.
|
|
53
53
|
|
|
@@ -74,13 +74,13 @@ skills/oms-cognee/
|
|
|
74
74
|
└── pipelines-and-datapoints.md
|
|
75
75
|
```
|
|
76
76
|
|
|
77
|
-
This is the real directory listing from [`oh-my-skills/skills/oms-cognee/`](https://github.com/armelhbobdad/oh-my-skills/tree/main/skills/oms-cognee) after cognee shipped v1.0.0 upstream. SKF recompiled the skill from the v1.0.0 commit and wrote it next to the existing 0.5.8 tree
|
|
77
|
+
This is the real directory listing from [`oh-my-skills/skills/oms-cognee/`](https://github.com/armelhbobdad/oh-my-skills/tree/main/skills/oms-cognee) after cognee shipped v1.0.0 upstream. SKF recompiled the skill from the v1.0.0 commit and wrote it next to the existing 0.5.8 tree. The older version stays pinned to its original commit (`b51dcce1`) and is still installable by any project that hasn't bumped its `CLAUDE.md` pin yet. The `active` symlink and the [`.export-manifest.json`](https://github.com/armelhbobdad/oh-my-skills/blob/main/skills/.export-manifest.json) both point at the current version. Some skills also include `scripts/` and `assets/` directories when the source repository contains executable scripts or static assets. oms-cognee has neither; see [Skill Model → Per-Skill Output](/docs/skill-model.md#per-skill-output) for the full schema.
|
|
78
78
|
|
|
79
79
|
---
|
|
80
80
|
|
|
81
81
|
## Example Workflows
|
|
82
82
|
|
|
83
|
-
### Quick Skill
|
|
83
|
+
### Quick Skill: Under a minute
|
|
84
84
|
|
|
85
85
|
Developer adds [cognee](https://github.com/topoteretes/cognee) to a Python project for AI memory management. Agent keeps hallucinating method signatures and config options.
|
|
86
86
|
|
|
@@ -88,7 +88,7 @@ Developer adds [cognee](https://github.com/topoteretes/cognee) to a Python proje
|
|
|
88
88
|
@Ferris QS https://github.com/topoteretes/cognee
|
|
89
89
|
```
|
|
90
90
|
|
|
91
|
-
Ferris reads the repository,
|
|
91
|
+
Ferris reads the repository, lists its public exports, and validates against the agentskills.io spec. The skill is written to `skills/cognee/<version>/cognee/` (the version is detected from the source manifest). The agent now reads the real export names and usage examples from the skill instead of guessing. Quick Skill does not extract full signatures or cite a source line for each export. When you need those, run `@Ferris forge-auto https://github.com/topoteretes/cognee` instead.
|
|
92
92
|
|
|
93
93
|
Need a specific version? Append `@version`:
|
|
94
94
|
|
|
@@ -96,28 +96,30 @@ Need a specific version? Append `@version`:
|
|
|
96
96
|
@Ferris QS cognee@1.0.0
|
|
97
97
|
```
|
|
98
98
|
|
|
99
|
-
### Brownfield Platform
|
|
99
|
+
### Brownfield Platform: Pipeline or per-workflow
|
|
100
100
|
|
|
101
101
|
Alex, a platform engineer, adopts BMAD for 10 microservices spanning TypeScript, Go, and Rust.
|
|
102
102
|
|
|
103
103
|
```
|
|
104
|
-
@Ferris SF # Setup
|
|
105
|
-
#
|
|
106
|
-
@Ferris forge-auto https://github.com/acme/auth-service # one service: Analyze → Brief → Create → Test → Export
|
|
104
|
+
@Ferris SF # Setup: Deep tier detected
|
|
105
|
+
# clear session
|
|
106
|
+
@Ferris forge-auto https://github.com/acme/auth-service # one service per run: Analyze → Brief → Create → Test → Export
|
|
107
107
|
```
|
|
108
108
|
|
|
109
109
|
Or one workflow per session:
|
|
110
110
|
```
|
|
111
|
-
@Ferris SF # Setup
|
|
112
|
-
#
|
|
113
|
-
@Ferris AN # Analyze
|
|
114
|
-
#
|
|
115
|
-
@Ferris CS --batch # Create
|
|
111
|
+
@Ferris SF # Setup: Deep tier detected
|
|
112
|
+
# clear session
|
|
113
|
+
@Ferris AN # Analyze: 10 services mapped
|
|
114
|
+
# clear session
|
|
115
|
+
@Ferris CS --batch # Create: batch generation
|
|
116
|
+
# clear session
|
|
117
|
+
@Ferris SS # Stack Skill: one platform skill for how the services connect
|
|
116
118
|
```
|
|
117
119
|
|
|
118
|
-
10 individual skills
|
|
120
|
+
The result is 10 individual skills plus 1 platform stack skill, which SS builds once the individual skills exist. The [BMM](/docs/bmad-synergy.md#skf-and-bmm-phase-by-phase-playbook) architect then navigates cross-service flows using verified knowledge.
|
|
119
121
|
|
|
120
|
-
### Release Prep
|
|
122
|
+
### Release Prep: Trust Builder
|
|
121
123
|
|
|
122
124
|
Jin, a Rust library maintainer, is preparing v1.0.0 with breaking changes she wants consumers' agents to pick up automatically.
|
|
123
125
|
|
|
@@ -127,18 +129,18 @@ Jin, a Rust library maintainer, is preparing v1.0.0 with breaking changes she wa
|
|
|
127
129
|
|
|
128
130
|
Or one workflow per session:
|
|
129
131
|
```
|
|
130
|
-
@Ferris AS # Audit
|
|
131
|
-
#
|
|
132
|
-
@Ferris US # Update
|
|
133
|
-
#
|
|
134
|
-
@Ferris TS # Test
|
|
135
|
-
#
|
|
136
|
-
@Ferris EX # Export
|
|
132
|
+
@Ferris AS # Audit: finds 3 renames, 1 removal, 1 addition
|
|
133
|
+
# clear session
|
|
134
|
+
@Ferris US # Update: preserves [MANUAL] sections, adds annotations
|
|
135
|
+
# clear session
|
|
136
|
+
@Ferris TS # Test: verify completeness
|
|
137
|
+
# clear session
|
|
138
|
+
@Ferris EX # Export: package for distribution
|
|
137
139
|
```
|
|
138
140
|
|
|
139
|
-
|
|
141
|
+
Jin publishes the updated skill alongside the release (for an official skill, EX prints the `npx skills publish` command). Consumers upgrade and their agents use the correct function names, with no more "wrong signature" support tickets.
|
|
140
142
|
|
|
141
|
-
### Stack Skill
|
|
143
|
+
### Stack Skill: Integration Intelligence
|
|
142
144
|
|
|
143
145
|
Armel, building a full-stack side project on Next.js + Serwist + SpacetimeDB + better-auth.
|
|
144
146
|
|
|
@@ -148,20 +150,20 @@ Armel, building a full-stack side project on Next.js + Serwist + SpacetimeDB + b
|
|
|
148
150
|
|
|
149
151
|
Ferris detects 8 significant dependencies, finds 5 co-import integration points. Generates a consolidated stack skill. The agent now knows: "When you modify the auth flow, update the Serwist cache exclusion at `src/sw.ts:L23`." That integration detail isn't available from any other tool in the [comparison table](/docs/index.md#how-skf-compares).
|
|
150
152
|
|
|
151
|
-
### Pre-Code Architecture Verification
|
|
153
|
+
### Pre-Code Architecture Verification: Greenfield Confidence
|
|
152
154
|
|
|
153
|
-
Gery, a backend architect, is designing a new TypeScript service on Hono + Drizzle + SpacetimeDB.
|
|
155
|
+
Gery, a backend architect, is designing a new TypeScript service on Hono + Drizzle + SpacetimeDB. The architecture doc is written but no code exists yet, and he wants to verify the stack holds together before anyone starts building.
|
|
154
156
|
|
|
155
157
|
```
|
|
156
158
|
@Ferris QS hono # Quick Skill per library
|
|
157
159
|
@Ferris QS drizzle-orm
|
|
158
160
|
@Ferris QS spacetimedb-sdk
|
|
159
|
-
@Ferris VS # Verify Stack
|
|
160
|
-
@Ferris RA # Refine Architecture
|
|
161
|
-
@Ferris SS # Stack Skill
|
|
161
|
+
@Ferris VS # Verify Stack: feasibility report
|
|
162
|
+
@Ferris RA # Refine Architecture: enrich with API evidence
|
|
163
|
+
@Ferris SS # Stack Skill: compose-mode (no codebase needed)
|
|
162
164
|
```
|
|
163
165
|
|
|
164
|
-
VS
|
|
166
|
+
VS rates the Drizzle↔SpacetimeDB pair `Risky` (a query-model mismatch that a workaround may resolve) and returns an overall verdict of `CONDITIONALLY_FEASIBLE`. Gery adds a bridge layer to the architecture and re-runs VS, which now returns `FEASIBLE`. RA fills in verified API signatures. SS compose-mode builds the stack skill from the existing skills and the refined architecture. The agent now has integration intelligence for a project that doesn't have code yet.
|
|
165
167
|
|
|
166
168
|
---
|
|
167
169
|
|
|
@@ -172,10 +174,10 @@ VS flags the Drizzle↔SpacetimeDB integration as incompatible (query-model mism
|
|
|
172
174
|
BMAD user starts a new project. [BMM](/docs/bmad-synergy.md#skf-and-bmm-phase-by-phase-playbook) architect suggests skill generation after retrospective.
|
|
173
175
|
|
|
174
176
|
```
|
|
175
|
-
@Ferris BS # Brief
|
|
176
|
-
@Ferris CS # Create
|
|
177
|
-
@Ferris TS # Test
|
|
178
|
-
@Ferris EX # Export
|
|
177
|
+
@Ferris BS # Brief: scope the skill
|
|
178
|
+
@Ferris CS # Create: compile from brief
|
|
179
|
+
@Ferris TS # Test: verify completeness
|
|
180
|
+
@Ferris EX # Export: inject into platform context files
|
|
179
181
|
```
|
|
180
182
|
|
|
181
183
|
Skills accumulate over sprints. The agent's coverage improves each iteration.
|
|
@@ -188,21 +190,21 @@ Blondin, a platform lead, needs cross-service knowledge for 10 microservices so
|
|
|
188
190
|
@Ferris campaign # Orchestrate all 10 skills across sessions, in dependency order
|
|
189
191
|
```
|
|
190
192
|
|
|
191
|
-
Campaign reads the
|
|
193
|
+
Campaign reads the dependencies you declare for each skill, orders the skills so each one comes after the skills it depends on, and drives each full-pipeline (Tier A) skill through brief, compile and test, with quality gates enforced. Libraries marked Tier B are built faster, in one Quick Skill batch. It then composes a capstone stack skill that shows how the services connect, and asks for your go-ahead before it exports the skills that clear the quality gate. State is written to disk, so Blondin can walk away and run `@Ferris campaign resume` after the conversation runs out of context or after a break, picking up exactly where the last session stopped. See [Campaign Orchestration](/docs/campaign.md) for the full stage-by-stage flow.
|
|
192
194
|
|
|
193
195
|
### Scenario C: External Dependency
|
|
194
196
|
|
|
195
|
-
Kossi, a developer integrating an uncommon library, needs a skill for it
|
|
197
|
+
Kossi, a developer integrating an uncommon library, needs a skill for it, and nothing official exists yet.
|
|
196
198
|
|
|
197
199
|
```
|
|
198
200
|
@Ferris QS better-auth
|
|
199
201
|
```
|
|
200
202
|
|
|
201
|
-
|
|
203
|
+
Resolves the package name to its GitHub repository and generates the skill from source, with `source_authority: community`. Quick Skill skips its check for an existing official skill until agentskills.io offers a registry API to ask.
|
|
202
204
|
|
|
203
205
|
### Scenario D: Docs-Only (SaaS/Closed Source)
|
|
204
206
|
|
|
205
|
-
|
|
207
|
+
There is no source code to clone, only API documentation. Example: you're integrating the [Stripe API](https://docs.stripe.com/api) and want your agent to know the real endpoints, parameters, and error codes instead of hallucinating from training data.
|
|
206
208
|
|
|
207
209
|
```
|
|
208
210
|
@Ferris BS
|
|
@@ -214,11 +216,11 @@ No source code to clone — only API documentation. Example: you're integrating
|
|
|
214
216
|
# When asked for target version, specify: 2025-04-30.basil
|
|
215
217
|
# Ferris confirms your doc URLs match that API version
|
|
216
218
|
@Ferris CS
|
|
217
|
-
# step 3
|
|
219
|
+
# step 3 finds no source to extract; step 3c (Fetch Docs) downloads the doc pages
|
|
218
220
|
# All content is T3 [EXT:url] confidence. source_authority: community
|
|
219
221
|
```
|
|
220
222
|
|
|
221
|
-
The brief's `doc_urls` field drives the
|
|
223
|
+
The brief's `doc_urls` field drives the Fetch Docs step (step 3c). The agent uses whatever web fetching tool is available in its environment (Firecrawl, WebFetch, curl, etc.) to retrieve documentation as markdown and extract API information with `[EXT:url]` citations. No AST parsing is possible without source code, so every instruction carries T3 provenance (external documentation, the lowest confidence) instead of T1, and the skill is tagged `source_authority: community` regardless of tier.
|
|
222
224
|
|
|
223
225
|
### Scenario E: Rename a Skill
|
|
224
226
|
|
|
@@ -251,7 +253,7 @@ Version 0.6.0 remains active. Version 0.5.0 is untouched. The managed sections i
|
|
|
251
253
|
|
|
252
254
|
### Scenario G: Maximum Accuracy for a High-Stakes Library
|
|
253
255
|
|
|
254
|
-
You're building skills for a production payments library and need maximum citation density.
|
|
256
|
+
You're building skills for a production payments library and need maximum citation density. You want as many signatures as possible AST-verified, and historical context (deprecations, migration notes) baked into the skill.
|
|
255
257
|
|
|
256
258
|
**Workflow:**
|
|
257
259
|
|
|
@@ -259,31 +261,31 @@ You're building skills for a production payments library and need maximum citati
|
|
|
259
261
|
@Ferris SF
|
|
260
262
|
# Ferris detects installed tools and sets your tier automatically:
|
|
261
263
|
# - Quick: no tools required (best-effort, source-read only)
|
|
262
|
-
# - Forge:
|
|
263
|
-
# - Forge+: + cocoindex-code (semantic pre-ranking for large repos)
|
|
264
|
-
# - Deep: + gh + qmd (T2 evidence
|
|
264
|
+
# - Forge: ast-grep (T1 for each export an ast-grep rule matches)
|
|
265
|
+
# - Forge+: ast-grep + cocoindex-code (semantic pre-ranking for large repos)
|
|
266
|
+
# - Deep: ast-grep + gh + qmd (T2 evidence from issues, PRs, changelogs; cocoindex-code optional)
|
|
265
267
|
# Install the missing tools, then re-run @Ferris SF to promote your tier.
|
|
266
|
-
@Ferris BS # Scope
|
|
267
|
-
@Ferris CS # Extract
|
|
268
|
-
@Ferris TS # Completeness score
|
|
268
|
+
@Ferris BS # Scope: confirm the forge tier is Deep (+ ccc if installed)
|
|
269
|
+
@Ferris CS # Extract: AST + QMD enrichment
|
|
270
|
+
@Ferris TS # Completeness score: 80%+ threshold
|
|
269
271
|
```
|
|
270
272
|
|
|
271
|
-
**What you get:** Every signature carries `[AST:file:Lnn]` at T1. Deprecation warnings and design rationale carry `[QMD:collection:doc]` at T2. Install tooling once, every downstream skill benefits. See [Capability Tiers](/docs/concepts.md#capability-tiers-quickforgeforgedeep).
|
|
273
|
+
**What you get:** Every signature an ast-grep rule matched carries `[AST:file:Lnn]` at T1. An export it could not match is read by eye and carries `[SRC:file:Lnn]` at T1-low, so you know which signatures to check by hand. Deprecation warnings and design rationale carry `[QMD:collection:doc]` at T2. Install tooling once, every downstream skill benefits. See [Capability Tiers](/docs/concepts.md#capability-tiers-quickforgeforgedeep).
|
|
272
274
|
|
|
273
275
|
### Scenario H: OSS Maintainer Publishing Official Skills
|
|
274
276
|
|
|
275
|
-
You maintain an OSS library and want to ship official agent skills alongside each release
|
|
277
|
+
You maintain an OSS library and want to ship official agent skills alongside each release, distributed via [skills.sh](https://skills.sh) or [oh-my-skills](https://github.com/armelhbobdad/oh-my-skills) so consumers install them with `npx skills add`.
|
|
276
278
|
|
|
277
279
|
**Workflow:**
|
|
278
280
|
|
|
279
281
|
```
|
|
280
|
-
@Ferris BS # Scope the skill
|
|
281
|
-
@Ferris CS # Compile
|
|
282
|
-
@Ferris TS # Verify completeness before publishing (
|
|
283
|
-
@Ferris EX #
|
|
282
|
+
@Ferris BS # Scope the skill: set source_authority: official in the brief
|
|
283
|
+
@Ferris CS # Compile: AST extraction + QMD enrichment (Deep tier recommended)
|
|
284
|
+
@Ferris TS # Verify completeness before publishing (aim for 90%+; the pass line is 80%)
|
|
285
|
+
@Ferris EX # Export: validate the package, write its context snippet, update the managed section in CLAUDE.md, AGENTS.md or .cursorrules
|
|
284
286
|
```
|
|
285
287
|
|
|
286
|
-
**What you get:** A verified skill pinned to the release commit, with `source_authority: official` surfaced in metadata as a trust signal so downstream tooling
|
|
288
|
+
**What you get:** A verified skill pinned to the release commit, with `source_authority: official` surfaced in metadata as a trust signal so downstream tooling recognizes it as maintainer-published rather than community-forged. For an official skill, EX also prints the `npx skills publish` command. Re-run `@Ferris maintain <skill>` (AS → US → TS → EX) on every release to keep published skills current.
|
|
287
289
|
|
|
288
290
|
---
|
|
289
291
|
|
|
@@ -291,15 +293,15 @@ You maintain an OSS library and want to ship official agent skills alongside eac
|
|
|
291
293
|
|
|
292
294
|
### Skip Permissions for Faster Forging
|
|
293
295
|
|
|
294
|
-
> **Tip from Armel:** When forging skills with Claude Code, I run `claude --dangerously-skip-permissions` to bypass all permission prompts. SKF workflows
|
|
296
|
+
> **Tip from Armel:** When forging skills with Claude Code, I run `claude --dangerously-skip-permissions` to bypass all permission prompts. SKF workflows read source code, clone remote repositories into `~/.skf/workspace/`, write skills to `skills/` and working files to `forge-data/`, keep their state in `_bmad/_memory/forger-sidecar/`, update the SKF section of CLAUDE.md, AGENTS.md or .cursorrules when you export, and call tools such as git, ast-grep, qmd, gh and npx. Every step is auditable in the [open source](https://github.com/armelhbobdad/bmad-module-skill-forge). Skipping permissions drastically reduces forge time: I start a pipeline, go [grab one of those coffees ☕ you keep offering](https://buymeacoffee.com/armelhbobdad), and come back to a completed workflow. Review the output at the end, not at every gate.
|
|
295
297
|
|
|
296
298
|
### Progressive Capability
|
|
297
299
|
|
|
298
|
-
Start with the Quick tier (no setup required)
|
|
300
|
+
Start with the Quick tier (no setup required). Install ast-grep to reach Forge. From there, add cocoindex-code for Forge+ (semantic discovery), or add the GitHub CLI (gh) and QMD for Deep (evidence from issues, PRs and changelogs). Deep does not need cocoindex-code, but it still uses it when installed, so adding a tool never takes a capability away. Re-run `@Ferris SF` after installing tools to update your tier.
|
|
299
301
|
|
|
300
302
|
### Batch Operations
|
|
301
303
|
|
|
302
|
-
Use `--batch` with `create-skill` to process multiple briefs at once. Progress is checkpointed
|
|
304
|
+
Use `--batch` with `create-skill` to process multiple briefs at once. Progress is checkpointed per brief: if a batch is interrupted, re-run `@Ferris CS --batch` and Ferris resumes with the brief it was working on (that brief compiles again from the start).
|
|
303
305
|
|
|
304
306
|
### Stack Skills + Individual Skills
|
|
305
307
|
|
|
@@ -307,15 +309,15 @@ Stack skills focus on integration patterns. Individual skills focus on API surfa
|
|
|
307
309
|
|
|
308
310
|
### The Loop
|
|
309
311
|
|
|
310
|
-
After each sprint's refactor, run `@Ferris
|
|
312
|
+
After each sprint's refactor, run `@Ferris maintain <skill>` to audit, update, test and export the skill in one go. Update changes only the skill itself; Export is the step that refreshes the skill index in your platform context files (CLAUDE.md, AGENTS.md, .cursorrules). Skill generation becomes routine, like running tests.
|
|
311
313
|
|
|
312
314
|
### One Workflow Per Session
|
|
313
315
|
|
|
314
|
-
Clear your conversation context (start a new chat) before invoking a new workflow. Each SKF workflow loads step files, knowledge fragments, and extraction data into context. Starting fresh ensures the next workflow operates without interference from prior steps. Sidecar state (forge tier, preferences) persists automatically across sessions
|
|
316
|
+
Clear your conversation context (start a new chat) before invoking a new workflow. Each SKF workflow loads step files, knowledge fragments, and extraction data into context. Starting fresh ensures the next workflow operates without interference from prior steps. A pipeline such as `forge-auto` or `maintain` counts as one invocation: Ferris chains its workflows for you. Sidecar state (forge tier, preferences) persists automatically across sessions, so you don't lose configuration.
|
|
315
317
|
|
|
316
318
|
### Full Control Over Scope
|
|
317
319
|
|
|
318
|
-
You can compile multiple skills from the same target (repo or docs) with different scopes and intents. Each brief defines what to extract and why, producing a distinct skill from the same source. For example, from a single library you could compile `cognee-core` for the public API, `cognee-graph-types` for the type system, and `cognee-migration` for upgrade patterns
|
|
320
|
+
You can compile multiple skills from the same target (repo or docs) with different scopes and intents. Each brief defines what to extract and why, producing a distinct skill from the same source. For example, from a single library you could compile `cognee-core` for the public API, `cognee-graph-types` for the type system, and `cognee-migration` for upgrade patterns, each serving a different use case.
|
|
319
321
|
|
|
320
322
|
### Best Practices Built In
|
|
321
323
|
|
|
@@ -323,14 +325,14 @@ Generated skills automatically follow authoring best practices: third-person des
|
|
|
323
325
|
|
|
324
326
|
### Scripts & Assets
|
|
325
327
|
|
|
326
|
-
If your source repo includes executable scripts (`scripts/`, `bin/`) or static assets (`
|
|
328
|
+
If your source repo includes executable scripts (such as `scripts/`, `bin/` or `tools/`) or static assets (such as `assets/`, `templates/` or `schemas/`), SKF detects and packages them automatically with provenance tracking. Scripts and assets you add yourself under `scripts/[MANUAL]/` or `assets/[MANUAL]/` are preserved during updates, just like `<!-- [MANUAL] -->` markers in SKILL.md.
|
|
327
329
|
|
|
328
330
|
### Let the Health Check Run
|
|
329
331
|
|
|
330
|
-
Every SKF workflow ends with a shared **health check** step where Ferris reflects on the session and
|
|
332
|
+
Every SKF workflow ends with a shared **health check** step where Ferris reflects on the session and lists any bugs, friction, or gaps it hit. With your approval, it files bugs as GitHub issues; friction and gaps go to a local queue in `forge-data/improvement-queue/` unless you also agree to file them. Clean runs end with a one-line all-clear and no extra work. When something breaks, it's SKF's primary feedback channel, so **please let workflows run to completion**. If you had to cancel before the health check fired, 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) for details.
|
|
331
333
|
|
|
332
334
|
---
|
|
333
335
|
|
|
334
336
|
## Something not working?
|
|
335
337
|
|
|
336
|
-
See [Troubleshooting](/docs/troubleshooting.md) for common errors (ast-grep unavailable, "no brief found",
|
|
338
|
+
See [Troubleshooting](/docs/troubleshooting.md) for common errors (ast-grep unavailable, "no brief found", a run lock another run holds, a campaign that stopped partway) and how to resolve them. For general setup help, see [Getting Started → Need help?](/docs/getting-started.md#need-help).
|
package/docs/forge-auto.md
CHANGED
|
@@ -1,43 +1,43 @@
|
|
|
1
1
|
---
|
|
2
2
|
title: Forge-Auto
|
|
3
|
-
description: Zero-ceremony skill creation
|
|
3
|
+
description: Zero-ceremony skill creation. One command turns a GitHub repo (optionally pinned to a version) or a documentation URL into a verified skill
|
|
4
4
|
---
|
|
5
5
|
|
|
6
|
-
Forge-Auto is a [pipeline alias](/docs/workflows.md#pipeline-aliases) that
|
|
6
|
+
Forge-Auto turns a library's repo or documentation site into a verified skill with one command. Under the hood it is a [pipeline alias](/docs/workflows.md#pipeline-aliases): a short name that runs five workflows in a row. You write no brief and make no scope decisions, and a typical run takes about 3 to 5 minutes.
|
|
7
7
|
|
|
8
|
-
If you're new to SKF and want to try it without reading anything else, start here.
|
|
8
|
+
If you're new to SKF and want to try it without reading anything else, start here. Do one thing first: after installing SKF, run `@Ferris SF` once so SKF can detect your tools and set your forge tier (Quick, Forge, Forge+ or Deep). Without it, the first stage stops and asks you to run setup.
|
|
9
9
|
|
|
10
10
|
---
|
|
11
11
|
|
|
12
12
|
## Invocation
|
|
13
13
|
|
|
14
|
-
|
|
14
|
+
Two kinds of target, one command pattern. The lines below are a repo URL, a doc URL (docs-only), and a repo URL pinned to a version:
|
|
15
15
|
|
|
16
16
|
```
|
|
17
|
-
@Ferris forge-auto https://github.com/honojs/hono
|
|
18
|
-
@Ferris forge-auto https://docs.example.com
|
|
19
|
-
@Ferris forge-auto https://github.com/honojs/hono --pin v4.6.0
|
|
17
|
+
@Ferris forge-auto https://github.com/honojs/hono
|
|
18
|
+
@Ferris forge-auto https://docs.example.com
|
|
19
|
+
@Ferris forge-auto https://github.com/honojs/hono --pin v4.6.0
|
|
20
20
|
```
|
|
21
21
|
|
|
22
|
-
- **Repo URL
|
|
23
|
-
- **Doc URL
|
|
24
|
-
- **`--pin <version
|
|
22
|
+
- **Repo URL**: analyzes the source repository (GitHub, GitLab or Bitbucket; on any other host, its `.git` clone URL, its address without `https://` or its SSH address), extracts its exports, and compiles a skill from code and docs. A path to a folder on your machine works the same way.
|
|
23
|
+
- **Doc URL**: any other `http://` or `https://` address that is not a clone URL (one ending in `.git` or holding `/_git/`). SKF skips source analysis and builds the skill from the documentation alone, naming it after the site (`docs.example.com` becomes `docs-example-com`). Useful for closed-source libraries or when the docs are the canonical reference. SKF first asks git about the address, and stops in three cases. When git reads the address as a repository, which on most hosts (a self-hosted GitLab, Gitea or Codeberg, for example) is the repository's main page, SKF asks for its `.git` clone URL, its address without `https://` or its SSH address. When the server asks for credentials (a private repository's page, for example), SKF stops too, since it reads no documentation behind a login. When git gets no answer from the address in 20 seconds, SKF asks for the repository's clone URL or SSH address, or a documentation URL that answers. A repository browser page that git cannot read at its address is still read as documentation: a Bitbucket Data Center `/projects/<p>/repos/<r>` page, a SourceForge or Launchpad code page, or a link to a file or folder inside a repository. Give its clone URL instead. Without git installed, SKF reads the address as documentation and warns that it was not checked.
|
|
24
|
+
- **`--pin <version>`**: add it to a GitHub repo URL to target a specific release tag or branch, so the skill is locked to that exact API surface. SKF checks the pin with the GitHub CLI (`gh`), so `gh` must be installed, and it stops if no tag or branch matches. Without `--pin`, SKF pins a GitHub repo to its latest release tag, and otherwise uses the latest commit. A doc URL ignores `--pin`.
|
|
25
25
|
|
|
26
26
|
---
|
|
27
27
|
|
|
28
28
|
## Pipeline Stages
|
|
29
29
|
|
|
30
|
-
forge-auto expands to `AN[auto] BS[auto] CS TS[min:90] EX`. The two analysis stages (AN, BS)
|
|
30
|
+
forge-auto expands to `AN[auto] BS[auto] CS TS[min:90] EX`. The `[auto]` flag on the two analysis stages (AN, BS) swaps their question-and-answer steps for automatic scoping and briefing. Like every pipeline, forge-auto also runs all five stages in [headless mode](/docs/workflows.md#headless-mode), so no stage stops to ask you anything: each confirmation takes its default answer. The compile, test, and export stages run their usual steps once the analysis context is ready.
|
|
31
31
|
|
|
32
32
|
| Stage | Workflow | Mode | What Happens |
|
|
33
33
|
|-------|----------|------|-------------|
|
|
34
|
-
| 1 | **Analyze Source** (AN) | `[auto]` | Scans the target, detects shape (`library-API`, `reference-app`, `language-reference
|
|
35
|
-
| 2 | **Brief Skill** (BS) | `[auto]` | Enriches the auto-generated brief with doc detection results. No interactive scoping
|
|
34
|
+
| 1 | **Analyze Source** (AN) | `[auto]` | Scans the target, detects its shape (`library-API`, `reference-app`, `language-reference` or `stack-compose`), counts its exports, and writes a scope and brief automatically. If the shape is `unknown`, or the repo has no package manifest or language signal SKF can read, AN switches to its full step-by-step analysis instead. |
|
|
35
|
+
| 2 | **Brief Skill** (BS) | `[auto]` | Enriches the auto-generated brief with doc detection results. No interactive scoping: the brief is assembled from AN's output. |
|
|
36
36
|
| 3 | **Create Skill** (CS) | standard | Compiles the skill from the enriched brief. Extracts exports, resolves documentation sources, validates structure. |
|
|
37
|
-
| 4 | **Test Skill** (TS) | `[min:90]` | Verifies completeness
|
|
37
|
+
| 4 | **Test Skill** (TS) | `[min:90]` | Verifies completeness against a **90% quality threshold** (stricter than the default 80%). A score of at least 80% but under 90% still passes, with an evidence report on what kept it under 90%. A score below 80% fails and stops the pipeline before export. |
|
|
38
38
|
| 5 | **Export Skill** (EX) | standard | Validates the package, generates context snippets, and injects into your IDE's context file. |
|
|
39
39
|
|
|
40
|
-
Data flows automatically between stages
|
|
40
|
+
Data flows automatically between stages: the brief path from AN feeds BS, the skill name from CS feeds TS, and so on. See [Pipeline Mode](/docs/workflows.md#pipeline-mode) for the general mechanics.
|
|
41
41
|
|
|
42
42
|
---
|
|
43
43
|
|
|
@@ -45,23 +45,26 @@ Data flows automatically between stages — the brief path from AN feeds BS, the
|
|
|
45
45
|
|
|
46
46
|
forge-auto's `[auto]` flags activate several behaviors that normally require manual input:
|
|
47
47
|
|
|
48
|
-
- **Auto-scope
|
|
49
|
-
- **Auto-brief
|
|
50
|
-
- **Coexistence detection
|
|
51
|
-
- **Auto-decomposition
|
|
52
|
-
- **Language-reference handling
|
|
48
|
+
- **Auto-scope**: shape detection (`library-API`, `reference-app`, `language-reference`, `stack-compose`) decides the scope, and each shape maps to one of three scope types in the brief: `full-library`, `public-api` (a library with more than 200 exports), or `reference-app`. No interactive scope confirmation.
|
|
49
|
+
- **Auto-brief**: the brief is generated and enriched with doc-detection results in one pass, without the interactive discovery flow that `BS` uses standalone.
|
|
50
|
+
- **Coexistence detection**: if a skill with the same source or name already exists, forge-auto leaves it untouched and creates the new skill beside it under a new name ending in `-wiki` (for example `hono-wiki`). The new skill is separate, not a new version of the old one. forge-auto makes this choice for you, because pipelines run without prompts.
|
|
51
|
+
- **Auto-decomposition**: a monorepo with more than 3 packages is a *decomposition candidate*, meaning it could become several skills. A cohesion check then decides whether to merge it into one skill (the usual outcome, since most published monorepos hang together) or split it into one skill per package. When in doubt it merges. A single package with a very large API is never split: it stays one skill, and create-skill moves the detail into `references/` files.
|
|
52
|
+
- **Language-reference handling**: when the repo is a compiler, interpreter, or parser, AN classifies it as a `language-reference`. For a whole language (a compiler or interpreter), the useful content is the language's guide and standard-library docs, not the compiler's internals, so AN adds links to the language's official docs to the brief. If it finds none, the analysis report marks the skill **DEGRADED**: built from code alone, it has little value until you add the guide and standard-library docs. The report suggests enriching the skill with `US`, or running forge-auto on the docs' URL, which builds a separate docs-only skill.
|
|
53
53
|
|
|
54
54
|
---
|
|
55
55
|
|
|
56
56
|
## Expected Output
|
|
57
57
|
|
|
58
|
-
A successful forge-auto run
|
|
58
|
+
A successful forge-auto run writes a complete skill package to your skills folder (`skills/<name>/<version>/<name>/` by default), then exports it, ready for use. The package includes:
|
|
59
59
|
|
|
60
|
-
- `SKILL.md
|
|
61
|
-
- `
|
|
62
|
-
-
|
|
60
|
+
- `SKILL.md`: the compiled skill, where each instruction cites the source it came from
|
|
61
|
+
- `references/`: detail files, one per group of functions or types
|
|
62
|
+
- `metadata.json`: version, source, and how many exports landed in each confidence tier
|
|
63
|
+
- `context-snippet.md`: a short index of the skill, which export adds to your IDE's context file (CLAUDE.md, AGENTS.md or .cursorrules)
|
|
63
64
|
|
|
64
|
-
The
|
|
65
|
+
The working files (the brief, the test report and the evidence report) stay in your forge data folder (`forge-data/<name>/` by default). To install the skill in your project, run the `npx skills add ./skills/...` command that export prints.
|
|
66
|
+
|
|
67
|
+
The quality threshold is 90%. A skill that scores at least 80% but under 90% still passes and is exported, and SKF writes `evidence-report-fallback.md` next to the test report (in `forge-data/<name>/<version>/`) listing the findings that kept it under 90%. The pipeline goes on to export only when Test Skill settles a PASS. A skill that scores below 80% fails: the pipeline stops at TS, before export, and the test report's gap report lists what is missing. Every other verdict but PASS stops it there too: a FAIL that a cap forced although the score clears 90%, INCONCLUSIVE (Test Skill had too little evidence to grade the skill) and pass-with-drift. Any Critical or High gap, such as a wrong or fabricated signature, also stops the pipeline at TS, before a score is computed: Test Skill lists each blocking gap, and the test report's Gap Report puts them first. A missing export is a Medium gap, so it lowers the score and blocks nothing on its own. To fix the gaps, run `@Ferris US <name> --from-test-report`, then `@Ferris TS[<name>] EX` to re-test and export (the brackets give Test Skill the skill's name). That chain has no alias, so Test Skill re-tests it at the default 80% bar. The next time you start Ferris, he offers that repair route himself, at the recorded 90% threshold: accept his offer to keep forge-auto's 90%, or run `@Ferris TS <name> --threshold=90`, then `@Ferris EX <name>`. A plain `@Ferris US <name>` also finds a failed or pass-with-drift test report that is newer than the skill and that no repair has applied, and offers to repair its gaps (`[G]`) or check the source (`[S]`); a headless run checks the source and adds an `unconsumed-test-report` warning.
|
|
65
68
|
|
|
66
69
|
---
|
|
67
70
|
|
|
@@ -71,20 +74,20 @@ A typical library (50–200 exports) takes **3–5 minutes** end to end. Factors
|
|
|
71
74
|
|
|
72
75
|
- Multi-package monorepos (>3 packages) flag a decomposition candidate; if the cohesion check splits the repo into N skills, add 1–3 minutes
|
|
73
76
|
- Doc-only targets depend on documentation site size and structure
|
|
74
|
-
- Deep
|
|
77
|
+
- The Deep tier (ast-grep, the GitHub CLI and QMD all installed) spends more time on enrichment
|
|
75
78
|
|
|
76
79
|
---
|
|
77
80
|
|
|
78
81
|
## Migration from `deepwiki` and `onboard`
|
|
79
82
|
|
|
80
|
-
This pipeline was briefly named `deepwiki`. It was renamed to **`forge-auto`** to avoid confusion with the [DeepWiki MCP](https://deepwiki.com)
|
|
83
|
+
This pipeline was briefly named `deepwiki`. It was renamed to **`forge-auto`** to avoid confusion with the [DeepWiki MCP](https://deepwiki.com): `forge-auto` compiles a verified skill from source and **does not** call that MCP or ingest a generated wiki. `deepwiki` still works as a **deprecated alias** (it resolves to `forge-auto` and prints a one-time notice); prefer `forge-auto` going forward.
|
|
81
84
|
|
|
82
|
-
Before that, the auto pipeline replaced the older `onboard` alias. `onboard` has been removed
|
|
85
|
+
Before that, the auto pipeline replaced the older `onboard` alias. `onboard` has been removed: running it returns an error directing you to `forge-auto`. The key differences from `onboard`: it ran `AN CS TS EX` at an 80% quality threshold, whereas `forge-auto` adds auto-scope, auto-brief, a higher quality target (90% vs 80%), and accepts doc URLs as well as repo URLs and local project paths.
|
|
83
86
|
|
|
84
87
|
---
|
|
85
88
|
|
|
86
89
|
## Related
|
|
87
90
|
|
|
88
|
-
- [Workflows](/docs/workflows.md)
|
|
89
|
-
- [Concepts](/docs/concepts.md)
|
|
90
|
-
- [BMAD Synergy](/docs/bmad-synergy.md)
|
|
91
|
+
- [Workflows](/docs/workflows.md): pipeline mode mechanics, headless mode, circuit breakers
|
|
92
|
+
- [Concepts](/docs/concepts.md): provenance, confidence tiers, drift, version pinning
|
|
93
|
+
- [BMAD Synergy](/docs/bmad-synergy.md): how forge-auto fits into BMAD phases, and standalone SKF usage
|