bmad-module-skill-forge 1.8.0 → 1.9.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 (43) hide show
  1. package/.claude-plugin/marketplace.json +1 -1
  2. package/docs/_data/pinned.yaml +1 -1
  3. package/docs/bmad-synergy.md +16 -0
  4. package/docs/deepwiki.md +89 -0
  5. package/docs/verifying-a-skill.md +8 -2
  6. package/docs/workflows.md +17 -11
  7. package/package.json +2 -2
  8. package/src/shared/_known-workarounds.yaml +155 -0
  9. package/src/shared/references/pipeline-contracts.md +11 -2
  10. package/src/shared/scripts/schemas/skf-brief-result-envelope.v1.json +6 -1
  11. package/src/shared/scripts/skf-detect-docs.py +412 -0
  12. package/src/shared/scripts/skf-emit-brief-result-envelope.py +12 -1
  13. package/src/shared/scripts/skf-preapply.py +192 -0
  14. package/src/shared/scripts/skf-shape-detect.py +563 -0
  15. package/src/shared/scripts/skf-validate-pins.py +368 -0
  16. package/src/skf-analyze-source/SKILL.md +26 -20
  17. package/src/skf-analyze-source/references/init.md +30 -0
  18. package/src/skf-analyze-source/references/step-auto-scope.md +525 -0
  19. package/src/skf-analyze-source/references/step-shape-detect.md +79 -0
  20. package/src/skf-audit-skill/SKILL.md +1 -0
  21. package/src/skf-audit-skill/assets/drift-report-template.md +6 -0
  22. package/src/skf-audit-skill/references/report.md +4 -0
  23. package/src/skf-audit-skill/references/severity-classify.md +1 -1
  24. package/src/skf-audit-skill/references/step-doc-drift.md +147 -0
  25. package/src/skf-brief-skill/SKILL.md +7 -3
  26. package/src/skf-brief-skill/references/gather-intent.md +14 -0
  27. package/src/skf-brief-skill/references/step-auto-brief.md +171 -0
  28. package/src/skf-brief-skill/references/step-auto-validate.md +209 -0
  29. package/src/skf-create-skill/SKILL.md +3 -0
  30. package/src/skf-create-skill/assets/skill-sections.md +2 -0
  31. package/src/skf-create-skill/references/compile.md +1 -1
  32. package/src/skf-create-skill/references/step-auto-shard.md +110 -0
  33. package/src/skf-create-skill/references/step-doc-rot.md +109 -0
  34. package/src/skf-create-skill/references/step-doc-sources.md +114 -0
  35. package/src/skf-forger/SKILL.md +8 -2
  36. package/src/skf-test-skill/SKILL.md +8 -7
  37. package/src/skf-test-skill/customize.toml +2 -1
  38. package/src/skf-test-skill/references/external-validators.md +1 -1
  39. package/src/skf-test-skill/references/init.md +16 -1
  40. package/src/skf-test-skill/references/report.md +5 -1
  41. package/src/skf-test-skill/references/score.md +95 -6
  42. package/src/skf-test-skill/references/step-hard-gate.md +73 -0
  43. package/src/skf-test-skill/templates/test-report-template.md +1 -0
@@ -30,7 +30,7 @@
30
30
  "name": "skill-forge",
31
31
  "source": "./",
32
32
  "description": "Evidence-based agent skills compiler with progressive capability tiers (Quick/Forge/Forge+/Deep).",
33
- "version": "1.8.0",
33
+ "version": "1.9.0",
34
34
  "author": {
35
35
  "name": "Armel"
36
36
  },
@@ -26,7 +26,7 @@
26
26
  # Enforced two ways: (1) release.yaml bumps this line in the same commit
27
27
  # as package.json + marketplace.json on every release; (2) validate-docs-drift.js
28
28
  # cross-checks this value against package.json.version and fails on mismatch.
29
- skf_version: "1.8.0"
29
+ skf_version: "1.9.0"
30
30
 
31
31
  # Path to the oh-my-skills repo, resolved relative to this repo's root.
32
32
  # Override at runtime with the OMS environment variable if oh-my-skills
@@ -25,6 +25,22 @@ When a BMAD agent runs a workflow, that workflow can consult SKF content skills
25
25
 
26
26
  ---
27
27
 
28
+ ## SKF Without BMM
29
+
30
+ SKF works standalone — no BMAD installation required. If you found this page from a search and don't use the BMAD Method, this section is for you.
31
+
32
+ The fastest way to start is [`deepwiki`](../deepwiki/). One command produces a verified wiki skill in 3–5 minutes with zero configuration:
33
+
34
+ ```
35
+ @Ferris deepwiki https://github.com/honojs/hono
36
+ ```
37
+
38
+ That's it. No brief file, no scope decisions, no multi-step pipeline to learn. deepwiki handles analysis, scoping, compilation, testing (with a 90% quality gate), and export automatically. See the [deepwiki guide](../deepwiki/) for the full syntax and input types.
39
+
40
+ If you later adopt the BMAD Method, the skills you created via deepwiki integrate seamlessly into BMM phases — they become the verified content skills that BMAD workflows consult during planning and implementation. The [phase-by-phase playbook](#skf-and-bmm-phase-by-phase-playbook) below shows exactly where each SKF workflow fits.
41
+
42
+ ---
43
+
28
44
  ## SKF and BMM: Phase-by-Phase Playbook
29
45
 
30
46
  BMM is BMAD's core [4-phase workflow](https://docs.bmad-method.org/) (Analysis → Planning → Solutioning → Implementation). SKF has five concrete entry points across those phases. The diagram below shows the end-to-end picture; the subsections that follow give the trigger, command, and artifact flow for each phase.
@@ -0,0 +1,89 @@
1
+ ---
2
+ title: deepwiki
3
+ description: Zero-ceremony wiki-skill creation — one command turns a GitHub repo, doc URL, or pinned version into a verified wiki skill
4
+ ---
5
+
6
+ deepwiki is a [pipeline alias](../workflows/#pipeline-aliases) that chains five workflows into a single command. Give it a repo URL, a documentation URL, or a pinned version, and it produces a verified wiki skill in 3–5 minutes with zero configuration.
7
+
8
+ If you're new to SKF and want to try it without reading anything else, start here.
9
+
10
+ ---
11
+
12
+ ## Invocation
13
+
14
+ Three input types, one command pattern:
15
+
16
+ ```
17
+ @Ferris deepwiki https://github.com/honojs/hono — repo URL
18
+ @Ferris deepwiki https://docs.example.com — doc URL (docs-only)
19
+ @Ferris deepwiki https://github.com/honojs/hono --pin v4.6.0 — pinned version
20
+ ```
21
+
22
+ - **Repo URL** — analyzes the full source repository, extracts exports, and compiles a wiki skill from code + docs.
23
+ - **Doc URL** — skips source analysis entirely and builds the skill from documentation alone. Useful for closed-source libraries or when the docs are the canonical reference.
24
+ - **`--pin <version>`** — targets a specific release. The version tag is resolved during analysis so the resulting skill is locked to that exact API surface.
25
+
26
+ ---
27
+
28
+ ## Pipeline Stages
29
+
30
+ deepwiki expands to `AN[auto] BS[auto] CS TS[min:90] EX`. Each stage runs in [headless mode](../workflows/#headless-mode) — no confirmation gates, no interactive prompts.
31
+
32
+ | Stage | Workflow | Mode | What Happens |
33
+ |-------|----------|------|-------------|
34
+ | 1 | **Analyze Source** (AN) | `[auto]` | Scans the target, detects shape (library/framework/tool/app), discovers exports, and generates a scope + brief automatically. |
35
+ | 2 | **Brief Skill** (BS) | `[auto]` | Enriches the auto-generated brief with doc detection results. No interactive scoping — the brief is assembled from AN's output. |
36
+ | 3 | **Create Skill** (CS) | standard | Compiles the skill from the enriched brief. Extracts exports, resolves documentation sources, validates structure. |
37
+ | 4 | **Test Skill** (TS) | `[min:90]` | Verifies completeness with a **90% quality threshold** (stricter than the default 80%). Fail halts the pipeline. |
38
+ | 5 | **Export Skill** (EX) | standard | Validates the package, generates context snippets, and injects into your IDE's context file. |
39
+
40
+ Data flows automatically between stages — the brief path from AN feeds BS, the skill name from CS feeds TS, and so on. See [Pipeline Mode](../workflows/#pipeline-mode) for the general mechanics.
41
+
42
+ ---
43
+
44
+ ## Automatic Behaviors
45
+
46
+ deepwiki's `[auto]` flags activate several behaviors that normally require manual input:
47
+
48
+ - **Auto-scope** — shape detection (library, framework, tool, application) drives scope decisions. No interactive scope confirmation.
49
+ - **Auto-brief** — the brief is generated and enriched with doc-detection results in one pass, without the interactive discovery flow that `BS` uses standalone.
50
+ - **Coexistence detection** — if a skill for the same target already exists, deepwiki detects it and offers three options: create alongside (new version), merge into the existing skill, or skip.
51
+ - **Auto-decomposition** — for massive repos (>500 exports or >3 packages), AN automatically decomposes into multiple analysis units before proceeding.
52
+
53
+ ---
54
+
55
+ ## Expected Output
56
+
57
+ A successful deepwiki run produces a complete skill package in your forge data directory, exported and ready for use. The skill includes:
58
+
59
+ - `SKILL.md` — the compiled wiki skill with provenance-cited instructions
60
+ - `metadata.json` — version, source, confidence tier breakdown
61
+ - Context snippet injected into your IDE context file (CLAUDE.md, .cursorrules, AGENTS.md, etc.)
62
+
63
+ The quality threshold is 90% — if the skill scores below that, the pipeline halts at TS with a gap report. Run `@Ferris US` to address gaps, then `@Ferris TS EX` to re-test and export.
64
+
65
+ ---
66
+
67
+ ## Timing
68
+
69
+ A typical library (50–200 exports) takes **3–5 minutes** end to end. Factors that increase time:
70
+
71
+ - Massive repos (>500 exports) trigger auto-decomposition, adding 1–3 minutes
72
+ - Doc-only targets depend on documentation site size and structure
73
+ - Deep-tier projects (with QMD and CCC) spend more time on enrichment
74
+
75
+ ---
76
+
77
+ ## Migration from onboard
78
+
79
+ deepwiki replaces the older `onboard` alias. `onboard` still works but shows a deprecation notice on every invocation and will be removed in v2.0.
80
+
81
+ The key difference: `onboard` runs `AN CS TS EX` with standard (interactive) modes. deepwiki adds auto-scope, auto-brief, a stricter quality gate (90% vs 80%), and accepts repo URLs and doc URLs — not just project paths.
82
+
83
+ ---
84
+
85
+ ## Related
86
+
87
+ - [Workflows](../workflows/) — pipeline mode mechanics, headless mode, circuit breakers
88
+ - [Concepts](../concepts/) — provenance, confidence tiers, drift, version pinning
89
+ - [BMAD Synergy](../bmad-synergy/) — how deepwiki fits into BMAD phases, and standalone SKF usage
@@ -156,16 +156,22 @@ Your forge tier determines which categories can be scored:
156
156
 
157
157
  When categories are skipped, their combined weight is redistributed proportionally to the remaining active categories. A Quick-tier skill and a Deep-tier skill both pass at the same 80% threshold — the score reflects what your tier can actually measure.
158
158
 
159
+ ### Hard gate
160
+
161
+ Before scoring, a hard gate scans all findings for **Critical** and **High** severity. If any are present, the pipeline blocks immediately — no score is computed and the skill cannot pass regardless of coverage percentage. Medium, Low, and Info findings pass through to scoring.
162
+
159
163
  ### Pass/fail
160
164
 
161
165
  ```
162
- threshold = custom_threshold OR 80% (default)
166
+ threshold = pipeline_default OR custom_threshold OR 80% (default)
163
167
 
164
168
  score >= threshold → PASS → Recommend export-skill
165
169
  score < threshold → FAIL → Recommend update-skill
166
170
  ```
167
171
 
168
- The default is 80%. You can override it by specifying a custom threshold when invoking the workflow (e.g., "test this skill with a 70% threshold").
172
+ The default threshold is **80%**. Pipeline aliases declare their own defaults: `deepwiki` targets **90%**, `forge` and `forge-quick` target **80%**. You can override any default with a custom threshold (e.g., `TS[min:85]`).
173
+
174
+ When a skill scores between 80% and its target threshold (e.g., 82% against a 90% target), the soft gate falls back to the 80% floor — the skill passes, but an evidence report is written to `forge-data/{skill}/{version}/evidence-report-fallback.md` documenting the quality compromise.
169
175
 
170
176
  ### Gap severities
171
177
 
package/docs/workflows.md CHANGED
@@ -52,7 +52,7 @@ Trigger workflows by typing commands to [Ferris](../agents/). See [Concepts](../
52
52
 
53
53
  **When to Use:** After Brief Skill, or with an existing skill-brief.yaml.
54
54
 
55
- **Key Steps:** Load brief → Ecosystem check → Extract (AST + scripts/assets) → QMD enrich (Deep) → Compile → Validate → Generate
55
+ **Key Steps:** Load brief → Ecosystem check → Extract (AST + scripts/assets) → QMD enrich (Deep) → Compile → Doc sources → Auto-shard → Doc-rot → Validate → Generate
56
56
 
57
57
  **Agent:** Ferris (Architect mode)
58
58
 
@@ -141,7 +141,7 @@ Trigger workflows by typing commands to [Ferris](../agents/). See [Concepts](../
141
141
 
142
142
  **When to Use:** To check if a skill has fallen out of date with its source code. Works for both individual skills and stack skills.
143
143
 
144
- **Key Steps:** Load skill → Re-index source → Structural diff (incl. script/asset drift) → Semantic diff (Deep) → Classify severity → Report
144
+ **Key Steps:** Load skill → Re-index source → Structural diff (incl. script/asset drift) → Semantic diff (Deep) → Classify severity → Doc drift → Report
145
145
 
146
146
  **Stack skill support:** Code-mode stacks are audited per-library against their sources. Compose-mode stacks check constituent freshness via metadata hash comparison — if a constituent skill was updated after the stack was composed, audit flags it as constituent drift. Stack skills that need updating are redirected to `@Ferris SS` for re-composition (surgical update is not supported for stacks).
147
147
 
@@ -157,9 +157,9 @@ Trigger workflows by typing commands to [Ferris](../agents/). See [Concepts](../
157
157
 
158
158
  **When to Use:** After creating or updating a skill, before exporting.
159
159
 
160
- **Key Steps:** Load skill → Detect mode → Coverage check → Coherence check → External validation (skill-check, tessl) → Score → Gap report
160
+ **Key Steps:** Load skill → Detect mode → Coverage check → Coherence check → External validation (skill-check, tessl) → Hard gate → Score → Gap report
161
161
 
162
- **Scored Categories:** Export Coverage (36%), Signature Accuracy (22%), Type Coverage (14%), Coherence (18%), External Validation (10%). Default pass threshold: **80%**. Pass routes to Export Skill; fail routes to Update Skill with a gap report. See [Completeness Scoring](../verifying-a-skill/#how-the-score-is-computed) for the full formula and tier adjustments.
162
+ **Scored Categories:** Export Coverage (36%), Signature Accuracy (22%), Type Coverage (14%), Coherence (18%), External Validation (10%). Default pass threshold: **80%** (per-pipeline defaults: deepwiki 90%, forge 80%). Pass routes to Export Skill; fail routes to Update Skill with a gap report. See [Completeness Scoring](../verifying-a-skill/#how-the-score-is-computed) for the full formula and tier adjustments.
163
163
 
164
164
  **Agent:** Ferris (Audit mode)
165
165
 
@@ -289,7 +289,7 @@ flowchart TD
289
289
  | Category | Workflows | Description |
290
290
  | ------------------------- | -------------- | -------------------------------------------------------------------------------------------------------------------------------- |
291
291
  | Core | SF, BS, CS, US | Setup, brief, create, and update skills |
292
- | Feature | QS, SS, AN | Quick skill, stack skill, and analyze source |
292
+ | Feature | QS, SS, AN | Quick skill, stack skill, and analyze source — the [`deepwiki`](#pipeline-aliases) alias chains AN + BS + CS + TS + EX for zero-ceremony wiki-skill creation |
293
293
  | Quality | AS, TS | Detect skill drift (AS) and verify skill completeness (TS) |
294
294
  | Architecture Verification | VS, RA | Pre-code architecture feasibility and refinement |
295
295
  | Management | RS, DS | Rename and drop skill versions with transactional safety |
@@ -313,12 +313,15 @@ Instead of running one workflow per session, you can chain multiple workflows in
313
313
 
314
314
  ### Pipeline Aliases
315
315
 
316
- | Alias | Expands To | First Workflow | Required Target |
317
- | ------------- | ------------- | -------------- | -------------------------------------------- |
318
- | `forge` | `BS CS TS EX` | BS | GitHub URL or local path **+** skill name |
319
- | `forge-quick` | `QS TS EX` | QS | GitHub URL **or** package name |
320
- | `onboard` | `AN CS TS EX` | AN | Project path (defaults to current directory) |
321
- | `maintain` | `AS US TS EX` | AS | Existing skill name |
316
+ The `deepwiki` alias is the recommended way to create wiki skills — one command, zero configuration. It chains five workflows with auto-mode flags so you get a verified skill without touching a brief or scope file.
317
+
318
+ | Alias | Expands To | First Workflow | Required Target |
319
+ | ------------- | -------------------------------------- | -------------- | -------------------------------------------- |
320
+ | `deepwiki` | `AN[auto] BS[auto] CS TS[min:90] EX` | AN | GitHub URL, doc URL, or `--pin <version>` |
321
+ | `forge` | `BS CS TS EX` | BS | GitHub URL or local path **+** skill name |
322
+ | `forge-quick` | `QS TS EX` | QS | GitHub URL **or** package name |
323
+ | `onboard` | `AN CS TS EX` *(deprecated — use deepwiki)* | AN | Project path (defaults to current directory) |
324
+ | `maintain` | `AS US TS EX` | AS | Existing skill name |
322
325
 
323
326
  **The first workflow's input contract defines what arguments the pipeline needs.** A bare package name works for `forge-quick` (QS resolves packages via the registry) but **not** for `forge` — BS requires both an unambiguous target (URL or path) and a skill name.
324
327
 
@@ -334,6 +337,9 @@ Instead of running one workflow per session, you can chain multiple workflows in
334
337
  ### Examples
335
338
 
336
339
  ```
340
+ @Ferris deepwiki https://github.com/honojs/hono — zero-ceremony wiki skill
341
+ @Ferris deepwiki https://docs.example.com — docs-only wiki skill
342
+ @Ferris deepwiki https://github.com/honojs/hono --pin v4.6.0 — pinned version
337
343
  @Ferris forge-quick @tanstack/query — QS + TS + EX for TanStack Query
338
344
  @Ferris forge https://github.com/topoteretes/cognee cognee — BS + CS + TS + EX, explicit URL + name
339
345
  @Ferris forge https://github.com/topoteretes/cognee cognee "public API only" — with scope hint
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": "1.8.0",
4
+ "version": "1.9.0",
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",
@@ -53,7 +53,7 @@
53
53
  "test:cli": "node test/test-cli-integration.js",
54
54
  "test:install": "node test/test-installation-components.js",
55
55
  "test:knowledge": "node test/test-knowledge-base.js",
56
- "test:python": "uv run --with pytest --with pyyaml --with jsonschema pytest test/test-compute-score-contract.py test/test-skf-preflight.py test/test-skf-skill-inventory.py test/test-skf-validate-output.py test/test-skf-validate-frontmatter.py test/test-skf-manifest-ops.py test/test-skf-rebuild-managed-sections.py test/test-skf-atomic-write.py test/test-skf-severity-classify.py test/test-skf-structural-diff.py test/test-skf-detect-tools.py test/test-skf-forge-tier-rw.py test/test-skf-emit-result-envelope.py test/test-skf-qmd-classify-collections.py test/test-skf-merge-ccc-exclusions.py test/test-skf-resolve-package.py test/test-skf-extract-public-api.py test/test-skf-render-quick-metadata.py test/test-skf-validate-brief-inputs.py test/test-skf-emit-brief-result-envelope.py test/test-skf-write-skill-brief.py test/test-skf-detect-workspaces.py test/test-skf-recommend-scope-type.py test/test-skf-detect-language.py test/test-skf-description-guard.py test/test-skf-detect-scripts-assets.py test/test-skf-hash-content.py test/test-skf-validate-brief-schema.py test/test-skf-check-workspace-drift.py test/test-skf-update-active-symlink.py test/test-skf-build-change-manifest.py test/test-skf-provenance-gap-dispatch.py test/test-skf-resolve-authoritative-files.py test/test-skf-scan-manifests.py test/test-skf-pair-intersect.py test/test-skf-enumerate-stack-skills.py test/test-skf-compare-file-hashes.py test/test-skf-load-provenance.py test/test-skf-scan-skill-md-structure.py test/test-skf-disqualify-candidates.py test/test-skf-chain-reachability.py -v",
56
+ "test:python": "uv run --with pytest --with pyyaml --with jsonschema pytest test/test-compute-score-contract.py test/test-skf-preflight.py test/test-skf-skill-inventory.py test/test-skf-validate-output.py test/test-skf-validate-frontmatter.py test/test-skf-manifest-ops.py test/test-skf-rebuild-managed-sections.py test/test-skf-atomic-write.py test/test-skf-severity-classify.py test/test-skf-structural-diff.py test/test-skf-detect-tools.py test/test-skf-forge-tier-rw.py test/test-skf-emit-result-envelope.py test/test-skf-qmd-classify-collections.py test/test-skf-merge-ccc-exclusions.py test/test-skf-resolve-package.py test/test-skf-extract-public-api.py test/test-skf-render-quick-metadata.py test/test-skf-validate-brief-inputs.py test/test-skf-emit-brief-result-envelope.py test/test-skf-write-skill-brief.py test/test-skf-detect-workspaces.py test/test-skf-recommend-scope-type.py test/test-skf-detect-language.py test/test-skf-description-guard.py test/test-skf-detect-scripts-assets.py test/test-skf-hash-content.py test/test-skf-validate-brief-schema.py test/test-skf-check-workspace-drift.py test/test-skf-update-active-symlink.py test/test-skf-build-change-manifest.py test/test-skf-provenance-gap-dispatch.py test/test-skf-resolve-authoritative-files.py test/test-skf-scan-manifests.py test/test-skf-pair-intersect.py test/test-skf-enumerate-stack-skills.py test/test-skf-compare-file-hashes.py test/test-skf-load-provenance.py test/test-skf-scan-skill-md-structure.py test/test-skf-disqualify-candidates.py test/test-skf-chain-reachability.py test/test-skf-shape-detect.py test/test-skf-detect-docs.py test/test-skf-step-doc-sources.py test/test-skf-step-doc-drift.py test/test-skf-step-hard-gate.py test/test-skf-per-pipeline-thresholds.py test/test-skf-evidence-report-fallback.py test/test-skf-validate-pins.py test/test-skf-auto-shard.py test/test-skf-preapply.py test/test-skf-step-doc-rot.py -v",
57
57
  "test:schemas": "node test/test-agent-schema.js",
58
58
  "test:workflow": "node test/test-workflow-state.js",
59
59
  "validate:refs": "node tools/validate-file-refs.js --strict",
@@ -0,0 +1,155 @@
1
+ version: 1
2
+ workarounds:
3
+ - fingerprint: "```api\nGET /api/v1/skills/compile"
4
+ fix: "```\nskf compile --target <skill-dir>"
5
+ source: gmc-batch-2024-q4
6
+ severity: high
7
+ description: Hallucinated REST API endpoint replaced with correct CLI invocation
8
+
9
+ - fingerprint: 'requires-python = ">=3.8"'
10
+ fix: 'requires-python = ">=3.9"'
11
+ source: gmc-batch-2024-q4
12
+ severity: medium
13
+ description: Stale Python 3.8 minimum version updated to 3.9 baseline
14
+
15
+ - fingerprint: "## outputs\n\n## steps"
16
+ fix: "## Outputs\n\n## Steps"
17
+ source: gmc-batch-2025-q1
18
+ severity: high
19
+ description: Lowercase heading violates skill-sections spec capitalization rules
20
+
21
+ - fingerprint: "confidence: unverified"
22
+ fix: "confidence: T1-inferred"
23
+ source: gmc-batch-2025-q1
24
+ severity: medium
25
+ description: Missing provenance tier replaced with correct T1 annotation
26
+
27
+ - fingerprint: "[source: unknown]"
28
+ fix: "[source: repo-readme]"
29
+ source: gmc-batch-2024-q4
30
+ severity: low
31
+ description: Placeholder source attribution replaced with actual provenance
32
+
33
+ - fingerprint: "See [API Reference](./api-reference.md)"
34
+ fix: "See the API reference in the repository documentation."
35
+ source: gmc-batch-2025-q1
36
+ severity: high
37
+ description: Broken cross-reference to non-existent api-reference.md file
38
+
39
+ - fingerprint: "## Steps\n## Outputs"
40
+ fix: "## Steps\n\n## Outputs"
41
+ source: gmc-batch-2024-q4
42
+ severity: low
43
+ description: Missing blank line between heading sections fails markdown lint
44
+
45
+ - fingerprint: "(v1.0.0+)"
46
+ fix: ""
47
+ source: gmc-batch-2025-q1
48
+ severity: low
49
+ description: Inline version stamp removed per documentation conventions
50
+
51
+ - fingerprint: "tier: gold"
52
+ fix: "tier: verified"
53
+ source: gmc-batch-2024-q4
54
+ severity: medium
55
+ description: Non-standard tier label replaced with canonical tier vocabulary
56
+
57
+ - fingerprint: "```javascript\nfetch('/api/skill"
58
+ fix: "```bash\nskf"
59
+ source: gmc-batch-2025-q1
60
+ severity: high
61
+ description: Hallucinated JavaScript fetch call replaced with CLI command
62
+
63
+ - fingerprint: "## References\n## Steps"
64
+ fix: "## Steps"
65
+ source: gmc-batch-2024-q4
66
+ severity: high
67
+ description: References section misplaced before Steps violates section ordering
68
+
69
+ - fingerprint: "source: (generated)"
70
+ fix: "source: compilation-output"
71
+ source: gmc-batch-2025-q1
72
+ severity: low
73
+ description: Vague generated marker replaced with specific compilation-output source
74
+
75
+ - fingerprint: "# Skill Name\n# Overview"
76
+ fix: "# Skill Name\n\n## Overview"
77
+ source: gmc-batch-2024-q4
78
+ severity: high
79
+ description: Duplicate H1 heading replaced with correct H2 for Overview section
80
+
81
+ - fingerprint: "[ref: SKILL-SPEC-2.0](./spec.md)"
82
+ fix: "See the skill specification."
83
+ source: gmc-batch-2025-q1
84
+ severity: medium
85
+ description: Broken spec reference link to non-existent file
86
+
87
+ - fingerprint: "version: 0.9-draft"
88
+ fix: "version: 1"
89
+ source: gmc-batch-2024-q4
90
+ severity: medium
91
+ description: Draft version string replaced with release version
92
+
93
+ - fingerprint: "\\bconfidence:\\s*(?:none|n/a|unset)\\b"
94
+ fix: "confidence: T1-inferred"
95
+ source: gmc-batch-2025-q1
96
+ severity: medium
97
+ description: Empty or null confidence values normalized to T1-inferred
98
+ regex: true
99
+
100
+ - fingerprint: " - tool: compile-skill\n endpoint: /compile"
101
+ fix: " - tool: skf-compile\n invocation: CLI"
102
+ source: gmc-batch-2024-q4
103
+ severity: high
104
+ description: Hallucinated tool entry with REST endpoint replaced with correct CLI tool
105
+
106
+ - fingerprint: "## setup\n"
107
+ fix: "## Setup\n"
108
+ source: gmc-batch-2025-q1
109
+ severity: low
110
+ description: Lowercase Setup heading fails skill-check validation
111
+
112
+ - fingerprint: "\\[citation needed\\]"
113
+ fix: ""
114
+ source: gmc-batch-2024-q4
115
+ severity: low
116
+ description: Wikipedia-style citation placeholder removed from compiled output
117
+ regex: true
118
+
119
+ - fingerprint: "Last updated: 2023"
120
+ fix: ""
121
+ source: gmc-batch-2025-q1
122
+ severity: low
123
+ description: Stale 2023 date stamp removed from compiled skill content
124
+
125
+ - fingerprint: "## Inputs\n## inputs"
126
+ fix: "## Inputs"
127
+ source: gmc-batch-2024-q4
128
+ severity: medium
129
+ description: Duplicate Inputs section with inconsistent casing collapsed
130
+
131
+ - fingerprint: "\\bsee also:\\s*\\[.*\\]\\(https?://internal\\..*\\)"
132
+ fix: ""
133
+ source: gmc-batch-2025-q1
134
+ severity: high
135
+ description: Internal-only URL references removed from public skill output
136
+ regex: true
137
+
138
+ - fingerprint: "provenance: []\n"
139
+ fix: "provenance:\n - source: compilation-output\n confidence: T1-inferred\n"
140
+ source: gmc-batch-2024-q4
141
+ severity: medium
142
+ description: Empty provenance array populated with minimal compilation metadata
143
+
144
+ - fingerprint: "## Steps\n\n\n\n## Outputs"
145
+ fix: "## Steps\n\n## Outputs"
146
+ source: gmc-batch-2025-q1
147
+ severity: low
148
+ description: Excessive blank lines between sections reduced to standard single blank
149
+
150
+ - fingerprint: "\\|\\s*Step\\s*\\|\\s*Status\\s*\\|\\n\\|[-\\s|]+\\|\\n(?=\\|\\s*Step)"
151
+ fix: ""
152
+ source: gmc-batch-2024-q4
153
+ severity: medium
154
+ description: Duplicated markdown table header removed from compiled output
155
+ regex: true
@@ -19,9 +19,10 @@ The forger also accepts common pipeline aliases:
19
19
 
20
20
  | Alias | Expands To | Description |
21
21
  |-------|-----------|-------------|
22
+ | `deepwiki` | `AN[auto] BS[auto] CS TS[min:90] EX` | Full zero-ceremony wiki-skill pipeline |
22
23
  | `forge` | `BS CS TS EX` | Full skill creation pipeline (brief through export) |
23
24
  | `forge-quick` | `QS TS EX` | Quick skill pipeline |
24
- | `onboard` | `AN CS TS EX` | Full brownfield onboarding (AN generates briefs, CS consumes them directly) |
25
+ | `onboard` | `AN CS TS EX` | Full brownfield onboarding (deprecated use deepwiki) |
25
26
  | `maintain` | `AS US TS EX` | Maintenance cycle (audit → update → test → export) |
26
27
 
27
28
  ## Pipeline Rules
@@ -33,12 +34,17 @@ The forger also accepts common pipeline aliases:
33
34
  5. **Error halts propagate** — if any workflow hard-halts, the pipeline stops immediately
34
35
  6. **Progress reporting** — the forger reports completion of each workflow before starting the next
35
36
 
37
+ ## Pipeline Arguments
38
+
39
+ Pipeline-level arguments (e.g., `--pin <version>`) are passed to the first workflow's data context. The workflow decides how to consume them. For the `deepwiki` pipeline, `--pin` flows to AN, where `step-auto-scope.md §0b` uses it for pin resolution.
40
+
36
41
  ## Data Flow
37
42
 
38
43
  How outputs from one workflow become inputs to the next:
39
44
 
40
45
  | From | To | Data Passed | How |
41
46
  |------|-----|------------|-----|
47
+ | AN | BS | `brief_path` from generated brief | Forger passes the `brief_path` from AN's output to BS[auto], which loads and enriches the brief |
42
48
  | AN | CS | `skill-brief.yaml` paths from generated briefs | Forger passes each `brief_path` written by AN to CS; in batch mode, CS processes all sequentially |
43
49
  | BS | CS | `skill-brief.yaml` path | Forger passes the brief path written by BS as `brief_path` to CS |
44
50
  | CS | TS | skill name (derived from brief) | Forger passes the `skill_name` from the completed CS to TS |
@@ -57,7 +63,7 @@ Circuit breakers halt the pipeline when a workflow's output doesn't meet a quali
57
63
  |----------|-------|-------------------|----------------|
58
64
  | AN | recommended units count | min: 1 | Zero skillable units found |
59
65
  | CS | compilation success | must complete | Hard error during compilation |
60
- | TS | completeness score | min: 60 | Score below threshold |
66
+ | TS | completeness score | min: 60 (per-pipeline defaults apply — see init.md §1b) | Score below 80% floor (scores between 80% and per-pipeline threshold produce a fallback PASS with evidence report — pipeline continues) |
61
67
  | AS | drift score | not CRITICAL | Critical drift found |
62
68
  | VS | feasibility verdict | not BLOCKED | All integrations blocked |
63
69
 
@@ -68,6 +74,7 @@ Override syntax: `TS[min:80]` sets the test-skill threshold to 80 for this pipel
68
74
  Brackets after a workflow code (`CODE[value]`) are parsed as follows:
69
75
 
70
76
  - **Circuit breaker override**: `min:N` where N is a number — e.g., `TS[min:80]` sets the threshold for that workflow
77
+ - **Mode flag**: `auto` — e.g., `AN[auto]` activates auto mode for that workflow. The workflow's first step reads the flag from pipeline data context and routes to the appropriate auto-mode step file.
71
78
  - **Target argument**: any other value — e.g., `CS[cocoindex]` passes "cocoindex" as the target to CS
72
79
 
73
80
  Only workflows with a circuit breaker entry (AN, CS, TS, AS, VS) accept `min:N` overrides. All other workflows ignore `min:N` brackets. Target arguments are valid for any workflow that accepts a named input (CS, QS, BS, US, etc.).
@@ -78,12 +85,14 @@ The forger tracks pipeline state in memory during execution:
78
85
 
79
86
  ```yaml
80
87
  pipeline:
88
+ alias: "forge" # pipeline alias name, or null for ad-hoc sequences
81
89
  workflows: [AN, CS, TS, EX]
82
90
  current_index: 1
83
91
  completed:
84
92
  - {code: AN, status: ok, output: {units: 3, briefs: [...]}}
85
93
  pending: [CS, TS, EX]
86
94
  data:
95
+ pipeline_alias: "forge" # forwarded to each workflow's data context (consumed by TS init.md §1b for per-pipeline threshold lookup)
87
96
  skill_name: "cocoindex"
88
97
  brief_path: "/path/to/skill-brief.yaml"
89
98
  target: "cocoindex"
@@ -5,7 +5,7 @@
5
5
  "description": "Single-line JSON document emitted by skf-brief-skill step 5 §4b when {headless_mode} is true, prefixed with the literal 'SKF_BRIEF_RESULT_JSON: '. Pipelines grep one line out of the workflow log to branch on the brief outcome without parsing prose. Schema mirrors the contract in src/skf-brief-skill/SKILL.md Result Contract section.",
6
6
  "type": "object",
7
7
  "additionalProperties": false,
8
- "required": ["status", "brief_path", "skill_name", "version", "language", "scope_type", "exit_code", "halt_reason"],
8
+ "required": ["status", "brief_path", "skill_name", "version", "language", "scope_type", "exit_code", "halt_reason", "mode"],
9
9
  "properties": {
10
10
  "status": {
11
11
  "type": "string",
@@ -53,6 +53,11 @@
53
53
  "user-cancelled"
54
54
  ],
55
55
  "description": "Null on success. One of the documented HALT classes on error. Pipelines branch on this to surface the right operator message without grepping the prose error."
56
+ },
57
+ "mode": {
58
+ "type": ["string", "null"],
59
+ "enum": ["auto", null],
60
+ "description": "'auto' when BS was invoked with the [auto] bracket modifier (pipeline auto-brief generation). Null otherwise (interactive or headless-without-auto)."
56
61
  }
57
62
  }
58
63
  }