Commit Graph

431 Commits

Author SHA1 Message Date
Dicky Moore 79648dfde2
Merge branch 'main' into phase1-md-workflows-clean 2026-02-11 09:57:41 +00:00
Alex Verkhovsky 3e35057b89
fix: auto-discover PRD in validate-prd instead of always asking (#1619)
When only one PRD exists in planning_artifacts, use it automatically
instead of prompting the user for its path. Still asks when multiple
PRDs are found or falls back to manual input when none are discovered.

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-10 18:02:23 -06:00
Dicky Moore 4409df7c0f Merge remote-tracking branch 'upstream/main' into phase1-md-workflows-clean
# Conflicts:
#	src/bmm/workflows/4-implementation/correct-course/workflow.yaml
#	src/bmm/workflows/4-implementation/retrospective/workflow.yaml
#	src/bmm/workflows/4-implementation/sprint-status/workflow.yaml
2026-02-10 17:43:42 +00:00
Alex Verkhovsky 0659aac02c
fix(bmm): add missing project-context references to workflows (#1597)
* 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>
2026-02-10 09:50:00 -06:00
Dicky Moore 7c498a9fbe Merge remote-tracking branch 'upstream/main' into phase1-md-workflows-clean
# Conflicts:
#	tools/cli/installers/lib/core/manifest-generator.js
2026-02-09 21:12:52 +00:00
jheyworth 36c21dbada
feat: custom GitHub Copilot installer handler (#1606)
* feat: add custom GitHub Copilot installer handler

Adds a dedicated GitHub Copilot handler that generates:
- Agent files with .agent.md extension and enriched descriptions
- Prompt files (.prompt.md) for workflows, tasks, and agent activators
- copilot-instructions.md with project config and agent reference table

Replaces the generic config-driven handler with a custom one that
properly supports Copilot's agent/prompt file conventions.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* fix: escape YAML descriptions and preserve user copilot-instructions

- Escape single quotes in YAML frontmatter descriptions across all prompt
  generators (createWorkflowPromptContent, createTechWriterPromptContent,
  createAgentActivatorPromptContent) to match createAgentContent behavior
- Make copilot-instructions.md non-destructive using BMAD markers
  (<!-- BMAD:START --> / <!-- BMAD:END -->) to preserve user content
- On cleanup, only remove content between markers; skip files without markers
- Back up existing unmarked files before overwriting

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* fix: add error handling for CSV read/parse in loadAgentManifest and loadBmadHelp

Wrap file read and csv.parse in try/catch blocks so malformed or
unreadable CSV files gracefully degrade instead of aborting setup.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* fix: use specific detection paths instead of .github configDir

Set configDir to null and use detectionPaths with
.github/copilot-instructions.md and .github/agents/ so the base
detect() doesn't false-positive on every GitHub repo.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* docs: add comments explaining hardcoded bmm/config.yaml in prompts

Clarify that bmm/config.yaml is safe to hardcode in generated prompt
content because these prompts are only created when bmm module data
(bmad-help.csv, agent artifacts) exists.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* fix: guard against missing workflow-file in bmad-help.csv entries

Skip entries where workflow-file is empty/undefined to prevent
workflowFile.endsWith() from throwing during prompt generation.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* fix: guard escapeYamlSingleQuote against undefined input

Default to empty string when value is undefined/null to prevent
replaceAll from throwing on missing CSV fields.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* feat: preserve customised tool permissions across reinstalls

Before this change, reinstalling would overwrite any user-customised
tools arrays in agent and prompt frontmatter with the hardcoded default.

Now the installer reads existing tool permissions from .agent.md and
.prompt.md files before cleanup, and re-applies them to the regenerated
files. Falls back to the default ['read', 'edit', 'search', 'execute']
for new files or files without prior customisation.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* fix: prevent cleanup from stripping copilot-instructions.md markers before generation

The cleanup() method was removing the BMAD marker section from
copilot-instructions.md, leaving user content without markers.
generateCopilotInstructions() then treated the markerless file as
legacy, backed it up, and overwrote user content.

Fix: remove the copilot-instructions.md block from cleanup() entirely.
generateCopilotInstructions() already handles marker-based replacement
in a single read-modify-write pass that correctly preserves user content.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* docs: update manager.js comments to include github-copilot.js

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* feat: make agent capabilities data-driven via agent YAML metadata

Replace the hardcoded getAgentCapabilities() map with a data-driven
pipeline. Capabilities are now defined in each .agent.yaml source file,
compiled into the XML output, extracted into agent-manifest.csv by the
manifest generator, and read by the GitHub Copilot handler at install
time. New agents automatically get their capabilities without code
changes.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* fix: use this.bmadFolderName instead of hardcoded _bmad in template paths

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-09 13:41:11 -06:00
Dicky Moore 9987a25e3e
Merge branch 'main' into phase1-md-workflows-clean 2026-02-09 07:51:51 +00:00
Brian Madison c563cef0c2 refactor: replace module installer scripts with declarative directories config
Removes the security-risky _module-installer pattern (code execution at
install time) in favor of a declarative `directories` key in module.yaml.
The main installer now handles directory creation centrally based on this
config, eliminating per-module installer.js scripts and their CJS/ESM issues.

Changes:
- Delete src/bmm/_module-installer/installer.js
- Delete src/core/_module-installer/installer.js
- Add `directories` key to src/bmm/module.yaml
- Rename runModuleInstaller() -> createModuleDirectories()
- Remove _module-installer from ESLint overrides
- Remove _module-installer from file-ref validator skip dirs
2026-02-08 19:21:48 -06:00
Dicky Moore 95b437023d fix: clarify create-story context extraction and state age handling 2026-02-08 23:25:01 +00:00
Dicky Moore 0a3f48f13f fix: address coderabbit workflow migration follow-ups 2026-02-08 22:16:06 +00:00
Dicky Moore c108ae4314 fix: remove stale xml docs reference and tighten workflow wording 2026-02-08 19:54:37 +00:00
Dicky Moore ee7f5a8969 fix: harden document workflow choices and config path handling 2026-02-08 19:43:46 +00:00
Dicky Moore a94df6dcd8 fix: address latest coderabbit workflow guidance issues 2026-02-08 18:02:21 +00:00
Dicky Moore c1484c3dcc fix: restore workflow input contracts after md migration 2026-02-08 16:33:34 +00:00
Dicky Moore d87d654af7 fix(document-project): gate resume completion on subworkflow success 2026-02-08 16:14:37 +00:00
Dicky Moore e0cfff50da fix: tighten workflow routing and validation consistency 2026-02-08 15:52:47 +00:00
Dicky Moore 80328a6d2a fix: restore help grounding and align installer defaults 2026-02-08 15:44:56 +00:00
Dicky Moore a1c054006a refine workflow contracts for review findings, halt protocol, and sprint tracking 2026-02-08 15:01:58 +00:00
Dicky Moore e7d7bbc3ea docs(correct-course): clarify installed vs source workflow paths 2026-02-08 14:46:45 +00:00
Dicky Moore 5caf92cfdb fix: restore help routing and external module install tolerance 2026-02-08 14:23:22 +00:00
Dicky Moore 9604f6d00c fix: align workflow path guidance with installed runtime 2026-02-08 14:23:22 +00:00
Dicky Moore 98831695d0 fix: define installed workflow paths in qa and create-story 2026-02-08 14:23:21 +00:00
Dicky Moore e86fa2ee9e fix: restore runtime workflow paths and standalone parsing 2026-02-08 14:23:21 +00:00
Dicky Moore 3feb0d378f fix: resolve workflow guardrails and installer regressions 2026-02-08 14:23:21 +00:00
Dicky Moore 2a9b447e04 fix: add workflow loader fallback guidance and guards 2026-02-08 14:23:21 +00:00
Dicky Moore cfdb2db0f5 fix: correct workflow command defaults and bmm document config paths 2026-02-08 14:23:21 +00:00
Dicky Moore 87c4292021 Finish step-flow migration for dev workflows and fix installer regressions 2026-02-08 14:23:06 +00:00
Dicky Moore 7fc8318e08 Migrate remaining workflows to workflow.md and fix CLI/test regressions 2026-02-08 14:22:30 +00:00
Dicky Moore c636042dba Migrate QA automate workflow to workflow.md 2026-02-08 14:22:30 +00:00
Dicky Moore 3aba7f089d Update validate-workflow references 2026-02-08 14:22:30 +00:00
Dicky Moore 21efe68512 Remove reintroduced TEA/excalidraw artifacts 2026-02-08 14:22:30 +00:00
Dicky Moore 052cc839fe Fix remaining workflow.yaml/xml references 2026-02-08 14:22:30 +00:00
Dicky Moore 9054719d93 Migrate workflow runner references to workflow.md 2026-02-08 14:21:37 +00:00
Dicky Moore a1bc1a37f4 Convert Phase 2/3 workflows to MD 2026-02-08 14:11:58 +00:00
Dicky Moore 730ba6bdb0 Add advanced-elicitation MD workflow and guard 2026-02-08 14:11:58 +00:00
Dicky Moore ba91d9c03f Convert remaining Phase 1 workflows to MD 2026-02-08 14:11:58 +00:00
Dicky Moore 5042a895de Make workflow references platform-agnostic 2026-02-08 14:11:58 +00:00
Brian Madison 90d9204dc9 fix: update help task path from bmad-help.md to help.md
Update all references to the help task file from the old path
`_bmad/core/tasks/bmad-help.md` to the new path `_bmad/core/tasks/help.md`.

Affected files:
- 7 workflow step files across multiple workflows
- 1 IDE tool command generator (updated comments)
2026-02-06 21:27:14 -06:00
Brian Madison 09316ecc7f fix: remove forbidden workflow_path variable from step files
Remove the forbidden `workflow_path` frontmatter variable from 16 step files
across 3 workflows (quick-dev, quick-spec, check-implementation-readiness).
Per BMAD workflow standards, step files should use relative paths or
{project-root} references instead.

Changes:
- quick-dev (6 files): removed workflow_path and unused thisStepFile
- quick-spec (4 files): removed workflow_path, updated templateFile to use relative path
- check-implementation-readiness (6 files): removed workflow_path, updated all references to use relative paths

Also fixes incorrect path in check-implementation-readiness that referenced
non-existent 'implementation-readiness' folder instead of 'check-implementation-readiness'.

Fixes #1546
2026-02-06 21:16:14 -06:00
Brian Madison a79f581003 fix(technical-research): route step-05 to step-06 and fix stepsCompleted values
Fixes #1547

- step-05 now correctly routes to step-06-research-synthesis.md instead of presenting itself as the final step
- Fixed step-04 stepsCompleted: [1,2,3] → [1,2,3,4]
- Fixed step-05 stepsCompleted: [1,2,3,4] → [1,2,3,4,5]
- Fixed step-06 stepsCompleted: [1,2,3,4,5] → [1,2,3,4,5,6]
- Fixed step-05 title from "Step 4" to "Step 5"
- Fixed step-06 title from "Step 5" to "Step 6"
- Updated success/failure metrics and NEXT STEP sections

This mirrors the fix applied to market research in Beta.5, ensuring the technical research workflow properly completes through all 6 steps.
2026-02-06 20:49:54 -06:00
Michael Pursifull dbb754f085
fix(party-mode): add return protocol to prevent lost-in-the-middle failures (#1569)
After Party Mode completes within a parent workflow, the LLM fails to
re-present the parent workflow's completion menu due to lost-in-the-middle
effect at 50-100K tokens. The parent workflow instructions get pushed into
mid-context where they are no longer proactively recalled.

Add a Return Protocol section to step-03-graceful-exit.md that instructs
the LLM to:
1. Identify the parent workflow that invoked party-mode
2. Re-read that file to restore context
3. Resume from the invocation point
4. Present required menus/options

This is platform-independent prompt engineering that forces proactive
re-reading rather than relying on mid-context recall.

Fixes #1319

Co-authored-by: Brian <bmadcode@gmail.com>
2026-02-06 20:43:12 -06:00
Michael Pursifull c1a927ae8d
refactor: replace 'invoke/run' with 'load and follow' in workflow prompts (#1570)
- Replace "invoke the review task" with "load and follow the review task"
- Replace "run this step/task" with "load this step/task"
- Aligns with canonical phrasing from PR #1387

Closes #1378
2026-02-06 20:32:44 -06:00
Michael Pursifull 420e720242
fix: bmad-help reads project docs and respects communication_language (#1535)
* fix: bmad-help agent reads project docs and respects communication_language

The help task fabricated tech stack information instead of reading actual
project documentation (#1460) and ignored communication_language config
(#1457). Three changes:

1. Step 2 now also extracts communication_language and project_knowledge
   from the active module's config.yaml
2. New step 3 scans project_knowledge path for documentation and uses
   discovered facts as grounding context, with anti-hallucination guard
3. Step 7 enforces {communication_language} in all output

Chose inline config resolution over workflow.yaml conversion to match
existing core task patterns (index-docs, shard-doc).

Fixes #1460
Relates to #1457

* fix: clarify config extraction wording in help task

Remove "active module" reference from step 2 — config extraction
happens during the all-modules scan, before module detection in
step 4. Changed to "each scanned module's config" to match the
existing iteration pattern.

Addresses CodeRabbit review feedback on PR #1535.

---------

Co-authored-by: Brian <bmadcode@gmail.com>
2026-02-05 19:04:31 -06:00
Brian Madison bd620e38e5 trivariate workflows added 2026-02-04 21:34:47 -06:00
Brian Madison 731bee26ea additional slash commands added that were missing from trivariate workflows 2026-02-04 20:42:33 -06:00
Brian Madison 5276d58b2c fix internal project skills and rename to prefix with bmad-os 2026-02-04 17:04:34 -06:00
Brian Madison f699a3683f excorcise the deamons part 1 - remove dead uneeed artifacts and items no longer being supported beyond beta of the BMM or core - but could return later as a module 2026-02-04 15:44:25 -06:00
murat 006a1f707e fix: docs llms order, bmgd draft, tea link 2026-02-04 07:16:51 -06:00
Davor Racic 5b80649d3a
fix(installer): Multiple installer fixes (#1492)
* fix: support CRLF line endings and add task/tool templates for all IDEs

* fix: preserve file extensions in IDE task/tool paths and update BMAD branding

* fix: double extension issue in wrapper filename generation

* fix: correct path handling and variable reference in task/tool command generator

* fix: change default BMAD folder name from 'bmad' to '_bmad' across all IDE components

* refactor: centralize BMAD_FOLDER_NAME constant in path-utils

* fix: Replace the rest of BMAD_FOLDER magic values

* fix: add safety checks for setBmadFolderName method calls in IdeManager

* fix: convert absolute paths to relative in task-tool-command-generator

* fix: support .xml task files in bmad-artifacts task discovery

* fix: skip internal tasks in manifest generation and IDE command discovery

* fix: skip empty artifact_types targets and remove unused vscode_settings target

* fix: skip internal tools in manifest generation and improve Windows path handling in command generator

* fix: use csv-parse library for proper CSV handling in manifest generation

* refactor: extract CSV text cleaning to reusable method in manifest generator

* fix: normalize path separators to forward slashes in agent file copying for cross-platform compatibility

---------

Co-authored-by: Alex Verkhovsky <alexey.verkhovsky@gmail.com>
Co-authored-by: Brian <bmadcode@gmail.com>
2026-02-03 17:36:54 -06:00
Michael Pursifull 594235522c
fix: add process control and building automation domains (#1510)
Adds two operational technology domains to domain-complexity.csv
in both PRD and architecture workflows. Addresses the gap in OT
domain coverage for physical process control and building systems.

process_control: industrial automation, SCADA, PLC, DCS, I&C,
P&ID — covers power/utilities, water treatment, oil & gas,
manufacturing, chemical, pharmaceutical, food & beverage, mining,
and other sectors where software controls physical processes.
Key concerns include functional safety, process safety and hazard
analysis, environmental compliance, OT cybersecurity, and plant
reliability/maintainability. Requires engineering_authority PRD
section for PE/EOR credential requirements.

building_automation: BAS/BMS, HVAC, fire alarm, fire protection,
life safety, elevators, lighting, access control, commissioning —
covers commercial and institutional building systems. Key concerns
include life safety codes, multi-trade coordination, commissioning,
and indoor environmental quality.

Both domains are high complexity, include engineering_authority
as a required PRD section, and follow established entry patterns.

Fixes #1240

Co-authored-by: Brian <bmadcode@gmail.com>
2026-02-03 13:24:33 -06:00