bmad-module-skill-forge 0.5.0 → 0.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (84) hide show
  1. package/README.md +2 -1
  2. package/docs/agents.md +3 -0
  3. package/docs/concepts.md +23 -5
  4. package/docs/examples.md +30 -1
  5. package/docs/getting-started.md +11 -0
  6. package/docs/how-it-works.md +49 -25
  7. package/docs/index.md +1 -1
  8. package/docs/workflows.md +6 -6
  9. package/package.json +2 -2
  10. package/src/agents/forger.agent.yaml +1 -1
  11. package/src/forger/forge-tier.yaml +17 -1
  12. package/src/forger/preferences.yaml +1 -1
  13. package/src/knowledge/ccc-bridge.md +110 -0
  14. package/src/knowledge/confidence-tiers.md +3 -3
  15. package/src/knowledge/overview.md +2 -1
  16. package/src/knowledge/progressive-capability.md +12 -4
  17. package/src/knowledge/qmd-registry.md +14 -0
  18. package/src/knowledge/skf-knowledge-index.csv +2 -1
  19. package/src/module-help.csv +1 -1
  20. package/src/module.yaml +1 -1
  21. package/src/workflows/README.md +1 -1
  22. package/src/workflows/analyze-source/data/skill-brief-schema.md +1 -1
  23. package/src/workflows/analyze-source/data/unit-detection-heuristics.md +1 -0
  24. package/src/workflows/analyze-source/steps-c/step-01-init.md +2 -2
  25. package/src/workflows/analyze-source/steps-c/step-04-map-and-detect.md +7 -3
  26. package/src/workflows/analyze-source/validation-report.md +2 -2
  27. package/src/workflows/analyze-source/workflow-plan-analyze-source.md +1 -1
  28. package/src/workflows/audit-skill/data/drift-report-template.md +6 -6
  29. package/src/workflows/audit-skill/steps-c/step-01-init.md +2 -2
  30. package/src/workflows/audit-skill/steps-c/step-02-re-index.md +18 -1
  31. package/src/workflows/audit-skill/steps-c/step-04-semantic-diff.md +5 -5
  32. package/src/workflows/audit-skill/validation-report.md +3 -3
  33. package/src/workflows/audit-skill/workflow-plan-audit-skill.md +2 -2
  34. package/src/workflows/audit-skill/workflow.md +1 -1
  35. package/src/workflows/brief-skill/data/skill-brief-schema.md +3 -3
  36. package/src/workflows/brief-skill/steps-c/step-01-gather-intent.md +3 -3
  37. package/src/workflows/brief-skill/steps-c/step-02-analyze-target.md +15 -0
  38. package/src/workflows/create-skill/data/extraction-patterns.md +37 -1
  39. package/src/workflows/create-skill/data/skill-sections.md +2 -2
  40. package/src/workflows/create-skill/steps-c/step-01-load-brief.md +5 -3
  41. package/src/workflows/create-skill/steps-c/step-02-ecosystem-check.md +2 -2
  42. package/src/workflows/create-skill/steps-c/step-02b-ccc-discover.md +157 -0
  43. package/src/workflows/create-skill/steps-c/step-03-extract.md +10 -1
  44. package/src/workflows/create-skill/steps-c/step-03b-fetch-temporal.md +5 -5
  45. package/src/workflows/create-skill/steps-c/step-04-enrich.md +8 -8
  46. package/src/workflows/create-skill/steps-c/step-06-validate.md +1 -1
  47. package/src/workflows/create-skill/steps-c/step-07-generate-artifacts.md +32 -0
  48. package/src/workflows/create-skill/steps-c/step-08-report.md +1 -0
  49. package/src/workflows/create-skill/validation-report.md +1 -1
  50. package/src/workflows/create-skill/workflow-plan-create-skill.md +4 -2
  51. package/src/workflows/create-skill/workflow.md +1 -1
  52. package/src/workflows/create-stack-skill/data/stack-skill-template.md +1 -1
  53. package/src/workflows/create-stack-skill/steps-c/step-01-init.md +3 -2
  54. package/src/workflows/create-stack-skill/steps-c/step-05-detect-integrations.md +10 -0
  55. package/src/workflows/create-stack-skill/steps-c/step-08-validate.md +1 -1
  56. package/src/workflows/create-stack-skill/validation-report.md +1 -1
  57. package/src/workflows/create-stack-skill/workflow-plan-create-stack-skill.md +2 -2
  58. package/src/workflows/create-stack-skill/workflow.md +1 -1
  59. package/src/workflows/export-skill/steps-c/step-01-load-skill.md +1 -1
  60. package/src/workflows/export-skill/steps-c/step-02-package.md +1 -1
  61. package/src/workflows/export-skill/workflow-plan-export-skill.md +1 -1
  62. package/src/workflows/quick-skill/data/skill-template.md +8 -0
  63. package/src/workflows/quick-skill/steps-c/step-02-ecosystem-check.md +1 -3
  64. package/src/workflows/setup-forge/data/tier-rules.md +16 -6
  65. package/src/workflows/setup-forge/steps-c/step-01-detect-and-tier.md +32 -15
  66. package/src/workflows/setup-forge/steps-c/step-01b-ccc-index.md +148 -0
  67. package/src/workflows/setup-forge/steps-c/step-02-write-config.md +24 -6
  68. package/src/workflows/setup-forge/steps-c/step-03-auto-index.md +29 -6
  69. package/src/workflows/setup-forge/steps-c/step-04-report.md +14 -2
  70. package/src/workflows/setup-forge/validation-report.md +1 -1
  71. package/src/workflows/setup-forge/workflow-plan-setup-forge.md +11 -9
  72. package/src/workflows/setup-forge/workflow.md +1 -1
  73. package/src/workflows/test-skill/data/scoring-rules.md +5 -0
  74. package/src/workflows/test-skill/steps-c/step-01-init.md +2 -2
  75. package/src/workflows/test-skill/templates/test-report-template.md +3 -0
  76. package/src/workflows/test-skill/validation-report.md +2 -2
  77. package/src/workflows/test-skill/workflow-plan-test-skill.md +2 -2
  78. package/src/workflows/update-skill/steps-c/step-01-init.md +3 -2
  79. package/src/workflows/update-skill/steps-c/step-03-re-extract.md +19 -2
  80. package/src/workflows/update-skill/steps-c/step-05-validate.md +1 -1
  81. package/src/workflows/update-skill/steps-c/step-06-write.md +2 -2
  82. package/src/workflows/update-skill/validation-report.md +1 -1
  83. package/src/workflows/update-skill/workflow-plan-update-skill.md +1 -1
  84. package/tools/cli/commands/status.js +2 -1
@@ -2,7 +2,7 @@
2
2
  name: 'step-01-detect-and-tier'
3
3
  description: 'Detect available tools and determine forge capability tier'
4
4
 
5
- nextStepFile: './step-02-write-config.md'
5
+ nextStepFile: './step-01b-ccc-index.md'
6
6
  tierRulesData: '../data/tier-rules.md'
7
7
  ---
8
8
 
@@ -10,7 +10,7 @@ tierRulesData: '../data/tier-rules.md'
10
10
 
11
11
  ## STEP GOAL:
12
12
 
13
- Verify availability of the three forge tools (ast-grep, gh, qmd), read any existing configuration for re-run comparison, check for tier override, and calculate the capability tier.
13
+ Verify availability of the four forge tools (ast-grep, gh, qmd, ccc), read any existing configuration for re-run comparison, check for tier override, and calculate the capability tier.
14
14
 
15
15
  ## MANDATORY EXECUTION RULES (READ FIRST):
16
16
 
@@ -30,7 +30,7 @@ Verify availability of the three forge tools (ast-grep, gh, qmd), read any exist
30
30
 
31
31
  - 🎯 Focus only on tool detection and tier calculation
32
32
  - 🚫 FORBIDDEN to write any files — that is step-02's job
33
- - 🚫 FORBIDDEN to skip any tool check — all 3 must be verified
33
+ - 🚫 FORBIDDEN to skip any tool check — all 4 must be verified
34
34
  - 💬 Tool command failures are NOT errors — they indicate unavailability
35
35
 
36
36
  ## EXECUTION PROTOCOLS:
@@ -38,7 +38,7 @@ Verify availability of the three forge tools (ast-grep, gh, qmd), read any exist
38
38
  - 🎯 Follow the MANDATORY SEQUENCE exactly
39
39
  - 💾 Store all results in memory for step-02
40
40
  - 📖 Load tier-rules.md for calculation reference
41
- - 🚫 FORBIDDEN to proceed without checking all 3 tools
41
+ - 🚫 FORBIDDEN to proceed without checking all 4 tools
42
42
 
43
43
  ## CONTEXT BOUNDARIES:
44
44
 
@@ -95,22 +95,38 @@ Check if the `SNYK_TOKEN` environment variable is set:
95
95
 
96
96
  This is informational only — security scan availability does NOT affect the tier level. It is recorded in forge-tier.yaml so that create-skill's validation step can report actionable guidance when security scanning is unavailable.
97
97
 
98
- ### 7. Calculate Tier
98
+ ### 7. Verify Tool: ccc (cocoindex-code)
99
99
 
100
- **If `{tier_override}` is set and valid (Quick, Forge, or Deep):**
100
+ **Step A Binary existence:** Run `ccc --help`
101
+
102
+ - If exits 0: binary confirmed. Continue to Step B.
103
+ - If fails (command not found or error): record `{ccc: false}`. Skip Step B.
104
+
105
+ **Step B — Daemon health:** Run `ccc doctor`
106
+
107
+ - If daemon is running and model check OK: record `{ccc: true}` and store version string from output
108
+ - If daemon is not running: record `{ccc: true, ccc_daemon: "stopped"}` — binary available, daemon needs starting. Step-01b will handle this.
109
+ - If error or timeout: record `{ccc: true, ccc_daemon: "error"}` — binary works but daemon has issues.
110
+
111
+ ccc availability gates the Forge+ tier and enhances Deep tier when present.
112
+
113
+ ### 8. Calculate Tier
114
+
115
+ **If `{tier_override}` is set and valid (Quick, Forge, Forge+, or Deep):**
101
116
  - Use `{tier_override}` as `{calculated_tier}`
102
117
  - Note that override is active for the report step
103
118
 
104
- **If no override, apply tier rules from {tierRulesData}:**
119
+ **If no override, apply tier rules from {tierRulesData} in order — the first matching rule wins. Do not continue checking once a match is found:**
105
120
  - `{ast_grep}` AND `{gh_cli}` AND `{qmd}` all true → **Deep**
106
- - `{ast_grep}` true (regardless of gh/qmd) → **Forge**
121
+ - `{ast_grep}` AND `{ccc}` both true (regardless of gh/qmd) → **Forge+**
122
+ - `{ast_grep}` true (regardless of ccc/gh/qmd) → **Forge**
107
123
  - Otherwise → **Quick**
108
124
 
109
125
  **If `{tier_override}` is set but invalid:** ignore it, use detected tier, flag for warning in report.
110
126
 
111
- ### 8. Auto-Proceed
127
+ ### 9. Auto-Proceed
112
128
 
113
- "**Proceeding to write configuration...**"
129
+ "**Proceeding to CCC index check...**"
114
130
 
115
131
  #### Menu Handling Logic:
116
132
 
@@ -123,7 +139,7 @@ This is informational only — security scan availability does NOT affect the ti
123
139
 
124
140
  ## CRITICAL STEP COMPLETION NOTE
125
141
 
126
- ONLY WHEN all 3 core tools have been verified, optional security scan checked, and the tier calculated will you load and read fully `{nextStepFile}` to execute the configuration write step.
142
+ ONLY WHEN all 4 core tools have been verified, optional security scan checked, and the tier calculated will you load and read fully `{nextStepFile}` to execute the CCC index check step.
127
143
 
128
144
  ---
129
145
 
@@ -131,19 +147,20 @@ ONLY WHEN all 3 core tools have been verified, optional security scan checked, a
131
147
 
132
148
  ### ✅ SUCCESS:
133
149
 
134
- - All 3 tools checked via verification commands (not existence checks)
150
+ - All 4 tools checked via verification commands (not existence checks)
135
151
  - Existing forge-tier.yaml read for re-run comparison (if present)
136
152
  - Existing preferences.yaml read for tier_override (if present)
137
153
  - Tier correctly calculated from tool results or override applied
138
- - All results stored in context for step-02
139
- - Auto-proceeded to step-02
154
+ - All results stored in context for step-01b and step-02
155
+ - Auto-proceeded to step-01b
140
156
 
141
157
  ### ❌ SYSTEM FAILURE:
142
158
 
143
- - Skipping any tool verification
159
+ - Skipping any tool verification (ast-grep, gh, qmd, ccc — all 4 must be checked)
144
160
  - Using `which` or `command -v` instead of verification commands
145
161
  - Assuming tool availability without running the command
146
162
  - Writing files in this step (that is step-02)
147
163
  - Not checking for existing configuration on re-runs
164
+ - Not checking ccc availability (both binary and daemon health)
148
165
 
149
166
  **Master Rule:** Every tool MUST be verified empirically. No assumptions, no shortcuts.
@@ -0,0 +1,148 @@
1
+ ---
2
+ name: 'step-01b-ccc-index'
3
+ description: 'Ensure ccc project index exists — Forge+ and Deep tiers when ccc is available'
4
+
5
+ nextStepFile: './step-02-write-config.md'
6
+ ---
7
+
8
+ # Step 1b: CCC Index Verification
9
+
10
+ ## STEP GOAL:
11
+
12
+ If ccc is available (`{ccc: true}` from step-01), verify that the ccc index exists for the project root. If no index exists, create it. Store index state in context for step-02 to write into forge-tier.yaml.
13
+
14
+ For Quick and Forge tiers, or when ccc is unavailable, skip silently and proceed.
15
+
16
+ ## MANDATORY EXECUTION RULES (READ FIRST):
17
+
18
+ ### Universal Rules:
19
+
20
+ - 📖 CRITICAL: Read the complete step file before taking any action
21
+ - 🔄 CRITICAL: When loading next step, ensure entire file is read
22
+ - 🎯 Execute all operations autonomously — no user interaction
23
+
24
+ ### Role Reinforcement:
25
+
26
+ - ✅ You are a system executor verifying the ccc index state
27
+ - ✅ ccc indexing failure is never a workflow error — degrade gracefully
28
+ - ✅ No negative messaging for tiers that skip this step
29
+
30
+ ### Step-Specific Rules:
31
+
32
+ - 🎯 Focus only on ccc index verification and creation
33
+ - 🚫 FORBIDDEN to display skip messages for Quick/Forge tiers
34
+ - 🚫 FORBIDDEN to fail the workflow if ccc indexing fails
35
+ - 🚫 FORBIDDEN to re-index if ccc index already exists and is fresh (< staleness threshold)
36
+
37
+ ## EXECUTION PROTOCOLS:
38
+
39
+ - 🎯 Follow the MANDATORY SEQUENCE exactly
40
+ - 💾 Store ccc index state in context for step-02
41
+ - 🚫 FORBIDDEN to write forge-tier.yaml — that is step-02's job
42
+
43
+ ## CONTEXT BOUNDARIES:
44
+
45
+ - Available: {ccc} boolean and {ccc_daemon} status from step-01
46
+ - Available: {calculated_tier} from step-01
47
+ - Available: existing forge-tier.yaml may contain prior `ccc_index` state
48
+ - Focus: ccc index state verification and creation only
49
+ - Dependencies: step-01 must have completed with tool detection results
50
+
51
+ ## MANDATORY SEQUENCE
52
+
53
+ **CRITICAL:** Follow this sequence exactly. Do not skip, reorder, or improvise.
54
+
55
+ ### 1. Check Eligibility
56
+
57
+ Read `{ccc}` from step-01 context.
58
+
59
+ **If `{ccc}` is false:** Set `{ccc_index_result: "none", ccc_indexed_path: null, ccc_last_indexed: null}`. Proceed directly to section 4 (Auto-Proceed) — no output, no messaging.
60
+
61
+ **If `{ccc}` is true:** Continue to section 2.
62
+
63
+ ### 2. Check Existing Index State
64
+
65
+ Read existing forge-tier.yaml at `{project-root}/_bmad/_memory/forger-sidecar/forge-tier.yaml` (if it exists from a previous run).
66
+
67
+ Check the `ccc_index` section:
68
+ - If `ccc_index.indexed_path` matches `{project-root}` AND `ccc_index.status` is `"fresh"`:
69
+ - Check freshness: if `ccc_index.last_indexed` is within `staleness_threshold_hours` (default 24h) of now → index is fresh
70
+ - Store `{ccc_index_result: "fresh", ccc_indexed_path: {project-root}, ccc_last_indexed: {existing timestamp}}`
71
+ - Proceed to section 4
72
+
73
+ - If `ccc_index.indexed_path` matches `{project-root}` but timestamp is older than threshold:
74
+ - Store `{ccc_index_result: "stale", ccc_indexed_path: {existing path}, ccc_last_indexed: {existing timestamp}}` — proceed to section 3 for re-index
75
+
76
+ - If `ccc_index` is missing, has null values, or path doesn't match:
77
+ - Proceed to section 3 for initial index
78
+
79
+ ### 3. Create or Refresh CCC Index
80
+
81
+ **If `{ccc_daemon}` is `"stopped"` or undefined (healthy daemon where no explicit state was recorded):**
82
+
83
+ The `ccc index` command auto-starts the daemon when needed. Proceed with indexing below.
84
+
85
+ **If `{ccc_daemon}` is `"error"`:**
86
+
87
+ Attempt indexing anyway — errors will be caught below.
88
+
89
+ Run:
90
+ ```bash
91
+ ccc init {project-root}
92
+ ```
93
+
94
+ **If init fails** (project may already be initialized): continue — this is not an error.
95
+
96
+ Then run:
97
+ ```bash
98
+ ccc index
99
+ ```
100
+
101
+ **If succeeds:**
102
+ - Run `ccc status` to get file count
103
+ - Store `{ccc_index_result: "created", ccc_indexed_path: {project-root}, ccc_last_indexed: {current ISO timestamp}, ccc_file_count: {count from status}}`
104
+ - Display: "**CCC index created.** {file_count} files indexed for semantic discovery."
105
+
106
+ **If fails:**
107
+ - Store `{ccc_index_result: "failed", ccc_indexed_path: null, ccc_last_indexed: null}`
108
+ - Display: "CCC indexing failed: {error}. Extraction will use direct AST scanning — semantic pre-ranking unavailable this session."
109
+ - Continue — this is NOT a workflow error
110
+
111
+ ### 4. Auto-Proceed
112
+
113
+ "**Proceeding to write configuration...**"
114
+
115
+ #### Menu Handling Logic:
116
+
117
+ - After ccc index check completes (or is skipped), immediately load, read entire file, then execute {nextStepFile}
118
+
119
+ #### EXECUTION RULES:
120
+
121
+ - This is an auto-proceed step with no user choices
122
+ - Proceed directly to next step after ccc index verification
123
+
124
+ ## CRITICAL STEP COMPLETION NOTE
125
+
126
+ ONLY WHEN ccc index verification is complete (or step is skipped for ccc unavailable) will you load and read fully `{nextStepFile}` to execute the configuration write step.
127
+
128
+ ---
129
+
130
+ ## 🚨 SYSTEM SUCCESS/FAILURE METRICS
131
+
132
+ ### ✅ SUCCESS:
133
+
134
+ - ccc unavailable: skipped silently with no output, context variables set to null/none
135
+ - ccc available with fresh index: verified freshness, skipped re-index, context variables set
136
+ - ccc available with stale/missing index: index created, context variables set with fresh timestamp
137
+ - ccc indexing fails: logged gracefully, workflow continues, context variables set to failed/null
138
+ - Auto-proceeded to step-02
139
+
140
+ ### ❌ SYSTEM FAILURE:
141
+
142
+ - Displaying skip messages when ccc is unavailable
143
+ - Halting the workflow on ccc index failure
144
+ - Re-indexing when index is already fresh and path matches
145
+ - Writing forge-tier.yaml (that is step-02's responsibility)
146
+ - Not storing ccc index context variables for step-02
147
+
148
+ **Master Rule:** CCC indexing is always best-effort. Failures degrade gracefully. The workflow never halts over ccc issues.
@@ -63,18 +63,32 @@ tools:
63
63
  ast_grep: {true/false from detection}
64
64
  gh_cli: {true/false from detection}
65
65
  qmd: {true/false from detection}
66
+ ccc: {true/false from detection}
67
+ ccc_daemon: {ccc_daemon from step-01 if available: "healthy"|"stopped"|"error", or ~}
66
68
  security_scan: {true/false — true when SNYK_TOKEN is set}
67
69
 
68
70
  # Capability tier (derived from tool availability)
69
- # Quick = no tools required | Forge = + ast-grep | Deep = + ast-grep + gh + QMD
71
+ # Quick = no tools | Forge = + ast-grep | Forge+ = + ast-grep + ccc | Deep = + ast-grep + gh + QMD
70
72
  tier: {calculated_tier}
71
73
  tier_detected_at: {current ISO timestamp}
72
74
 
75
+ # CCC semantic index state (managed by setup-forge step-01b and extraction workflows)
76
+ ccc_index:
77
+ indexed_path: {ccc_indexed_path from step-01b, or ~}
78
+ last_indexed: {ccc_last_indexed from step-01b, or ~}
79
+ status: {ccc_index_status from step-01b: "fresh"|"created"|"none"|"failed"}
80
+ staleness_threshold_hours: 24
81
+
82
+ # CCC index registry (tracks which source paths have been indexed for skill workflows)
83
+ ccc_index_registry: []
84
+
73
85
  # QMD collection registry (populated by create-skill, consumed by audit/update-skill)
74
86
  # Each entry tracks a QMD collection created during skill workflows
75
87
  qmd_collections: []
76
88
  ```
77
89
 
90
+ **Note on re-runs:** The `qmd_collections` and `ccc_index_registry` arrays must be preserved across re-runs. Before overwriting forge-tier.yaml, read the existing `qmd_collections` and `ccc_index_registry` arrays and re-inject them into the new write. These arrays are populated by create-skill workflows and must not be reset.
91
+
78
92
  **This file is ALWAYS overwritten** on every run — it reflects current tool state.
79
93
 
80
94
  If the write fails, report the error and halt the workflow.
@@ -90,15 +104,19 @@ Check if `{project-root}/_bmad/_memory/forger-sidecar/preferences.yaml` exists:
90
104
  # Created by setup-forge workflow on first run
91
105
  # Edit this file to customize Ferris behavior
92
106
 
93
- # Override detected tier (set to Quick, Forge, or Deep to force a tier)
107
+ # Override detected tier (set to Quick, Forge, Forge+, or Deep to force a tier)
94
108
  tier_override: ~
95
109
 
96
110
  # Passive context injection (set to false to skip snippet generation and CLAUDE.md updates during export)
97
111
  passive_context: true
98
112
 
99
- # Skill generation defaults
100
- default_source_authority: community
101
- default_confidence_threshold: 0.7
113
+ # Language defaults
114
+ output_language: ~
115
+ skill_format_version: ~
116
+
117
+ # Output preferences
118
+ citation_style: ~
119
+ confidence_display: ~
102
120
  ```
103
121
 
104
122
  **If it DOES exist:** Do not modify. Preserve entirely.
@@ -133,7 +151,7 @@ ONLY WHEN forge-tier.yaml has been written successfully and preferences.yaml exi
133
151
 
134
152
  ### ✅ SUCCESS:
135
153
 
136
- - forge-tier.yaml written with accurate tool booleans, tier, timestamp, and empty qmd_collections registry
154
+ - forge-tier.yaml written with accurate tool booleans (including ccc), tier, timestamp, ccc_index state, and preserved qmd_collections/ccc_index_registry arrays
137
155
  - preferences.yaml exists (created with defaults on first run, preserved on re-run)
138
156
  - forge-data/ directory exists (created or pre-existing)
139
157
  - Auto-proceeded to step-03
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: 'step-03-auto-index'
3
- description: 'Verify and clean QMD collections against the forge-tier.yaml registry (Deep tier only)'
3
+ description: 'Verify and clean QMD collections against the forge-tier.yaml registry (Deep tier only) and CCC index registry hygiene (Forge+/Deep)'
4
4
 
5
5
  nextStepFile: './step-04-report.md'
6
6
  ---
@@ -11,7 +11,7 @@ nextStepFile: './step-04-report.md'
11
11
 
12
12
  If the detected tier is Deep, verify the health of existing QMD collections by cross-referencing them against the `qmd_collections` registry in `forge-tier.yaml`. Identify orphaned collections (in QMD but not in registry) and stale registry entries (in registry but collection missing from QMD). Prompt the user before removing orphaned collections.
13
13
 
14
- For Quick and Forge tiers, skip silently and proceed.
14
+ For Quick and Forge tiers (without ccc), skip silently and proceed. For Forge+ tier, skip QMD hygiene but the step routes correctly to the next step.
15
15
 
16
16
  ## MANDATORY EXECUTION RULES (READ FIRST):
17
17
 
@@ -41,7 +41,7 @@ For Quick and Forge tiers, skip silently and proceed.
41
41
  - 🎯 Follow the MANDATORY SEQUENCE exactly
42
42
  - 💾 QMD hygiene only verifies and cleans — it does NOT index new content
43
43
  - 📖 Use {calculated_tier} from step-01 context
44
- - 🚫 FORBIDDEN to attempt hygiene for Quick or Forge tiers
44
+ - 🚫 FORBIDDEN to attempt QMD hygiene for Quick, Forge, or Forge+ tiers (Forge+ has no qmd)
45
45
 
46
46
  ## CONTEXT BOUNDARIES:
47
47
 
@@ -59,7 +59,9 @@ For Quick and Forge tiers, skip silently and proceed.
59
59
 
60
60
  Read `{calculated_tier}` from context.
61
61
 
62
- **If tier is NOT Deep:** Proceed directly to section 6 (Auto-Proceed) — no output, no messaging.
62
+ **If tier is Quick or Forge:** Proceed directly to section 6 (Auto-Proceed) — no output, no messaging.
63
+
64
+ **If tier is Forge+:** Skip QMD hygiene (qmd is not available at Forge+). Proceed directly to section 5b (CCC Index Registry Hygiene) — no QMD output, no messaging.
63
65
 
64
66
  **If tier IS Deep:** Continue to section 2.
65
67
 
@@ -132,6 +134,26 @@ Update forge-tier.yaml with the cleaned registry.
132
134
 
133
135
  **If no stale entries:** Skip this section silently.
134
136
 
137
+ ### 5b. CCC Index Registry Hygiene (Forge+ and Deep with ccc)
138
+
139
+ **IF `tools.ccc` is true in forge-tier.yaml (regardless of whether QMD hygiene ran):**
140
+
141
+ Read the `ccc_index_registry` array from forge-tier.yaml.
142
+
143
+ For each entry, verify the indexed path still exists on disk:
144
+
145
+ **Healthy** — path exists: no action needed.
146
+
147
+ **Stale** — path does not exist (source directory removed or moved):
148
+ - Remove the stale entry from `ccc_index_registry`
149
+ - Log: "Removed stale CCC index registry entry: {path} (path no longer exists)"
150
+
151
+ Update forge-tier.yaml with the cleaned registry.
152
+
153
+ Store `{ccc_registry_stale_cleaned: count}` in context for step-04 reporting.
154
+
155
+ **IF `tools.ccc` is false:** Skip this section silently.
156
+
135
157
  ### 6. Store Hygiene Results and Auto-Proceed
136
158
 
137
159
  Store in context for step-04 reporting:
@@ -141,6 +163,7 @@ Store in context for step-04 reporting:
141
163
  {hygiene_orphaned_removed: count}
142
164
  {hygiene_orphaned_kept: count}
143
165
  {hygiene_stale_cleaned: count}
166
+ {ccc_registry_stale_cleaned: count}
144
167
  ```
145
168
 
146
169
  "**Proceeding to forge status report...**"
@@ -170,7 +193,7 @@ ONLY WHEN the hygiene check has been performed (or skipped for non-Deep tiers) w
170
193
  - Orphaned collections flagged and user prompted before removal
171
194
  - Stale registry entries cleaned from forge-tier.yaml
172
195
  - Hygiene results stored for step-04 reporting
173
- - Quick/Forge tier: skipped silently with no negative messaging
196
+ - Quick/Forge/Forge+ tier: skipped silently with no negative messaging
174
197
  - Workflow continues regardless of hygiene outcome
175
198
  - Auto-proceeded to step-04
176
199
 
@@ -178,7 +201,7 @@ ONLY WHEN the hygiene check has been performed (or skipped for non-Deep tiers) w
178
201
 
179
202
  - Creating new QMD collections (that's create-skill's responsibility)
180
203
  - Silently deleting collections without user prompt
181
- - Attempting QMD hygiene for Quick or Forge tiers
204
+ - Attempting QMD hygiene for Quick, Forge, or Forge+ tiers
182
205
  - Displaying "skipped" or "missing" messages for non-Deep tiers
183
206
  - Halting the workflow due to QMD hygiene failure
184
207
  - Indexing project directories (old auto-index behavior — removed)
@@ -43,7 +43,8 @@ Display the forge status report with positive capability framing, report tier ch
43
43
 
44
44
  - Available: {detected_tools}, {calculated_tier}, {previous_tier}, {tier_override} from step-01
45
45
  - Available: tool version strings from step-01
46
- - Available: {hygiene_result}, {hygiene_healthy}, {hygiene_orphaned_removed}, {hygiene_orphaned_kept}, {hygiene_stale_cleaned} from step-03
46
+ - Available: {hygiene_result}, {hygiene_healthy}, {hygiene_orphaned_removed}, {hygiene_orphaned_kept}, {hygiene_stale_cleaned}, {ccc_registry_stale_cleaned} from step-03
47
+ - Available: {ccc_index_result} from step-01b (values: "fresh", "created", "failed", "none")
47
48
  - Focus: report display only — no file modifications
48
49
  - Dependencies: steps 01-03 must have completed
49
50
 
@@ -75,13 +76,24 @@ Load and read {tierRulesData} for the tier capability descriptions and re-run me
75
76
  {hygiene_healthy} collection(s) healthy
76
77
  {if hygiene_orphaned_removed > 0: {hygiene_orphaned_removed} orphaned collection(s) removed}
77
78
  {if hygiene_orphaned_kept > 0: {hygiene_orphaned_kept} orphaned collection(s) kept}
78
- {if hygiene_stale_cleaned > 0: {hygiene_stale_cleaned} stale registry entry/entries cleaned}
79
+ {if hygiene_stale_cleaned > 0: {hygiene_stale_cleaned} stale QMD registry entry/entries cleaned}
80
+ {end if}
81
+
82
+ {if ccc_registry_stale_cleaned > 0:}
83
+ CCC Registry: {ccc_registry_stale_cleaned} stale entry/entries cleaned
79
84
  {end if}
80
85
 
81
86
  {if hygiene_result is "completed" and hygiene_healthy is 0:}
82
87
  QMD Registry: empty — collections are created automatically when you run [CS] Create Skill.
83
88
  {end if}
84
89
 
90
+ {if tools.ccc is true:}
91
+ CCC Index:
92
+ {if ccc_index_result is "fresh": up to date — semantic discovery ready}
93
+ {if ccc_index_result is "created": indexed this run — semantic discovery ready}
94
+ {if ccc_index_result is "failed": indexing failed — semantic discovery unavailable this session}
95
+ {end if}
96
+
85
97
  {if tier_override is active:}
86
98
  Note: Tier override active (set in preferences.yaml)
87
99
 
@@ -403,7 +403,7 @@ No subprocess optimization needed. The workflow is appropriately simple and sequ
403
403
  |-------------|------------|---------|
404
404
  | Initialize forge environment | Yes — all 4 steps address this | High |
405
405
  | Detect tools (ast-grep, gh, qmd) | Yes — step-01 verifies all 3 | High |
406
- | Set tier (Quick/Forge/Deep) | Yes — step-01 calculates, step-02 writes | High |
406
+ | Set tier (Quick/Forge/Forge+/Deep) | Yes — step-01 calculates, step-02 writes | High |
407
407
  | Auto-index project | Yes — step-03 (Deep tier only) | High |
408
408
 
409
409
  #### Classification Attributes
@@ -32,7 +32,7 @@ Initialize forge environment, detect tools, set tier, auto-index project
32
32
  ### Original Steps (Complete List)
33
33
 
34
34
  **Step 1:** detect-tools - Check for gh, ast-grep, QMD availability
35
- **Step 2:** determine-tier - Set Quick/Forge/Deep based on tools found
35
+ **Step 2:** determine-tier - Set Quick/Forge/Forge+/Deep based on tools found
36
36
  **Step 3:** create-config - Generate forge-config.yaml with tier and tool flags
37
37
  **Step 4:** auto-index - Index current project as QMD collection (Deep only)
38
38
  **Step 5:** report - Display forge status, tier, and capabilities
@@ -65,7 +65,7 @@ Initialize forge environment, detect tools, set tier, auto-index project
65
65
 
66
66
  **What works well in original:**
67
67
  - Clear 5-step decomposition with logical progression
68
- - Well-defined progressive tier system (Quick/Forge/Deep)
68
+ - Well-defined progressive tier system (Quick/Forge/Forge+/Deep)
69
69
  - Three distinct output artifacts with clear purposes
70
70
  - Correctly identified as foundation workflow all others depend on
71
71
 
@@ -104,9 +104,9 @@ Initialize forge environment, detect tools, set tier, auto-index project
104
104
 
105
105
  **Structure Implications:**
106
106
  - Simple `steps-c/` folder only, no edit/validate modes
107
- - No `step-01b-continue.md` needed
107
+ - step-01b added for CCC index verification (Forge+ integration)
108
108
  - No document template — output is config files written directly
109
- - Standard init step without continuation logic
109
+ - Standard init step with step-01b bridge to config writing
110
110
 
111
111
  ---
112
112
 
@@ -179,7 +179,7 @@ Initialize forge environment, detect tools, set tier, auto-index project
179
179
  - Frequency: Single execution per run (idempotent, safe to re-run)
180
180
 
181
181
  **Success Criteria:**
182
- - All 3 tools (ast-grep, gh, qmd) verified via version/status commands, results accurately recorded
182
+ - All 4 tools (ast-grep, gh, qmd, ccc) verified via version/status commands, results accurately recorded
183
183
  - Correct tier assigned from tool availability (or tier_override respected if set)
184
184
  - forge-tier.yaml written with tools, tier, and tier_detected_at timestamp
185
185
  - preferences.yaml exists with defaults (created on first run, preserved on re-run)
@@ -233,6 +233,7 @@ setup-forge/
233
233
  │ └── tier-rules.md # Tier calculation rules + capability descriptions
234
234
  └── steps-c/
235
235
  ├── step-01-detect-and-tier.md
236
+ ├── step-01b-ccc-index.md
236
237
  ├── step-02-write-config.md
237
238
  ├── step-03-auto-index.md
238
239
  └── step-04-report.md
@@ -244,9 +245,10 @@ No templates/ directory (non-document workflow).
244
245
 
245
246
  | Step | File | Type | Menu | Goal |
246
247
  |------|------|------|------|------|
247
- | 01 | step-01-detect-and-tier.md | Init (Non-Continuable) | Auto-proceed | Verify 3 tools functional, check tier_override, calculate tier, read previous tier |
248
+ | 01 | step-01-detect-and-tier.md | Init (Non-Continuable) | Auto-proceed | Verify 4 tools functional (ast-grep, gh, qmd, ccc), check tier_override, calculate tier, read previous tier |
249
+ | 01b | step-01b-ccc-index.md | Middle (Simple + Conditional) | Auto-proceed | Verify/create CCC index for Forge+/Deep tiers when ccc available, skip silently otherwise |
248
250
  | 02 | step-02-write-config.md | Middle (Simple) | Auto-proceed | Write forge-tier.yaml, create preferences.yaml defaults if missing, ensure forge-data/ exists |
249
- | 03 | step-03-auto-index.md | Middle (Simple + Conditional) | Auto-proceed | QMD index project (Deep only), skip gracefully otherwise |
251
+ | 03 | step-03-auto-index.md | Middle (Simple + Conditional) | Auto-proceed | QMD index project (Deep only) + CCC registry hygiene, skip gracefully otherwise |
250
252
  | 04 | step-04-report.md | Final Step | None | Display status with positive framing, handle --update-spec, report tier changes |
251
253
 
252
254
  ### Step Detail: step-01-detect-and-tier
@@ -384,8 +386,8 @@ step-01 ──→ step-02 ──→ step-03 ──→ step-04
384
386
  - Type: Init (Non-Continuable)
385
387
  - Input Discovery: No
386
388
  - Menu: Auto-proceed (Pattern 3)
387
- - Next Step: step-02-write-config.md
388
- - No step-01b needed (single-session)
389
+ - Next Step: step-01b-ccc-index.md
390
+ - step-01b handles CCC index verification before config writing
389
391
 
390
392
  **Supporting Files:**
391
393
  - data/tier-rules.md (created in foundation step)
@@ -7,7 +7,7 @@ installed_path: '{project-root}/_bmad/skf/workflows/skillforge/setup-forge'
7
7
 
8
8
  # Setup Forge
9
9
 
10
- **Goal:** Initialize the forge environment by detecting available tools, determining the capability tier (Quick/Forge/Deep), writing persistent configuration, and optionally indexing the project for deep search.
10
+ **Goal:** Initialize the forge environment by detecting available tools, determining the capability tier (Quick/Forge/Forge+/Deep), writing persistent configuration, and optionally indexing the project for deep search.
11
11
 
12
12
  **Your Role:** You are a system executor performing environment resolution. This is a fully autonomous workflow — no user interaction is required during execution. Run each step in sequence, write configuration files, and report results at completion.
13
13
 
@@ -45,6 +45,11 @@ tessl evaluates SKILL.md body content only — it does not read `references/*.md
45
45
  - Type Coverage: AST-verified type completeness
46
46
  - Full scoring formula applied
47
47
 
48
+ ### Forge+ Tier (ast-grep + ccc)
49
+ - Same scoring as Forge tier — ccc provides pre-ranking but does not change scoring weights
50
+ - Improved extraction coverage (from ccc pre-discovery) may increase T1 count, but scoring formula is identical to Forge
51
+ - Full scoring formula applied
52
+
48
53
  ### Deep Tier (ast-grep + gh + QMD)
49
54
  - All Forge tier checks plus:
50
55
  - Cross-repository reference verification
@@ -112,7 +112,7 @@ Log each issue as a pre-check finding. Continue with testing — frontmatter iss
112
112
  Read `{sidecarFile}` to determine available analysis depth.
113
113
 
114
114
  **If forge-tier.yaml exists:**
115
- - Read `tier` value (Quick, Forge, or Deep)
115
+ - Read `tier` value (Quick, Forge, Forge+, or Deep)
116
116
  - Read tool availability flags (ast_grep, gh_cli, qmd)
117
117
 
118
118
  **If forge-tier.yaml missing:**
@@ -124,7 +124,7 @@ Default to Quick tier and continue.
124
124
 
125
125
  ### 4b. Apply Tier Override (if set)
126
126
 
127
- Read `{sidecar_path}/preferences.yaml`. If `tier_override` is set and is a valid tier value (Quick, Forge, or Deep), update `detected_tier` to the override value for use in subsequent steps and output documents.
127
+ Read `{sidecar_path}/preferences.yaml`. If `tier_override` is set and is a valid tier value (Quick, Forge, Forge+, or Deep), update `detected_tier` to the override value for use in subsequent steps and output documents.
128
128
 
129
129
  ### 5. Load Skill Metadata
130
130
 
@@ -6,6 +6,7 @@ testMode: ''
6
6
  forgeTier: ''
7
7
  testResult: ''
8
8
  score: ''
9
+ threshold: ''
9
10
  analysisConfidence: ''
10
11
  testDate: ''
11
12
  stepsCompleted: []
@@ -20,6 +21,8 @@ nextWorkflow: ''
20
21
 
21
22
  ## Coherence Analysis
22
23
 
24
+ ## External Validation
25
+
23
26
  ## Completeness Score
24
27
 
25
28
  ## Gap Report
@@ -247,7 +247,7 @@ Each step has explicit CONTEXT BOUNDARIES with FORBIDDEN markers preventing scop
247
247
 
248
248
  ### Error Handling: Good
249
249
 
250
- - step-01: Three-tier handling (hard stop for missing SKILL.md, warning for missing metadata.json, graceful default for missing forge-tier.yaml). Checks `preferences.yaml` for `tier_override` after loading forge tier.
250
+ - step-01: Four-tier handling (hard stop for missing SKILL.md, warning for missing metadata.json, graceful default for missing forge-tier.yaml). Checks `preferences.yaml` for `tier_override` after loading forge tier.
251
251
  - step-03/04: Subprocess fallback rules at multiple locations
252
252
  - step-06: Zero-gaps clean pass path
253
253
 
@@ -299,7 +299,7 @@ Subprocess optimization correctly concentrated in steps 03 and 04 (heavy analysi
299
299
  ### Strengths:
300
300
 
301
301
  1. Rigorous traceability (zero hallucination with file:line citations)
302
- 2. Three-tier depth scaling (Quick/Forge/Deep)
302
+ 2. Four-tier depth scaling (Quick/Forge/Forge+/Deep)
303
303
  3. Clean separation of concerns with explicit FORBIDDEN markers
304
304
  4. Well-designed subprocess optimization with structured return formats
305
305
  5. Actionable remediation quality rules with good/bad examples
@@ -76,7 +76,7 @@ Cognitive completeness verification — Verifies that a skill is complete enough
76
76
  - No frontmatter configuration for steps
77
77
  - No data files, templates, or output format specifications
78
78
  - Batch mode mechanics are unspecified
79
- - No forge tier awareness — coverage depth must scale with Quick/Forge/Deep tiers
79
+ - No forge tier awareness — coverage depth must scale with Quick/Forge/Forge+/Deep tiers
80
80
  - No reference to forge-tier.yaml sidecar state for tier detection
81
81
  - Zero hallucination principle not encoded — scoring must trace to AST citations
82
82
 
@@ -274,7 +274,7 @@ Ferris (Audit mode): methodical, precise, evidence-based. Zero hallucination —
274
274
  workflowType: 'test-skill'
275
275
  skillName: '{skill_name}'
276
276
  testMode: '{naive|contextual}'
277
- forgeTier: '{Quick|Forge|Deep}'
277
+ forgeTier: '{Quick|Forge|Forge+|Deep}'
278
278
  testResult: '{pass|fail}'
279
279
  score: '{N%}'
280
280
  threshold: '{N%}'
@@ -89,14 +89,15 @@ Search for the test report at `{forge_data_folder}/{skill_name}/test-report-{ski
89
89
  ### 3. Load Forge Tier Configuration
90
90
 
91
91
  **Load `{sidecar_path}/forge-tier.yaml`:**
92
- - Extract: `tier` (Quick, Forge, or Deep), available tools
92
+ - Extract: `tier` (Quick, Forge, Forge+, or Deep), available tools
93
93
  - If missing: **ABORT** — "No forge-tier.yaml found. Run setup-forge first to detect available tools."
94
94
 
95
- **Apply tier override:** Read `{sidecar_path}/preferences.yaml`. If `tier_override` is set and is a valid tier value (Quick, Forge, or Deep), use it instead of the detected tier.
95
+ **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.
96
96
 
97
97
  **Determine analysis capabilities:**
98
98
  - **Quick:** text pattern matching only → T1-low confidence
99
99
  - **Forge:** AST structural extraction → T1 confidence
100
+ - **Forge+:** AST structural extraction + CCC semantic ranking → T1 confidence (with ccc signals)
100
101
  - **Deep:** AST + QMD semantic enrichment → T1 + T2 confidence
101
102
 
102
103
  ### 4. Load Provenance Map