bmad-module-skill-forge 0.8.1 → 0.8.3
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/docs/how-it-works.md
CHANGED
|
@@ -40,7 +40,7 @@ Each workflow directory contains these files, and each has a specific job:
|
|
|
40
40
|
|---------------------------|---------------------------------------------------------------------------------------------------------------------|---------------------------------------------------|
|
|
41
41
|
| `forger.agent.yaml` | Expert persona — identity, principles, critical actions, menu of triggers | First — always in context |
|
|
42
42
|
| `skf-knowledge-index.csv` | Knowledge fragment index — id, name, tags, tier, file path | Read by steps to decide which fragments to load |
|
|
43
|
-
| `knowledge/*.md` |
|
|
43
|
+
| `knowledge/*.md` | 13 reusable fragments + overview.md index — cross-cutting principles and patterns (e.g., `zero-hallucination.md`, `confidence-tiers.md`, `ccc-bridge.md`) | Selectively read into context when a step directs |
|
|
44
44
|
|
|
45
45
|
```mermaid
|
|
46
46
|
flowchart LR
|
|
@@ -421,7 +421,7 @@ src/
|
|
|
421
421
|
│ └── README.md
|
|
422
422
|
├── knowledge/
|
|
423
423
|
│ ├── skf-knowledge-index.csv
|
|
424
|
-
│ └── *.md (
|
|
424
|
+
│ └── *.md (13 knowledge fragments + overview.md index)
|
|
425
425
|
└── workflows/
|
|
426
426
|
├── setup-forge/
|
|
427
427
|
├── analyze-source/
|
package/docs/workflows.md
CHANGED
|
@@ -133,7 +133,7 @@ SKF has 12 workflows. You trigger them by typing commands to [Ferris](../agents/
|
|
|
133
133
|
|
|
134
134
|
**Command:** `@Ferris TS`
|
|
135
135
|
|
|
136
|
-
**Purpose:** Cognitive completeness verification. Quality gate before export.
|
|
136
|
+
**Purpose:** Cognitive completeness verification. Naive and contextual modes. Quality gate before export.
|
|
137
137
|
|
|
138
138
|
**When to Use:** After creating or updating a skill, before exporting.
|
|
139
139
|
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"$schema": "https://json.schemastore.org/package.json",
|
|
3
3
|
"name": "bmad-module-skill-forge",
|
|
4
|
-
"version": "0.8.
|
|
4
|
+
"version": "0.8.3",
|
|
5
5
|
"description": "BMAD module — Turn code and docs into instructions AI agents can actually follow. Progressive capability tiers (Quick/Forge/Forge+/Deep).",
|
|
6
6
|
"keywords": [
|
|
7
7
|
"bmad",
|
|
@@ -102,7 +102,7 @@ For remote repository sources (GitHub URLs), CCC cannot operate during step-02b
|
|
|
102
102
|
|
|
103
103
|
1. **step-02b:** Detects remote source, sets `{ccc_discovery: []}`, displays deferred message
|
|
104
104
|
2. **step-03:** After ephemeral clone succeeds, detects the deferred scenario (`tools.ccc == true AND {ccc_discovery} is empty AND ephemeral_clone_active == true AND tier is Forge+/Deep`)
|
|
105
|
-
3. **step-03:** Runs `cd {temp_path} && ccc init`
|
|
105
|
+
3. **step-03:** Runs `cd {temp_path} && ccc init` on the ephemeral clone, then applies brief `exclude_patterns` (if present) to `{temp_path}/.cocoindex_code/settings.yml` before running `ccc index` (extended timeout or background mode, verified via `ccc status`). This prevents CCC from indexing files the brief explicitly excludes, keeping search results focused on in-scope source code and reducing indexing time for large repositories.
|
|
106
106
|
4. **step-03:** Executes CCC search and populates `{ccc_discovery}` before AST extraction begins
|
|
107
107
|
|
|
108
108
|
The ephemeral clone index is not registered in `ccc_index_registry` — the clone is deleted after extraction and the CCC daemon's own GC handles orphaned indexes.
|
|
@@ -131,6 +131,7 @@ To prevent excessive daemon calls, workflow steps cap ccc queries:
|
|
|
131
131
|
- Passing ccc results directly to the extraction inventory — they are candidates, not extractions
|
|
132
132
|
- Listing ccc as "unavailable" in reports for Quick/Forge tiers — ccc is a Forge+ capability, not something Quick/Forge tiers are missing
|
|
133
133
|
- Indexing without configuring SKF exclusions — framework and output directories pollute search results
|
|
134
|
+
- Indexing an ephemeral clone without applying brief `exclude_patterns` — excluded files pollute CCC search results and waste indexing time on large repositories
|
|
134
135
|
- Skipping CCC discovery for remote sources without deferring to step-03 — remote repos deserve the same pre-ranking as local sources
|
|
135
136
|
|
|
136
137
|
## Related Fragments
|
|
@@ -82,7 +82,7 @@ Scripts and assets are file-level artifacts, not code exports. They follow the *
|
|
|
82
82
|
- Exclude generated files (`dist/`, `build/`, `.webpack/` output)
|
|
83
83
|
- Exclude vendored/third-party files
|
|
84
84
|
- Flag files >500 lines for user confirmation (may be too large for skill package)
|
|
85
|
-
- If `scripts_intent
|
|
85
|
+
- If `scripts_intent` is absent from the brief, treat as `"detect"` (auto-detection is the default). If `scripts_intent` is explicitly `"none"`, skip scripts detection. Same rule applies to `assets_intent`.
|
|
86
86
|
|
|
87
87
|
### Provenance and Hashing
|
|
88
88
|
|
|
@@ -84,16 +84,24 @@ If ALL of these conditions are true:
|
|
|
84
84
|
|
|
85
85
|
Then run CCC indexing and discovery on the ephemeral clone:
|
|
86
86
|
|
|
87
|
-
1. **
|
|
87
|
+
1. **Initialize index:** Run `cd {temp_path} && ccc init` — `ccc init` takes no positional arguments and initializes the index for the current working directory. If init fails, set `{ccc_discovery: []}` and continue — this is not an error.
|
|
88
88
|
|
|
89
|
-
2. **
|
|
89
|
+
2. **Apply brief exclusions:** If `brief.exclude_patterns` is present and non-empty, apply them to `{temp_path}/.cocoindex_code/settings.yml` before indexing:
|
|
90
|
+
1. Read `{temp_path}/.cocoindex_code/settings.yml` (created by `ccc init`)
|
|
91
|
+
2. For each pattern in `brief.exclude_patterns`: if the pattern is NOT already present in the `exclude_patterns` array, append it
|
|
92
|
+
3. Write the updated `settings.yml` back
|
|
93
|
+
This prevents CCC from indexing excluded files, keeping search results focused on in-scope source code. If `brief.exclude_patterns` is absent or empty, skip this step.
|
|
90
94
|
|
|
91
|
-
3. **
|
|
95
|
+
3. **Index the clone:** Run `cd {temp_path} && ccc index` with an extended timeout or in background mode. Indexing can take several minutes on large codebases (1000+ files). Use `ccc status` to verify completion — check that `Chunks` and `Files` counts are non-zero. If indexing fails, set `{ccc_discovery: []}` and continue — this is not an error.
|
|
96
|
+
|
|
97
|
+
4. **Construct semantic query:** Build from brief data: `"{brief.name} {brief.scope}"`. Truncate to 80 characters — keep the full skill name and trim `brief.scope` from the end. If `brief.scope` is very short (< 10 chars), append terms from `brief.description` to fill the remaining space.
|
|
98
|
+
|
|
99
|
+
5. **Execute search:** Run `ccc_bridge.search(query, temp_path, top_k=20)`:
|
|
92
100
|
- **Tool resolution:** Use `/ccc` skill search (Claude Code), ccc MCP server (Cursor), or `cd {temp_path} && ccc search --limit 20 "{query}"` (CLI). Note: `ccc search` operates on the index in the current working directory. See [knowledge/tool-resolution.md](../../../knowledge/tool-resolution.md).
|
|
93
101
|
|
|
94
|
-
|
|
102
|
+
6. **Store results:** If search succeeds, store as `{ccc_discovery: [{file, score, snippet}]}`. Display: "**CCC semantic discovery (post-clone): {N} relevant regions identified across {M} unique files.**"
|
|
95
103
|
|
|
96
|
-
|
|
104
|
+
7. **On failure:** Set `{ccc_discovery: []}`. Display: "CCC post-clone discovery unavailable — proceeding with standard extraction." Do NOT halt.
|
|
97
105
|
|
|
98
106
|
**CCC Discovery Integration (Forge+ and Deep with ccc only):**
|
|
99
107
|
|
|
@@ -184,7 +192,9 @@ Use the entry point as the authoritative source for `metadata.json`'s `exports[]
|
|
|
184
192
|
|
|
185
193
|
### 4c. Detect and Inventory Scripts/Assets
|
|
186
194
|
|
|
187
|
-
**If `scripts_intent
|
|
195
|
+
**Default resolution:** If `scripts_intent` is absent from the brief, treat as `"detect"` (auto-detection). If `assets_intent` is absent, treat as `"detect"`. Only an explicit `"none"` value disables detection.
|
|
196
|
+
|
|
197
|
+
**If `scripts_intent` is `"none"` AND `assets_intent` is `"none"`:** Skip this section entirely. **If only one is `"none"`:** Skip that category only, proceed with the other.
|
|
188
198
|
|
|
189
199
|
After export extraction, scan the source for scripts and assets using the detection patterns in `{extractionPatternsTracingData}`:
|
|
190
200
|
|