ma-agents 3.14.0 → 3.14.1

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 (47) hide show
  1. package/README.md +3 -3
  2. package/lib/agents.js +2 -2
  3. package/lib/bmad-customize/bmm-qa.customize.yaml +3 -3
  4. package/lib/bmad-extension/.claude-plugin/marketplace.json.template +2 -1
  5. package/lib/bmad-extension/skills/bmad-dev-epic/SKILL.md +101 -0
  6. package/lib/bmad-extension/skills/bmad-dev-epic/bmad-skill-manifest.yaml +3 -0
  7. package/lib/bmad-extension/skills/bmad-dev-epic/checklist.md +44 -0
  8. package/lib/bmad-extension/skills/bmad-dev-epic/customize.toml +54 -0
  9. package/lib/bmad-extension/skills/bmad-dev-epic/references/story-pipeline.md +112 -0
  10. package/lib/bmad-extension/skills/bmad-dev-epic/steps/step-01-intake.md +59 -0
  11. package/lib/bmad-extension/skills/bmad-dev-epic/steps/step-02-plan-waves.md +56 -0
  12. package/lib/bmad-extension/skills/bmad-dev-epic/steps/step-03-epic-branch.md +35 -0
  13. package/lib/bmad-extension/skills/bmad-dev-epic/steps/step-04-run-waves.md +49 -0
  14. package/lib/bmad-extension/skills/bmad-dev-epic/steps/step-05-epic-adversarial.md +31 -0
  15. package/lib/bmad-extension/skills/bmad-dev-epic/steps/step-06-release.md +57 -0
  16. package/lib/bmad-extension/skills/bmad-dev-epic/steps/step-07-report.md +40 -0
  17. package/lib/bmad-extension/skills/ma-agent-sqa/SKILL.md +3 -3
  18. package/lib/bmad-extension/skills/ma-agent-sqa/bmad-skill-manifest.yaml +1 -1
  19. package/lib/bmad-extension/skills/module-help.csv +2 -1
  20. package/lib/bmad-extension/skills/module.yaml +1 -1
  21. package/lib/bmad-extension/skills/sqa-audit/SKILL.md +2 -2
  22. package/lib/bmad-extension/skills/sqa-ieee12207/SKILL.md +3 -3
  23. package/lib/bmad-extension/skills/sqa-requirements-quality/SKILL.md +2 -2
  24. package/lib/bmad-extension-plugin/.claude-plugin/marketplace.json +3 -2
  25. package/lib/bmad-extension-plugin/skills/bmad-dev-epic/SKILL.md +101 -0
  26. package/lib/bmad-extension-plugin/skills/bmad-dev-epic/bmad-skill-manifest.yaml +3 -0
  27. package/lib/bmad-extension-plugin/skills/bmad-dev-epic/checklist.md +44 -0
  28. package/lib/bmad-extension-plugin/skills/bmad-dev-epic/customize.toml +54 -0
  29. package/lib/bmad-extension-plugin/skills/bmad-dev-epic/references/story-pipeline.md +112 -0
  30. package/lib/bmad-extension-plugin/skills/bmad-dev-epic/steps/step-01-intake.md +59 -0
  31. package/lib/bmad-extension-plugin/skills/bmad-dev-epic/steps/step-02-plan-waves.md +56 -0
  32. package/lib/bmad-extension-plugin/skills/bmad-dev-epic/steps/step-03-epic-branch.md +35 -0
  33. package/lib/bmad-extension-plugin/skills/bmad-dev-epic/steps/step-04-run-waves.md +49 -0
  34. package/lib/bmad-extension-plugin/skills/bmad-dev-epic/steps/step-05-epic-adversarial.md +31 -0
  35. package/lib/bmad-extension-plugin/skills/bmad-dev-epic/steps/step-06-release.md +57 -0
  36. package/lib/bmad-extension-plugin/skills/bmad-dev-epic/steps/step-07-report.md +40 -0
  37. package/lib/bmad-extension-plugin/skills/ma-agent-sqa/SKILL.md +3 -3
  38. package/lib/bmad-extension-plugin/skills/ma-agent-sqa/bmad-skill-manifest.yaml +1 -1
  39. package/lib/bmad-extension-plugin/skills/module-help.csv +2 -1
  40. package/lib/bmad-extension-plugin/skills/module.yaml +1 -1
  41. package/lib/bmad-extension-plugin/skills/sqa-audit/SKILL.md +2 -2
  42. package/lib/bmad-extension-plugin/skills/sqa-ieee12207/SKILL.md +3 -3
  43. package/lib/bmad-extension-plugin/skills/sqa-requirements-quality/SKILL.md +2 -2
  44. package/lib/templates/instruction-block-git.template.md +25 -25
  45. package/lib/templates/instruction-block-onprem.template.md +86 -86
  46. package/lib/templates/instruction-block-universal.template.md +29 -29
  47. package/package.json +1 -1
@@ -0,0 +1,31 @@
1
+ # Step 05 — Epic-Level Adversarial Review & Package-Integrity Gate
2
+
3
+ **Goal:** Before any release action, prove that the assembled epic (all merged stories on the epic branch) aligns with requirements + architecture and did **not** break the `ma-agents` package. Operate on the integrated epic branch, not individual stories.
4
+
5
+ ## 1. Adversarial alignment review — `bmad-review-adversarial-general` [REVIEW_MODEL]
6
+
7
+ Run a cynical, whole-epic review against the full diff `main...feature/epic-<epic-id>`:
8
+ - Does the implementation satisfy the epic's requirements and acceptance criteria?
9
+ - Does it conform to the project architecture / `project-context.md` and the always-load standards?
10
+ - Cross-story coherence: do the merged stories form a consistent whole, or did parallel development introduce contradictions, dead code, or duplicated abstractions?
11
+ - Did anything regress in adjacent, untouched areas?
12
+
13
+ Produce a findings report graded by severity. **Blocking** findings (requirement/architecture violation, regression, broken contract) must be remediated: spawn an `{exec_model}` fix subagent scoped to the finding, re-run the relevant story/epic tests, and re-review. Loop within reason; if blocking findings cannot be cleared, **HALT** and report to the user — do not proceed to release with known blocking findings.
14
+
15
+ ## 2. Package-integrity gate (the "didn't break ma-agents" check)
16
+
17
+ Run the real gate on the epic branch — **not** bare `npm test` alone:
18
+
19
+ 1. **Plugin build must pass:** `npm run build:plugin` (assembles `lib/bmad-extension-plugin/`). A failure here is a hard stop.
20
+ 2. **Bundle-drift guard:** after building, confirm `lib/bmad-extension-plugin/` and the resolved `marketplace.json` are up to date with the source (`lib/bmad-extension/`). If this epic added/renamed skills or bumped `module.yaml`, the rebuilt bundle must be committed. CI enforces this ("Bundle Drift Guard") — catch it here first.
21
+ 3. **Targeted tests:** run the test subset relevant to what the epic changed.
22
+ 4. **Known pre-existing failure:** a full `npm test` on Windows exits non-zero due to long-standing MIL-498 template CRLF drift (halts around position 13) and also regenerates `.agents/`. **Do not** classify that specific known failure as an epic regression. Distinguish new failures from the baseline: if in doubt, run the same command on `main` and diff the failure set. Only *new* failures block.
23
+
24
+ Record the gate outcome (build: pass/fail, drift: clean/committed, tests: new-failures vs baseline) in the Run Ledger.
25
+
26
+ ## 3. Gate decision
27
+
28
+ - All blocking adversarial findings cleared **and** package-integrity gate clean (no new failures, build green, no uncommitted bundle drift) → proceed.
29
+ - Otherwise → **HALT**, report exactly what is blocking, and let the user decide whether to fix-and-retry or stop.
30
+
31
+ On pass, read fully and follow `./steps/step-06-release.md`.
@@ -0,0 +1,57 @@
1
+ # Step 06 — Gated Beta Publish & Epic PR
2
+
3
+ **Goal:** Ship a testable beta package and open the epic PR — both behind explicit human gates. These are the only two outward, hard-to-undo actions in the run.
4
+
5
+ ## Self-review before anything (mandatory)
6
+
7
+ Per repo policy, run the `code-review` skill on the full epic diff (`main...feature/epic-<epic-id>`) and address its findings before opening the PR. This is in addition to the per-story reviews — it catches integration-level issues.
8
+
9
+ ## GATE A — npm beta publish
10
+
11
+ Only if `{workflow.defaults.gate_before_publish}` (default ON). **HALT and ask the user to confirm** before running any publish command. Publishing is effectively irreversible (a version can be deprecated but not truly unpublished after 72h) and requires credentials/2FA.
12
+
13
+ On confirmation:
14
+
15
+ 1. **Bump version** on the epic branch using the configured bump `{workflow.defaults.version_bump}`:
16
+ ```bash
17
+ npm version {workflow.defaults.version_bump} --preid=beta --no-git-tag-version
18
+ ```
19
+ (default bump `prerelease` → e.g. `3.14.0` → `3.14.1-beta.0`). Commit the bump.
20
+ 2. **Rebuild the bundle** so `marketplace.json` carries the new version, and commit any drift: `npm run build:plugin`.
21
+ 3. **Pack** — when `{workflow.defaults.pack_ignore_scripts}` is true (the default), pass `--ignore-scripts` to avoid the known Windows `prepare` tarball leak (a temp build dir leaking into the tarball):
22
+ ```bash
23
+ npm pack --ignore-scripts # omit --ignore-scripts only if pack_ignore_scripts = false
24
+ ```
25
+ Inspect the tarball contents (`tar -tzf <tgz>`) — confirm no stray temp/build directory is included.
26
+ 4. **Publish** to the channel `{workflow.defaults.npm_dist_tag}` (default `beta`; requires npm auth + OTP/2FA; the user supplies the OTP at the gate — never hardcode it). Match the `--ignore-scripts` choice from the pack step:
27
+ ```bash
28
+ npm publish --tag {workflow.defaults.npm_dist_tag} --ignore-scripts
29
+ ```
30
+ If 2FA prompts, surface it to the user. Confirm the publish with `npm view <pkg> dist-tags`.
31
+ 5. Tell the user the exact install line to test, e.g. `npm i ma-agents@beta` (or the resolved `@<version>`).
32
+
33
+ If the user declines GATE A: skip publish, continue to GATE B (the PR can still be opened without a published beta).
34
+
35
+ ## GATE B — Epic Pull Request
36
+
37
+ Only if `{workflow.defaults.gate_before_pr}` (default ON). **HALT and ask the user to confirm** before opening the PR.
38
+
39
+ On confirmation, push the epic branch and open ONE PR (`feature/epic-<epic-id>` → `main`) following `git-workflow-skill`'s finish flow. The two epic-specific overrides vs. the skill's `finish-feature.sh` defaults: the PR **base is the trunk (`main`), not `dev`**, and there is **exactly one** PR for the whole epic (no per-story PRs). Use the skill's documented manual finish equivalent:
40
+
41
+ ```bash
42
+ git -C <epic-worktree> push -u origin feature/epic-<epic-id> # <epic-worktree> = path from the Run Ledger
43
+ gh pr create --base main --head feature/epic-<epic-id> --title "feat(epic-<id>): <epic title>" --body-file <generated-body>
44
+ ```
45
+
46
+ The PR body (generated from the Run Ledger) must include:
47
+ - Epic summary and link to the planning artifacts.
48
+ - Per-story table: status (merged / **blocked** / skipped), e2e status, fix rounds, any unresolved non-blocking findings.
49
+ - Adversarial review summary + package-integrity gate outcome.
50
+ - The published beta version + install line (if GATE A ran).
51
+ - An explicit **"Blocked / follow-up"** section if any story did not converge — never hide this.
52
+
53
+ Credential note: if the default git/`gh` token is rejected, a working PAT may live in the location recorded in memory ("GitHub push credentials location"); use it masked. Never echo tokens.
54
+
55
+ Do **not** merge the PR — the user approves and merges the epic PR themselves.
56
+
57
+ Then read fully and follow `./steps/step-07-report.md`.
@@ -0,0 +1,40 @@
1
+ # Step 07 — Final Report & Cleanup
2
+
3
+ **Goal:** Leave the user with a complete, honest picture of the run and a clean working tree.
4
+
5
+ ## 1. Present the run summary
6
+
7
+ From the Run Ledger, present (in `{communication_language}`):
8
+
9
+ ```
10
+ Epic <id> — <title> | <merged>/<total> stories merged
11
+
12
+ Stories
13
+ ✓ S1 merged e2e: pass fixes: 1
14
+ ✓ S2 merged e2e: pass fixes: 0
15
+ ⚠ S3 BLOCKED <one-line reason + unresolved findings>
16
+ ⏭ S4 skipped (already done)
17
+
18
+ Epic adversarial review : <pass | findings cleared: n>
19
+ Package-integrity gate : build ✓ drift ✓ tests: <new-failures: 0 vs baseline>
20
+ Beta publish : <version + install line | skipped/declined>
21
+ Epic PR : <url | not opened>
22
+ ```
23
+
24
+ ## 2. Surface anything that needs the human
25
+
26
+ - List every `blocked` story and exactly what is unresolved — these are the user's follow-ups.
27
+ - Note any place the run HALTED and why.
28
+ - If the beta publish or PR was declined/skipped, state the exact commands to do it manually.
29
+
30
+ ## 3. Cleanup
31
+
32
+ - Remove any remaining story worktrees: `git worktree remove .worktrees/epic-<epic-id>-story-<sid>` (and `git worktree prune`).
33
+ - Leave the **epic worktree and branch in place** until the user merges the PR — they may want to push fixes. After merge, the epic worktree can be removed with `git worktree remove .worktrees/epic-<epic-id>`.
34
+ - Persist the final Run Ledger to `{implementation_artifacts}/epic-runs/<epic-id>/run-ledger.md`.
35
+
36
+ ## 4. Suggest next steps
37
+
38
+ Recommend `bmad-retrospective` for the epic once the PR merges, and (if any stories were blocked) `bmad-correct-course` to re-plan them.
39
+
40
+ This completes the workflow.
@@ -1,9 +1,9 @@
1
1
  ---
2
2
  name: ma-agent-sqa
3
- description: SQA Agent (Gad) — Software Quality Assurance and MIL-STD-498 expert for project auditing, compliance verification, quality reporting, and defense documentation generation
3
+ description: SQA Agent (Gadi) — Software Quality Assurance and MIL-STD-498 expert for project auditing, compliance verification, quality reporting, and defense documentation generation
4
4
  ---
5
5
 
6
- # Agent: Gad — Software Quality Assurance & Standards Expert
6
+ # Agent: Gadi — Software Quality Assurance & Standards Expert
7
7
 
8
8
  You must fully embody this agent's persona and follow all activation instructions exactly as specified. NEVER break character until given an exit command.
9
9
 
@@ -35,7 +35,7 @@ You must fully embody this agent's persona and follow all activation instruction
35
35
  | # | Cmd | Action | Trigger | Skill |
36
36
  |---|-----|--------|---------|-------|
37
37
  | 1 | MH | Redisplay Menu Help | "menu", "help" | _(built-in)_ |
38
- | 2 | CH | Chat with Gad about quality assurance or MIL-STD-498 | "chat", "quality" | _(built-in)_ |
38
+ | 2 | CH | Chat with Gadi about quality assurance or MIL-STD-498 | "chat", "quality" | _(built-in)_ |
39
39
  | **— SQA Workflows —** | | | | |
40
40
  | 3 | AU | Audit Project: Comprehensive quality audit across all project dimensions | "audit", "audit project", "run audit" | sqa-audit |
41
41
  | 4 | IC | IEEE 12207 Compliance: Evaluate the project against IEEE/ISO/IEC 12207 software lifecycle processes | "ieee", "12207", "lifecycle compliance", "iso 12207" | sqa-ieee12207 |
@@ -1,6 +1,6 @@
1
1
  type: agent
2
2
  name: ma-agent-sqa
3
- displayName: Gad
3
+ displayName: Gadi
4
4
  title: Software Quality Assurance & Standards Expert
5
5
  icon: "🔍"
6
6
  capabilities: "Software quality assurance, project auditing, process compliance, requirements traceability, sprint health, release validation, IEEE/ISO/IEC 12207 compliance, MIL-STD-498 document generation (SRS, SDD, SDP, OCD, SSS, STD, SSDD)"
@@ -3,7 +3,7 @@ ma-skills,anytime,SRE Agent,ma-agent-sre,,skill:ma-agent-sre,ma-agent-sre,false,
3
3
  ma-skills,anytime,DevOps Agent,ma-agent-devops,,skill:ma-agent-devops,ma-agent-devops,false,bmm-devops,,"DevOps Engineer agent for CI/CD pipeline automation, Infrastructure as Code, and cloud-native technologies.",output_folder,"agent customization",
4
4
  ma-skills,anytime,Cyber Agent,ma-agent-cyber,,skill:ma-agent-cyber,ma-agent-cyber,false,bmm-cyber,,"Cyber Security Analyst agent for vulnerability assessment, threat modeling, and system hardening.",output_folder,"agent customization",
5
5
  ma-skills,anytime,ML Scientist Agent,ma-agent-ml,,skill:ma-agent-ml,ma-agent-ml,false,bmm-demerzel,,"Machine Learning Scientist agent for hypothesis-driven ML lifecycle with scientific rigor.",output_folder,"agent customization",
6
- ma-skills,anytime,SQA Agent,ma-agent-sqa,,skill:ma-agent-sqa,ma-agent-sqa,false,bmm-qa,,"Software Quality Assurance agent (Gad) for project auditing, compliance verification, and quality reporting.",output_folder,"agent customization",
6
+ ma-skills,anytime,SQA Agent,ma-agent-sqa,,skill:ma-agent-sqa,ma-agent-sqa,false,bmm-qa,,"Software Quality Assurance agent (Gadi) for project auditing, compliance verification, and quality reporting.",output_folder,"agent customization",
7
7
  ma-skills,4-implementation,Generate SSS,mil498-sss,,skill:mil498-sss,bmad-mil-generate-sss,false,bmm-mil498,,"Generate a MIL-STD-498 System/Subsystem Specification (SSS).",output_folder,"MIL-498 document",
8
8
  ma-skills,4-implementation,Generate SSDD,mil498-ssdd,,skill:mil498-ssdd,bmad-mil-generate-ssdd,false,bmm-mil498,,"Generate a MIL-STD-498 System/Subsystem Design Description (SSDD).",output_folder,"MIL-498 document",
9
9
  ma-skills,4-implementation,Generate OCD,mil498-ocd,,skill:mil498-ocd,bmad-mil-generate-ocd,false,bmm-mil498,,"Generate a MIL-STD-498 Operational Concept Description (OCD).",output_folder,"MIL-498 document",
@@ -47,6 +47,7 @@ ma-skills,4-implementation,SQA Audit,sqa-audit,,skill:sqa-audit,sqa-audit,false,
47
47
  ma-skills,4-implementation,IEEE 12207 Compliance,sqa-ieee12207,,skill:sqa-ieee12207,sqa-ieee12207,false,bmm-qa,,"Evaluate the project against IEEE/ISO/IEC 12207:2017 software lifecycle processes — produces a compliance matrix and gap analysis report.",_bmad-output,"compliance report",
48
48
  ma-skills,4-implementation,Create Bug Story,create-bug-story,,skill:create-bug-story,create-bug-story,false,bmm-dev,,"Create a structured bug story from a detected defect and add to backlog.",_bmad-output/implementation-artifacts,"bug story",
49
49
  ma-skills,4-implementation,Dev Story,bmad-dev-story,,skill:bmad-dev-story,bmad-dev-story,false,bmm-dev,,"Execute story implementation following a context filled story spec file.",_bmad-output/implementation-artifacts,"story implementation",
50
+ ma-skills,4-implementation,Dev Epic,bmad-dev-epic,,skill:bmad-dev-epic,bmad-dev-epic,false,bmm-dev,,"Orchestrate a full epic end-to-end with parallel subagents — per-story create/dev/review/edge-case/fix/e2e pipeline, dependency-aware waves, configurable model tiers, an epic-level adversarial + package-integrity gate, and gated beta publish + PR.",_bmad-output/implementation-artifacts,"epic run ledger + PR",
50
51
  ma-skills,4-implementation,Sprint Planning,bmad-sprint-planning,,skill:bmad-sprint-planning,bmad-sprint-planning,false,bmm-sm,,"Bootstrap or update the unified sprint-status.yaml from epics with three sections (epics, backlog, sprints).",_bmad-output/implementation-artifacts,"sprint plan",
51
52
  ma-skills,4-implementation,Generate Backlog,generate-backlog,,skill:generate-backlog,generate-backlog,false,bmm-sm,,"Generate or refresh the backlog section of sprint-status.yaml from epics and bug stories.",_bmad-output/implementation-artifacts,"backlog",
52
53
  ma-skills,4-implementation,Add Sprint,add-sprint,,skill:add-sprint,add-sprint,false,bmm-sm,,"Create a new sprint entry in the sprints section of sprint-status.yaml with capacity limits, optional ISO dates, and auto-incremented ID.",_bmad-output/implementation-artifacts,"sprint plan",
@@ -15,6 +15,6 @@
15
15
  code: ma-skills
16
16
  name: "MA-Agents Skills & Agents"
17
17
  description: "Enterprise methodology enforcement, specialized agents, and operational workflows"
18
- module_version: "3.6.2"
18
+ module_version: "3.7.0"
19
19
  extends-module: bmm
20
20
  default_selected: false
@@ -172,7 +172,7 @@ After running all selected dimensions, compile a full audit report.
172
172
  ```
173
173
  # SQA Audit Report
174
174
  **Date:** {today's date}
175
- **Auditor:** Gad (SQA Agent)
175
+ **Auditor:** Gadi (SQA Agent)
176
176
  **Scope:** {list of audited dimensions}
177
177
  **Overall Status:** PASS | WARNING | FAIL
178
178
 
@@ -246,7 +246,7 @@ If yes, generate and save a remediation plan to:
246
246
  ```
247
247
  # SQA Remediation Plan
248
248
  **Date:** {today's date}
249
- **Auditor:** Gad (SQA Agent)
249
+ **Auditor:** Gadi (SQA Agent)
250
250
  **Source Report:** sqa-audit-report-{YYYY-MM-DD}.md
251
251
  **Scope:** {audited dimensions}
252
252
 
@@ -193,7 +193,7 @@ Evaluate each selected process group. For each process area, assign a compliance
193
193
 
194
194
  ### Group 4 — Organizational Project-Enabling Processes
195
195
 
196
- Note to Gad: For Group 4 items, briefly assess based on available evidence only. These are primarily organizational-scope and marked accordingly.
196
+ Note to Gadi: For Group 4 items, briefly assess based on available evidence only. These are primarily organizational-scope and marked accordingly.
197
197
 
198
198
  #### 4.1 Life Cycle Model Management (6.2.1)
199
199
  - Is a defined software life cycle model being followed?
@@ -216,7 +216,7 @@ Compile the full compliance report.
216
216
  ```
217
217
  # IEEE/ISO/IEC 12207:2017 Compliance Report
218
218
  **Date:** {today's date}
219
- **Auditor:** Gad (SQA Agent)
219
+ **Auditor:** Gadi (SQA Agent)
220
220
  **Standard:** IEEE/ISO/IEC 12207:2017 — Systems and software engineering — Software life cycle processes
221
221
  **Scope:** {selected process groups}
222
222
  **Overall Compliance Level:** COMPLIANT | PARTIAL | NON-COMPLIANT
@@ -332,7 +332,7 @@ If yes, generate and save a remediation plan to:
332
332
  ```
333
333
  # IEEE/ISO/IEC 12207 Remediation Plan
334
334
  **Date:** {today's date}
335
- **Auditor:** Gad (SQA Agent)
335
+ **Auditor:** Gadi (SQA Agent)
336
336
  **Source Report:** sqa-ieee12207-report-{YYYY-MM-DD}.md
337
337
  **Standard:** IEEE/ISO/IEC 12207:2017
338
338
 
@@ -157,7 +157,7 @@ Compile the full report in this structure:
157
157
  ```
158
158
  # Requirements Quality Audit Report
159
159
  **Date:** {today's date}
160
- **Auditor:** Gad (SQA Agent)
160
+ **Auditor:** Gadi (SQA Agent)
161
161
  **Scope:** {selected document sources}
162
162
  **Requirements Audited:** {total count}
163
163
  **Overall Quality Score:** {X}/{Y} ({P}%)
@@ -216,7 +216,7 @@ If yes, save a remediation plan to:
216
216
  ```
217
217
  # Requirements Quality Remediation Plan
218
218
  **Date:** {today's date}
219
- **Auditor:** Gad (SQA Agent)
219
+ **Auditor:** Gadi (SQA Agent)
220
220
  **Source Report:** sqa-requirements-quality-report-{YYYY-MM-DD}.md
221
221
 
222
222
  ---
@@ -3,7 +3,7 @@
3
3
  "owner": {
4
4
  "name": "Alon Mayaffit"
5
5
  },
6
- "description": "ma-agents BMAD extension — enterprise SDLC personas (Yael, Amit, Alex, Demerzel, Gad) plus MIL-STD-498, SRE, DevOps, Cyber, ML, and SQA workflow skills.",
6
+ "description": "ma-agents BMAD extension — enterprise SDLC personas (Yael, Amit, Alex, Demerzel, Gadi) plus MIL-STD-498, SRE, DevOps, Cyber, ML, and SQA workflow skills.",
7
7
  "license": "MIT",
8
8
  "homepage": "https://github.com/mayafit/AI_Agents",
9
9
  "repository": "https://github.com/mayafit/AI_Agents",
@@ -37,7 +37,7 @@
37
37
  "name": "ma-skills",
38
38
  "source": "./",
39
39
  "description": "ma-agents extension module providing enterprise SDLC personas and operational workflow skills.",
40
- "version": "3.14.0",
40
+ "version": "3.14.1",
41
41
  "author": {
42
42
  "name": "Alon Mayaffit"
43
43
  },
@@ -91,6 +91,7 @@
91
91
  "./skills/ml-techspec",
92
92
  "./skills/add-sprint",
93
93
  "./skills/add-to-sprint",
94
+ "./skills/bmad-dev-epic",
94
95
  "./skills/bmad-dev-story",
95
96
  "./skills/bmad-sprint-planning",
96
97
  "./skills/bmad-sprint-status",
@@ -0,0 +1,101 @@
1
+ ---
2
+ name: bmad-dev-epic
3
+ description: 'Orchestrate a full epic end-to-end with parallel subagents — per-story create/dev/review/edge-case/fix/e2e pipeline, dependency-aware waves, configurable model tiers, an epic-level adversarial + package-integrity gate, and gated beta publish + PR. Use when the user says "run the epic", "dev epic [id]", or "orchestrate epic development".'
4
+ ---
5
+
6
+ # Epic Orchestrator Workflow
7
+
8
+ **Goal:** Drive an already-planned epic from stories to a review-ready epic PR, autonomously, by orchestrating BMAD skills across parallel subagents under a strict, repeatable process.
9
+
10
+ **Your Role:** You are the Epic Orchestrator. You do not write story code yourself — you decompose the epic into dependency-ordered waves, spawn subagents that each run a disciplined per-story pipeline, enforce a Definition of Done before any merge, run an epic-level adversarial + package-integrity gate, and stop at the two human gates (publish, PR). You are precise about git isolation, model tiers, and failure handling. No noise, no filler.
11
+
12
+ ## Conventions
13
+
14
+ - Bare paths (e.g. `checklist.md`) resolve from the skill root.
15
+ - `{skill-root}` resolves to this skill's installed directory (where `customize.toml` lives).
16
+ - `{project-root}`-prefixed paths resolve from the project working directory.
17
+ - `{skill-name}` resolves to the skill directory's basename (`bmad-dev-epic`).
18
+
19
+ ## On Activation
20
+
21
+ ### Step 1: Resolve the Workflow Block
22
+
23
+ Run: `python3 {project-root}/_bmad/scripts/resolve_customization.py --skill {skill-root} --key workflow`
24
+
25
+ **If the script fails**, resolve the `workflow` block yourself by reading these three files in base → team → user order and applying the same structural merge rules as the resolver:
26
+
27
+ 1. `{skill-root}/customize.toml` — defaults
28
+ 2. `{project-root}/_bmad/custom/{skill-name}.toml` — team overrides
29
+ 3. `{project-root}/_bmad/custom/{skill-name}.user.toml` — personal overrides
30
+
31
+ Any missing file is skipped. Scalars override, tables deep-merge, arrays of tables keyed by `code` or `id` replace matching entries and append new entries, and all other arrays append.
32
+
33
+ ### Step 2: Execute Prepend Steps
34
+
35
+ Execute each entry in `{workflow.activation_steps_prepend}` in order before proceeding.
36
+
37
+ ### Step 3: Load Persistent Facts
38
+
39
+ Treat every entry in `{workflow.persistent_facts}` as foundational context you carry for the rest of the run. Entries prefixed `file:` are paths or globs under `{project-root}` — load the referenced contents as facts. All other entries are facts verbatim.
40
+
41
+ ### Step 4: Load Config
42
+
43
+ Load config from `{project-root}/_bmad/bmm/config.yaml` and resolve:
44
+
45
+ - `project_name`, `planning_artifacts`, `implementation_artifacts`, `user_name`
46
+ - `communication_language`, `document_output_language`, `user_skill_level`
47
+ - `date` as system-generated current datetime
48
+ - `sprint_status` = `{implementation_artifacts}/sprint-status.yaml`
49
+ - `project_context` = `**/project-context.md` (load if exists)
50
+ - CLAUDE.md / memory files (load if exist)
51
+ - ALWAYS speak in the config `{communication_language}`.
52
+
53
+ ### Step 5: Greet the User
54
+
55
+ Greet `{user_name}`, speaking in `{communication_language}`. State plainly what this skill will do (run an entire epic through parallel subagents) and that it runs unattended through dev + review, requiring your **approval at only two release gates** — before publishing the beta package and before opening the epic PR. (It will still HALT for genuine blockers, e.g. a missing/unready epic or a dependency cycle.)
56
+
57
+ ### Step 6: Execute Append Steps
58
+
59
+ Execute each entry in `{workflow.activation_steps_append}` in order.
60
+
61
+ Activation is complete. If `activation_steps_prepend` or `activation_steps_append` were non-empty, confirm every entry was executed in order before proceeding. Do not begin the main workflow until all activation steps have completed.
62
+
63
+ ## WORKFLOW ARCHITECTURE
64
+
65
+ This uses **step-file architecture** for disciplined execution:
66
+
67
+ - **Micro-file Design**: Each step is self-contained and followed exactly.
68
+ - **Just-In-Time Loading**: Only load the current step file.
69
+ - **Sequential Enforcement**: Complete steps in order, no skipping.
70
+ - **State Tracking**: Persist progress in an in-memory **Run Ledger** (see below) and mirror it to `{implementation_artifacts}/epic-runs/<epic-id>/run-ledger.md` so a resumed run can recover.
71
+
72
+ ### The Run Ledger
73
+
74
+ Maintain a single source of truth for the run with, per story: `id`, `wave`, `status` (`pending` → `in-progress` → `review` → `fixing` → `e2e` → `merged` → `blocked`), `worktree`, `branch`, `fix_rounds_used`, and a short note. Update it at every state transition and after every subagent returns.
75
+
76
+ ### Step Processing Rules
77
+
78
+ 1. **READ COMPLETELY**: Read the entire step file before acting.
79
+ 2. **FOLLOW SEQUENCE**: Execute sections in order.
80
+ 3. **HONOR GATES**: Halt only at the two declared human gates (publish, PR) and wherever a step says HALT.
81
+ 4. **LOAD NEXT**: When directed, read fully and follow the next step file.
82
+
83
+ ### Git discipline (defer to `git-workflow-skill`)
84
+
85
+ **`git-workflow-skill` is the single authority for every git operation in this run** — worktree creation, branch naming, conventional commits, hooks, rebasing, PR creation, and cleanup. Do not hand-roll git flows that contradict it. Load and follow it.
86
+
87
+ This epic uses a **nested-branch topology** (epic branch off the trunk; story branches off the epic branch; stories merge back to the epic branch; one PR to the trunk). Where that diverges from the skill's script defaults — chiefly the scripts' `dev` base assumption and their auto-PR-to-`dev` — use the skill's documented **manual equivalents** with the base overridden as the step specifies (trunk for the epic branch, the epic branch for stories). Everything else (worktree-per-unit-of-work, conventional commits, hook compliance, worktree cleanup) is used exactly as the skill defines it.
88
+
89
+ ### Critical Rules (NO EXCEPTIONS)
90
+
91
+ - **NEVER** load multiple step files simultaneously.
92
+ - **NEVER** perform any git action outside the `git-workflow-skill` conventions. The trunk (`main`) is never committed to or modified directly; all file-writing happens inside a worktree on a feature branch.
93
+ - **NEVER** publish to npm or open the epic PR without explicit user confirmation at the gate.
94
+ - **NEVER** treat the known pre-existing `npm test` CRLF failure as a regression — use the real package-integrity gate defined in step-05.
95
+ - **ALWAYS** validate each story against INVEST and split oversized / multi-goal stories before implementing them (see step-02 and `references/story-pipeline.md`).
96
+ - **ALWAYS** enforce the per-story Definition of Done before merging a story to the epic branch.
97
+ - **ALWAYS** respect the configured fix-loop cap; escalate a non-converging story rather than looping forever.
98
+
99
+ ## FIRST STEP
100
+
101
+ Read fully and follow: `./steps/step-01-intake.md`
@@ -0,0 +1,3 @@
1
+ type: skill
2
+ name: bmad-dev-epic
3
+ module: ma-skills
@@ -0,0 +1,44 @@
1
+ # bmad-dev-epic — Run Checklist
2
+
3
+ A run is correct only if every box can be checked. Use this to self-audit mid-run and before each gate.
4
+
5
+ ## Intake (step-01)
6
+ - [ ] Target epic identified and its stories enumerated with dependencies.
7
+ - [ ] Epic is genuinely ready (stories have acceptance criteria); otherwise routed to planning.
8
+ - [ ] Model tiers mapped to actually-available models (collapsed to one if single-model/air-gapped).
9
+ - [ ] Parallelism strategy, max-parallel, and fix-loop cap confirmed.
10
+ - [ ] Both release gates confirmed ON (or explicitly changed by the user).
11
+ - [ ] Real test/build gate command confirmed.
12
+ - [ ] Single go/no-go confirmation received.
13
+
14
+ ## Planning (step-02 / step-03)
15
+ - [ ] Every story checked against INVEST; oversized / multi-goal stories split into focused sub-stories (user-confirmed) before graphing.
16
+ - [ ] Dependency DAG built; no cycles (or cycle resolved with the user).
17
+ - [ ] Waves computed per the chosen strategy.
18
+ - [ ] Epic branch `feature/epic-<id>` created off the trunk via `git-workflow-skill` (base overridden to trunk), in its own worktree.
19
+
20
+ ## Per story (step-04 / story-pipeline)
21
+ - [ ] Story branch cut from the epic branch in its own worktree, per `git-workflow-skill`.
22
+ - [ ] Spec re-checked against INVEST/size after create-story; if too large/multi-goal, returned `needs-split` (not implemented) and the orchestrator split it.
23
+ - [ ] create-story → dev-story → parallel code-review + edge-case-hunter executed.
24
+ - [ ] Blocking findings fixed within the fix-loop cap (or story marked blocked, not papered over).
25
+ - [ ] E2E tests generated and passing; test gate green on the story branch.
26
+ - [ ] Definition of Done met before the story is integrated.
27
+ - [ ] Story merged into the epic branch by the orchestrator (serialized, `--no-ff`).
28
+ - [ ] Cross-story breakage checked after each merge.
29
+
30
+ ## Epic gate (step-05)
31
+ - [ ] Adversarial whole-epic review run; blocking findings cleared or HALTED.
32
+ - [ ] `npm run build:plugin` passes; bundle drift clean/committed.
33
+ - [ ] New test failures distinguished from the known pre-existing CRLF baseline.
34
+
35
+ ## Release (step-06)
36
+ - [ ] `code-review` self-review on the full epic diff completed.
37
+ - [ ] GATE A confirmed by user before publish; version bumped; packed `--ignore-scripts`; tarball inspected; published `--tag beta`.
38
+ - [ ] GATE B confirmed by user before PR; single epic PR opened to the trunk; body includes blocked/follow-up section.
39
+ - [ ] PR NOT merged (left for human approval).
40
+
41
+ ## Report (step-07)
42
+ - [ ] Honest summary presented, including every blocked story.
43
+ - [ ] Story worktrees cleaned up; epic worktree retained until merge.
44
+ - [ ] Run Ledger persisted.
@@ -0,0 +1,54 @@
1
+ # DO NOT EDIT -- overwritten on every update.
2
+ #
3
+ # Workflow customization surface for bmad-dev-epic. Mirrors the workflow
4
+ # customization shape under the [workflow] namespace. Override in
5
+ # {project-root}/_bmad/custom/bmad-dev-epic.toml (team) or
6
+ # {project-root}/_bmad/custom/bmad-dev-epic.user.toml (personal).
7
+
8
+ [workflow]
9
+
10
+ activation_steps_prepend = []
11
+ activation_steps_append = []
12
+
13
+ persistent_facts = [
14
+ "file:{project-root}/**/project-context.md",
15
+ ]
16
+
17
+ on_complete = ""
18
+
19
+ # ── Orchestration defaults ──────────────────────────────────────────────────
20
+ # These are PROPOSED defaults the intake step shows the user; the user can
21
+ # override every one of them at runtime. They are tier-abstract on purpose so
22
+ # the skill works on disconnected networks and with non-Claude runtimes.
23
+ #
24
+ # All keys below are scalars, so a team/user override TOML replaces them by the
25
+ # normal scalar-override merge rule (override wins over base).
26
+
27
+ [workflow.defaults]
28
+
29
+ # Model tiers are ABSTRACT. The intake step maps each tier to a concrete model
30
+ # that the runtime actually exposes (Claude Opus/Sonnet, Gemini, a local model,
31
+ # etc.). If only one model is available, both tiers collapse to it.
32
+ # review_tier → deep reasoning: create-story, code-review, edge-case-hunter,
33
+ # epic adversarial review.
34
+ # exec_tier → implementation: dev-story, fix loops, e2e generation.
35
+ review_tier_model = "claude-opus" # proposed; ask at runtime
36
+ exec_tier_model = "claude-sonnet" # proposed; ask at runtime
37
+
38
+ # Max story pipelines running concurrently within a single wave.
39
+ max_parallel_stories = 3
40
+
41
+ # Max review→fix→re-review rounds before a story is escalated as blocked.
42
+ fix_loop_cap = 2
43
+
44
+ # Parallelization strategy: "waves" (dependency-aware) | "sequential" | "full".
45
+ parallelism_strategy = "waves"
46
+
47
+ # Human gates. Dev + review run unattended; these two are always confirmed.
48
+ gate_before_publish = true
49
+ gate_before_pr = true
50
+
51
+ # Release behavior at the publish gate.
52
+ npm_dist_tag = "beta"
53
+ version_bump = "prerelease" # npm version <bump> --preid=beta
54
+ pack_ignore_scripts = true # avoid Windows prepare tarball leak
@@ -0,0 +1,112 @@
1
+ # Per-Story Pipeline Contract
2
+
3
+ This is the self-contained instruction set handed to each story subagent. The
4
+ orchestrator fills the `<…>` placeholders before spawning. The subagent owns
5
+ exactly one story, in exactly one worktree, and never touches the epic branch.
6
+
7
+ ---
8
+
9
+ ## Inputs (filled by the orchestrator)
10
+
11
+ ```
12
+ STORY_ID = <id>
13
+ STORY_TITLE = <title>
14
+ EPIC_ID = <epic-id>
15
+ EPIC_BRANCH = feature/epic-<epic-id>
16
+ STORY_BRANCH = feature/epic-<epic-id>-story-<id>
17
+ WORKTREE = .worktrees/epic-<epic-id>-story-<id>
18
+ SPRINT_STATUS = <path to sprint-status.yaml>
19
+ EXEC_MODEL = <execution-tier model | "host-default">
20
+ REVIEW_MODEL = <review-tier model | "host-default">
21
+ FIX_LOOP_CAP = <n>
22
+ TEST_CMD = <project test/build gate>
23
+ ```
24
+
25
+ ## Setup
26
+
27
+ All git follows `git-workflow-skill`; the only override is the base branch
28
+ (the story branch is cut from `<EPIC_BRANCH>`, not `dev`).
29
+
30
+ 1. Create the worktree off the epic branch, per `git-workflow-skill` (manual
31
+ form shown, base overridden to the epic branch):
32
+ ```bash
33
+ git worktree add <WORKTREE> -b <STORY_BRANCH> <EPIC_BRANCH>
34
+ ```
35
+ 2. Work **only** inside `<WORKTREE>`. Use the Conventional Commit format the
36
+ skill enforces (`feat`, `fix`, `test`, `docs`, `refactor`, `chore`, `ci`),
37
+ scoped to the story. Honor the skill's git hooks.
38
+
39
+ ## Pipeline
40
+
41
+ ### 1. Create story spec — `bmad-create-story` [REVIEW_MODEL]
42
+ Produce the context-filled spec for `<STORY_ID>`. If the spec already exists and
43
+ is complete, validate it instead of regenerating. The spec's acceptance criteria
44
+ (ACs) are the contract for the Definition of Done.
45
+
46
+ **INVEST & size gate (before implementing).** Once the spec is fleshed out,
47
+ re-check it against INVEST and the sizing/focus heuristics (same criteria as
48
+ step-02): one focused goal, small enough to reach Definition of Done in this
49
+ single pass, testable ACs. A spec often only reveals its true size here. **If
50
+ the story is too large or pursues more than one goal, do NOT implement it** —
51
+ return immediately with `status: needs-split` and a `split_proposal` (the
52
+ smallest set of INVEST-compliant sub-stories, each with a focused goal, derived
53
+ ids, and refined dependencies). The orchestrator owns the split because it
54
+ affects the epic-wide wave plan (see step-04). Only proceed to step 2 when the
55
+ story passes the gate.
56
+
57
+ ### 2. Implement — `bmad-dev-story` [EXEC_MODEL]
58
+ Implement strictly against the spec. Follow the repo's always-load skills
59
+ (language best-practices, logging, test-accompanied-development, etc.). Commit.
60
+
61
+ ### 3. Adversarial + edge-case review (PARALLEL) [REVIEW_MODEL]
62
+ Run both, ideally as parallel sub-subagents, each seeing the story diff:
63
+ - `bmad-code-review` — full adversarial review against spec + context.
64
+ - `bmad-review-edge-case-hunter` — exhaustive boundary/branch analysis.
65
+ Collect both findings sets.
66
+
67
+ ### 4. Triage & fix loop [EXEC_MODEL]
68
+ Classify findings as **blocking** (correctness, security, AC miss, broken build)
69
+ vs **non-blocking** (style, nits). For blocking findings:
70
+ - Run `bmad-dev-story` to fix them. Commit.
71
+ - Re-review **only the changed surface**.
72
+ - Repeat until no blocking findings remain OR `FIX_LOOP_CAP` rounds are used.
73
+ - If the cap is hit with blocking findings remaining → return `status: blocked`
74
+ with the unresolved findings. Do not merge, do not paper over.
75
+ Record non-blocking findings in the return notes (not fixed, by design).
76
+
77
+ ### 5. E2E tests — `bmad-qa-generate-e2e-tests` [EXEC_MODEL]
78
+ Generate e2e/automated tests for the story's behavior and **run them**. Also run
79
+ `<TEST_CMD>` to confirm the story didn't break the package build. If e2e cannot
80
+ be made green within the fix budget, return `status: blocked` with details.
81
+
82
+ ### 6. Definition of Done (gate before returning ready)
83
+ ALL must hold, or the story is `blocked`:
84
+ - [ ] All spec acceptance criteria implemented.
85
+ - [ ] No blocking findings remain from either reviewer.
86
+ - [ ] E2E tests written and passing.
87
+ - [ ] `<TEST_CMD>` passes on the story branch (modulo known pre-existing failures).
88
+ - [ ] All work committed with Conventional Commit messages.
89
+
90
+ ## Return value (structured)
91
+
92
+ ```
93
+ {
94
+ "story_id": "<STORY_ID>",
95
+ "status": "merged-ready" | "blocked" | "needs-split",
96
+ "branch": "<STORY_BRANCH>",
97
+ "worktree": "<WORKTREE>",
98
+ "commits": [ "<sha> <subject>", … ],
99
+ "e2e_status": "passing" | "failing" | "not-created",
100
+ "unresolved_findings": [ "<blocking finding>", … ],
101
+ "split_proposal": [ { "id": "<S3a>", "goal": "<focused goal>", "acs": [ … ], "depends_on": [ … ] }, … ],
102
+ "fix_rounds_used": <n>,
103
+ "notes": "<non-blocking findings, decisions, caveats>"
104
+ }
105
+ ```
106
+
107
+ `split_proposal` is populated only when `status: needs-split` (empty/omitted
108
+ otherwise). On `needs-split` the subagent has done **no** implementation — it
109
+ returns the proposal and stops.
110
+
111
+ **Do NOT** merge into `<EPIC_BRANCH>`. The orchestrator serializes all
112
+ integration into the epic branch (step-04) to avoid parallel-merge races.