ma-agents 3.13.2 → 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 (107) hide show
  1. package/README.md +3 -3
  2. package/lib/agents.js +9 -2
  3. package/lib/bmad-cache/bmb/.claude-plugin/marketplace.json +3 -3
  4. package/lib/bmad-cache/bmb/_git_preserved/index +0 -0
  5. package/lib/bmad-cache/bmb/_git_preserved/objects/pack/pack-b388526edf307cf56f8e65673466cff074105abf.idx +0 -0
  6. package/lib/bmad-cache/bmb/_git_preserved/objects/pack/{pack-8f8b045fef5af6911495cf3b2a89f1ed75e120f7.pack → pack-b388526edf307cf56f8e65673466cff074105abf.pack} +0 -0
  7. package/lib/bmad-cache/bmb/_git_preserved/objects/pack/pack-b388526edf307cf56f8e65673466cff074105abf.rev +0 -0
  8. package/lib/bmad-cache/bmb/_git_preserved/packed-refs +1 -1
  9. package/lib/bmad-cache/bmb/_git_preserved/refs/heads/main +1 -1
  10. package/lib/bmad-cache/bmb/_git_preserved/shallow +1 -1
  11. package/lib/bmad-cache/bmb/package-lock.json +2 -2
  12. package/lib/bmad-cache/bmb/package.json +1 -1
  13. package/lib/bmad-cache/bmb/samples/bmad-agent-code-coach/scripts/wake.py +78 -0
  14. package/lib/bmad-cache/bmb/samples/bmad-agent-creative-muse/scripts/wake.py +78 -0
  15. package/lib/bmad-cache/bmb/samples/bmad-agent-sentinel/scripts/wake.py +78 -0
  16. package/lib/bmad-cache/bmb/skills/bmad-agent-builder/assets/customize-template.toml +3 -0
  17. package/lib/bmad-cache/bmb/skills/bmad-agent-builder/assets/init-sanctum-template.py +11 -5
  18. package/lib/bmad-cache/bmb/skills/bmad-agent-builder/assets/report-shell.html +1073 -0
  19. package/lib/bmad-cache/bmb/skills/bmad-agent-builder/assets/wake-template.py +78 -0
  20. package/lib/bmad-cache/bmb/skills/bmad-agent-builder/customize.toml +48 -0
  21. package/lib/bmad-cache/bmb/skills/bmad-agent-builder/scripts/count_tokens.py +78 -0
  22. package/lib/bmad-cache/bmb/skills/bmad-agent-builder/scripts/prepass.py +258 -0
  23. package/lib/bmad-cache/bmb/skills/bmad-agent-builder/scripts/process-template.py +20 -0
  24. package/lib/bmad-cache/bmb/skills/bmad-agent-builder/scripts/render_report.py +387 -0
  25. package/lib/bmad-cache/bmb/skills/bmad-eval-runner/assets/adapter-claude-code.json +9 -0
  26. package/lib/bmad-cache/bmb/skills/bmad-eval-runner/scripts/aggregate_benchmark.py +236 -0
  27. package/lib/bmad-cache/bmb/skills/bmad-eval-runner/scripts/memlog.py +197 -0
  28. package/lib/bmad-cache/bmb/skills/bmad-eval-runner/scripts/run_evals.py +513 -390
  29. package/lib/bmad-cache/bmb/skills/bmad-eval-runner/scripts/run_triggers.py +347 -251
  30. package/lib/bmad-cache/bmb/skills/bmad-eval-runner/scripts/tests/test_env_isolation.py +79 -0
  31. package/lib/bmad-cache/bmb/skills/bmad-eval-runner/scripts/tests/test_trigger_detection.py +123 -0
  32. package/lib/bmad-cache/bmb/skills/bmad-module-builder/scripts/tests/test-validate-module.py +82 -4
  33. package/lib/bmad-cache/bmb/skills/bmad-module-builder/scripts/validate-module.py +55 -11
  34. package/lib/bmad-cache/bmb/skills/bmad-workflow-builder/assets/customize-template.toml +3 -5
  35. package/lib/bmad-cache/bmb/skills/bmad-workflow-builder/assets/report-shell.html +860 -0
  36. package/lib/bmad-cache/bmb/skills/bmad-workflow-builder/customize.toml +59 -0
  37. package/lib/bmad-cache/bmb/skills/bmad-workflow-builder/scripts/count_tokens.py +77 -0
  38. package/lib/bmad-cache/bmb/skills/bmad-workflow-builder/scripts/init_skill.py +132 -0
  39. package/lib/bmad-cache/bmb/skills/bmad-workflow-builder/scripts/prepass-prompt-metrics.py +186 -221
  40. package/lib/bmad-cache/bmb/skills/bmad-workflow-builder/scripts/quick_validate.py +117 -0
  41. package/lib/bmad-cache/bmb/skills/bmad-workflow-builder/scripts/render_report.py +387 -0
  42. package/lib/bmad-cache/bmb/skills/bmad-workflow-builder/scripts/tests/test_canon_sync.py +46 -0
  43. package/lib/bmad-cache/bmb/skills/bmad-workflow-builder/scripts/tests/test_count_tokens.py +180 -0
  44. package/lib/bmad-cache/bmb/skills/bmad-workflow-builder/scripts/tests/test_render_report.py +171 -0
  45. package/lib/bmad-cache/cache-manifest.json +4 -4
  46. package/lib/bmad-customize/bmm-qa.customize.yaml +3 -3
  47. package/lib/bmad-extension/.claude-plugin/marketplace.json.template +3 -2
  48. package/lib/bmad-extension/skills/bmad-dev-epic/SKILL.md +101 -0
  49. package/lib/bmad-extension/skills/bmad-dev-epic/bmad-skill-manifest.yaml +3 -0
  50. package/lib/bmad-extension/skills/bmad-dev-epic/checklist.md +44 -0
  51. package/lib/bmad-extension/skills/bmad-dev-epic/customize.toml +54 -0
  52. package/lib/bmad-extension/skills/bmad-dev-epic/references/story-pipeline.md +112 -0
  53. package/lib/bmad-extension/skills/bmad-dev-epic/steps/step-01-intake.md +59 -0
  54. package/lib/bmad-extension/skills/bmad-dev-epic/steps/step-02-plan-waves.md +56 -0
  55. package/lib/bmad-extension/skills/bmad-dev-epic/steps/step-03-epic-branch.md +35 -0
  56. package/lib/bmad-extension/skills/bmad-dev-epic/steps/step-04-run-waves.md +49 -0
  57. package/lib/bmad-extension/skills/bmad-dev-epic/steps/step-05-epic-adversarial.md +31 -0
  58. package/lib/bmad-extension/skills/bmad-dev-epic/steps/step-06-release.md +57 -0
  59. package/lib/bmad-extension/skills/bmad-dev-epic/steps/step-07-report.md +40 -0
  60. package/lib/bmad-extension/skills/ma-agent-sqa/SKILL.md +3 -3
  61. package/lib/bmad-extension/skills/ma-agent-sqa/bmad-skill-manifest.yaml +1 -1
  62. package/lib/bmad-extension/skills/module-help.csv +2 -1
  63. package/lib/bmad-extension/skills/module.yaml +1 -1
  64. package/lib/bmad-extension/skills/sqa-audit/SKILL.md +2 -2
  65. package/lib/bmad-extension/skills/sqa-ieee12207/SKILL.md +3 -3
  66. package/lib/bmad-extension/skills/sqa-requirements-quality/SKILL.md +2 -2
  67. package/lib/bmad-extension-plugin/.claude-plugin/marketplace.json +4 -3
  68. package/lib/bmad-extension-plugin/skills/bmad-dev-epic/SKILL.md +101 -0
  69. package/lib/bmad-extension-plugin/skills/bmad-dev-epic/bmad-skill-manifest.yaml +3 -0
  70. package/lib/bmad-extension-plugin/skills/bmad-dev-epic/checklist.md +44 -0
  71. package/lib/bmad-extension-plugin/skills/bmad-dev-epic/customize.toml +54 -0
  72. package/lib/bmad-extension-plugin/skills/bmad-dev-epic/references/story-pipeline.md +112 -0
  73. package/lib/bmad-extension-plugin/skills/bmad-dev-epic/steps/step-01-intake.md +59 -0
  74. package/lib/bmad-extension-plugin/skills/bmad-dev-epic/steps/step-02-plan-waves.md +56 -0
  75. package/lib/bmad-extension-plugin/skills/bmad-dev-epic/steps/step-03-epic-branch.md +35 -0
  76. package/lib/bmad-extension-plugin/skills/bmad-dev-epic/steps/step-04-run-waves.md +49 -0
  77. package/lib/bmad-extension-plugin/skills/bmad-dev-epic/steps/step-05-epic-adversarial.md +31 -0
  78. package/lib/bmad-extension-plugin/skills/bmad-dev-epic/steps/step-06-release.md +57 -0
  79. package/lib/bmad-extension-plugin/skills/bmad-dev-epic/steps/step-07-report.md +40 -0
  80. package/lib/bmad-extension-plugin/skills/ma-agent-sqa/SKILL.md +3 -3
  81. package/lib/bmad-extension-plugin/skills/ma-agent-sqa/bmad-skill-manifest.yaml +1 -1
  82. package/lib/bmad-extension-plugin/skills/module-help.csv +2 -1
  83. package/lib/bmad-extension-plugin/skills/module.yaml +1 -1
  84. package/lib/bmad-extension-plugin/skills/sqa-audit/SKILL.md +2 -2
  85. package/lib/bmad-extension-plugin/skills/sqa-ieee12207/SKILL.md +3 -3
  86. package/lib/bmad-extension-plugin/skills/sqa-requirements-quality/SKILL.md +2 -2
  87. package/lib/bmad.js +6 -1
  88. package/package.json +3 -3
  89. package/lib/.bmad-extension-plugin.build-22612-1782454014750/.claude-plugin/marketplace.json +0 -109
  90. package/lib/.bmad-extension-plugin.build-22612-1782454014750/skills/module-help.csv +0 -62
  91. package/lib/.bmad-extension-plugin.build-22612-1782454014750/skills/module.yaml +0 -20
  92. package/lib/bmad-cache/bmb/_git_preserved/objects/pack/pack-8f8b045fef5af6911495cf3b2a89f1ed75e120f7.idx +0 -0
  93. package/lib/bmad-cache/bmb/_git_preserved/objects/pack/pack-8f8b045fef5af6911495cf3b2a89f1ed75e120f7.rev +0 -0
  94. package/lib/bmad-cache/bmb/skills/bmad-agent-builder/references/sample-init-sanctum.py +0 -274
  95. package/lib/bmad-cache/bmb/skills/bmad-agent-builder/scripts/generate-html-report.py +0 -534
  96. package/lib/bmad-cache/bmb/skills/bmad-agent-builder/scripts/prepass-execution-deps.py +0 -337
  97. package/lib/bmad-cache/bmb/skills/bmad-agent-builder/scripts/prepass-prompt-metrics.py +0 -425
  98. package/lib/bmad-cache/bmb/skills/bmad-agent-builder/scripts/prepass-sanctum-architecture.py +0 -385
  99. package/lib/bmad-cache/bmb/skills/bmad-agent-builder/scripts/prepass-structure-capabilities.py +0 -482
  100. package/lib/bmad-cache/bmb/skills/bmad-eval-runner/assets/Dockerfile +0 -29
  101. package/lib/bmad-cache/bmb/skills/bmad-eval-runner/scripts/docker_setup.py +0 -115
  102. package/lib/bmad-cache/bmb/skills/bmad-eval-runner/scripts/generate_report.py +0 -184
  103. package/lib/bmad-cache/bmb/skills/bmad-eval-runner/scripts/pty_runner.py +0 -171
  104. package/lib/bmad-cache/bmb/skills/bmad-eval-runner/scripts/utils.py +0 -260
  105. package/lib/bmad-cache/bmb/skills/bmad-workflow-builder/scripts/extract-report-json.py +0 -287
  106. package/lib/bmad-cache/bmb/skills/bmad-workflow-builder/scripts/generate-html-report.py +0 -588
  107. package/lib/bmad-cache/bmb/skills/bmad-workflow-builder/scripts/prepass-execution-deps.py +0 -288
@@ -0,0 +1,56 @@
1
+ # Step 02 — Right-Size Stories, Build the Dependency DAG, Compute Waves
2
+
3
+ **Goal:** Make the story set sound (INVEST-compliant, focused, appropriately small) and then turn it into an ordered set of execution waves so independent stories parallelize and dependents only start once their prerequisites are merged.
4
+
5
+ ## 1. INVEST & story-sizing pre-pass
6
+
7
+ Before graphing dependencies, assess **every** non-skipped story against **INVEST**:
8
+
9
+ - **I**ndependent — minimal coupling to other stories (soft-couples become dependency edges in §2, not blockers).
10
+ - **N**egotiable — describes intent, not a frozen implementation.
11
+ - **V**aluable — delivers a discrete, demonstrable slice of user/system value.
12
+ - **E**stimable — small and clear enough to estimate with confidence.
13
+ - **S**mall — completable within a single focused pipeline run; **one** focused goal.
14
+ - **T**estable — has acceptance criteria that can be verified (and later turned into e2e tests).
15
+
16
+ **Sizing / focus heuristics — a story is "too long" and should be split if any hold:**
17
+ - it pursues more than one distinct goal, or its title contains "and" joining separable outcomes;
18
+ - it spans multiple unrelated modules/layers that could ship and be tested independently;
19
+ - its acceptance criteria are so numerous that they read like several stories stapled together;
20
+ - it cannot plausibly reach Definition of Done (implement + review + e2e) in one focused pass.
21
+
22
+ **When a story is too large or multi-goal:** split it into the smallest set of INVEST-compliant sub-stories, each with one focused goal and its own acceptance criteria. Preserve the original as a parent/epic-let reference, give sub-stories derived ids (e.g. `S3` → `S3a`, `S3b`), and carry over / refine dependencies. **Present the proposed split to the user and HALT for confirmation** before committing it to `sprint-status.yaml` (splitting changes the planned scope). Record the final, right-sized story set — it is the input to §2.
23
+
24
+ > This is the planning-time pass. The per-story pipeline (`references/story-pipeline.md`) re-checks INVEST after `bmad-create-story` and can still return `needs-split` if a story only reveals its true size once its spec is fleshed out — see step-04's handling.
25
+
26
+ ## 2. Build the dependency graph
27
+
28
+ For every non-skipped story, resolve its dependencies into a directed graph (edge `A → B` means "A depends on B; B must merge first"). Sources of dependencies, in priority order:
29
+
30
+ 1. Explicit `depends_on` / prerequisite fields in `sprint-status.yaml` or the story spec.
31
+ 2. Stated dependencies in the epic / story prose ("requires the API from story X").
32
+ 3. Shared-file heuristics: if two stories are known to edit the same module, treat them as a soft conflict (same-wave concurrency risk) and prefer to sequence them.
33
+
34
+ ## 3. Detect cycles
35
+
36
+ Run a topological sort. **If a cycle exists**, STOP and report the cycle to the user — a circular dependency cannot be waved automatically. Offer to (a) break the cycle by merging the stories, or (b) force a user-specified order.
37
+
38
+ ## 4. Compute waves by strategy
39
+
40
+ - **`waves`** (default): Wave *k* = all stories whose dependencies are all satisfied by waves `< k`. Within a wave, cap concurrent pipelines at `max_parallel_stories`; if a wave is larger, run it in batches.
41
+ - **`sequential`**: one story per wave, in topological order.
42
+ - **`full`**: a single wave of all stories (only if the user explicitly chose this; re-warn about conflict risk).
43
+
44
+ ## 5. Present the plan
45
+
46
+ Show the wave plan compactly and record it in the Run Ledger:
47
+
48
+ ```
49
+ Wave 1: S1, S2, S3 (independent)
50
+ Wave 2: S4 (needs S1), S5 (needs S2)
51
+ Wave 3: S6 (needs S4,S5)
52
+ ```
53
+
54
+ Do **not** HALT here (the user already gave go in step-01) — but if the computed plan reveals a problem the user could not have anticipated (e.g. every story is sequential and the user expected parallelism, or a story has unresolved/dangling dependencies), surface it in one line and HALT for a decision.
55
+
56
+ Then read fully and follow `./steps/step-03-epic-branch.md`.
@@ -0,0 +1,35 @@
1
+ # Step 03 — Create the Epic Feature Branch
2
+
3
+ **Goal:** Establish the integration branch for the whole epic, off the trunk, before any story work begins. This is the branch the final PR targets `main` from, and the branch every story branch merges back into.
4
+
5
+ ## Branch topology (the contract)
6
+
7
+ ```
8
+ main
9
+ └── feature/epic-<epic-id> ← epic integration branch (this step)
10
+ ├── feature/epic-<epic-id>-story-<s1> ← per-story branch (step-04, own worktree)
11
+ ├── feature/epic-<epic-id>-story-<s2>
12
+ └── … each merges back into feature/epic-<epic-id>
13
+ ```
14
+
15
+ - The **epic branch** is cut from `main` (this repo's trunk; confirm the trunk name — `main` here).
16
+ - Each **story branch** is cut from the **epic branch**, developed in its own worktree, and merged back into the epic branch when it passes its Definition of Done (step-04). Stories integrate with `--no-ff` so each story is one reviewable merge commit. No PR per story (the user approves only the epic PR).
17
+ - The single **epic PR** (step-06) is `feature/epic-<epic-id>` → `main`.
18
+
19
+ ## Procedure
20
+
21
+ All git here follows `git-workflow-skill`. The only epic-specific override is the **base branch**: the epic branch is cut from the **trunk** (`main`), not from `dev`.
22
+
23
+ 1. Follow `git-workflow-skill` to create the epic worktree + feature branch, with the base overridden to the trunk. Use its `start-feature.sh` if it accepts a base argument; otherwise use the skill's documented **manual** equivalent:
24
+ ```bash
25
+ git fetch origin
26
+ # git-workflow-skill manual form, base overridden to the trunk:
27
+ git worktree add .worktrees/epic-<epic-id> -b feature/epic-<epic-id> main
28
+ ```
29
+ (`.worktrees/` is gitignored in this repo. Confirm the trunk name first — `main` here. Ensure the skill's git hooks are installed so commit-message/branch protections apply.)
30
+ 2. Record the epic worktree path and branch in the Run Ledger.
31
+ 3. Story worktrees are created later, one per story, branched from `feature/epic-<epic-id>` — see step-04.
32
+
33
+ **Do not** write any non-git file outside a worktree from here on. All story output lands in story worktrees; all integration lands on the epic branch.
34
+
35
+ Then read fully and follow `./steps/step-04-run-waves.md`.
@@ -0,0 +1,49 @@
1
+ # Step 04 — Run the Waves (Parallel Per-Story Pipelines)
2
+
3
+ **Goal:** Execute each wave by spawning one subagent per story, each running the full per-story pipeline in its own worktree, then integrating passing stories back into the epic branch. This is the core of the orchestration.
4
+
5
+ ## How subagents are used
6
+
7
+ - Spawn **one subagent per story** using the host's Agent/Task tool. Put all spawns for a wave (up to `max_parallel_stories`) in a **single response** so they run concurrently.
8
+ - Each subagent is **stateless w.r.t. this conversation** — it receives a self-contained prompt (the story-pipeline contract below) plus the paths it needs. It must not assume access to the orchestrator's context.
9
+ - Assign each subagent the model implied by the step it is running (`{review_model}` vs `{exec_model}`). Because a single subagent runs multiple BMAD skills across both tiers, prefer this split:
10
+ - If the host supports per-skill model switching inside one subagent, instruct it to use `{review_model}` for create-story/code-review/edge-case-hunter and `{exec_model}` for dev-story/fixes/e2e.
11
+ - If not, run the story as **two chained subagents**: an `{exec_model}` "builder" and a `{review_model}` "reviewer", handing the worktree between them.
12
+ - If model selection is unavailable (non-Claude / single-model runtime), run one subagent and note tiers are collapsed.
13
+
14
+ ## Per-story pipeline (the contract every story subagent runs)
15
+
16
+ Give each story subagent the full contract in `references/story-pipeline.md` (skill-root–relative). The inline summary below is **illustrative only** — `references/story-pipeline.md` is the authoritative contract; if they diverge, the reference file wins. In summary, in the story's own worktree branched from the epic branch:
17
+
18
+ 1. `bmad-create-story` → produce the context-filled story spec. [review tier]
19
+ 2. `bmad-dev-story` → implement against the spec. [exec tier]
20
+ 3. Parallel review: `bmad-code-review` **and** `bmad-review-edge-case-hunter`. [review tier]
21
+ 4. Triage findings → if any are blocking, `bmad-dev-story` fix loop (cap `fix_loop_cap`), then re-review only the changed surface. [exec tier]
22
+ 5. `bmad-qa-generate-e2e-tests` → generate e2e tests and run them. [exec tier]
23
+ 6. Enforce the **Definition of Done** (review clean + e2e green + spec ACs met). Commit with Conventional Commits.
24
+
25
+ The subagent returns a structured result: `{story_id, status: merged-ready|blocked|needs-split, branch, worktree, commits, unresolved_findings[], split_proposal[], e2e_status, notes}`. It must **not** merge to the epic branch itself — the orchestrator integrates (step below) to keep merges serialized. A `needs-split` result means the story was found too large/multi-goal at spec time and was **not** implemented — the orchestrator handles the split (see below).
26
+
27
+ ## Wave loop
28
+
29
+ For each wave in order:
30
+
31
+ 1. **Spawn** the wave's story subagents in parallel (respect `max_parallel_stories`; batch if larger). Mark each story `in-progress` in the Run Ledger.
32
+ 2. **Collect** results as subagents return. Update the Ledger per story.
33
+ 3. **Handle `needs-split` results**: the story was found too large/multi-goal and was not implemented. Apply its `split_proposal`: present the proposed sub-stories to the user and **HALT for confirmation** (splitting changes planned scope), then add the confirmed sub-stories to `sprint-status.yaml`, replace the parent in the Ledger, recompute affected dependencies/waves (re-enter step-02's §2–§4 for just the new stories), and schedule the sub-stories into the current wave (if independent) or a later wave. Discard the parent's unused story worktree/branch via `git-workflow-skill` cleanup.
34
+ 4. **Integrate** each `merged-ready` story into the epic branch, **one at a time** (serialized), from the epic worktree (use the epic worktree path recorded in the Run Ledger, not a re-derived guess). Use `git-workflow-skill` conventions; the merge into the epic branch is the epic-specific manual step:
35
+ ```bash
36
+ git -C <epic-worktree> merge --no-ff feature/epic-<epic-id>-story-<sid>
37
+ ```
38
+ - On a **merge conflict**: do not guess. Spawn an `{exec_model}` subagent scoped to resolve only that conflict against both stories' intent, or HALT and report if it cannot. Re-run that story's e2e after resolution.
39
+ - After a successful merge, run the project build/test gate (the step-01 `test_gate`) on the epic branch to catch cross-story breakage early. If it breaks, treat as a blocking finding against the just-merged story.
40
+ 5. **Blocked stories**: a story that exhausts `fix_loop_cap` without converging, or whose e2e cannot pass, is marked `blocked` with its `unresolved_findings`. Do **not** silently drop it. Continue the epic with the rest, but record it for the step-05 report and the PR description. If a *downstream* story depends on a blocked story, mark the dependents `blocked (upstream)` and skip their wave entry.
41
+ 6. Clean up each story worktree after its merge, per `git-workflow-skill` (manual form: `git worktree remove .worktrees/epic-<epic-id>-story-<sid>`).
42
+
43
+ **Persist the Run Ledger to disk** (`{implementation_artifacts}/epic-runs/<epic-id>/run-ledger.md`) after integrating each story and again at the end of each wave, so a crashed run can be resumed without redoing merged stories.
44
+
45
+ Proceed to the next wave only when the current wave's stories are all `merged` or `blocked`.
46
+
47
+ ## After all waves
48
+
49
+ Record the final tally in the Run Ledger (merged / blocked / skipped) and persist it to disk. Then read fully and follow `./steps/step-05-epic-adversarial.md`.
@@ -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",
@@ -31,13 +31,13 @@
31
31
  "roo-code",
32
32
  "kilocode"
33
33
  ],
34
- "bmad_min_version": "6.8.0",
34
+ "bmad_min_version": "6.9.0",
35
35
  "plugins": [
36
36
  {
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.13.2",
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.