Compare commits

..

7 Commits

Author SHA1 Message Date
Sergey Novikov e65b70fcfc
Merge 6df9369cd0 into 1782e97731 2026-02-18 09:02:55 +00:00
sno 6df9369cd0 fix(workflows): improve monorepo context handling and sanitization
- Re-derive dependent paths in retrospective workflow after monorepo override
- Add max length validation for project_suffix in dev-story
- Fix premature output path computation in create-story workflow
2026-02-18 10:02:39 +01:00
sno 21685f23f3 fix: enhance monorepo support with robust path resolution, input sanitization, and documentation fixes 2026-02-18 09:39:39 +01:00
sno 5ae2cad5a3 fix: ensure absolute path resolution for monorepo context checks 2026-02-18 09:28:17 +01:00
Brian Madison 1782e97731 docs: elevate bmad-help as primary on-ramp across all documentation
BMad-Help is one of V6's flagship features but was undersold in docs.
This update positions it properly as the intelligent guide that:

- Inspects project state and detects what's completed
- Understands natural language queries
- Varies options based on installed modules
- Auto-invokes after every workflow
- Recommends first required tasks

Changes:
- Add dedicated "Meet BMad-Help" section to getting-started
- Expand commands.md with full BMad-Help subsection and examples
- Reposition get-answers-about-bmad.md to start with BMad-Help
- Enhance install-bmad.md and established-projects.md with query examples
- Add index.md tip box promoting /bmad-help as quickest way to dive in
2026-02-18 00:22:12 -06:00
Brian Madison 9247146397 docs: update workflow names and standardize table formatting
- Prefix all workflows with 'bmad-bmm-' for clarity
- Standardize table column alignment
- Update workflow path references to use relative paths
- Clarify project-context documentation
- Simplify workflow loading information
2026-02-18 00:00:54 -06:00
Brian Madison c8481c21c3 fix: clarify phase routing and catalog path in help task
- Add note about optional phases with no required steps
- Fix catalog path to use relative bmad-help.csv location
2026-02-17 23:39:04 -06:00
38 changed files with 317 additions and 151 deletions

View File

@ -41,14 +41,14 @@ _bmad/_config/agents/
Open the `.customize.yaml` file for the agent you want to modify. Every section is optional -- customize only what you need. Open the `.customize.yaml` file for the agent you want to modify. Every section is optional -- customize only what you need.
| Section | Behavior | Purpose | | Section | Behavior | Purpose |
| ------------------- | ------------ | ---------------------------------------------- | | ------------------ | -------- | ----------------------------------------------- |
| `agent.metadata` | Replaces | Override the agent's display name | | `agent.metadata` | Replaces | Override the agent's display name |
| `persona` | Replaces | Set role, identity, style, and principles | | `persona` | Replaces | Set role, identity, style, and principles |
| `memories` | Appends | Add persistent context the agent always recalls | | `memories` | Appends | Add persistent context the agent always recalls |
| `menu` | Appends | Add custom menu items for workflows or prompts | | `menu` | Appends | Add custom menu items for workflows or prompts |
| `critical_actions` | Appends | Define startup instructions for the agent | | `critical_actions` | Appends | Define startup instructions for the agent |
| `prompts` | Appends | Create reusable prompts for menu actions | | `prompts` | Appends | Create reusable prompts for menu actions |
Sections marked **Replaces** overwrite the agent's defaults entirely. Sections marked **Appends** add to the existing configuration. Sections marked **Replaces** overwrite the agent's defaults entirely. Sections marked **Appends** add to the existing configuration.
@ -96,7 +96,7 @@ Add custom entries to the agent's display menu. Each item needs a `trigger`, a t
```yaml ```yaml
menu: menu:
- trigger: my-workflow - trigger: my-workflow
workflow: '{project-root}/my-custom/workflows/my-workflow.yaml' workflow: 'my-custom/workflows/my-workflow.yaml'
description: My custom workflow description: My custom workflow
- trigger: deploy - trigger: deploy
action: '#deploy-prompt' action: '#deploy-prompt'
@ -136,11 +136,11 @@ npx bmad-method install
The installer detects the existing installation and offers these options: The installer detects the existing installation and offers these options:
| Option | What It Does | | Option | What It Does |
| --------------------- | ------------------------------------------------------------------- | | ---------------------------- | ------------------------------------------------------------------- |
| **Quick Update** | Updates all modules to the latest version and recompiles all agents | | **Quick Update** | Updates all modules to the latest version and recompiles all agents |
| **Recompile Agents** | Applies customizations only, without updating module files | | **Recompile Agents** | Applies customizations only, without updating module files |
| **Modify BMad Installation** | Full installation flow for adding or removing modules | | **Modify BMad Installation** | Full installation flow for adding or removing modules |
For customization-only changes, **Recompile Agents** is the fastest option. For customization-only changes, **Recompile Agents** is the fastest option.

View File

@ -59,9 +59,21 @@ For complex projects, consider using the `document-project` workflow. It offers
## Step 3: Get Help ## Step 3: Get Help
Get help to know what to do next based on your unique needs ### BMad-Help: Your Starting Point
Run `bmad-help` to get guidance when you are not sure what to do next. **Run `/bmad-help` anytime you're unsure what to do next.** This intelligent guide:
- Inspects your project to see what's already been done
- Shows options based on your installed modules
- Understands natural language queries
```
/bmad-help I have an existing Rails app, where should I start?
/bmad-help What's the difference between quick-flow and full method?
/bmad-help Show me what workflows are available
```
BMad-Help also **automatically runs at the end of every workflow**, providing clear guidance on exactly what to do next.
### Choosing Your Approach ### Choosing Your Approach

View File

@ -5,17 +5,48 @@ sidebar:
order: 4 order: 4
--- ---
If you have successfully installed BMad and the BMad Method (+ other modules as needed) - the first step in getting answers is `/bmad-help`. This will answer upwards of 80% of all questions and is available to you in the IDE as you are working. ## Start Here: BMad-Help
## When to Use This **The fastest way to get answers about BMad is `/bmad-help`.** This intelligent guide will answer upwards of 80% of all questions and is available to you directly in your IDE as you work.
- You have a question about how BMad works or what to do next with BMad BMad-Help is more than a lookup tool — it:
- You want to understand a specific agent or workflow - **Inspects your project** to see what's already been completed
- You need quick answers without waiting for Discord - **Understands natural language** — ask questions in plain English
- **Varies based on your installed modules** — shows relevant options
- **Auto-runs after workflows** — tells you exactly what to do next
- **Recommends the first required task** — no guessing where to start
:::note[Prerequisites] ### How to Use BMad-Help
An AI tool (Claude Code, Cursor, ChatGPT, Claude.ai, etc.) and either BMad installed in your project or access to the GitHub repo.
::: Run it with just the slash command:
```
/bmad-help
```
Or combine it with a natural language query:
```
/bmad-help I have a SaaS idea and know all the features. Where do I start?
/bmad-help What are my options for UX design?
/bmad-help I'm stuck on the PRD workflow
/bmad-help Show me what's been done so far
```
BMad-Help responds with:
- What's recommended for your situation
- What the first required task is
- What the rest of the process looks like
---
## When to Use This Guide
Use this section when:
- You want to understand BMad's architecture or internals
- You need answers outside of what BMad-Help provides
- You're researching BMad before installing
- You want to explore the source code directly
## Steps ## Steps

View File

@ -79,7 +79,18 @@ your-project/
## Verify Installation ## Verify Installation
Run the `help` workflow (`/bmad-help` on most platforms) to verify everything works and see what to do next. Run `/bmad-help` to verify everything works and see what to do next.
**BMad-Help is your intelligent guide** that will:
- Confirm your installation is working
- Show what's available based on your installed modules
- Recommend your first step
You can also ask it questions:
```
/bmad-help I just installed, what should I do first?
/bmad-help What are my options for a SaaS project?
```
## Troubleshooting ## Troubleshooting

View File

@ -12,7 +12,11 @@ If you're comfortable working with AI coding assistants like Claude, Cursor, or
The fastest way to understand BMad is to try it. The fastest way to understand BMad is to try it.
- **[Get Started with BMad](./tutorials/getting-started.md)** — Install and understand how BMad works - **[Get Started with BMad](./tutorials/getting-started.md)** — Install and understand how BMad works
- **[Workflow Map](./reference/workflow-map.md)** — Visual overview of BMM phases, workflows, and context management. - **[Workflow Map](./reference/workflow-map.md)** — Visual overview of BMM phases, workflows, and context management
:::tip[Just Want to Dive In?]
Install BMad and run `/bmad-help` — it will guide you through everything based on your project and installed modules.
:::
## How to Use These Docs ## How to Use These Docs

View File

@ -103,9 +103,29 @@ See [Workflow Map](./workflow-map.md) for the complete workflow reference organi
Tasks and tools are standalone operations that do not require an agent or workflow context. Tasks and tools are standalone operations that do not require an agent or workflow context.
#### BMad-Help: Your Intelligent Guide
**`/bmad-help`** is your primary interface for discovering what to do next. It's not just a lookup tool — it's an intelligent assistant that:
- **Inspects your project** to see what's already been done
- **Understands natural language queries** — ask questions in plain English
- **Varies by installed modules** — shows options based on what you have
- **Auto-invokes after workflows** — every workflow ends with clear next steps
- **Recommends the first required task** — no guessing where to start
**Examples:**
```
/bmad-help
/bmad-help I have a SaaS idea and know all the features. Where do I start?
/bmad-help What are my options for UX design?
/bmad-help I'm stuck on the PRD workflow
```
#### Other Tasks and Tools
| Example command | Purpose | | Example command | Purpose |
| --- | --- | | --- | --- |
| `/bmad-help` | Context-aware guidance and next-step recommendations |
| `/bmad-shard-doc` | Split a large markdown file into smaller sections | | `/bmad-shard-doc` | Split a large markdown file into smaller sections |
| `/bmad-index-docs` | Index project documentation | | `/bmad-index-docs` | Index project documentation |
| `/bmad-editorial-review-prose` | Review document prose quality | | `/bmad-editorial-review-prose` | Review document prose quality |

View File

@ -23,55 +23,53 @@ Final important note: Every workflow below can be run directly with your tool of
Explore the problem space and validate ideas before committing to planning. Explore the problem space and validate ideas before committing to planning.
| Workflow | Purpose | Produces | | Workflow | Purpose | Produces |
| ---------------------- | -------------------------------------------------------------------------- | ------------------------- | | ------------------------------- | -------------------------------------------------------------------------- | ------------------------- |
| `brainstorming` | Brainstorm Project Ideas with guided facilitation of a brainstorming coach | `brainstorming-report.md` | | `bmad-brainstorming` | Brainstorm Project Ideas with guided facilitation of a brainstorming coach | `brainstorming-report.md` |
| `research` | Validate market, technical, or domain assumptions | Research findings | | `bmad-bmm-research` | Validate market, technical, or domain assumptions | Research findings |
| `create-product-brief` | Capture strategic vision | `product-brief.md` | | `bmad-bmm-create-product-brief` | Capture strategic vision | `product-brief.md` |
## Phase 2: Planning ## Phase 2: Planning
Define what to build and for whom. Define what to build and for whom.
| Workflow | Purpose | Produces | | Workflow | Purpose | Produces |
| ------------------ | ---------------------------------------- | ------------ | | --------------------------- | ---------------------------------------- | ------------ |
| `create-prd` | Define requirements (FRs/NFRs) | `PRD.md` | | `bmad-bmm-create-prd` | Define requirements (FRs/NFRs) | `PRD.md` |
| `create-ux-design` | Design user experience (when UX matters) | `ux-spec.md` | | `bmad-bmm-create-ux-design` | Design user experience (when UX matters) | `ux-spec.md` |
## Phase 3: Solutioning ## Phase 3: Solutioning
Decide how to build it and break work into stories. Decide how to build it and break work into stories.
| Workflow | Purpose | Produces | | Workflow | Purpose | Produces |
| -------------------------------- | ------------------------------------------ | --------------------------- | | ----------------------------------------- | ------------------------------------------ | --------------------------- |
| `create-architecture` | Make technical decisions explicit | `architecture.md` with ADRs | | `bmad-bmm-create-architecture` | Make technical decisions explicit | `architecture.md` with ADRs |
| `create-epics-and-stories` | Break requirements into implementable work | Epic files with stories | | `bmad-bmm-create-epics-and-stories` | Break requirements into implementable work | Epic files with stories |
| `check-implementation-readiness` | Gate check before implementation | PASS/CONCERNS/FAIL decision | | `bmad-bmm-check-implementation-readiness` | Gate check before implementation | PASS/CONCERNS/FAIL decision |
## Phase 4: Implementation ## Phase 4: Implementation
Build it, one story at a time. Build it, one story at a time. Coming soon, full phase 4 automation!
| Workflow | Purpose | Produces | | Workflow | Purpose | Produces |
| ----------------- | -------------------------------------- | ----------------------------- | | -------------------------- | ------------------------------------------------------------------------ | -------------------------------- |
| `sprint-planning` | Initialize tracking (once per project) | `sprint-status.yaml` | | `bmad-bmm-sprint-planning` | Initialize tracking (once per project to sequence the dev cycle) | `sprint-status.yaml` |
| `create-story` | Prepare next story for implementation | `story-[slug].md` | | `bmad-bmm-create-story` | Prepare next story for implementation | `story-[slug].md` |
| `dev-story` | Implement the story | Working code + tests | | `bmad-bmm-dev-story` | Implement the story | Working code + tests |
| `automate` (QA) | Generate tests for existing features | Test suite | | `bmad-bmm-code-review` | Validate implementation quality | Approved or changes requested |
| `code-review` | Validate implementation quality | Approved or changes requested | | `bmad-bmm-correct-course` | Handle significant mid-sprint changes | Updated plan or re-routing |
| `correct-course` | Handle significant mid-sprint changes | Updated plan or re-routing | | `bmad-bmm-automate` | Generate tests for existing features - Use after a full epic is complete | End to End UI Focused Test suite |
| `retrospective` | Review after epic completion | Lessons learned | | `bmad-bmm-retrospective` | Review after epic completion | Lessons learned |
**Quinn (QA Agent):** Built-in QA agent for test automation. Trigger with `QA` or `bmad-bmm-qa-automate`. Generates standard API and E2E tests using your project's test framework. Beginner-friendly, no configuration needed. For advanced test strategy, install [Test Architect (TEA)](https://bmad-code-org.github.io/bmad-method-test-architecture-enterprise/) module.
## Quick Flow (Parallel Track) ## Quick Flow (Parallel Track)
Skip phases 1-3 for small, well-understood work. Skip phases 1-3 for small, well-understood work.
| Workflow | Purpose | Produces | | Workflow | Purpose | Produces |
| ------------ | ------------------------------------------ | --------------------------------------------- | | --------------------- | ------------------------------------------ | --------------------------------------------- |
| `quick-spec` | Define an ad-hoc change | `tech-spec.md` (story file for small changes) | | `bmad-bmm-quick-spec` | Define an ad-hoc change | `tech-spec.md` (story file for small changes) |
| `quick-dev` | Implement from spec or direct instructions | Working code + tests | | `bmad-bmm-quick-dev` | Implement from spec or direct instructions | Working code + tests |
## Context Management ## Context Management
@ -80,43 +78,12 @@ Each document becomes context for the next phase. The PRD tells the architect wh
### Project Context ### Project Context
:::tip[Recommended] :::tip[Recommended]
Create `project-context.md` to ensure AI agents follow your project's rules and preferences. This file works like a constitution for your project — it guides implementation decisions across all workflows. Create `project-context.md` to ensure AI agents follow your project's rules and preferences. This file works like a constitution for your project — it guides implementation decisions across all workflows. This optional file can be generated at the end of Architecture Creation, or in an existing project it can be generated also to capture whats important to keep aligned with current conventions.
::: :::
**When to create it:**
| Scenario | Approach |
|----------|----------|
| Before architecture (manual) | Document technical preferences you want the architect to respect |
| After architecture | Generate it to capture decisions made during solutioning |
| Existing projects | Run `generate-project-context` to discover established patterns |
| Quick Flow | Create before `quick-dev` to ensure consistent implementation |
**How to create it:** **How to create it:**
- **Manually** — Create `_bmad-output/project-context.md` with your technology stack and implementation rules - **Manually** — Create `_bmad-output/project-context.md` with your technology stack and implementation rules
- **Generate it** — Run `/bmad-bmm-generate-project-context` to auto-generate from your architecture or codebase - **Generate it** — Run `/bmad-bmm-generate-project-context` to auto-generate from your architecture or codebase
**What workflows load it:**
| Workflow | Purpose |
|----------|---------|
| `create-architecture` | Respects technical preferences when designing |
| `create-story` | Informs story creation with project patterns |
| `dev-story` | Guides implementation decisions |
| `code-review` | Validates against project standards |
| `quick-dev` | Applies patterns when implementing |
[**Learn more about project-context.md**](../explanation/project-context.md) [**Learn more about project-context.md**](../explanation/project-context.md)
### Additional Context by Workflow
Beyond `project-context.md`, each workflow loads specific documents:
| Workflow | Also Loads |
|----------|------------|
| `create-story` | epics, PRD, architecture, UX |
| `dev-story` | story file |
| `code-review` | architecture, story file |
| `quick-spec` | planning docs (if exist) |
| `quick-dev` | tech-spec |

View File

@ -8,6 +8,7 @@ Build software faster using AI-powered workflows with specialized agents that gu
## What You'll Learn ## What You'll Learn
- Install and initialize BMad Method for a new project - Install and initialize BMad Method for a new project
- Use **BMad-Help** — your intelligent guide that knows what to do next
- Choose the right planning track for your project size - Choose the right planning track for your project size
- Progress through phases from requirements to working code - Progress through phases from requirements to working code
- Use agents and workflows effectively - Use agents and workflows effectively
@ -19,11 +20,46 @@ Build software faster using AI-powered workflows with specialized agents that gu
- **A project idea** — Even a simple one works for learning - **A project idea** — Even a simple one works for learning
::: :::
:::tip[Quick Path] :::tip[The Easiest Path]
**Install** → `npx bmad-method install` **Install** → `npx bmad-method install`
**Plan** → PM creates PRD, Architect creates architecture **Ask** → `/bmad-help what should I do first?`
**Build** → SM manages sprints, DEV implements stories **Build** → Let BMad-Help guide you workflow by workflow
**Fresh chats** for each workflow to avoid context issues. :::
## Meet BMad-Help: Your Intelligent Guide
**BMad-Help is the fastest way to get started with BMad.** You don't need to memorize workflows or phases — just ask, and BMad-Help will:
- **Inspect your project** to see what's already been done
- **Show your options** based on which modules you have installed
- **Recommend what's next** — including the first required task
- **Answer questions** like "I have a SaaS idea, where do I start?"
### How to Use BMad-Help
Run it in your AI IDE with just the slash command:
```
/bmad-help
```
Or combine it with a question for context-aware guidance:
```
/bmad-help I have an idea for a SaaS product, I already know all the features I want. where do I get started?
```
BMad-Help will respond with:
- What's recommended for your situation
- What the first required task is
- What the rest of the process looks like
### It Powers Workflows Too
BMad-Help doesn't just answer questions — **it automatically runs at the end of every workflow** to tell you exactly what to do next. No guessing, no searching docs — just clear guidance on the next required workflow.
:::tip[Start Here]
After installing BMad, run `/bmad-help` immediately. It will detect what modules you have installed and guide you to the right starting point for your project.
::: :::
## Understanding BMad ## Understanding BMad
@ -65,7 +101,15 @@ The installer creates two folders:
- `_bmad/` — agents, workflows, tasks, and configuration - `_bmad/` — agents, workflows, tasks, and configuration
- `_bmad-output/` — empty for now, but this is where your artifacts will be saved - `_bmad-output/` — empty for now, but this is where your artifacts will be saved
Open your AI IDE in the project folder. Run the `help` workflow (`/bmad-help`) to see what to do next — it detects what you've completed and recommends the next step. :::tip[Your Next Step]
Open your AI IDE in the project folder and run:
```
/bmad-help
```
BMad-Help will detect what you've completed and recommend exactly what to do next. You can also ask it questions like "What are my options?" or "I have a SaaS idea, where should I start?"
:::
:::note[How to Load Agents and Run Workflows] :::note[How to Load Agents and Run Workflows]
Each workflow has a **slash command** you run in your IDE (e.g., `/bmad-bmm-create-prd`). Running a workflow command automatically loads the appropriate agent — you don't need to load agents separately. You can also load an agent directly for general conversation (e.g., `/bmad-agent-bmm-pm` for the PM agent). Each workflow has a **slash command** you run in your IDE (e.g., `/bmad-bmm-create-prd`). Running a workflow command automatically loads the appropriate agent — you don't need to load agents separately. You can also load an agent directly for general conversation (e.g., `/bmad-agent-bmm-pm` for the PM agent).
@ -175,12 +219,12 @@ your-project/
## Quick Reference ## Quick Reference
| Workflow | Command | Agent | Purpose | | Workflow | Command | Agent | Purpose |
| -------------------------------- | ------------------------------------------ | --------- | ------------------------------------ | | ------------------------------------- | ------------------------------------------ | --------- | ----------------------------------------------- |
| `help` | `/bmad-help` | Any | Get guidance on what to do next | | **`help`** ⭐ | `/bmad-help` | Any | **Your intelligent guide — ask anything!** |
| `prd` | `/bmad-bmm-create-prd` | PM | Create Product Requirements Document | | `prd` | `/bmad-bmm-create-prd` | PM | Create Product Requirements Document |
| `create-architecture` | `/bmad-bmm-create-architecture` | Architect | Create architecture document | | `create-architecture` | `/bmad-bmm-create-architecture` | Architect | Create architecture document |
| `generate-project-context` | `/bmad-bmm-generate-project-context` | Analyst | Create project context file | | `generate-project-context` | `/bmad-bmm-generate-project-context` | Analyst | Create project context file |
| `create-epics-and-stories` | `/bmad-bmm-create-epics-and-stories` | PM | Break down PRD into epics | | `create-epics-and-stories` | `/bmad-bmm-create-epics-and-stories` | PM | Break down PRD into epics |
| `check-implementation-readiness` | `/bmad-bmm-check-implementation-readiness` | Architect | Validate planning cohesion | | `check-implementation-readiness` | `/bmad-bmm-check-implementation-readiness` | Architect | Validate planning cohesion |
| `sprint-planning` | `/bmad-bmm-sprint-planning` | SM | Initialize sprint tracking | | `sprint-planning` | `/bmad-bmm-sprint-planning` | SM | Initialize sprint tracking |
@ -204,16 +248,26 @@ Not strictly. Once you learn the flow, you can run workflows directly using the
## Getting Help ## Getting Help
:::tip[First Stop: BMad-Help]
**Run `/bmad-help` anytime** — it's the fastest way to get unstuck. Ask it anything:
- "What should I do after installing?"
- "I'm stuck on workflow X"
- "What are my options for Y?"
- "Show me what's been done so far"
BMad-Help inspects your project, detects what you've completed, and tells you exactly what to do next.
:::
- **During workflows** — Agents guide you with questions and explanations - **During workflows** — Agents guide you with questions and explanations
- **Community** — [Discord](https://discord.gg/gk8jAdXWmj) (#bmad-method-help, #report-bugs-and-issues) - **Community** — [Discord](https://discord.gg/gk8jAdXWmj) (#bmad-method-help, #report-bugs-and-issues)
- **Stuck?** — Run `help` (`/bmad-help`) to see what to do next
## Key Takeaways ## Key Takeaways
:::tip[Remember These] :::tip[Remember These]
- **Start with `/bmad-help`** — Your intelligent guide that knows your project and options
- **Always use fresh chats** — Start a new chat for each workflow - **Always use fresh chats** — Start a new chat for each workflow
- **Track matters** — Quick Flow uses quick-spec; Method/Enterprise need PRD and architecture - **Track matters** — Quick Flow uses quick-spec; Method/Enterprise need PRD and architecture
- **Use `help` (`/bmad-help`) when stuck** — It detects your progress and suggests next steps - **BMad-Help runs automatically** — Every workflow ends with guidance on what's next
::: :::
Ready to start? Install BMad and let the agents guide you through your first project. Ready to start? Install BMad, run `/bmad-help`, and let your intelligent guide lead the way.

View File

@ -24,11 +24,11 @@ Load and read full config from {main_config} and resolve basic variables.
2. **Wait for Input.** 2. **Wait for Input.**
3. **Process Input:** 3. **Process Input:**
- **Case: CLEAR**: - **Case: CLEAR**:
- Delete file: `_bmad/.current_project` - Delete file: `{project-root}/_bmad/.current_project`
- Output: "✅ Project context cleared. Artifacts will go to root `_bmad-output/`." - Output: "✅ Project context cleared. Artifacts will go to root `_bmad-output/`."
- **Case: Path Provided**: - **Case: Path Provided**:
- **Sanitize:** Remove leading `/` or `_bmad-output/` if present in the input. - **Sanitize:** Remove leading `/` or `_bmad-output/` if present in the input.
- Write file: `_bmad/.current_project` with content `<sanitized_path>` - Write file: `{project-root}/_bmad/.current_project` with content `<sanitized_path>`
- Output: "✅ Project context set to: `<sanitized_path>`. Artifacts will go to `_bmad-output/<sanitized_path>/`." - Output: "✅ Project context set to: `<sanitized_path>`. Artifacts will go to `_bmad-output/<sanitized_path>/`."
### 3. Verification ### 3. Verification

View File

@ -52,7 +52,7 @@ This uses **step-file architecture** for disciplined execution:
Load and read full config from {main_config} and resolve basic variables. Load and read full config from {main_config} and resolve basic variables.
**Monorepo Context Check:** **Monorepo Context Check:**
1. Check if `_bmad/.current_project` exists. 1. Check if `{project-root}/_bmad/.current_project` exists.
2. If it exists, read its content as `{project_suffix}` and override output folder: 2. If it exists, read its content as `{project_suffix}` and override output folder:
- `output_folder`: `{project-root}/_bmad-output/{project_suffix}` - `output_folder`: `{project-root}/_bmad-output/{project_suffix}`

View File

@ -21,7 +21,7 @@ main_config: '{project-root}/_bmad/bmm/config.yaml'
Load and read full config from {main_config} and resolve basic variables. Load and read full config from {main_config} and resolve basic variables.
**Monorepo Context Check:** **Monorepo Context Check:**
1. Check if `_bmad/.current_project` exists. 1. Check if `{project-root}/_bmad/.current_project` exists.
2. If it exists, read its content as `{project_suffix}` and override output folder: 2. If it exists, read its content as `{project_suffix}` and override output folder:
- `output_folder`: `{project-root}/_bmad-output/{project_suffix}` - `output_folder`: `{project-root}/_bmad-output/{project_suffix}`

View File

@ -21,7 +21,7 @@ main_config: '{project-root}/_bmad/bmm/config.yaml'
Load and read full config from {main_config} and resolve basic variables. Load and read full config from {main_config} and resolve basic variables.
**Monorepo Context Check:** **Monorepo Context Check:**
1. Check if `_bmad/.current_project exists`. 1. Check if `{project-root}/_bmad/.current_project` exists.
2. If it exists, read its content as `{project_suffix}` and override output folder: 2. If it exists, read its content as `{project_suffix}` and override output folder:
- `output_folder`: `{project-root}/_bmad-output/{project_suffix}` - `output_folder`: `{project-root}/_bmad-output/{project_suffix}`

View File

@ -21,7 +21,7 @@ main_config: '{project-root}/_bmad/bmm/config.yaml'
Load and read full config from {main_config} and resolve basic variables. Load and read full config from {main_config} and resolve basic variables.
**Monorepo Context Check:** **Monorepo Context Check:**
1. Check if `_bmad/.current_project` exists. 1. Check if `{project-root}/_bmad/.current_project` exists.
2. If it exists, read its content as `{project_suffix}` and override output folder: 2. If it exists, read its content as `{project_suffix}` and override output folder:
- `output_folder`: `{project-root}/_bmad-output/{project_suffix}` - `output_folder`: `{project-root}/_bmad-output/{project_suffix}`

View File

@ -51,7 +51,7 @@ This uses **step-file architecture** for disciplined execution:
Load and read full config from {main_config} and resolve basic variables. Load and read full config from {main_config} and resolve basic variables.
**Monorepo Context Check:** **Monorepo Context Check:**
1. Check if `_bmad/.current_project` exists. 1. Check if `{project-root}/_bmad/.current_project` exists.
2. If it exists, read its content as `{project_suffix}` and override output folder: 2. If it exists, read its content as `{project_suffix}` and override output folder:
- `output_folder`: `{project-root}/_bmad-output/{project_suffix}` - `output_folder`: `{project-root}/_bmad-output/{project_suffix}`

View File

@ -51,7 +51,7 @@ This uses **step-file architecture** for disciplined execution:
Load and read full config from {main_config} and resolve basic variables. Load and read full config from {main_config} and resolve basic variables.
**Monorepo Context Check:** **Monorepo Context Check:**
1. Check if `_bmad/.current_project` exists. 1. Check if `{project-root}/_bmad/.current_project` exists.
2. If it exists, read its content as `{project_suffix}` and override output folder: 2. If it exists, read its content as `{project_suffix}` and override output folder:
- `output_folder`: `{project-root}/_bmad-output/{project_suffix}` - `output_folder`: `{project-root}/_bmad-output/{project_suffix}`
- `project_name`, `output_folder`, `planning_artifacts`, `user_name` - `project_name`, `output_folder`, `planning_artifacts`, `user_name`

View File

@ -51,7 +51,7 @@ This uses **step-file architecture** for disciplined execution:
Load and read full config from {main_config} and resolve basic variables. Load and read full config from {main_config} and resolve basic variables.
**Monorepo Context Check:** **Monorepo Context Check:**
1. Check if `_bmad/.current_project` exists. 1. Check if `{project-root}/_bmad/.current_project` exists.
2. If it exists, read its content as `{project_suffix}` and override output folder: 2. If it exists, read its content as `{project_suffix}` and override output folder:
- `output_folder`: `{project-root}/_bmad-output/{project_suffix}` - `output_folder`: `{project-root}/_bmad-output/{project_suffix}`

View File

@ -27,7 +27,7 @@ This uses **micro-file architecture** for disciplined execution:
Load and read full config from {main_config} and resolve basic variables. Load and read full config from {main_config} and resolve basic variables.
**Monorepo Context Check:** **Monorepo Context Check:**
1. Check if `_bmad/.current_project exists`. 1. Check if `{project-root}/_bmad/.current_project` exists.
2. If it exists, read its content as `{project_suffix}` and override output folder: 2. If it exists, read its content as `{project_suffix}` and override output folder:
- `output_folder`: `{project-root}/_bmad-output/{project_suffix}` - `output_folder`: `{project-root}/_bmad-output/{project_suffix}`

View File

@ -47,7 +47,7 @@ description: 'Critical validation workflow that assesses PRD, Architecture, and
Load and read full config from {main_config} and resolve basic variables. Load and read full config from {main_config} and resolve basic variables.
**Monorepo Context Check:** **Monorepo Context Check:**
1. Check if `_bmad/.current_project exists`. 1. Check if `{project-root}/_bmad/.current_project` exists.
2. If it exists, read its content as `{project_suffix}` and override output folder: 2. If it exists, read its content as `{project_suffix}` and override output folder:
- `output_folder`: `{project-root}/_bmad-output/{project_suffix}` - `output_folder`: `{project-root}/_bmad-output/{project_suffix}`

View File

@ -30,7 +30,7 @@ This uses **micro-file architecture** for disciplined execution:
Load and read full config from {main_config} and resolve basic variables. Load and read full config from {main_config} and resolve basic variables.
**Monorepo Context Check:** **Monorepo Context Check:**
1. Check if `_bmad/.current_project` exists. 1. Check if `{project-root}/_bmad/.current_project` exists.
2. If it exists, read its content as `{project_suffix}` and override output folder: 2. If it exists, read its content as `{project_suffix}` and override output folder:
- `output_folder`: `{project-root}/_bmad-output/{project_suffix}` - `output_folder`: `{project-root}/_bmad-output/{project_suffix}`

View File

@ -51,7 +51,7 @@ This uses **step-file architecture** for disciplined execution:
Load and read full config from {main_config} and resolve basic variables. Load and read full config from {main_config} and resolve basic variables.
**Monorepo Context Check:** **Monorepo Context Check:**
1. Check if `_bmad/.current_project` exists. 1. Check if `{project-root}/_bmad/.current_project` exists.
2. If it exists, read its content as `{project_suffix}` and override output folder: 2. If it exists, read its content as `{project_suffix}` and override output folder:
- `output_folder`: `{project-root}/_bmad-output/{project_suffix}` - `output_folder`: `{project-root}/_bmad-output/{project_suffix}`

View File

@ -16,8 +16,18 @@
<step n="1" goal="Load story and discover changes"> <step n="1" goal="Load story and discover changes">
<check if="_bmad/.current_project exists"> <check if="{project-root}/_bmad/.current_project exists">
<action>Read content as project_suffix</action> <action>Read content as project_suffix</action>
<!-- Sanitization and Validation -->
<action>Trim whitespace and newlines from project_suffix</action>
<check if="project_suffix contains '..' or starts with '/' or starts with '\'">
<output>🚫 Security Error: Invalid project context path detected.</output>
<action>HALT</action>
</check>
<check if="project_suffix matches regex '[^a-zA-Z0-9._-]|^\s*$'">
<output>🚫 Error: Project context must only contain alphanumeric characters, dots, dashes, or underscores.</output>
<action>HALT</action>
</check>
<action>Override output_folder to {project-root}/_bmad-output/{project_suffix}</action> <action>Override output_folder to {project-root}/_bmad-output/{project_suffix}</action>
</check> </check>

View File

@ -45,7 +45,7 @@
Load and read full config from {main_config} and resolve basic variables. Load and read full config from {main_config} and resolve basic variables.
**Monorepo Context Check:** **Monorepo Context Check:**
1. Check if `_bmad/.current_project exists`. 1. Check if `{project-root}/_bmad/.current_project` exists.
2. If it exists, read its content as `{project_suffix}` and override output folder: 2. If it exists, read its content as `{project_suffix}` and override output folder:
- `output_folder`: `{project-root}/_bmad-output/{project_suffix}` - `output_folder`: `{project-root}/_bmad-output/{project_suffix}`
<action>Maintain running notes of findings and impacts discovered</action> <action>Maintain running notes of findings and impacts discovered</action>

View File

@ -18,9 +18,20 @@
<critical>🎯 ZERO USER INTERVENTION: Process should be fully automated except for initial epic/story selection or missing documents</critical> <critical>🎯 ZERO USER INTERVENTION: Process should be fully automated except for initial epic/story selection or missing documents</critical>
<step n="1" goal="Determine target story"> <step n="1" goal="Determine target story">
<check if="_bmad/.current_project exists"> <check if="{project-root}/_bmad/.current_project exists">
<action>Read content as project_suffix</action> <action>Read content as project_suffix</action>
<!-- Sanitization and Validation -->
<action>Trim whitespace and newlines from project_suffix</action>
<check if="project_suffix contains '..' or starts with '/' or starts with '\'">
<output>🚫 Security Error: Invalid project context path detected.</output>
<action>HALT</action>
</check>
<check if="project_suffix matches regex '[^a-zA-Z0-9._-]|^\s*$'">
<output>🚫 Error: Project context must only contain alphanumeric characters, dots, dashes, or underscores.</output>
<action>HALT</action>
</check>
<action>Override output_folder to {project-root}/_bmad-output/{project_suffix}</action> <action>Override output_folder to {project-root}/_bmad-output/{project_suffix}</action>
<action>Output "Monorepo context detected. Output folder redirected to: {output_folder}"</action>
</check> </check>
<check if="{{story_path}} is provided by user or user provided the epic and story number such as 2-4 or 1.6 or epic 1 story 5"> <check if="{{story_path}} is provided by user or user provided the epic and story number such as 2-4 or 1.6 or epic 1 story 5">
@ -265,48 +276,52 @@
<step n="5" goal="Create comprehensive story file"> <step n="5" goal="Create comprehensive story file">
<critical>📝 CREATE ULTIMATE STORY FILE - The developer's master implementation guide!</critical> <critical>📝 CREATE ULTIMATE STORY FILE - The developer's master implementation guide!</critical>
<!-- Recompute output file path with correct output_folder and story_key -->
<action>Set {target_story_file} = {output_folder}/{story_key}.md</action>
<action>Output "Generating story file at: {target_story_file}"</action>
<action>Initialize from template.md: <action>Initialize from template.md:
{default_output_file}</action> {target_story_file}</action>
<template-output file="{default_output_file}">story_header</template-output> <template-output file="{target_story_file}">story_header</template-output>
<!-- Story foundation from epics analysis --> <!-- Story foundation from epics analysis -->
<template-output <template-output
file="{default_output_file}">story_requirements</template-output> file="{target_story_file}">story_requirements</template-output>
<!-- Developer context section - MOST IMPORTANT PART --> <!-- Developer context section - MOST IMPORTANT PART -->
<template-output file="{default_output_file}"> <template-output file="{target_story_file}">
developer_context_section</template-output> **DEV AGENT GUARDRAILS:** <template-output file="{default_output_file}"> developer_context_section</template-output> **DEV AGENT GUARDRAILS:** <template-output file="{target_story_file}">
technical_requirements</template-output> technical_requirements</template-output>
<template-output file="{default_output_file}">architecture_compliance</template-output> <template-output file="{target_story_file}">architecture_compliance</template-output>
<template-output <template-output
file="{default_output_file}">library_framework_requirements</template-output> file="{target_story_file}">library_framework_requirements</template-output>
<template-output file="{default_output_file}"> <template-output file="{target_story_file}">
file_structure_requirements</template-output> file_structure_requirements</template-output>
<template-output file="{default_output_file}">testing_requirements</template-output> <template-output file="{target_story_file}">testing_requirements</template-output>
<!-- Previous story intelligence --> <!-- Previous story intelligence -->
<check <check
if="previous story learnings available"> if="previous story learnings available">
<template-output file="{default_output_file}">previous_story_intelligence</template-output> <template-output file="{target_story_file}">previous_story_intelligence</template-output>
</check> </check>
<!-- Git intelligence --> <!-- Git intelligence -->
<check <check
if="git analysis completed"> if="git analysis completed">
<template-output file="{default_output_file}">git_intelligence_summary</template-output> <template-output file="{target_story_file}">git_intelligence_summary</template-output>
</check> </check>
<!-- Latest technical specifics --> <!-- Latest technical specifics -->
<check if="web research completed"> <check if="web research completed">
<template-output file="{default_output_file}">latest_tech_information</template-output> <template-output file="{target_story_file}">latest_tech_information</template-output>
</check> </check>
<!-- Project context reference --> <!-- Project context reference -->
<template-output <template-output
file="{default_output_file}">project_context_reference</template-output> file="{target_story_file}">project_context_reference</template-output>
<!-- Final status update --> <!-- Final status update -->
<template-output file="{default_output_file}"> <template-output file="{target_story_file}">
story_completion_status</template-output> story_completion_status</template-output>
<!-- CRITICAL: Set status to ready-for-dev --> <!-- CRITICAL: Set status to ready-for-dev -->

View File

@ -13,8 +13,22 @@
<critical>User skill level ({user_skill_level}) affects conversation style ONLY, not code updates.</critical> <critical>User skill level ({user_skill_level}) affects conversation style ONLY, not code updates.</critical>
<step n="1" goal="Find next ready story and load it" tag="sprint-status"> <step n="1" goal="Find next ready story and load it" tag="sprint-status">
<check if="_bmad/.current_project exists"> <check if="{project-root}/_bmad/.current_project exists">
<action>Read content as project_suffix</action> <action>Read content as project_suffix</action>
<!-- Sanitization and Validation -->
<action>Trim whitespace and newlines from project_suffix</action>
<check if="project_suffix contains '..' or starts with '/' or starts with '\'">
<output>🚫 Security Error: Invalid project context path detected.</output>
<action>HALT</action>
</check>
<check if="project_suffix matches regex '[^a-zA-Z0-9._-]|^\s*$'">
<output>🚫 Error: Project context must only contain alphanumeric characters, dots, dashes, or underscores.</output>
<action>HALT</action>
</check>
<check if="project_suffix.length > 100">
<output>🚫 Error: Project context name is too long (max 100 characters).</output>
<action>HALT</action>
</check>
<action>Override output_folder to {project-root}/_bmad-output/{project_suffix}</action> <action>Override output_folder to {project-root}/_bmad-output/{project_suffix}</action>
</check> </check>

View File

@ -8,9 +8,12 @@
Load and read full config from {main_config} and resolve basic variables. Load and read full config from {main_config} and resolve basic variables.
**Monorepo Context Check:** **Monorepo Context Check:**
1. Check if `_bmad/.current_project exists`. 1. Check if `{project-root}/_bmad/.current_project` exists.
2. If it exists, read its content as `{project_suffix}` and override output folder: 2. If it exists, read its content as `{project_suffix}` and override output folder:
- `output_folder`: `{project-root}/_bmad-output/{project_suffix}` - `output_folder`: `{project-root}/_bmad-output/{project_suffix}`
3. Re-derive dependent path variables to reflect the new `output_folder`:
- `implementation_artifacts`: `{output_folder}/implementation`
- `planning_artifacts`: `{output_folder}/planning`
<critical>Communicate all responses in {communication_language} and language MUST be tailored to {user_skill_level}</critical> <critical>Communicate all responses in {communication_language} and language MUST be tailored to {user_skill_level}</critical>
<critical>Generate all documents in {document_output_language}</critical> <critical>Generate all documents in {document_output_language}</critical>

View File

@ -9,7 +9,7 @@
Load and read full config from {main_config} and resolve basic variables. Load and read full config from {main_config} and resolve basic variables.
**Monorepo Context Check:** **Monorepo Context Check:**
1. Check if `_bmad/.current_project exists`. 1. Check if `{project-root}/_bmad/.current_project` exists.
2. If it exists, read its content as `{project_suffix}` and override output folder: 2. If it exists, read its content as `{project_suffix}` and override output folder:
- `output_folder`: `{project-root}/_bmad-output/{project_suffix}` - `output_folder`: `{project-root}/_bmad-output/{project_suffix}`

View File

@ -7,7 +7,7 @@
Load and read full config from {main_config} and resolve basic variables. Load and read full config from {main_config} and resolve basic variables.
**Monorepo Context Check:** **Monorepo Context Check:**
1. Check if `_bmad/.current_project exists`. 1. Check if `{project-root}/_bmad/.current_project` exists.
2. If it exists, read its content as `{project_suffix}` and override output folder: 2. If it exists, read its content as `{project_suffix}` and override output folder:
- `output_folder`: `{project-root}/_bmad-output/{project_suffix}` - `output_folder`: `{project-root}/_bmad-output/{project_suffix}`
<critical>You MUST have already loaded and processed: {project-root}/_bmad/bmm/workflows/4-implementation/sprint-status/workflow.yaml</critical> <critical>You MUST have already loaded and processed: {project-root}/_bmad/bmm/workflows/4-implementation/sprint-status/workflow.yaml</critical>

View File

@ -28,7 +28,7 @@ This uses **step-file architecture** for focused execution:
Load and read full config from {main_config} and resolve basic variables. Load and read full config from {main_config} and resolve basic variables.
**Monorepo Context Check:** **Monorepo Context Check:**
1. Check if `_bmad/.current_project exists`. 1. Check if `{project-root}/_bmad/.current_project` exists.
2. If it exists, read its content as `{project_suffix}` and override output folder: 2. If it exists, read its content as `{project_suffix}` and override output folder:
- `output_folder`: `{project-root}/_bmad-output/{project_suffix}` - `output_folder`: `{project-root}/_bmad-output/{project_suffix}`

View File

@ -69,7 +69,7 @@ This uses **step-file architecture** for disciplined execution:
Load and read full config from {main_config} and resolve basic variables. Load and read full config from {main_config} and resolve basic variables.
**Monorepo Context Check:** **Monorepo Context Check:**
1. Check if `_bmad/.current_project exists`. 1. Check if `{project-root}/_bmad/.current_project` exists.
2. If it exists, read its content as `{project_suffix}` and override output folder: 2. If it exists, read its content as `{project_suffix}` and override output folder:
- `output_folder`: `{project-root}/_bmad-output/{project_suffix}` - `output_folder`: `{project-root}/_bmad-output/{project_suffix}`

View File

@ -84,7 +84,7 @@
Load and read full config from {main_config} and resolve basic variables. Load and read full config from {main_config} and resolve basic variables.
**Monorepo Context Check:** **Monorepo Context Check:**
1. Check if `_bmad/.current_project exists`. 1. Check if `{project-root}/_bmad/.current_project` exists.
2. If it exists, read its content as `{project_suffix}` and override output folder: 2. If it exists, read its content as `{project_suffix}` and override output folder:
- `output_folder`: `{project-root}/_bmad-output/{project_suffix}` - `output_folder`: `{project-root}/_bmad-output/{project_suffix}`

View File

@ -11,6 +11,23 @@
<action>Load existing project structure from index.md and project-parts.json (if exists)</action> <action>Load existing project structure from index.md and project-parts.json (if exists)</action>
<action>Load source tree analysis to understand available areas</action> <action>Load source tree analysis to understand available areas</action>
<check if="{project-root}/_bmad/.current_project exists">
<action>Read content as project_suffix</action>
<!-- Sanitization and Validation -->
<action>Trim whitespace and newlines from project_suffix</action>
<check if="project_suffix contains '..' or starts with '/' or starts with '\'">
<output>🚫 Security Error: Invalid project context path detected.</output>
<action>HALT</action>
</check>
<check if="project_suffix matches regex '[^a-zA-Z0-9._-]|^\s*$'">
<output>🚫 Error: Project context must only contain alphanumeric characters, dots, dashes, or underscores.</output>
<action>HALT</action>
</check>
<action>Override output_folder to {project-root}/_bmad-output/{project_suffix}</action>
<action>Override project_knowledge to {project-root}/_bmad-output/{project_suffix}</action>
<action>Output "Monorepo context detected. Writing deep-dive artifacts to: {project_knowledge}"</action>
</check>
<step n="13a" goal="Identify area for deep-dive"> <step n="13a" goal="Identify area for deep-dive">
<action>Analyze existing documentation to suggest deep-dive options</action> <action>Analyze existing documentation to suggest deep-dive options</action>
@ -254,10 +271,7 @@ Detailed exhaustive analysis of specific areas:
Load and read full config from {main_config} and resolve basic variables. Load and read full config from {main_config} and resolve basic variables.
**Monorepo Context Check:**
1. Check if `_bmad/.current_project exists`.
2. If it exists, read its content as `{project_suffix}` and override output folder:
- `output_folder`: `{project-root}/_bmad-output/{project_suffix}`
- Related code and reuse opportunities - Related code and reuse opportunities
- Implementation guidance - Implementation guidance

View File

@ -100,7 +100,7 @@ Your choice [1/2/3]:
Load and read full config from {main_config} and resolve basic variables. Load and read full config from {main_config} and resolve basic variables.
**Monorepo Context Check:** **Monorepo Context Check:**
1. Check if `_bmad/.current_project exists`. 1. Check if `{project-root}/_bmad/.current_project` exists.
2. If it exists, read its content as `{project_suffix}` and override output folder: 2. If it exists, read its content as `{project_suffix}` and override output folder:
- `output_folder`: `{project-root}/_bmad-output/{project_suffix}` - `output_folder`: `{project-root}/_bmad-output/{project_suffix}`
json, etc.) json, etc.)

View File

@ -30,7 +30,7 @@ This uses **micro-file architecture** for disciplined execution:
Load and read full config from {main_config} and resolve basic variables. Load and read full config from {main_config} and resolve basic variables.
**Monorepo Context Check:** **Monorepo Context Check:**
1. Check if `_bmad/.current_project exists`. 1. Check if `{project-root}/_bmad/.current_project` exists.
2. If it exists, read its content as `{project_suffix}` and override output folder: 2. If it exists, read its content as `{project_suffix}` and override output folder:
- `output_folder`: `{project-root}/_bmad-output/{project_suffix}` - `output_folder`: `{project-root}/_bmad-output/{project_suffix}`

View File

@ -23,7 +23,7 @@ Check project for existing test framework:
Load and read full config from {main_config} and resolve basic variables. Load and read full config from {main_config} and resolve basic variables.
**Monorepo Context Check:** **Monorepo Context Check:**
1. Check if `_bmad/.current_project exists`. 1. Check if `{project-root}/_bmad/.current_project` exists.
2. If it exists, read its content as `{project_suffix}` and override output folder: 2. If it exists, read its content as `{project_suffix}` and override output folder:
- `output_folder`: `{project-root}/_bmad-output/{project_suffix}` - `output_folder`: `{project-root}/_bmad-output/{project_suffix}`

View File

@ -9,6 +9,7 @@ description: Get unstuck by showing what workflow steps come next or answering q
- **Empty `phase` = anytime** — Universal tools work regardless of workflow state - **Empty `phase` = anytime** — Universal tools work regardless of workflow state
- **Numbered phases indicate sequence** — Phases like `1-discover``2-define``3-build``4-ship` flow in order (naming varies by module) - **Numbered phases indicate sequence** — Phases like `1-discover``2-define``3-build``4-ship` flow in order (naming varies by module)
- **Phase with no Required Steps** - If an entire phase has no required, true items, the entire phase is optional. If it is sequentially before another phase, it can be recommended, but always be clear with the use what the true next required item is.
- **Stay in module** — Guide through the active module's workflow based on phase+sequence ordering - **Stay in module** — Guide through the active module's workflow based on phase+sequence ordering
- **Descriptions contain routing** — Read for alternate paths (e.g., "back to previous if fixes needed") - **Descriptions contain routing** — Read for alternate paths (e.g., "back to previous if fixes needed")
- **`required=true` blocks progress** — Required workflows must complete before proceeding to later phases - **`required=true` blocks progress** — Required workflows must complete before proceeding to later phases
@ -52,7 +53,7 @@ Determine what was just completed:
## EXECUTION ## EXECUTION
1. **Load catalog** — Load `{project-root}/_bmad/_config/bmad-help.csv` 1. **Load catalog** — Load `_bmad/_config/bmad-help.csv`
2. **Resolve output locations and config** — Scan each folder under `_bmad/` (except `_config`) for `config.yaml`. For each workflow row, resolve its `output-location` variables against that module's config so artifact paths can be searched. Also extract `communication_language` and `project_knowledge` from each scanned module's config. 2. **Resolve output locations and config** — Scan each folder under `_bmad/` (except `_config`) for `config.yaml`. For each workflow row, resolve its `output-location` variables against that module's config so artifact paths can be searched. Also extract `communication_language` and `project_knowledge` from each scanned module's config.

View File

@ -20,8 +20,18 @@
<flow> <flow>
<step n="1" title="Method Registry Loading"> <step n="1" title="Method Registry Loading">
<check if="_bmad/.current_project exists"> <check if="{project-root}/_bmad/.current_project exists">
<action>Read content as project_suffix</action> <action>Read content as project_suffix</action>
<!-- Sanitization and Validation -->
<action>Trim whitespace and newlines from project_suffix</action>
<check if="project_suffix contains '..' or starts with '/' or starts with '\'">
<output>🚫 Security Error: Invalid project context path detected.</output>
<action>HALT</action>
</check>
<check if="project_suffix matches regex '[^a-zA-Z0-9._-]|^\s*$'">
<output>🚫 Error: Project context must only contain alphanumeric characters, dots, dashes, or underscores.</output>
<action>HALT</action>
</check>
<action>Override output_folder to {project-root}/_bmad-output/{project_suffix}</action> <action>Override output_folder to {project-root}/_bmad-output/{project_suffix}</action>
</check> </check>

View File

@ -37,7 +37,7 @@ This uses **micro-file architecture** for disciplined execution:
Load and read full config from {main_config} and resolve basic variables. Load and read full config from {main_config} and resolve basic variables.
**Monorepo Context Check:** **Monorepo Context Check:**
1. Check if `_bmad/.current_project` exists. 1. Check if `{project-root}/_bmad/.current_project` exists.
2. If it exists, read its content as `{project_suffix}` and override output folder: 2. If it exists, read its content as `{project_suffix}` and override output folder:
- `output_folder`: `{project-root}/_bmad-output/{project_suffix}` - `output_folder`: `{project-root}/_bmad-output/{project_suffix}`

View File

@ -30,7 +30,7 @@ This uses **micro-file architecture** with **sequential conversation orchestrati
Load and read full config from {main_config} and resolve basic variables. Load and read full config from {main_config} and resolve basic variables.
**Monorepo Context Check:** **Monorepo Context Check:**
1. Check if `_bmad/.current_project` exists. 1. Check if `{project-root}/_bmad/.current_project` exists.
2. If it exists, read its content as `{project_suffix}` and override output folder: 2. If it exists, read its content as `{project_suffix}` and override output folder:
- `output_folder`: `{project-root}/_bmad-output/{project_suffix}` - `output_folder`: `{project-root}/_bmad-output/{project_suffix}`