bmad-method 6.11.1-next.36 → 6.11.1-next.37
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/AGENTS.md +12 -0
- package/CLAUDE.md +1 -0
- package/greptile.json +52 -0
- package/package.json +3 -3
- package/src/bmm-skills/plan/bmad-sprint-planning/scripts/__pycache__/sprint_plan.cpython-311.pyc +0 -0
- package/src/bmm-skills/plan/bmad-sprint-planning/scripts/tests/__pycache__/test_sprint_plan.cpython-311-pytest-9.1.1.pyc +0 -0
- package/src/bmm-skills/ship/bmad-retrospective/scripts/__pycache__/sprint_status.cpython-311.pyc +0 -0
- package/src/bmm-skills/ship/bmad-retrospective/scripts/tests/__pycache__/test_git_evidence.cpython-311-pytest-9.1.1.pyc +0 -0
- package/src/bmm-skills/ship/bmad-retrospective/scripts/tests/__pycache__/test_sprint_status.cpython-311-pytest-9.1.1.pyc +0 -0
- package/src/scripts/__pycache__/config_utils.cpython-311.pyc +0 -0
- package/src/scripts/tests/__pycache__/test_config_utils.cpython-311.pyc +0 -0
- package/src/scripts/tests/__pycache__/test_resolve_config.cpython-311.pyc +0 -0
- package/src/scripts/tests/__pycache__/test_resolve_customization.cpython-311.pyc +0 -0
- package/tools/installer/core/shim-policy.js +1 -1
- package/tools/skill-validator.md +2 -26
- package/tools/tests/__pycache__/test_validate_skills.cpython-311.pyc +0 -0
- package/tools/tests/fixtures/validate-skills/bmad/SKILL.md +8 -0
- package/tools/tests/fixtures/validate-skills/deprecated-shim/SKILL.md +9 -0
- package/tools/tests/fixtures/validate-skills/missing-trigger/SKILL.md +9 -0
- package/tools/tests/fixtures/validate-skills/with-trigger/SKILL.md +8 -0
- package/tools/tests/test_validate_skills.py +476 -0
- package/tools/validate_skills.py +698 -0
- package/tools/validate-skills.js +0 -735
package/AGENTS.md
CHANGED
|
@@ -10,3 +10,15 @@ Open source framework for structured, agent-assisted software delivery.
|
|
|
10
10
|
|
|
11
11
|
- Skill validation rules are in `tools/skill-validator.md`.
|
|
12
12
|
- Deterministic skill checks run via `npm run validate:skills` (included in `quality`).
|
|
13
|
+
- Documentation conventions are in `docs/_STYLE_GUIDE.md`.
|
|
14
|
+
|
|
15
|
+
## Writing prompts
|
|
16
|
+
|
|
17
|
+
Skills, workflows, tasks, and agent definitions are prompt text that an agent reads in full on every run. Length and
|
|
18
|
+
ambiguity are paid on every run; a corner case is paid only when it occurs. So do not add instructions for exotic
|
|
19
|
+
cases — the model usually handles them from context, and the reviewing human can correct it when it does not.
|
|
20
|
+
|
|
21
|
+
## Testing
|
|
22
|
+
|
|
23
|
+
Automated tests assert outcomes produced by deterministic code. Do not write automated tests for LLM output or for
|
|
24
|
+
static source text.
|
package/CLAUDE.md
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
@AGENTS.md
|
package/greptile.json
ADDED
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
{
|
|
2
|
+
"strictness": 2,
|
|
3
|
+
"commentTypes": ["logic", "syntax"],
|
|
4
|
+
"triggerOnUpdates": false,
|
|
5
|
+
"excludeAuthors": ["dependabot[bot]"],
|
|
6
|
+
"ignorePatterns": "greptile.json\neslint.config.mjs\n.claude/**\n.codex/**\n.agent/**\n.agentvibes/**\n.kiro/**\n.roo/**\n.github/chatmodes/**\ndist/**\nbuild/**\ncoverage/**\n.bundler-temp/**\n**/node_modules/**\n**/*.min.js\n**/*.generated.*\n**/*.bundle.md\npackage-lock.json\n**/*.png\n**/*.jpg\n**/*.svg\ntest/fixtures/**\ntools/tests/fixtures/**\ntest/template-test-generator/**\ntools/template-test-generator/test-scenarios/**\n_bmad*/**\nwebsite/public/**\nwebsite/diagrams/**\nz*/**\nsample-project/**\ntest-project-install/**\n**/validation-report-*.html\nCHANGELOG.md",
|
|
7
|
+
"instructions": "Most of this repo's source is prompt text read by agents at runtime, not executable code. Confine review of it to claims that can be checked against the repository: file paths and cross-references that do not resolve, invocation syntax that does not match the referenced skill, instructions that contradict another file, documented behavior that the code does not implement, and violations of the conventions in AGENTS.md. Do not comment on prompt wording, tone, phrasing, length, or how thorough an instruction feels \u2014 those are authoring decisions and are not yours to judge.",
|
|
8
|
+
"customContext": {
|
|
9
|
+
"files": [
|
|
10
|
+
{
|
|
11
|
+
"path": "AGENTS.md",
|
|
12
|
+
"description": "Repo conventions every change must satisfy"
|
|
13
|
+
},
|
|
14
|
+
{
|
|
15
|
+
"path": "tools/skill-validator.md",
|
|
16
|
+
"description": "Authoritative rule catalog for skills \u2014 SKILL.md metadata, workflow constraints, step file structure, path references, variable resolution, sequential execution, skill invocation syntax. Apply the whole catalog to changed skill files.",
|
|
17
|
+
"scope": ["src/bmm-skills/**", "src/core-skills/**"]
|
|
18
|
+
},
|
|
19
|
+
{
|
|
20
|
+
"path": "docs/_STYLE_GUIDE.md",
|
|
21
|
+
"description": "Documentation conventions: Google style, Diataxis structure, plus project-specific rules on headers, admonitions, and nesting",
|
|
22
|
+
"scope": ["docs/**"]
|
|
23
|
+
}
|
|
24
|
+
],
|
|
25
|
+
"rules": [
|
|
26
|
+
{
|
|
27
|
+
"id": "docs-follow-source",
|
|
28
|
+
"rule": "Source changed. Check whether docs/ needs a matching update \u2014 new features, changed behavior, renamed concepts, altered CLI flags, or modified configuration options should all be reflected in the relevant doc pages. Flag missing or outdated docs.",
|
|
29
|
+
"scope": ["src/**"],
|
|
30
|
+
"severity": "medium"
|
|
31
|
+
},
|
|
32
|
+
{
|
|
33
|
+
"id": "agent-skill-shape",
|
|
34
|
+
"rule": "Agent skill. The persona is configured in customize.toml under [agent]: check that every {agent.*} placeholder the SKILL.md interpolates has a corresponding key there, and that menu entries name skills that exist in this repo.",
|
|
35
|
+
"scope": ["src/bmm-skills/agents/**"],
|
|
36
|
+
"severity": "high"
|
|
37
|
+
},
|
|
38
|
+
{
|
|
39
|
+
"id": "docs-links-resolve",
|
|
40
|
+
"rule": "Check that internal markdown links point at files that exist.",
|
|
41
|
+
"scope": ["docs/**/*.md"],
|
|
42
|
+
"severity": "medium"
|
|
43
|
+
},
|
|
44
|
+
{
|
|
45
|
+
"id": "tooling-exit-codes",
|
|
46
|
+
"rule": "Build and tooling script. Check error handling and that failures exit non-zero.",
|
|
47
|
+
"scope": ["tools/**", "src/scripts/**"],
|
|
48
|
+
"severity": "medium"
|
|
49
|
+
}
|
|
50
|
+
]
|
|
51
|
+
}
|
|
52
|
+
}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"$schema": "https://json.schemastore.org/package.json",
|
|
3
3
|
"name": "bmad-method",
|
|
4
|
-
"version": "6.11.1-next.
|
|
4
|
+
"version": "6.11.1-next.37",
|
|
5
5
|
"description": "Breakthrough Method of Agile AI-driven Development",
|
|
6
6
|
"keywords": [
|
|
7
7
|
"agile",
|
|
@@ -50,11 +50,11 @@
|
|
|
50
50
|
"test:renderer": "uv run --python 3.11 python -m unittest src/scripts/tests/test_config_utils.py src/scripts/tests/test_resolve_config.py src/scripts/tests/test_resolve_customization.py && node test/test-build-auto-renderer.js",
|
|
51
51
|
"test:retrospective": "uv run --python 3.11 src/bmm-skills/ship/bmad-retrospective/scripts/tests/test_git_evidence.py && uv run --python 3.11 src/bmm-skills/ship/bmad-retrospective/scripts/tests/test_sprint_status.py",
|
|
52
52
|
"test:site-url": "node test/test-site-url.mjs",
|
|
53
|
-
"test:skills": "
|
|
53
|
+
"test:skills": "uv run --python 3.11 python -m unittest tools/tests/test_validate_skills.py",
|
|
54
54
|
"test:sprint-planning": "uv run --python 3.11 src/bmm-skills/plan/bmad-sprint-planning/scripts/tests/test_sprint_plan.py && node test/test-template-sync.js",
|
|
55
55
|
"test:urls": "node test/test-parse-source-urls.js",
|
|
56
56
|
"validate:refs": "node tools/validate-file-refs.js --strict",
|
|
57
|
-
"validate:skills": "
|
|
57
|
+
"validate:skills": "uv run --python 3.11 tools/validate_skills.py --strict"
|
|
58
58
|
},
|
|
59
59
|
"lint-staged": {
|
|
60
60
|
"*.{js,cjs,mjs}": [
|
package/src/bmm-skills/plan/bmad-sprint-planning/scripts/__pycache__/sprint_plan.cpython-311.pyc
CHANGED
|
Binary file
|
|
Binary file
|
package/src/bmm-skills/ship/bmad-retrospective/scripts/__pycache__/sprint_status.cpython-311.pyc
CHANGED
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
@@ -79,7 +79,7 @@ async function readInstalledSkillIds(bmadDir) {
|
|
|
79
79
|
|
|
80
80
|
// The installed manifest carries no lifecycle column, so the description
|
|
81
81
|
// prefix every shim ships with is the only record of what was a shim. This
|
|
82
|
-
// is the same signal
|
|
82
|
+
// is the same signal validate_skills.py uses to exempt them.
|
|
83
83
|
async function readInstalledShims(bmadDir) {
|
|
84
84
|
const shims = [];
|
|
85
85
|
for (const record of await readSkillManifest(bmadDir)) {
|
package/tools/skill-validator.md
CHANGED
|
@@ -7,10 +7,10 @@ An LLM-readable validation prompt for skills following the Agent Skills open sta
|
|
|
7
7
|
Before running inference-based validation, run the deterministic validator:
|
|
8
8
|
|
|
9
9
|
```bash
|
|
10
|
-
|
|
10
|
+
uv run --python 3.11 tools/validate_skills.py --json path/to/skill-dir
|
|
11
11
|
```
|
|
12
12
|
|
|
13
|
-
This checks
|
|
13
|
+
This checks 10 rules deterministically: SKILL-01, SKILL-02, SKILL-03, SKILL-04, SKILL-05, SKILL-06, SKILL-07, PATH-02, SEQ-02, TPL-01.
|
|
14
14
|
|
|
15
15
|
Review its JSON output. For any rule that produced **zero findings** in the first pass, **skip it** during inference-based validation below — it has already been verified. If a rule produced any findings, the inference validator should still review that rule (some rules like SKILL-04 and SKILL-06 have sub-checks that benefit from judgment). Focus your inference effort on the remaining rules that require judgment (PATH-01, PATH-03, PATH-04, PATH-05, WF-03, STEP-02, STEP-03, STEP-04, STEP-05, SEQ-01, REF-01, REF-02, REF-03).
|
|
16
16
|
|
|
@@ -176,14 +176,6 @@ If no findings are generated (from either pass), the skill passes validation.
|
|
|
176
176
|
|
|
177
177
|
---
|
|
178
178
|
|
|
179
|
-
### STEP-01 — Step File Naming
|
|
180
|
-
|
|
181
|
-
- **Severity:** MEDIUM
|
|
182
|
-
- **Applies to:** files in `steps/` directory
|
|
183
|
-
- **Rule:** Step files must be named `step-NN-description.md` where NN is a zero-padded two-digit number. An optional single-letter variant suffix is allowed for branching steps (e.g., `step-01b-continue.md`).
|
|
184
|
-
- **Detection:** Regex: `^step-\d{2}[a-z]?-[a-z0-9-]+\.md$`
|
|
185
|
-
- **Fix:** Rename to match the pattern.
|
|
186
|
-
|
|
187
179
|
### STEP-02 — Step Must Have a Goal Section
|
|
188
180
|
|
|
189
181
|
- **Severity:** HIGH
|
|
@@ -217,22 +209,6 @@ If no findings are generated (from either pass), the skill passes validation.
|
|
|
217
209
|
- **Detection:** Look for instructions to read multiple step files simultaneously, or unconditional references to step files with higher numbers than the current step. Exempt locations: `## NEXT` sections, navigation/dispatch sections that list valid resumption targets, and conditional routing branches.
|
|
218
210
|
- **Fix:** Remove premature step loading. Ensure only the current step is active.
|
|
219
211
|
|
|
220
|
-
### STEP-06 — Step File Frontmatter: No `name` or `description`
|
|
221
|
-
|
|
222
|
-
- **Severity:** MEDIUM
|
|
223
|
-
- **Applies to:** step files
|
|
224
|
-
- **Rule:** Step files should not have `name:` or `description:` in their YAML frontmatter. These are metadata noise — the step's purpose is conveyed by its goal section and filename.
|
|
225
|
-
- **Detection:** Parse step file frontmatter for `name:` or `description:` keys.
|
|
226
|
-
- **Fix:** Remove `name:` and `description:` from step file frontmatter.
|
|
227
|
-
|
|
228
|
-
### STEP-07 — Step Count
|
|
229
|
-
|
|
230
|
-
- **Severity:** LOW
|
|
231
|
-
- **Applies to:** workflow as a whole
|
|
232
|
-
- **Rule:** A sharded workflow should have between 2 and 10 step files. More than 10 risks LLM context degradation.
|
|
233
|
-
- **Detection:** Count files matching `step-*.md` in the `steps/` directory.
|
|
234
|
-
- **Fix:** Consider consolidating steps if over 10.
|
|
235
|
-
|
|
236
212
|
---
|
|
237
213
|
|
|
238
214
|
### SEQ-01 — No Skip Instructions
|
|
Binary file
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: deprecated-shim
|
|
3
|
+
description: 'DEPRECATED — consolidated into bmad-foo; this skill will be removed in v7 in favor of `bmad-foo`.'
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# DEPRECATED — forwards to bmad-foo
|
|
7
|
+
|
|
8
|
+
This skill was consolidated into `bmad-foo` and is retained as a thin compatibility
|
|
9
|
+
shim so existing invocations keep working. New work should invoke `bmad-foo` directly.
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: missing-trigger
|
|
3
|
+
description: 'Generates a thing and writes it to disk for the user.'
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Missing Trigger
|
|
7
|
+
|
|
8
|
+
An active (non-deprecated) skill whose description omits a "Use when" trigger phrase.
|
|
9
|
+
This fixture guards against regressions: SKILL-06 must still flag it.
|