bmad-method 6.10.1-next.33 → 6.10.1-next.35

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 (24) hide show
  1. package/package.json +4 -3
  2. package/src/bmm-skills/4-implementation/bmad-agent-dev/customize.toml +1 -1
  3. package/src/bmm-skills/4-implementation/bmad-build/customize.toml +38 -0
  4. package/src/bmm-skills/4-implementation/bmad-build/render.py +7 -0
  5. package/src/bmm-skills/4-implementation/bmad-build/step-05-present.md +6 -9
  6. package/src/bmm-skills/4-implementation/bmad-build/step-oneshot.md +9 -10
  7. package/src/bmm-skills/4-implementation/bmad-retrospective/SKILL.md +52 -1490
  8. package/src/bmm-skills/4-implementation/bmad-retrospective/customize.toml +2 -2
  9. package/src/bmm-skills/4-implementation/bmad-retrospective/references/acceptance-verdict.md +55 -0
  10. package/src/bmm-skills/4-implementation/bmad-retrospective/references/aggregate-views.md +17 -0
  11. package/src/bmm-skills/4-implementation/bmad-retrospective/references/evidence-gathering.md +24 -0
  12. package/src/bmm-skills/4-implementation/bmad-retrospective/references/retro-document.md +84 -0
  13. package/src/bmm-skills/4-implementation/bmad-retrospective/references/team-discussion.md +22 -0
  14. package/src/bmm-skills/4-implementation/bmad-retrospective/scripts/__pycache__/sprint_status.cpython-311.pyc +0 -0
  15. package/src/bmm-skills/4-implementation/bmad-retrospective/scripts/git_evidence.py +304 -0
  16. package/src/bmm-skills/4-implementation/bmad-retrospective/scripts/sprint_status.py +746 -0
  17. package/src/bmm-skills/4-implementation/bmad-retrospective/scripts/tests/__pycache__/test_git_evidence.cpython-311-pytest-9.1.1.pyc +0 -0
  18. package/src/bmm-skills/4-implementation/bmad-retrospective/scripts/tests/__pycache__/test_sprint_status.cpython-311-pytest-9.1.1.pyc +0 -0
  19. package/src/bmm-skills/4-implementation/bmad-retrospective/scripts/tests/test_git_evidence.py +750 -0
  20. package/src/bmm-skills/4-implementation/bmad-retrospective/scripts/tests/test_sprint_status.py +1580 -0
  21. package/src/scripts/__pycache__/config_utils.cpython-311.pyc +0 -0
  22. package/src/scripts/tests/__pycache__/test_config_utils.cpython-311.pyc +0 -0
  23. package/src/scripts/tests/__pycache__/test_resolve_config.cpython-311.pyc +0 -0
  24. package/src/scripts/tests/__pycache__/test_resolve_customization.cpython-311.pyc +0 -0
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "$schema": "https://json.schemastore.org/package.json",
3
3
  "name": "bmad-method",
4
- "version": "6.10.1-next.33",
4
+ "version": "6.10.1-next.35",
5
5
  "description": "Breakthrough Method of Agile AI-driven Development",
6
6
  "keywords": [
7
7
  "agile",
@@ -40,14 +40,15 @@
40
40
  "lint:fix": "eslint . --ext .js,.cjs,.mjs,.yaml --fix",
41
41
  "lint:md": "markdownlint-cli2 \"**/*.md\"",
42
42
  "prepare": "command -v husky >/dev/null 2>&1 && husky || exit 0",
43
- "quality": "npm run format:check && npm run lint && npm run lint:md && npm run docs:build && npm run test:site-url && npm run test:install && npm run test:urls && npm run test:renderer && npm run test:build-auto-contract && npm run validate:refs && npm run validate:skills && npm run docs:validate-sidebar",
43
+ "quality": "npm run format:check && npm run lint && npm run lint:md && npm run docs:build && npm run test:site-url && npm run test:install && npm run test:urls && npm run test:renderer && npm run test:retrospective && npm run test:build-auto-contract && npm run validate:refs && npm run validate:skills && npm run docs:validate-sidebar",
44
44
  "rebundle": "node tools/installer/bundlers/bundle-web.js rebundle",
45
- "test": "npm run test:refs && npm run test:install && npm run test:urls && npm run test:site-url && npm run test:channels && npm run test:renderer && npm run test:build-auto-contract && npm run test:skills && npm run lint && npm run lint:md && npm run format:check",
45
+ "test": "npm run test:refs && npm run test:install && npm run test:urls && npm run test:site-url && npm run test:channels && npm run test:renderer && npm run test:retrospective && npm run test:build-auto-contract && npm run test:skills && npm run lint && npm run lint:md && npm run format:check",
46
46
  "test:build-auto-contract": "node test/test-build-auto-contract.js",
47
47
  "test:channels": "node test/test-installer-channels.js",
48
48
  "test:install": "node test/test-installation-components.js",
49
49
  "test:refs": "node test/test-file-refs-csv.js",
50
50
  "test:renderer": "uv run --python 3.11 python -m unittest src/scripts/tests/test_config_utils.py src/scripts/tests/test_resolve_config.py src/scripts/tests/test_resolve_customization.py && node test/test-build-renderer.js && node test/test-build-auto-renderer.js",
51
+ "test:retrospective": "uv run --python 3.11 src/bmm-skills/4-implementation/bmad-retrospective/scripts/tests/test_git_evidence.py && uv run --python 3.11 src/bmm-skills/4-implementation/bmad-retrospective/scripts/tests/test_sprint_status.py",
51
52
  "test:site-url": "node test/test-site-url.mjs",
52
53
  "test:skills": "node test/test-validate-skills.js",
53
54
  "test:urls": "node test/test-parse-source-urls.js",
@@ -79,5 +79,5 @@ skill = "bmad-sprint-planning"
79
79
 
80
80
  [[agent.menu]]
81
81
  code = "ER"
82
- description = "Party mode review of all work completed across an epic"
82
+ description = "Evidence-based review of a completed epic against its acceptance criteria"
83
83
  skill = "bmad-retrospective"
@@ -33,6 +33,44 @@ persistent_facts = [
33
33
 
34
34
  on_complete = ""
35
35
 
36
+ # How Build opens a completed spec for human review. The default deliberately
37
+ # opens the repository root first and the spec second in a reused VS Code
38
+ # window so relative review links resolve in the correct workspace. Override
39
+ # this with the application and equivalent behavior you prefer. Set it to an
40
+ # empty string to disable automatic opening and all related completion output.
41
+ # Example requests for bmad-customize: "Open completed specs in Cursor and
42
+ # reuse the project window" or "Do not open completed specs automatically."
43
+ #
44
+ # Example `open_spec` override instructions for bmad-build.user.toml:
45
+ # {project-root} and {spec_file} are substituted at run time.
46
+ #
47
+ # VS Code and compatible GUI editors — shipped default uses `code`; Cursor,
48
+ # Windsurf, Antigravity, Zed, and similar editors can substitute their launcher.
49
+ # Preserve reuse-window behavior when the launcher supports it, and always pass
50
+ # the repository root first and the spec second:
51
+ # Run `code -r "{project-root}" "{spec_file}"`, root first.
52
+ # Run `cursor -r "{project-root}" "{spec_file}"`, root first.
53
+ # Run `windsurf -r "{project-root}" "{spec_file}"`, root first.
54
+ # Run `zed "{project-root}" "{spec_file}"`, root first.
55
+ #
56
+ # IntelliJ IDEA — its CLI accepts one path per invocation:
57
+ # Run `idea "{project-root}"` to open the project, then
58
+ # `idea "{spec_file}"` to open the spec in that project.
59
+ #
60
+ # Vim — keep repository context as the working directory:
61
+ # Run `cd "{project-root}" && vim "{spec_file}"`.
62
+ #
63
+ # Emacs — reuse an Emacs server without waiting for the buffer to close:
64
+ # Run `cd "{project-root}" && emacsclient -n "{spec_file}"`.
65
+ #
66
+ # For every non-empty override, also tell Build to note in the completion summary
67
+ # that the spec was sent to the chosen editor and contains a Suggested Review
68
+ # Order, then include the default navigation tip shown below.
69
+
70
+ open_spec = """
71
+ Run `code -r "{project-root}" "{spec_file}"` — the repository root first so VS Code opens in the right context, then the spec file. Always double-quote both paths to handle spaces and special characters. If `code` is unavailable or the command fails, skip gracefully and tell the user the spec file path instead. In the completion summary, note that the spec was sent to VS Code and that it contains a Suggested Review Order, then add this navigation tip: "Ctrl+click (Cmd+click on macOS) the links in the Suggested Review Order to jump to each stop."
72
+ """
73
+
36
74
  # Handoff for the implementation subagent in step 03. The whole execution
37
75
  # recipe — a subagent by default, but an override may run it any other way
38
76
  # (a different model, an external coding tool via bash). {spec_file} is
@@ -391,6 +391,13 @@ def main():
391
391
 
392
392
  skill_dir = script_dir.replace(os.sep, "/")
393
393
  workflow = resolve_workflow(root, skill_dir, skill_name)
394
+ open_spec = workflow.get("open_spec")
395
+ if not isinstance(open_spec, str):
396
+ print(
397
+ "HALT and report to the user: customization `workflow.open_spec` "
398
+ "must be a string"
399
+ )
400
+ sys.exit(1)
394
401
  workflow = expand_review_layer_skill_roots(workflow, skill_dir)
395
402
 
396
403
  out_dir = posixpath.join(root, "_bmad", "render", skill_name)
@@ -54,20 +54,17 @@ Change `{spec_file}` status to `done` in the frontmatter.
54
54
 
55
55
  Follow `./sync-sprint-status.md` with `target_status` = `review`.
56
56
 
57
- ### Commit and Open
57
+ ### Commit and Complete
58
58
 
59
- 1. If version control is available and the tree is dirty, create a local commit with a conventional message derived from the spec title.
60
- 2. Open the spec in the user's editor so they can click through the Suggested Review Order:
61
- - Resolve two absolute paths: (1) the repository root (`git rev-parse --show-toplevel` — returns the worktree root when in a worktree, project root otherwise; if this fails, fall back to the current working directory), (2) `{spec_file}`. Run `code -r "{absolute-root}" "{absolute-spec-file}"` — the root first so VS Code opens in the right context, then the spec file. Always double-quote paths to handle spaces and special characters.
62
- - If `code` is not available (command fails), skip gracefully and tell the user the spec file path instead.
59
+ If version control is available and the tree is dirty, create a local commit with a conventional message derived from the spec title.
60
+
61
+ {workflow.open_spec}
63
62
 
64
63
  ### Display Summary
65
64
 
66
- Display summary of your work to the user, including the commit hash if one was created. Any file paths shown in conversation/terminal output must use CWD-relative format (no leading `/`) with `:line` notation (e.g., `src/path/file.ts:42`) for terminal clickability — the goal is to make paths clickable in terminal emulators. Include:
65
+ Display summary of your work to the user, including the commit hash if one was created. Any file paths shown in conversation/terminal output must use CWD-relative format (no leading `/`) with `:line` notation (e.g., `src/path/file.ts:42`) for terminal clickability — the goal is to make paths clickable in terminal emulators.
67
66
 
68
- - A note that the spec is open in their editor (or the file path if it couldn't be opened). Mention that `{spec_file}` now contains a Suggested Review Order.
69
- - **Navigation tip:** "Ctrl+click (Cmd+click on macOS) the links in the Suggested Review Order to jump to each stop."
70
- - Offer to push and/or create a pull request.
67
+ Offer to push and/or create a pull request.
71
68
 
72
69
  Workflow complete.
73
70
 
@@ -56,16 +56,15 @@ If version control is available and the tree is dirty, create a local commit wit
56
56
 
57
57
  ### Present
58
58
 
59
- 1. Open the spec in the user's editor so they can click through the Suggested Review Order:
60
- - Resolve two absolute paths: (1) the repository root (`git rev-parse --show-toplevel` — returns the worktree root when in a worktree, project root otherwise; if this fails, fall back to the current working directory), (2) `{spec_file}`. Run `code -r "{absolute-root}" "{absolute-spec-file}"` — the root first so VS Code opens in the right context, then the spec file. Always double-quote paths to handle spaces and special characters.
61
- - If `code` is not available (command fails), skip gracefully and tell the user the spec file path instead.
62
- 2. Display a summary in conversation output, including:
63
- - The commit hash (if one was created).
64
- - List of files changed with one-line descriptions. Any file paths shown in conversation/terminal output must use CWD-relative format (no leading `/`) with `:line` notation (e.g., `src/path/file.ts:42`) for terminal clickability — this differs from spec-file links which use spec-file-relative paths.
65
- - Review findings breakdown: patches applied, items deferred, items rejected. If all findings were rejected, say so.
66
- - A note that the spec is open in their editor (or the file path if it couldn't be opened). Mention that `{spec_file}` now contains a Suggested Review Order.
67
- - **Navigation tip:** "Ctrl+click (Cmd+click on macOS) the links in the Suggested Review Order to jump to each stop."
68
- 3. Offer to push and/or create a pull request.
59
+ {workflow.open_spec}
60
+
61
+ Display a summary in conversation output, including:
62
+
63
+ - The commit hash (if one was created).
64
+ - List of files changed with one-line descriptions. Any file paths shown in conversation/terminal output must use CWD-relative format (no leading `/`) with `:line` notation (e.g., `src/path/file.ts:42`) for terminal clickability — this differs from spec-file links which use spec-file-relative paths.
65
+ - Review findings breakdown: patches applied, items deferred, items rejected. If all findings were rejected, say so.
66
+
67
+ Offer to push and/or create a pull request.
69
68
 
70
69
  HALT and wait for human input.
71
70