bmad-module-skill-forge 0.9.0 → 0.10.1-alpha.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.claude-plugin/marketplace.json +39 -0
- package/.gitattributes +16 -0
- package/README.md +105 -38
- package/docs/404.md +13 -10
- package/docs/RELEASING.md +185 -0
- package/docs/STABILITY.md +123 -0
- package/docs/_data/pinned.yaml +98 -0
- package/docs/agents.md +16 -11
- package/docs/architecture.md +221 -0
- package/docs/bmad-synergy.md +11 -13
- package/docs/concepts.md +18 -108
- package/docs/examples.md +121 -80
- package/docs/getting-started.md +85 -147
- package/docs/how-it-works.md +25 -536
- package/docs/index.md +44 -27
- package/docs/skill-model.md +328 -0
- package/docs/troubleshooting.md +39 -0
- package/docs/verifying-a-skill.md +232 -0
- package/docs/why-skf.md +93 -0
- package/docs/workflows.md +119 -13
- package/package.json +25 -4
- package/src/README.md +23 -25
- package/src/forger/forge-tier.yaml +4 -2
- package/src/forger/preferences.yaml +7 -1
- package/src/knowledge/agentskills-spec.md +1 -1
- package/src/knowledge/architecture-verification.md +1 -1
- package/src/knowledge/ccc-bridge.md +16 -15
- package/src/knowledge/overview.md +11 -11
- package/src/knowledge/progressive-capability.md +3 -3
- package/src/knowledge/provenance-tracking.md +9 -3
- package/src/knowledge/qmd-registry.md +8 -8
- package/src/knowledge/skf-knowledge-index.csv +2 -2
- package/src/knowledge/skill-lifecycle.md +16 -1
- package/src/knowledge/split-body-strategy.md +1 -1
- package/src/knowledge/version-paths.md +17 -12
- package/src/module-help.csv +18 -17
- package/src/module.yaml +4 -0
- package/src/shared/health-check.md +372 -0
- package/src/shared/references/feasibility-report-schema.md +86 -0
- package/src/shared/references/headless-gate-convention.md +62 -0
- package/src/shared/references/output-contract-schema.md +35 -0
- package/src/shared/references/pipeline-contracts.md +102 -0
- package/src/shared/scripts/skf-atomic-write.py +370 -0
- package/src/shared/scripts/skf-manifest-ops.py +236 -0
- package/src/shared/scripts/skf-preflight.py +164 -0
- package/src/shared/scripts/skf-rebuild-managed-sections.py +201 -0
- package/src/shared/scripts/skf-severity-classify.py +163 -0
- package/src/shared/scripts/skf-skill-inventory.py +210 -0
- package/src/shared/scripts/skf-structural-diff.py +257 -0
- package/src/shared/scripts/skf-validate-frontmatter.py +318 -0
- package/src/shared/scripts/skf-validate-output.py +247 -0
- package/src/skf-analyze-source/SKILL.md +57 -0
- package/src/skf-analyze-source/assets/skill-brief-schema.md +125 -0
- package/src/skf-analyze-source/references/unit-detection-heuristics.md +124 -0
- package/src/{workflows/analyze-source → skf-analyze-source}/steps-c/step-01-init.md +6 -66
- package/src/{workflows/analyze-source → skf-analyze-source}/steps-c/step-01b-continue.md +4 -59
- package/src/{workflows/analyze-source → skf-analyze-source}/steps-c/step-02-scan-project.md +7 -68
- package/src/{workflows/analyze-source → skf-analyze-source}/steps-c/step-03-identify-units.md +6 -66
- package/src/{workflows/analyze-source → skf-analyze-source}/steps-c/step-04-map-and-detect.md +7 -68
- package/src/{workflows/analyze-source → skf-analyze-source}/steps-c/step-05-recommend.md +6 -66
- package/src/{workflows/analyze-source → skf-analyze-source}/steps-c/step-06-generate-briefs.md +14 -66
- package/src/skf-analyze-source/steps-c/step-07-health-check.md +22 -0
- package/src/skf-audit-skill/SKILL.md +59 -0
- package/src/{workflows/audit-skill/data → skf-audit-skill/assets}/drift-report-template.md +7 -7
- package/src/{workflows/audit-skill/data → skf-audit-skill/references}/severity-rules.md +11 -11
- package/src/{workflows/audit-skill → skf-audit-skill}/steps-c/step-01-init.md +24 -68
- package/src/{workflows/audit-skill → skf-audit-skill}/steps-c/step-02-re-index.md +36 -71
- package/src/{workflows/audit-skill → skf-audit-skill}/steps-c/step-03-structural-diff.md +21 -63
- package/src/{workflows/audit-skill → skf-audit-skill}/steps-c/step-04-semantic-diff.md +6 -65
- package/src/{workflows/audit-skill → skf-audit-skill}/steps-c/step-05-severity-classify.md +5 -63
- package/src/{workflows/audit-skill → skf-audit-skill}/steps-c/step-06-report.md +10 -59
- package/src/skf-audit-skill/steps-c/step-07-health-check.md +22 -0
- package/src/skf-brief-skill/SKILL.md +53 -0
- package/src/{workflows/brief-skill/data → skf-brief-skill/assets}/scope-templates.md +23 -0
- package/src/skf-brief-skill/assets/skill-brief-schema.md +206 -0
- package/src/{workflows/brief-skill → skf-brief-skill}/steps-c/step-01-gather-intent.md +6 -67
- package/src/{workflows/brief-skill → skf-brief-skill}/steps-c/step-02-analyze-target.md +6 -66
- package/src/{workflows/brief-skill → skf-brief-skill}/steps-c/step-03-scope-definition.md +12 -68
- package/src/{workflows/brief-skill → skf-brief-skill}/steps-c/step-04-confirm-brief.md +5 -63
- package/src/{workflows/brief-skill → skf-brief-skill}/steps-c/step-05-write-brief.md +10 -69
- package/src/skf-brief-skill/steps-c/step-06-health-check.md +22 -0
- package/src/skf-create-skill/SKILL.md +63 -0
- package/src/{workflows/create-skill/data → skf-create-skill/assets}/compile-assembly-rules.md +60 -0
- package/src/{workflows/create-skill/data → skf-create-skill/assets}/skill-sections.md +92 -23
- package/src/skf-create-skill/assets/tessl-dismissal-rules.md +102 -0
- package/src/{workflows/create-skill/data → skf-create-skill/references}/extraction-patterns-tracing.md +13 -13
- package/src/{workflows/create-skill/data → skf-create-skill/references}/extraction-patterns.md +8 -3
- package/src/skf-create-skill/references/source-resolution-protocols.md +239 -0
- package/src/{workflows/create-skill/data → skf-create-skill/references}/tier-degradation-rules.md +8 -7
- package/src/{workflows/create-skill → skf-create-skill}/steps-c/step-01-load-brief.md +25 -63
- package/src/{workflows/create-skill → skf-create-skill}/steps-c/step-02-ecosystem-check.md +8 -64
- package/src/skf-create-skill/steps-c/step-03-extract.md +379 -0
- package/src/{workflows/create-skill → skf-create-skill}/steps-c/step-03d-component-extraction.md +18 -35
- package/src/{workflows/create-skill → skf-create-skill}/steps-c/step-04-enrich.md +12 -69
- package/src/{workflows/create-skill → skf-create-skill}/steps-c/step-05-compile.md +71 -75
- package/src/skf-create-skill/steps-c/step-06-validate.md +267 -0
- package/src/{workflows/create-skill → skf-create-skill}/steps-c/step-07-generate-artifacts.md +30 -74
- package/src/skf-create-skill/steps-c/step-08-report.md +145 -0
- package/src/skf-create-skill/steps-c/step-09-health-check.md +23 -0
- package/src/{workflows/create-skill/steps-c → skf-create-skill/steps-c/sub}/step-02b-ccc-discover.md +8 -66
- package/src/skf-create-skill/steps-c/sub/step-03b-fetch-temporal.md +229 -0
- package/src/{workflows/create-skill/steps-c → skf-create-skill/steps-c/sub}/step-03c-fetch-docs.md +18 -42
- package/src/skf-create-stack-skill/SKILL.md +64 -0
- package/src/{workflows/create-stack-skill/data → skf-create-stack-skill/assets}/stack-skill-template.md +2 -1
- package/src/{workflows/create-stack-skill/data → skf-create-stack-skill/references}/compose-mode-rules.md +19 -5
- package/src/{workflows/create-stack-skill/data → skf-create-stack-skill/references}/integration-patterns.md +1 -1
- package/src/{workflows/create-stack-skill/data → skf-create-stack-skill/references}/manifest-patterns.md +10 -10
- package/src/{workflows/create-stack-skill → skf-create-stack-skill}/steps-c/step-01-init.md +14 -55
- package/src/{workflows/create-stack-skill → skf-create-stack-skill}/steps-c/step-02-detect-manifests.md +29 -63
- package/src/{workflows/create-stack-skill → skf-create-stack-skill}/steps-c/step-03-rank-and-confirm.md +9 -59
- package/src/{workflows/create-stack-skill → skf-create-stack-skill}/steps-c/step-04-parallel-extract.md +29 -64
- package/src/skf-create-stack-skill/steps-c/step-05-detect-integrations.md +164 -0
- package/src/{workflows/create-stack-skill → skf-create-stack-skill}/steps-c/step-06-compile-stack.md +7 -60
- package/src/skf-create-stack-skill/steps-c/step-07-generate-output.md +328 -0
- package/src/{workflows/create-stack-skill → skf-create-stack-skill}/steps-c/step-08-validate.md +17 -63
- package/src/skf-create-stack-skill/steps-c/step-09-report.md +128 -0
- package/src/skf-create-stack-skill/steps-c/step-10-health-check.md +22 -0
- package/src/skf-drop-skill/SKILL.md +57 -0
- package/src/{workflows/drop-skill → skf-drop-skill}/steps-c/step-01-select.md +9 -69
- package/src/{workflows/drop-skill → skf-drop-skill}/steps-c/step-02-execute.md +30 -106
- package/src/skf-drop-skill/steps-c/step-03-report.md +83 -0
- package/src/skf-drop-skill/steps-c/step-04-health-check.md +22 -0
- package/src/skf-export-skill/SKILL.md +57 -0
- package/src/skf-export-skill/assets/managed-section-format.md +138 -0
- package/src/{workflows/export-skill/data → skf-export-skill/assets}/snippet-format.md +8 -12
- package/src/skf-export-skill/steps-c/step-01-load-skill.md +247 -0
- package/src/{workflows/export-skill → skf-export-skill}/steps-c/step-02-package.md +5 -58
- package/src/{workflows/export-skill → skf-export-skill}/steps-c/step-03-generate-snippet.md +15 -77
- package/src/{workflows/export-skill → skf-export-skill}/steps-c/step-04-update-context.md +59 -133
- package/src/{workflows/export-skill → skf-export-skill}/steps-c/step-05-token-report.md +4 -58
- package/src/{workflows/export-skill → skf-export-skill}/steps-c/step-06-summary.md +20 -64
- package/src/skf-export-skill/steps-c/step-07-health-check.md +22 -0
- package/src/skf-forger/SKILL.md +110 -0
- package/src/skf-forger/bmad-skill-manifest.yaml +11 -0
- package/src/skf-quick-skill/SKILL.md +56 -0
- package/src/{workflows/quick-skill/data → skf-quick-skill/references}/registry-resolution.md +6 -6
- package/src/{workflows/quick-skill → skf-quick-skill}/steps-c/step-01-resolve-target.md +9 -62
- package/src/{workflows/quick-skill → skf-quick-skill}/steps-c/step-02-ecosystem-check.md +5 -59
- package/src/{workflows/quick-skill → skf-quick-skill}/steps-c/step-03-quick-extract.md +18 -61
- package/src/{workflows/quick-skill → skf-quick-skill}/steps-c/step-04-compile.md +6 -60
- package/src/{workflows/quick-skill → skf-quick-skill}/steps-c/step-05-validate.md +58 -78
- package/src/skf-quick-skill/steps-c/step-06-write.md +73 -0
- package/src/skf-quick-skill/steps-c/step-07-health-check.md +22 -0
- package/src/skf-refine-architecture/SKILL.md +57 -0
- package/src/{workflows/refine-architecture/data → skf-refine-architecture/references}/refinement-rules.md +16 -16
- package/src/{workflows/refine-architecture → skf-refine-architecture}/steps-c/step-01-init.md +6 -63
- package/src/{workflows/refine-architecture → skf-refine-architecture}/steps-c/step-02-gap-analysis.md +29 -71
- package/src/{workflows/refine-architecture → skf-refine-architecture}/steps-c/step-03-issue-detection.md +5 -65
- package/src/{workflows/refine-architecture → skf-refine-architecture}/steps-c/step-04-improvements.md +5 -64
- package/src/{workflows/refine-architecture → skf-refine-architecture}/steps-c/step-05-compile.md +5 -56
- package/src/{workflows/refine-architecture → skf-refine-architecture}/steps-c/step-06-report.md +14 -64
- package/src/skf-refine-architecture/steps-c/step-07-health-check.md +22 -0
- package/src/skf-rename-skill/SKILL.md +58 -0
- package/src/{workflows/rename-skill → skf-rename-skill}/steps-c/step-01-select.md +12 -73
- package/src/{workflows/rename-skill → skf-rename-skill}/steps-c/step-02-execute.md +32 -113
- package/src/skf-rename-skill/steps-c/step-03-report.md +83 -0
- package/src/skf-rename-skill/steps-c/step-04-health-check.md +22 -0
- package/src/skf-setup/SKILL.md +55 -0
- package/src/{workflows/setup-forge → skf-setup}/steps-c/step-01-detect-and-tier.md +6 -62
- package/src/{workflows/setup-forge → skf-setup}/steps-c/step-01b-ccc-index.md +9 -65
- package/src/{workflows/setup-forge → skf-setup}/steps-c/step-02-write-config.md +15 -60
- package/src/{workflows/setup-forge → skf-setup}/steps-c/step-03-auto-index.md +7 -66
- package/src/skf-setup/steps-c/step-04-report.md +92 -0
- package/src/skf-setup/steps-c/step-05-health-check.md +22 -0
- package/src/skf-test-skill/SKILL.md +59 -0
- package/src/skf-test-skill/references/migration-section-rules.md +114 -0
- package/src/skf-test-skill/references/scoring-rules.md +207 -0
- package/src/skf-test-skill/references/source-access-protocol.md +109 -0
- package/src/skf-test-skill/scripts/compute-score.py +310 -0
- package/src/skf-test-skill/steps-c/step-01-init.md +238 -0
- package/src/{workflows/test-skill → skf-test-skill}/steps-c/step-02-detect-mode.md +4 -62
- package/src/skf-test-skill/steps-c/step-03-coverage-check.md +347 -0
- package/src/skf-test-skill/steps-c/step-04-coherence-check.md +239 -0
- package/src/{workflows/test-skill → skf-test-skill}/steps-c/step-04b-external-validators.md +42 -77
- package/src/skf-test-skill/steps-c/step-05-score.md +266 -0
- package/src/skf-test-skill/steps-c/step-06-report.md +290 -0
- package/src/skf-test-skill/steps-c/step-07-health-check.md +25 -0
- package/src/skf-test-skill/templates/test-report-template.md +58 -0
- package/src/skf-update-skill/SKILL.md +58 -0
- package/src/{workflows/update-skill/data → skf-update-skill/references}/manual-section-rules.md +6 -6
- package/src/{workflows/update-skill/data → skf-update-skill/references}/merge-conflict-rules.md +5 -5
- package/src/skf-update-skill/references/remote-source-resolution.md +94 -0
- package/src/{workflows/update-skill → skf-update-skill}/steps-c/step-01-init.md +22 -69
- package/src/skf-update-skill/steps-c/step-02-detect-changes.md +255 -0
- package/src/skf-update-skill/steps-c/step-03-re-extract.md +336 -0
- package/src/{workflows/update-skill → skf-update-skill}/steps-c/step-04-merge.md +60 -72
- package/src/{workflows/update-skill → skf-update-skill}/steps-c/step-05-validate.md +5 -62
- package/src/skf-update-skill/steps-c/step-06-write.md +278 -0
- package/src/{workflows/update-skill → skf-update-skill}/steps-c/step-07-report.md +11 -66
- package/src/skf-update-skill/steps-c/step-08-health-check.md +22 -0
- package/src/skf-verify-stack/SKILL.md +60 -0
- package/src/skf-verify-stack/assets/feasibility-report-template.md +76 -0
- package/src/{workflows/verify-stack/data → skf-verify-stack/references}/coverage-patterns.md +12 -4
- package/src/skf-verify-stack/references/integration-verification-rules.md +78 -0
- package/src/skf-verify-stack/steps-c/step-01-init.md +178 -0
- package/src/{workflows/verify-stack → skf-verify-stack}/steps-c/step-02-coverage.md +27 -72
- package/src/skf-verify-stack/steps-c/step-03-integrations.md +179 -0
- package/src/{workflows/verify-stack → skf-verify-stack}/steps-c/step-04-requirements.md +14 -67
- package/src/skf-verify-stack/steps-c/step-05-synthesize.md +147 -0
- package/src/skf-verify-stack/steps-c/step-06-report.md +156 -0
- package/src/skf-verify-stack/steps-c/step-07-health-check.md +25 -0
- package/tools/cli/commands/install.js +1 -1
- package/tools/cli/commands/status.js +21 -23
- package/tools/cli/commands/uninstall.js +11 -19
- package/tools/cli/commands/update.js +2 -2
- package/tools/cli/lib/ide-skills.js +216 -0
- package/tools/cli/lib/installer.js +29 -52
- package/tools/cli/lib/manifest.js +11 -5
- package/tools/cli/lib/platform-codes.yaml +223 -0
- package/tools/cli/lib/ui.js +76 -47
- package/tools/validate-docs-drift.js +193 -0
- package/src/agents/forger.agent.yaml +0 -114
- package/src/workflows/README.md +0 -174
- package/src/workflows/analyze-source/data/skill-brief-schema.md +0 -125
- package/src/workflows/analyze-source/data/unit-detection-heuristics.md +0 -124
- package/src/workflows/analyze-source/workflow.md +0 -61
- package/src/workflows/audit-skill/workflow.md +0 -64
- package/src/workflows/brief-skill/data/skill-brief-schema.md +0 -159
- package/src/workflows/brief-skill/workflow.md +0 -58
- package/src/workflows/create-skill/data/source-resolution-protocols.md +0 -200
- package/src/workflows/create-skill/steps-c/step-03-extract.md +0 -301
- package/src/workflows/create-skill/steps-c/step-03b-fetch-temporal.md +0 -253
- package/src/workflows/create-skill/steps-c/step-06-validate.md +0 -254
- package/src/workflows/create-skill/steps-c/step-08-report.md +0 -176
- package/src/workflows/create-skill/workflow.md +0 -53
- package/src/workflows/create-stack-skill/steps-c/step-05-detect-integrations.md +0 -196
- package/src/workflows/create-stack-skill/steps-c/step-07-generate-output.md +0 -270
- package/src/workflows/create-stack-skill/steps-c/step-09-report.md +0 -145
- package/src/workflows/create-stack-skill/workflow.md +0 -59
- package/src/workflows/drop-skill/steps-c/step-03-report.md +0 -135
- package/src/workflows/drop-skill/workflow.md +0 -63
- package/src/workflows/export-skill/data/managed-section-format.md +0 -103
- package/src/workflows/export-skill/steps-c/step-01-load-skill.md +0 -237
- package/src/workflows/export-skill/workflow.md +0 -58
- package/src/workflows/quick-skill/steps-c/step-06-write.md +0 -179
- package/src/workflows/quick-skill/workflow.md +0 -58
- package/src/workflows/refine-architecture/workflow.md +0 -61
- package/src/workflows/rename-skill/steps-c/step-03-report.md +0 -132
- package/src/workflows/rename-skill/workflow.md +0 -64
- package/src/workflows/setup-forge/steps-c/step-04-report.md +0 -156
- package/src/workflows/setup-forge/workflow.md +0 -51
- package/src/workflows/test-skill/data/scoring-rules.md +0 -123
- package/src/workflows/test-skill/data/source-access-protocol.md +0 -51
- package/src/workflows/test-skill/steps-c/step-01-init.md +0 -217
- package/src/workflows/test-skill/steps-c/step-03-coverage-check.md +0 -280
- package/src/workflows/test-skill/steps-c/step-04-coherence-check.md +0 -271
- package/src/workflows/test-skill/steps-c/step-05-score.md +0 -222
- package/src/workflows/test-skill/steps-c/step-06-report.md +0 -207
- package/src/workflows/test-skill/templates/test-report-template.md +0 -28
- package/src/workflows/test-skill/workflow.md +0 -57
- package/src/workflows/update-skill/data/remote-source-resolution.md +0 -57
- package/src/workflows/update-skill/steps-c/step-02-detect-changes.md +0 -221
- package/src/workflows/update-skill/steps-c/step-03-re-extract.md +0 -256
- package/src/workflows/update-skill/steps-c/step-06-write.md +0 -265
- package/src/workflows/update-skill/workflow.md +0 -56
- package/src/workflows/verify-stack/data/feasibility-report-template.md +0 -63
- package/src/workflows/verify-stack/data/integration-verification-rules.md +0 -73
- package/src/workflows/verify-stack/steps-c/step-01-init.md +0 -179
- package/src/workflows/verify-stack/steps-c/step-03-integrations.md +0 -195
- package/src/workflows/verify-stack/steps-c/step-05-synthesize.md +0 -191
- package/src/workflows/verify-stack/steps-c/step-06-report.md +0 -197
- package/src/workflows/verify-stack/workflow.md +0 -61
- package/tools/cli/lib/compiler.js +0 -306
- package/tools/cli/lib/ide-commands.js +0 -244
- /package/src/{workflows/analyze-source → skf-analyze-source}/templates/analysis-report-template.md +0 -0
- /package/src/{workflows/quick-skill/data → skf-quick-skill/assets}/skill-template.md +0 -0
- /package/src/{workflows/setup-forge/data → skf-setup/references}/tier-rules.md +0 -0
- /package/src/{workflows/test-skill/data → skf-test-skill/assets}/output-section-formats.md +0 -0
|
@@ -0,0 +1,206 @@
|
|
|
1
|
+
# Skill Brief Schema
|
|
2
|
+
|
|
3
|
+
## Required Fields
|
|
4
|
+
|
|
5
|
+
| Field | Type | Constraint | Description |
|
|
6
|
+
|-------------|--------|--------------------------------------------------|-----------------------------------------------------------------------------|
|
|
7
|
+
| name | string | kebab-case `[a-z0-9-]+` | Unique skill identifier |
|
|
8
|
+
| version | string | Semantic version (`X.Y.Z` or `X.Y.Z-prerelease`) | Auto-detect from source (see Version Detection below), fall back to `1.0.0`. **Side effect on remote sources:** `skf-create-skill` treats `version` as an **implicit** `target_version` hint when `target_version` itself is absent — it will try to resolve `{version}` or `v{version}` to a git tag before cloning and fall back to HEAD with a warning if no tag matches. See `skf-create-skill/references/source-resolution-protocols.md` → "Implicit Tag Resolution". |
|
|
9
|
+
| source_repo | string | GitHub URL or local path | Repository or project root (optional when `source_type: "docs-only"`) |
|
|
10
|
+
| language | string | Recognized language | Primary programming language |
|
|
11
|
+
| scope | object | See Scope Object below | Boundary definition |
|
|
12
|
+
| description | string | 1-3 sentences | What the skill covers |
|
|
13
|
+
| forge_tier | string | `Quick` / `Forge` / `Forge+` / `Deep` | Inherited from forge-tier.yaml (Title Case) |
|
|
14
|
+
| created | string | ISO date `YYYY-MM-DD` | Generation date |
|
|
15
|
+
| created_by | string | user_name from config | Who generated the brief |
|
|
16
|
+
|
|
17
|
+
## Optional Fields
|
|
18
|
+
|
|
19
|
+
| Field | Type | Constraint | Description |
|
|
20
|
+
|--------------------|--------|--------------------------------------------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
|
|
21
|
+
| source_type | string | `source` or `docs-only` | Default `source`. When `docs-only`: `source_repo` optional, `doc_urls` required |
|
|
22
|
+
| doc_urls | array | `{url, label}` objects | Documentation URLs for T3 content. Required when `source_type: "docs-only"` |
|
|
23
|
+
| `scripts_intent` | string | `detect` / `none` / free-text | Describes whether scripts should be extracted. Values: `detect` (auto-detect from source — default when absent), `none` (skip scripts), or a free-text description of expected scripts (e.g., "CLI validation tools in bin/"). |
|
|
24
|
+
| `assets_intent` | string | `detect` / `none` / free-text | Describes whether assets should be extracted. Values: `detect` (auto-detect from source — default when absent), `none` (skip assets), or a free-text description of expected assets (e.g., "JSON schemas in schemas/"). |
|
|
25
|
+
| `target_version` | string | Semantic version (`X.Y.Z` or `X.Y.Z-prerelease`) | User-specified target version. When present, overrides auto-detection and becomes the skill's version. Recommended for docs-only skills where auto-detection is unavailable. |
|
|
26
|
+
| `source_authority` | string | `official` / `community` / `internal` | Default `community`. Set to `official` only when the skill creator is the library maintainer. Forced to `community` when `source_type: "docs-only"`. |
|
|
27
|
+
| `source_ref` | string | Git ref (tag/branch/HEAD) | Resolved git ref used for source access. Set automatically during tag resolution — do not set manually. |
|
|
28
|
+
| `scope.tier_a_include` | array | Glob patterns | Optional. Narrower tier-A include list for stratified-scope monorepo skills. When present, `skf-test-skill` re-derives the coverage denominator from this list instead of the coarse `scope.include`, so the denominator reflects the authoring surface rather than incidentally-matched internal infrastructure. See `skf-test-skill/references/source-access-protocol.md` stratified-scope resolution. |
|
|
29
|
+
|
|
30
|
+
When `source_type: "docs-only"`:
|
|
31
|
+
- `source_repo` becomes optional (set to doc site URL for reference)
|
|
32
|
+
- `doc_urls` must have at least one entry
|
|
33
|
+
- `source_authority` is forced to `community` (T3 external documentation cannot be `official`)
|
|
34
|
+
- All extracted content gets `[EXT:{url}]` citations
|
|
35
|
+
|
|
36
|
+
## Version Detection
|
|
37
|
+
|
|
38
|
+
During brief creation, attempt to auto-detect the source version before defaulting to `"1.0.0"`. Check the first matching file in the source:
|
|
39
|
+
|
|
40
|
+
- **Python:** `pyproject.toml` `[project] version` (static) → if `dynamic = ["version"]`, check `__init__.py` for `__version__` → `_version.py` if exists → `setup.py` `version=` → `git describe --tags --abbrev=0`
|
|
41
|
+
- **JavaScript/TypeScript:** root `package.json` (`"version"`) → if root has `"private": true` with a `"workspaces"` array or lacks a `"version"` field, fall back to a primary workspace package's `package.json` (e.g., `code/core/package.json`, or the first matching `packages/*/package.json`). For GitHub sources, prefer `gh api repos/{owner}/{repo}/releases/latest` → `tag_name` when a non-pre-release tag exists, over a default-branch pre-release. Treat a version containing `-alpha`, `-beta`, `-rc`, `-next`, or `-canary` as a pre-release.
|
|
42
|
+
- **Rust:** `Cargo.toml` `[package] version` (static) → if `version = { workspace = true }`, resolve from workspace root `Cargo.toml` → `git describe --tags --abbrev=0`
|
|
43
|
+
- **Go:** version tag from `go.mod` or `git describe --tags --abbrev=0`
|
|
44
|
+
|
|
45
|
+
If the source is a remote GitHub repo, use `gh api repos/{owner}/{repo}/contents/{file}` to read the version file. If the source is local, read the file directly.
|
|
46
|
+
|
|
47
|
+
If detection succeeds, use the detected version. If it fails or returns a non-semver value, fall back to `"1.0.0"`.
|
|
48
|
+
|
|
49
|
+
The create-skill workflow (step-03-extract) also performs version reconciliation at extraction time — if the source version has changed since the brief was created, the extraction step warns and uses the source version.
|
|
50
|
+
|
|
51
|
+
**Target version override:** When `target_version` is present in the brief, it takes precedence over auto-detection. Auto-detection still runs for informational purposes (displayed as "Detected version" alongside the user-specified "Target version"), but the `target_version` value is used as the brief's `version` field. This is particularly useful for docs-only skills (where no package manifest exists) and when the user wants to compile a skill for a specific older version.
|
|
52
|
+
|
|
53
|
+
**Pre-release handling:** If the detected version contains a pre-release tag (e.g., `1.0.0-beta.0`, `2.0.0-rc.1`), preserve it as-is. Pre-release tags are valid semver and must not be stripped. When comparing versions during reconciliation, use semver-aware comparison that respects pre-release ordering.
|
|
54
|
+
|
|
55
|
+
## Scope Object Structure
|
|
56
|
+
|
|
57
|
+
```yaml
|
|
58
|
+
scope:
|
|
59
|
+
type: full-library | specific-modules | public-api | component-library | reference-app | docs-only
|
|
60
|
+
include:
|
|
61
|
+
- "src/**/*.ts" # Glob patterns for included files/directories
|
|
62
|
+
exclude:
|
|
63
|
+
- "**/*.test.*" # Glob patterns for excluded files
|
|
64
|
+
- "**/node_modules/**"
|
|
65
|
+
# Optional: narrower tier-A include list for stratified-scope monorepos
|
|
66
|
+
# tier_a_include:
|
|
67
|
+
# - "code/core/src/manager-api/**"
|
|
68
|
+
# - "code/core/src/preview-api/**"
|
|
69
|
+
notes: "Optional notes about scope decisions"
|
|
70
|
+
# Optional: amendment log for scope decisions made during create-skill §2a
|
|
71
|
+
# amendments:
|
|
72
|
+
# - path: "apps/docs/public/llms.txt"
|
|
73
|
+
# action: "promoted" # "promoted" | "skipped"
|
|
74
|
+
# reason: "authoritative AI docs — only source for canonical install command"
|
|
75
|
+
# heuristic: "llms.txt"
|
|
76
|
+
# date: "2026-04-11"
|
|
77
|
+
# workflow: "skf-create-skill"
|
|
78
|
+
# Additional fields when scope.type is "component-library":
|
|
79
|
+
# registry_path: "path/to/registry.ts" # Optional — auto-detected if omitted
|
|
80
|
+
# ui_variants: # Optional — design system variants
|
|
81
|
+
# - name: "shadcnui"
|
|
82
|
+
# package: "packages/components/react-shadcn"
|
|
83
|
+
# demo_patterns: # Optional — auto-detected if omitted
|
|
84
|
+
# - "**/demo/**"
|
|
85
|
+
# - "**/*.stories.*"
|
|
86
|
+
```
|
|
87
|
+
|
|
88
|
+
### Scope Amendments (Optional)
|
|
89
|
+
|
|
90
|
+
`scope.amendments[]` is an additive, optional audit log of scope decisions made by workflows after the brief was first authored. Its primary writer is `skf-create-skill` §2a (Discovered Authoritative Files Protocol), which appends entries when extraction discovers authoritative AI documentation files (`llms.txt`, `AGENTS.md`, etc.) that the original scope patterns excluded.
|
|
91
|
+
|
|
92
|
+
**Entry fields:**
|
|
93
|
+
|
|
94
|
+
| Field | Type | Required | Description |
|
|
95
|
+
|---|---|---|---|
|
|
96
|
+
| `path` | string | yes | Relative path from source root to the file being amended. Matches the literal path added to `scope.include` (for `promoted` actions). |
|
|
97
|
+
| `action` | string | yes | One of: `promoted` (file added to scope with a literal `scope.include` entry), `skipped` (user declined promotion; file remains out of scope, decision recorded to prevent re-prompting). |
|
|
98
|
+
| `reason` | string | yes | Human-readable sentence explaining the decision. Either user-provided at prompt time or auto-generated ("authoritative AI docs — matched heuristic {basename}"). |
|
|
99
|
+
| `heuristic` | string | yes | The basename heuristic that matched (`llms.txt`, `AGENTS.md`, etc.) so future audits can verify the file still matches its original classification. |
|
|
100
|
+
| `date` | string | yes | ISO date (`YYYY-MM-DD`) when the amendment was recorded. |
|
|
101
|
+
| `workflow` | string | yes | Workflow name that wrote the amendment (`skf-create-skill`, `skf-update-skill`). Identifies which workflow's §2a-equivalent made the decision. |
|
|
102
|
+
|
|
103
|
+
**Promotion write-through:** When `action: "promoted"`, the workflow also appends the literal path to `scope.include`. This is a belt-and-suspenders design: future `skf-create-skill` runs read `scope.include` during §2 and include the file in the filtered list automatically, so §2a finds no candidate and does not re-prompt. The `amendments[]` entry is the human-readable audit trail of *why* the path was added.
|
|
104
|
+
|
|
105
|
+
**Skip recording:** When `action: "skipped"`, the workflow does NOT modify `scope.include` or `scope.exclude`. The amendment entry alone is enough to prevent re-prompting, because §2a checks `amendments[]` before prompting.
|
|
106
|
+
|
|
107
|
+
**Backward compatibility:** `scope.amendments` is optional. Briefs without this field validate unchanged. Treat missing as an empty list.
|
|
108
|
+
|
|
109
|
+
**Who reads `amendments[]`:**
|
|
110
|
+
|
|
111
|
+
- `skf-create-skill` §2a consults it to avoid re-prompting on decided files.
|
|
112
|
+
- `skf-update-skill` §1b (mirror of §2a) consults it for the same reason.
|
|
113
|
+
- `skf-audit-skill` may optionally report on stale promotions (promoted files that no longer exist in source) as a future enhancement — not currently implemented.
|
|
114
|
+
- Humans reading the brief see the audit trail of non-obvious scope decisions.
|
|
115
|
+
|
|
116
|
+
**Who writes `amendments[]`:**
|
|
117
|
+
|
|
118
|
+
- `skf-create-skill` §2a (Discovered Authoritative Files Protocol)
|
|
119
|
+
- `skf-update-skill` §1b (mirror of §2a applied during change detection)
|
|
120
|
+
- Manual edits by the brief author are permitted but should include all required fields above.
|
|
121
|
+
|
|
122
|
+
## YAML Template
|
|
123
|
+
|
|
124
|
+
```yaml
|
|
125
|
+
---
|
|
126
|
+
name: "{skill-name}"
|
|
127
|
+
version: "{detected-version or 1.0.0}" # Auto-detect from source, fall back to 1.0.0
|
|
128
|
+
source_type: "source" # "source" (default) or "docs-only"
|
|
129
|
+
source_repo: "{github-url-or-local-path}"
|
|
130
|
+
language: "{detected-language}"
|
|
131
|
+
description: "{brief-description}"
|
|
132
|
+
forge_tier: "{Quick|Forge|Forge+|Deep}"
|
|
133
|
+
created: "{date}"
|
|
134
|
+
created_by: "{user_name}"
|
|
135
|
+
scope:
|
|
136
|
+
type: "{full-library|specific-modules|public-api|component-library|reference-app|docs-only}"
|
|
137
|
+
include:
|
|
138
|
+
- "{pattern}"
|
|
139
|
+
exclude:
|
|
140
|
+
- "{pattern}"
|
|
141
|
+
notes: "{optional-scope-notes}"
|
|
142
|
+
# target_version: "X.Y.Z" # Optional: overrides auto-detection when specified
|
|
143
|
+
# source_ref: "v0.5.0" # Auto-resolved — do not set manually
|
|
144
|
+
# Optional: documentation URLs for T3 content (required when source_type: "docs-only")
|
|
145
|
+
# doc_urls:
|
|
146
|
+
# - url: "https://docs.example.com/api"
|
|
147
|
+
# label: "API Reference"
|
|
148
|
+
# scripts_intent: detect # Optional: detect | none | description
|
|
149
|
+
# assets_intent: detect # Optional: detect | none | description
|
|
150
|
+
# source_authority: community # Optional: official | community | internal
|
|
151
|
+
---
|
|
152
|
+
```
|
|
153
|
+
|
|
154
|
+
## Human-Readable Presentation Format
|
|
155
|
+
|
|
156
|
+
When presenting the brief for confirmation (brief-skill step 04 only — not applicable to analyze-source batch generation), display as:
|
|
157
|
+
|
|
158
|
+
```
|
|
159
|
+
Skill Brief: {name}
|
|
160
|
+
====================
|
|
161
|
+
|
|
162
|
+
Target: {source_repo}
|
|
163
|
+
Language: {language}
|
|
164
|
+
Forge Tier: {forge_tier}
|
|
165
|
+
Description: {description}
|
|
166
|
+
|
|
167
|
+
Scope: {scope.type}
|
|
168
|
+
Include: {scope.include patterns, one per line}
|
|
169
|
+
Exclude: {scope.exclude patterns, one per line}
|
|
170
|
+
Notes: {scope.notes}
|
|
171
|
+
|
|
172
|
+
{If source_type is "docs-only":}
|
|
173
|
+
Source Type: docs-only
|
|
174
|
+
Doc URLs:
|
|
175
|
+
{doc_urls, one per line with labels}
|
|
176
|
+
|
|
177
|
+
{If source_type is "source" AND supplemental doc_urls collected:}
|
|
178
|
+
Supplemental Docs:
|
|
179
|
+
{doc_urls, one per line with labels}
|
|
180
|
+
|
|
181
|
+
{If scripts_intent or assets_intent was explicitly set (not default "detect"):}
|
|
182
|
+
Scripts: {scripts_intent}
|
|
183
|
+
Assets: {assets_intent}
|
|
184
|
+
|
|
185
|
+
Source Authority: {source_authority}
|
|
186
|
+
|
|
187
|
+
{If target_version is set:}
|
|
188
|
+
Target Version: {target_version} (user-specified)
|
|
189
|
+
Detected Version: {detected_version or "N/A"}
|
|
190
|
+
{Else:}
|
|
191
|
+
Version: {version}
|
|
192
|
+
{End if}
|
|
193
|
+
Created: {created}
|
|
194
|
+
Created by: {created_by}
|
|
195
|
+
```
|
|
196
|
+
|
|
197
|
+
## Validation Rules
|
|
198
|
+
|
|
199
|
+
1. `name` must be unique within {forge_data_folder}
|
|
200
|
+
2. `source_repo` must be accessible (gh api for GitHub, path exists for local)
|
|
201
|
+
3. `language` must be a recognized programming language
|
|
202
|
+
4. `scope.type` must be one of the six defined types
|
|
203
|
+
5. `scope.include` must have at least one pattern (exception: `docs-only` scope, where include patterns are optional since no source code is available)
|
|
204
|
+
6. `forge_tier` must be one of: Quick, Forge, Forge+, Deep (Title Case, must match the tier from forge-tier.yaml, or default to Quick)
|
|
205
|
+
7. When `source_type: "docs-only"`: `doc_urls` must have >= 1 entry, `source_repo` becomes optional
|
|
206
|
+
8. Each `doc_urls` entry must have a valid `url` field
|
|
@@ -1,7 +1,4 @@
|
|
|
1
1
|
---
|
|
2
|
-
name: 'step-01-gather-intent'
|
|
3
|
-
description: 'Initialize brief-skill workflow, discover forge tier, and gather user intent for skill creation'
|
|
4
|
-
|
|
5
2
|
nextStepFile: './step-02-analyze-target.md'
|
|
6
3
|
forgeTierFile: '{sidecar_path}/forge-tier.yaml'
|
|
7
4
|
---
|
|
@@ -12,45 +9,11 @@ forgeTierFile: '{sidecar_path}/forge-tier.yaml'
|
|
|
12
9
|
|
|
13
10
|
To initialize the brief-skill workflow by discovering the forge tier configuration, then gathering the user's target repository, intent, and any upfront scope hints for skill creation.
|
|
14
11
|
|
|
15
|
-
##
|
|
16
|
-
|
|
17
|
-
### Universal Rules:
|
|
18
|
-
|
|
19
|
-
- 🛑 NEVER generate content without user input
|
|
20
|
-
- 📖 CRITICAL: Read the complete step file before taking any action
|
|
21
|
-
- 🔄 CRITICAL: When loading next step with 'C', ensure entire file is read
|
|
22
|
-
- 📋 YOU ARE A FACILITATOR, not a content generator
|
|
23
|
-
- ✅ YOU MUST ALWAYS SPEAK OUTPUT In your Agent communication style with the config `{communication_language}`
|
|
24
|
-
- ⚙️ TOOL/SUBPROCESS FALLBACK: If any instruction references a subprocess, subagent, or tool you do not have access to, you MUST still achieve the outcome in your main context thread
|
|
25
|
-
|
|
26
|
-
### Role Reinforcement:
|
|
27
|
-
|
|
28
|
-
- ✅ You are a skill scoping architect in Ferris Architect mode (exploratory, collaborative)
|
|
29
|
-
- ✅ If you already have been given a name, communication_style and identity, continue to use those while playing this new role
|
|
30
|
-
- ✅ We engage in collaborative dialogue, not command-response
|
|
31
|
-
- ✅ You bring source code analysis and skill design expertise, user brings their domain knowledge and use case
|
|
32
|
-
- ✅ Maintain a warm, guiding tone — this is a discovery conversation
|
|
33
|
-
|
|
34
|
-
### Step-Specific Rules:
|
|
35
|
-
|
|
36
|
-
- 🎯 Focus only on gathering intent — do not analyze the repo yet (that's step 02)
|
|
37
|
-
- 🚫 FORBIDDEN to examine source code or list exports in this step
|
|
38
|
-
- 💬 Approach: Open-ended discovery facilitation — "What interests you about this library?"
|
|
39
|
-
- 📋 Collect: target repo, user intent, scope hints, skill name
|
|
40
|
-
|
|
41
|
-
## EXECUTION PROTOCOLS:
|
|
42
|
-
|
|
43
|
-
- 🎯 Follow the MANDATORY SEQUENCE exactly
|
|
44
|
-
- 💾 Accumulate gathered information conversationally for use in subsequent steps
|
|
45
|
-
- 📖 This is the init step — sets up everything that follows
|
|
46
|
-
- 🚫 FORBIDDEN to proceed without a confirmed target repository
|
|
12
|
+
## Rules
|
|
47
13
|
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
-
|
|
51
|
-
- Focus: Understanding WHAT the user wants to skill and WHY
|
|
52
|
-
- Limits: Do not analyze source code, detect language, or list exports — that's step 02
|
|
53
|
-
- Dependencies: None — this is the first step
|
|
14
|
+
- Focus only on gathering intent — do not analyze the repo yet (Step 02)
|
|
15
|
+
- Do not examine source code or list exports in this step
|
|
16
|
+
- Open-ended discovery facilitation — collect target repo, user intent, scope hints, skill name
|
|
54
17
|
|
|
55
18
|
## MANDATORY SEQUENCE
|
|
56
19
|
|
|
@@ -67,7 +30,7 @@ Attempt to load `{forgeTierFile}`:
|
|
|
67
30
|
**Apply tier override:** Read `{sidecar_path}/preferences.yaml`. If `tier_override` is set and is a valid tier value (Quick, Forge, Forge+, or Deep), use it instead of the detected tier.
|
|
68
31
|
|
|
69
32
|
**If not found:**
|
|
70
|
-
- "**Cannot proceed.** forge-tier.yaml not found at `{forgeTierFile}`. Please run the **setup
|
|
33
|
+
- "**Cannot proceed.** forge-tier.yaml not found at `{forgeTierFile}`. Please run the **setup** workflow first to configure your forge tier (Quick/Forge/Forge+/Deep)."
|
|
71
34
|
- HALT — do not proceed.
|
|
72
35
|
|
|
73
36
|
### 2. Welcome and Explain
|
|
@@ -207,34 +170,10 @@ Display: "**Select:** [C] Continue to Target Analysis"
|
|
|
207
170
|
#### EXECUTION RULES:
|
|
208
171
|
|
|
209
172
|
- ALWAYS halt and wait for user input after presenting menu
|
|
173
|
+
- **GATE [default: use args]** — If `{headless_mode}`: consume pre-supplied arguments (target_repo, skill_name, scope_hint, language_hint) and auto-proceed. If required args missing, HALT: "headless mode requires target_repo and skill_name arguments."
|
|
210
174
|
- ONLY proceed to next step when user selects 'C'
|
|
211
175
|
|
|
212
176
|
## CRITICAL STEP COMPLETION NOTE
|
|
213
177
|
|
|
214
178
|
ONLY WHEN C is selected and target repository is confirmed will you load and read fully `./step-02-analyze-target.md` to execute target analysis.
|
|
215
179
|
|
|
216
|
-
---
|
|
217
|
-
|
|
218
|
-
## 🚨 SYSTEM SUCCESS/FAILURE METRICS
|
|
219
|
-
|
|
220
|
-
### ✅ SUCCESS:
|
|
221
|
-
|
|
222
|
-
- Forge tier discovered (HALT if missing), override applied if set in preferences.yaml
|
|
223
|
-
- Target repository confirmed (GitHub URL or local path)
|
|
224
|
-
- User intent captured with enough context for scoping
|
|
225
|
-
- Skill name derived and confirmed
|
|
226
|
-
- Scope hints noted (if provided)
|
|
227
|
-
- Source type and source authority captured
|
|
228
|
-
- Target version captured (if provided)
|
|
229
|
-
- User ready to proceed to analysis
|
|
230
|
-
|
|
231
|
-
### ❌ SYSTEM FAILURE:
|
|
232
|
-
|
|
233
|
-
- Analyzing source code in this step (too early)
|
|
234
|
-
- Proceeding without a confirmed target repository
|
|
235
|
-
- Not halting when forge tier is missing
|
|
236
|
-
- Not attempting to discover forge tier
|
|
237
|
-
- Generating a skill name without user confirmation
|
|
238
|
-
- Skipping the intent gathering conversation
|
|
239
|
-
|
|
240
|
-
**Master Rule:** Skipping steps, optimizing sequences, or not following exact instructions is FORBIDDEN and constitutes SYSTEM FAILURE.
|
|
@@ -1,7 +1,4 @@
|
|
|
1
1
|
---
|
|
2
|
-
name: 'step-02-analyze-target'
|
|
3
|
-
description: 'Analyze target repository structure, detect language, and list modules and exports'
|
|
4
|
-
|
|
5
2
|
nextStepFile: './step-03-scope-definition.md'
|
|
6
3
|
---
|
|
7
4
|
|
|
@@ -11,45 +8,11 @@ nextStepFile: './step-03-scope-definition.md'
|
|
|
11
8
|
|
|
12
9
|
To analyze the target repository by resolving its location, reading its structure, detecting the primary language, and listing top-level modules and exports — providing the user with a factual foundation for scoping decisions.
|
|
13
10
|
|
|
14
|
-
##
|
|
15
|
-
|
|
16
|
-
### Universal Rules:
|
|
17
|
-
|
|
18
|
-
- 🛑 NEVER generate content without user input
|
|
19
|
-
- 📖 CRITICAL: Read the complete step file before taking any action
|
|
20
|
-
- 🔄 CRITICAL: When loading next step with 'C', ensure entire file is read
|
|
21
|
-
- 📋 YOU ARE A FACILITATOR, not a content generator
|
|
22
|
-
- ✅ YOU MUST ALWAYS SPEAK OUTPUT In your Agent communication style with the config `{communication_language}`
|
|
23
|
-
- ⚙️ TOOL/SUBPROCESS FALLBACK: If any instruction references a subprocess, subagent, or tool you do not have access to, you MUST still achieve the outcome in your main context thread
|
|
24
|
-
|
|
25
|
-
### Role Reinforcement:
|
|
26
|
-
|
|
27
|
-
- ✅ You are a source code analyst in Ferris Architect mode
|
|
28
|
-
- ✅ If you already have been given a name, communication_style and identity, continue to use those while playing this new role
|
|
29
|
-
- ✅ Report ONLY what is found — zero hallucination tolerance
|
|
30
|
-
- ✅ You bring structural analysis expertise, user brings their domain understanding
|
|
31
|
-
|
|
32
|
-
### Step-Specific Rules:
|
|
33
|
-
|
|
34
|
-
- 🎯 Focus only on analysis — do not define scope yet (that's step 03)
|
|
35
|
-
- 🚫 FORBIDDEN to make scoping decisions or recommendations in this step
|
|
36
|
-
- 🚫 FORBIDDEN to hallucinate or guess about repository contents
|
|
37
|
-
- 💬 Approach: Prescriptive — exact analysis instructions, factual reporting
|
|
38
|
-
- 📋 Report everything found; let the user interpret for scoping
|
|
39
|
-
|
|
40
|
-
## EXECUTION PROTOCOLS:
|
|
41
|
-
|
|
42
|
-
- 🎯 Follow the MANDATORY SEQUENCE exactly
|
|
43
|
-
- 💾 Analysis results are accumulated conversationally for use in step 03
|
|
44
|
-
- 📖 This step is autonomous — minimal user interaction required
|
|
45
|
-
- 🚫 FORBIDDEN to proceed if target is inaccessible — halt with actionable error
|
|
11
|
+
## Rules
|
|
46
12
|
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
-
|
|
50
|
-
- Focus: Structural analysis of the repository
|
|
51
|
-
- Limits: Do not read file contents deeply — only structure, exports, and metadata
|
|
52
|
-
- Dependencies: Confirmed target repository from step 01
|
|
13
|
+
- Focus only on analysis — do not define scope yet (Step 03)
|
|
14
|
+
- Do not make scoping decisions or recommendations
|
|
15
|
+
- Do not hallucinate or guess about repository contents
|
|
53
16
|
|
|
54
17
|
## MANDATORY SEQUENCE
|
|
55
18
|
|
|
@@ -148,7 +111,7 @@ If `tools.ccc` is true in forge-tier.yaml, supplement the module listing with a
|
|
|
148
111
|
- **Cursor:** Use `ccc` MCP server `search` tool with query `"{repo_name} public API exports modules"` and path `{source_path}`
|
|
149
112
|
- **CLI fallback:** `ccc search "{repo_name} public API exports modules" --path {source_path} --limit 10`
|
|
150
113
|
|
|
151
|
-
See
|
|
114
|
+
See `knowledge/tool-resolution.md` for full bridge-to-tool mapping.
|
|
152
115
|
|
|
153
116
|
If results are returned, display:
|
|
154
117
|
|
|
@@ -168,7 +131,7 @@ If CCC is unavailable or returns no results: skip this subsection silently.
|
|
|
168
131
|
Attempt to auto-detect the source version using the rules from the skill-brief-schema.md Version Detection section:
|
|
169
132
|
|
|
170
133
|
**For Python:** Check `pyproject.toml` `[project] version` (static) → if `dynamic = ["version"]`, check `__init__.py` for `__version__` → `_version.py` if exists → `setup.py` `version=` → `git describe --tags --abbrev=0`
|
|
171
|
-
**For JavaScript/TypeScript:** Check `package.json` `"version"` field
|
|
134
|
+
**For JavaScript/TypeScript:** Check root `package.json` `"version"` field → if root has `"private": true` with a `"workspaces"` array or lacks a `"version"` field, fall back to a primary workspace package's `package.json` (e.g., `code/core/package.json`, or the first matching `packages/*/package.json`). For GitHub sources, prefer `gh api repos/{owner}/{repo}/releases/latest` → `tag_name` when a non-pre-release tag exists, over a default-branch pre-release. Treat a version containing `-alpha`, `-beta`, `-rc`, `-next`, or `-canary` as a pre-release.
|
|
172
135
|
**For Rust:** Check `Cargo.toml` `[package] version` (static) → if `version = { workspace = true }`, resolve from workspace root `Cargo.toml` → `git describe --tags --abbrev=0`
|
|
173
136
|
**For Go:** Check `go.mod` or `git describe --tags --abbrev=0`
|
|
174
137
|
|
|
@@ -239,26 +202,3 @@ Pause briefly for user input. If the user provides corrections or asks questions
|
|
|
239
202
|
|
|
240
203
|
ONLY WHEN the analysis is complete and the summary has been presented to the user will you load and read fully `./step-03-scope-definition.md` to begin scope definition.
|
|
241
204
|
|
|
242
|
-
---
|
|
243
|
-
|
|
244
|
-
## 🚨 SYSTEM SUCCESS/FAILURE METRICS
|
|
245
|
-
|
|
246
|
-
### ✅ SUCCESS:
|
|
247
|
-
|
|
248
|
-
- Target repository resolved and accessible
|
|
249
|
-
- Repository structure listed clearly
|
|
250
|
-
- Primary language detected with confidence level
|
|
251
|
-
- Top-level modules and exports identified
|
|
252
|
-
- Source version detected (or default noted)
|
|
253
|
-
- Analysis summary presented factually
|
|
254
|
-
- Auto-proceeded to scope definition (with pause for corrections)
|
|
255
|
-
|
|
256
|
-
### ❌ SYSTEM FAILURE:
|
|
257
|
-
|
|
258
|
-
- Hallucinating or guessing about repository contents
|
|
259
|
-
- Making scoping recommendations (too early — that's step 03)
|
|
260
|
-
- Proceeding when target is inaccessible (must halt with error)
|
|
261
|
-
- Not detecting or reporting the primary language
|
|
262
|
-
- Skipping the analysis summary
|
|
263
|
-
|
|
264
|
-
**Master Rule:** Skipping steps, optimizing sequences, or not following exact instructions is FORBIDDEN and constitutes SYSTEM FAILURE.
|
|
@@ -1,9 +1,6 @@
|
|
|
1
1
|
---
|
|
2
|
-
name: 'step-03-scope-definition'
|
|
3
|
-
description: 'Collaboratively define skill scope boundaries using analysis findings and scope templates'
|
|
4
|
-
|
|
5
2
|
nextStepFile: './step-04-confirm-brief.md'
|
|
6
|
-
scopeTemplatesFile: '
|
|
3
|
+
scopeTemplatesFile: 'assets/scope-templates.md'
|
|
7
4
|
advancedElicitationSkill: '/bmad-advanced-elicitation'
|
|
8
5
|
partyModeSkill: '/bmad-party-mode'
|
|
9
6
|
---
|
|
@@ -14,45 +11,11 @@ partyModeSkill: '/bmad-party-mode'
|
|
|
14
11
|
|
|
15
12
|
To collaboratively define the skill's inclusion and exclusion boundaries using the analysis findings from step 02, scope templates, and the user's intent from step 01.
|
|
16
13
|
|
|
17
|
-
##
|
|
18
|
-
|
|
19
|
-
### Universal Rules:
|
|
20
|
-
|
|
21
|
-
- 🛑 NEVER generate content without user input
|
|
22
|
-
- 📖 CRITICAL: Read the complete step file before taking any action
|
|
23
|
-
- 🔄 CRITICAL: When loading next step with 'C', ensure entire file is read
|
|
24
|
-
- 📋 YOU ARE A FACILITATOR, not a content generator
|
|
25
|
-
- ✅ YOU MUST ALWAYS SPEAK OUTPUT In your Agent communication style with the config `{communication_language}`
|
|
26
|
-
- ⚙️ TOOL/SUBPROCESS FALLBACK: If any instruction references a subprocess, subagent, or tool you do not have access to, you MUST still achieve the outcome in your main context thread
|
|
27
|
-
|
|
28
|
-
### Role Reinforcement:
|
|
29
|
-
|
|
30
|
-
- ✅ You are a skill boundary architect in Ferris Architect mode (collaborative, exploratory)
|
|
31
|
-
- ✅ If you already have been given a name, communication_style and identity, continue to use those while playing this new role
|
|
32
|
-
- ✅ We engage in collaborative dialogue, not command-response
|
|
33
|
-
- ✅ You bring API surface design expertise, user brings their domain knowledge of what's valuable
|
|
34
|
-
- ✅ Maintain warm, guiding tone — help the user make informed scoping decisions
|
|
35
|
-
|
|
36
|
-
### Step-Specific Rules:
|
|
37
|
-
|
|
38
|
-
- 🎯 Focus only on defining scope boundaries — do not write the brief yet (that's step 05)
|
|
39
|
-
- 🚫 FORBIDDEN to make scope decisions unilaterally — user drives all scope choices
|
|
40
|
-
- 💬 Approach: Intent-based discovery — "Which parts are most relevant to your use case?"
|
|
41
|
-
- 📋 Produce: scope type, include patterns, exclude patterns
|
|
42
|
-
|
|
43
|
-
## EXECUTION PROTOCOLS:
|
|
44
|
-
|
|
45
|
-
- 🎯 Follow the MANDATORY SEQUENCE exactly
|
|
46
|
-
- 💾 Accumulate scope decisions conversationally for use in subsequent steps
|
|
47
|
-
- 📖 Reference analysis findings from step 02 throughout
|
|
48
|
-
- 🚫 FORBIDDEN to proceed without user confirmation of scope boundaries
|
|
14
|
+
## Rules
|
|
49
15
|
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
-
|
|
53
|
-
- Focus: Defining WHAT is in scope and what is NOT
|
|
54
|
-
- Limits: Do not generate the brief — only define boundaries
|
|
55
|
-
- Dependencies: Analysis findings from step 02
|
|
16
|
+
- Focus only on defining scope boundaries — do not write the brief yet (Step 05)
|
|
17
|
+
- Do not make scope decisions unilaterally — user drives all scope choices
|
|
18
|
+
- Produce: scope type, include patterns, exclude patterns
|
|
56
19
|
|
|
57
20
|
## MANDATORY SEQUENCE
|
|
58
21
|
|
|
@@ -104,9 +67,11 @@ Wait for confirmation. Record any changes to `doc_urls`.
|
|
|
104
67
|
|
|
105
68
|
**If no supplemental doc_urls were collected:** Skip this subsection.
|
|
106
69
|
|
|
70
|
+
**Scope guidance for first-time users:** A well-scoped skill covers one cohesive capability with 3-8 primary functions. If the scope includes unrelated concerns (e.g., authentication AND data visualization), suggest splitting into separate briefs. If the scope is too narrow (single utility function), suggest expanding to the surrounding capability surface.
|
|
71
|
+
|
|
107
72
|
### 2c. Offer Scope Templates
|
|
108
73
|
|
|
109
|
-
Load `{scopeTemplatesFile}` for the scope type options ([F], [M], [P], [C]) and their descriptions.
|
|
74
|
+
Load `{scopeTemplatesFile}` for the scope type options ([F], [M], [P], [C], [R]) and their descriptions.
|
|
110
75
|
|
|
111
76
|
Present: "**How broadly should this skill cover the library?**" followed by the scope type options from the loaded reference.
|
|
112
77
|
|
|
@@ -116,7 +81,7 @@ Wait for user selection.
|
|
|
116
81
|
|
|
117
82
|
### 3. Define Boundaries Based on Selection
|
|
118
83
|
|
|
119
|
-
Using the boundary definitions from `{scopeTemplatesFile}`, present the appropriate flow for the user's selected scope type ([F], [M], [P], or [
|
|
84
|
+
Using the boundary definitions from `{scopeTemplatesFile}`, present the appropriate flow for the user's selected scope type ([F], [M], [P], [C], or [R]). Follow each type's prompts and wait for user input at each phase before proceeding.
|
|
120
85
|
|
|
121
86
|
### 4. Handle Language Override
|
|
122
87
|
|
|
@@ -132,7 +97,7 @@ Wait for confirmation or override.
|
|
|
132
97
|
|
|
133
98
|
"**Scope Summary:**
|
|
134
99
|
|
|
135
|
-
**Type:** {Full Library / Specific Modules / Public API / Component Library}
|
|
100
|
+
**Type:** {Full Library / Specific Modules / Public API / Component Library / Reference App}
|
|
136
101
|
|
|
137
102
|
**Include:**
|
|
138
103
|
{bulleted list of include patterns}
|
|
@@ -151,7 +116,7 @@ Wait for confirmation. Make adjustments if requested.
|
|
|
151
116
|
|
|
152
117
|
### 5b. Scripts & Assets Intent (Optional)
|
|
153
118
|
|
|
154
|
-
**Only ask when `scope.type` is `full-library`, `specific-modules`,
|
|
119
|
+
**Only ask when `scope.type` is `full-library`, `specific-modules`, `component-library`, or `reference-app` (skip for `public-api` and `docs-only`). Reference apps routinely ship wiring scripts and build-config assets — prompt for them.**
|
|
155
120
|
|
|
156
121
|
"Does this library include executable scripts (CLI tools, validation scripts, setup helpers) or static assets (config templates, JSON schemas, example configs) that should be packaged with the skill?"
|
|
157
122
|
|
|
@@ -175,6 +140,7 @@ Display: **Select an Option:** [A] Advanced Elicitation [P] Party Mode [C] Conti
|
|
|
175
140
|
#### EXECUTION RULES:
|
|
176
141
|
|
|
177
142
|
- ALWAYS halt and wait for user input after presenting menu
|
|
143
|
+
- **GATE [default: C]** — If `{headless_mode}`: accept auto-detected scope (full-repo or manifest-based) and auto-proceed, log: "headless: using auto-detected scope"
|
|
178
144
|
- ONLY proceed to next step when user selects 'C'
|
|
179
145
|
- After other menu items execution, return to this menu
|
|
180
146
|
- User can chat or ask questions — always respond and then redisplay menu
|
|
@@ -183,25 +149,3 @@ Display: **Select an Option:** [A] Advanced Elicitation [P] Party Mode [C] Conti
|
|
|
183
149
|
|
|
184
150
|
ONLY WHEN C is selected and scope boundaries are confirmed will you load and read fully `./step-04-confirm-brief.md` to present the complete brief for confirmation.
|
|
185
151
|
|
|
186
|
-
---
|
|
187
|
-
|
|
188
|
-
## 🚨 SYSTEM SUCCESS/FAILURE METRICS
|
|
189
|
-
|
|
190
|
-
### ✅ SUCCESS:
|
|
191
|
-
|
|
192
|
-
- Scope type selected by user (Full Library, Specific Modules, Public API, or Component Library)
|
|
193
|
-
- Include patterns defined and confirmed
|
|
194
|
-
- Exclude patterns defined and confirmed
|
|
195
|
-
- Language confirmed (or overridden if detection was low confidence)
|
|
196
|
-
- User confirmed the scope summary
|
|
197
|
-
- Menu presented and user input handled correctly
|
|
198
|
-
|
|
199
|
-
### ❌ SYSTEM FAILURE:
|
|
200
|
-
|
|
201
|
-
- Making scope decisions without user input
|
|
202
|
-
- Not presenting the scope templates for user selection
|
|
203
|
-
- Skipping the scope summary confirmation
|
|
204
|
-
- Not handling language override when detection confidence was low
|
|
205
|
-
- Writing the brief in this step (too early — that's step 05)
|
|
206
|
-
|
|
207
|
-
**Master Rule:** Skipping steps, optimizing sequences, or not following exact instructions is FORBIDDEN and constitutes SYSTEM FAILURE.
|
|
@@ -1,10 +1,7 @@
|
|
|
1
1
|
---
|
|
2
|
-
name: 'step-04-confirm-brief'
|
|
3
|
-
description: 'Present complete skill brief for user review and confirmation before writing'
|
|
4
|
-
|
|
5
2
|
nextStepFile: './step-05-write-brief.md'
|
|
6
3
|
reviseStepFile: './step-03-scope-definition.md'
|
|
7
|
-
briefSchemaFile: '
|
|
4
|
+
briefSchemaFile: 'assets/skill-brief-schema.md'
|
|
8
5
|
advancedElicitationSkill: '/bmad-advanced-elicitation'
|
|
9
6
|
partyModeSkill: '/bmad-party-mode'
|
|
10
7
|
---
|
|
@@ -15,44 +12,10 @@ partyModeSkill: '/bmad-party-mode'
|
|
|
15
12
|
|
|
16
13
|
To present the complete skill brief in human-readable format, highlighting all fields that will be written to skill-brief.yaml, and obtain explicit user approval before writing.
|
|
17
14
|
|
|
18
|
-
##
|
|
19
|
-
|
|
20
|
-
### Universal Rules:
|
|
21
|
-
|
|
22
|
-
- 🛑 NEVER generate content without user input
|
|
23
|
-
- 📖 CRITICAL: Read the complete step file before taking any action
|
|
24
|
-
- 🔄 CRITICAL: When loading next step with 'C', ensure entire file is read
|
|
25
|
-
- 📋 YOU ARE A FACILITATOR, not a content generator
|
|
26
|
-
- ✅ YOU MUST ALWAYS SPEAK OUTPUT In your Agent communication style with the config `{communication_language}`
|
|
27
|
-
- ⚙️ TOOL/SUBPROCESS FALLBACK: If any instruction references a subprocess, subagent, or tool you do not have access to, you MUST still achieve the outcome in your main context thread
|
|
28
|
-
|
|
29
|
-
### Role Reinforcement:
|
|
30
|
-
|
|
31
|
-
- ✅ You are a quality reviewer in Ferris Architect mode
|
|
32
|
-
- ✅ If you already have been given a name, communication_style and identity, continue to use those while playing this new role
|
|
33
|
-
- ✅ Present information precisely and clearly — this is a confirmation gate
|
|
34
|
-
- ✅ Highlight anything with low confidence or defaults that the user should verify
|
|
35
|
-
|
|
36
|
-
### Step-Specific Rules:
|
|
37
|
-
|
|
38
|
-
- 🎯 Focus only on presenting and confirming — do not write files yet (that's step 05)
|
|
39
|
-
- 🚫 FORBIDDEN to proceed without explicit user approval
|
|
40
|
-
- 💬 Approach: Prescriptive — exact presentation format showing all YAML fields
|
|
41
|
-
- 📋 This is a P2 confirmation gate — the user MUST approve before continuing
|
|
42
|
-
|
|
43
|
-
## EXECUTION PROTOCOLS:
|
|
44
|
-
|
|
45
|
-
- 🎯 Follow the MANDATORY SEQUENCE exactly
|
|
46
|
-
- 💾 Load the schema to ensure all required fields are presented
|
|
47
|
-
- 📖 This is a mandatory checkpoint — no auto-proceed
|
|
48
|
-
- 🚫 FORBIDDEN to write skill-brief.yaml in this step
|
|
15
|
+
## Rules
|
|
49
16
|
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
- Available context: All gathered data from steps 01-03 (target, intent, name, tier, language, scope)
|
|
53
|
-
- Focus: Presenting the complete brief for final review
|
|
54
|
-
- Limits: Do not write files — only present for approval
|
|
55
|
-
- Dependencies: Confirmed scope boundaries from step 03
|
|
17
|
+
- Focus only on presenting and confirming — do not write files yet (Step 05)
|
|
18
|
+
- Do not proceed without explicit user approval (P2 confirmation gate)
|
|
56
19
|
|
|
57
20
|
## MANDATORY SEQUENCE
|
|
58
21
|
|
|
@@ -182,6 +145,7 @@ Display: **Select an Option:** [R] Revise Scope [A] Advanced Elicitation [P] Par
|
|
|
182
145
|
#### EXECUTION RULES:
|
|
183
146
|
|
|
184
147
|
- ALWAYS halt and wait for user input after presenting menu
|
|
148
|
+
- **GATE [default: C]** — If `{headless_mode}`: auto-proceed with [C] Confirm, log: "headless: auto-confirm brief"
|
|
185
149
|
- ONLY proceed to write step when user selects 'C'
|
|
186
150
|
- After other menu items execution, return to this menu
|
|
187
151
|
- User can chat, request field changes, or ask questions — always respond and then redisplay menu
|
|
@@ -190,25 +154,3 @@ Display: **Select an Option:** [R] Revise Scope [A] Advanced Elicitation [P] Par
|
|
|
190
154
|
|
|
191
155
|
ONLY WHEN C is selected and the user has explicitly approved the brief will you load and read fully `./step-05-write-brief.md` to write the skill-brief.yaml file.
|
|
192
156
|
|
|
193
|
-
---
|
|
194
|
-
|
|
195
|
-
## 🚨 SYSTEM SUCCESS/FAILURE METRICS
|
|
196
|
-
|
|
197
|
-
### ✅ SUCCESS:
|
|
198
|
-
|
|
199
|
-
- Schema loaded for field reference
|
|
200
|
-
- Complete brief assembled from all gathered data
|
|
201
|
-
- Brief presented in human-readable format
|
|
202
|
-
- Low-confidence or defaulted fields highlighted
|
|
203
|
-
- User explicitly approved the brief
|
|
204
|
-
- Menu presented with revise option
|
|
205
|
-
|
|
206
|
-
### ❌ SYSTEM FAILURE:
|
|
207
|
-
|
|
208
|
-
- Writing skill-brief.yaml in this step (too early)
|
|
209
|
-
- Proceeding without explicit user approval
|
|
210
|
-
- Not presenting all required fields
|
|
211
|
-
- Not highlighting defaulted or low-confidence values
|
|
212
|
-
- Not offering the [R] Revise option
|
|
213
|
-
|
|
214
|
-
**Master Rule:** Skipping steps, optimizing sequences, or not following exact instructions is FORBIDDEN and constitutes SYSTEM FAILURE.
|