* chore(sprint-planning): convert workflow.yaml + instructions.md to unified workflow.md
Step 4 of 9 in the yaml-to-md conversion plan. Merges config
and instructions into a single self-contained workflow.md,
dropping engine scaffolding (critical tags, invoke-protocol).
* fix(sprint-planning): address review findings from PR triage
- Update stale workflow.yaml references to workflow.md in sm.agent.yaml and module-help.csv
- Widen epics_pattern from epic*.md to *epic*.md to match documented input files
- Fix placeholder mismatch: epics_in_progress_count → in_progress_count
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
---------
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
* feat(skills): add canonical bmad- naming via skill manifests
Add bmad-skill-manifest.yaml sidecars to all 38 capabilities (tasks,
agents, workflows) declaring canonicalId as the single source of truth
for skill names. Update Claude Code and Codex installers to prefer
canonicalId over path-derived names, with graceful fallback.
- 24 manifest files covering 38 capabilities
- New shared skill-manifest.js utility for manifest loading
- resolveSkillName() in path-utils.js bridges manifest → installer
- All command generators propagate canonicalId through CSV manifests
- Drops bmm module prefix from all user-facing skill names
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* feat(skills): claude-code installer outputs .claude/skills/<name>/SKILL.md
Refactor the config-driven installer to emit Agent Skills Open Standard
format for Claude Code: directory-per-skill with SKILL.md entrypoint,
unquoted YAML frontmatter, and full canonical names.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* refactor(installer): migrate codex to config-driven pipeline
Delete the custom codex.js installer (441 lines) and route Codex
through the config-driven pipeline via platform-codes.yaml. This
fixes 7 task/tool descriptions that were generic due to bypassing
manifests, and eliminates duplicate transformToSkillFormat code.
Key changes:
- Add codex entry to platform-codes.yaml with skill_format + legacy_targets
- Remove codex from custom installer list in manager.js
- Add installCustomAgentLauncher() to config-driven for custom agent support
- Add detect() override for skill_format platforms (bmad-prefix check)
- Set configDir from target_dir for base-class detect() compatibility
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* fix(installer): guard codex skill installs in nested directories
* fix(installer): warn on stale global legacy skill dirs
* feat(installer): migrate cursor to native skills
* Migrate Windsurf installer to native skills
* Clarify Windsurf skill invocation in checklist
* feat(installer): migrate kiro to native skills
* docs: record kiro skill visibility verification
* Migrate Antigravity installer to native skills
* Document Antigravity ancestor skill verification
* Synchronize native skills migration checklist
* Migrate Auggie installer to native skills
* Migrate OpenCode installer to native skills
* Document live skill verification for Auggie and OpenCode
* fix(test): replace _bmad filesystem dependency with self-contained fixture
The installation component tests walked up the filesystem looking for a
pre-installed _bmad directory, which exists locally but not in CI. Replace
findInstalledBmadDir() with createTestBmadFixture() that creates a minimal
temp directory with fake compiled agents, making tests fully self-contained.
---------
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
Co-authored-by: Brian <bmadcode@gmail.com>
The staleness warning in sprint-status always fired after 7 days because
it checked the 'generated' timestamp, which is only set once during
sprint-planning. Other workflows (dev-story, create-story, code-review,
retrospective) update statuses but never touched 'generated'.
This adds a 'last_updated' field that is:
- Set initially alongside 'generated' during sprint-planning
- Bumped to current date by every workflow that modifies sprint-status.yaml
- Used by the staleness check (with fallback to 'generated' for backward
compatibility)
Fixesbmad-code-org/BMAD-METHOD#1820
Co-authored-by: Oz <oz-agent@warp.dev>
- Standardize all workflow descriptions to follow format: [short description]. Use when the user says 'explicit action phrase' or 'another phrase'
- Remove verbose descriptions in favor of concise summaries with explicit trigger phrases
- Use max 2 phrases per workflow to minimize context and false positives
- Phrases are explicit actions (e.g., "lets create", "run X") not questions
- No slash commands in descriptions - users invoke via /name directly
- Rename qa/automate to qa-generate-e2e-tests for clarity
- Update various core tasks and workflows
* fix: remove output_folder/story_dir aliases, flatten variables sections (#1602)
Drop pointless alias variables (output_folder, story_dir, story_directory)
from Phase 4, Quick Flow, and QA workflows. Replace all references with
the canonical {implementation_artifacts} or {planning_artifacts} variables.
Also flatten unnecessary `variables:` YAML nesting in all affected
workflow.yaml files — the workflow engine treats all keys as top-level,
so the nesting added complexity with no semantic value.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* fix: add missing config declarations, remove remaining aliases and dead variables
- Add missing document_output_language and user_skill_level to create-story
(referenced in instructions.xml but never declared)
- Remove retrospectives_folder alias, replace with canonical implementation_artifacts
- Remove unused sprint_status and duplicate validation alias from correct-course
- Remove unused date, planning_artifacts, tracking_system from sprint-status
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* fix: address PR review findings and rename shadowed output_folder variable
- Fix single/double brace mismatch for {implementation_artifacts} in
create-story instructions.xml (F1)
- Remove escaped asterisks in glob patterns in retrospective
instructions.md (F2)
- Eliminate redundant {config_source} re-resolution for story_location
in sprint-planning workflow.yaml (F5)
- Add explicit instruction to discover previous_story_num by scanning
artifacts instead of leaving it undefined (#7)
- Rename output_folder to project_knowledge in document-project
workflows to stop shadowing the canonical core config variable (#13)
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* fix: use plural retrospectives in previous retro search instructions
The glob pattern can match multiple retrospective files for the same
epic (e.g., partial mid-sprint retro and full completion retro). Use
plural "retrospectives" to make clear the LLM should load all matches.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
---------
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
* fix(bmm): add missing project-context references to workflows
correct-course, retrospective, and sprint-status workflows were missing
project_context entirely. quick-spec referenced it in step files but not
in the initialization sequence.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* fix(bmm): add explicit project-context load instructions to workflows
Add Load project_context if exists action to instruction files for
correct-course, retrospective, sprint-status, and sprint-planning.
The workflow.yaml declarations alone do not cause the file to be loaded;
the instruction files must explicitly reference it.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
---------
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>