Compare commits

..

42 Commits

Author SHA1 Message Date
Alex Verkhovsky 63972eaa6c fix: apply skill validator fixes to bmad-edit-prd
- Remove name/description from step file frontmatter (STEP-06)
- Remove intra-skill path variables, inline references (PATH-04, WF-03)
- Fix broken steps-v path in step-e-03 to use {project-root} var (PATH-01)
- Add missing partyModeWorkflow definition to step-e-02 (REF-01)
- Fix bare filename reference in step-e-04 to use ./ prefix (PATH-01)
- Remove redundant parenthetical path hints from step references

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-14 17:22:16 -06:00
Alex Verkhovsky 6c83482513
Merge pull request #1997 from bmad-code-org/fix/quickflow-skill-validation-cleanup
fix(skill): validation cleanup for quick-flow skills
2026-03-14 17:07:45 -06:00
Alex Verkhovsky 5c24754627
Merge branch 'main' into fix/quickflow-skill-validation-cleanup 2026-03-14 17:06:28 -06:00
Alex Verkhovsky fe86785dbf
Merge pull request #1996 from bmad-code-org/fix/routine-skill-validation-cleanup
fix(skill): batch validation cleanup for 6 skills
2026-03-14 17:06:06 -06:00
Alex Verkhovsky 0efe81faec
Merge branch 'main' into fix/routine-skill-validation-cleanup 2026-03-14 17:05:27 -06:00
Alex Verkhovsky b1209a97da fix(skill): validation cleanup for quick-flow skills
bmad-quick-dev-new-preview: fix wrong step-to-step path references
from within steps/ directory, remove step frontmatter metadata and
intra-skill path variables.

bmad-quick-dev: remove step frontmatter metadata, inline nextStepFile
path variables as literal relative paths.

bmad-quick-spec: remove name/description from workflow.md frontmatter,
fix absolute self-references using {project-root} for intra-skill
paths, remove step frontmatter metadata.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-14 17:02:08 -06:00
Alex Verkhovsky 73e5552aad fix(skill): batch validation cleanup for 6 skills
Remove installed_path definitions, unused intra-skill path variables,
and inline variable references across: bmad-sprint-status,
bmad-document-project, bmad-generate-project-context,
bmad-qa-generate-e2e-tests, bmad-advanced-elicitation, and
bmad-brainstorming.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-14 17:02:04 -06:00
Alex Verkhovsky f7cd62acba
Merge pull request #1995 from bmad-code-org/fix/sprint-planning-skill-cleanup
fix(skill): clean up bmad-sprint-planning validation findings
2026-03-14 16:51:10 -06:00
Alex Verkhovsky 9976f06e46
Merge branch 'main' into fix/sprint-planning-skill-cleanup 2026-03-14 16:45:14 -06:00
Alex Verkhovsky 1338e4852d
Merge pull request #1993 from bmad-code-org/fix/retrospective-skill-cleanup
fix(skill): clean up bmad-retrospective validation findings
2026-03-14 16:44:45 -06:00
Alex Verkhovsky 6c259bbbc5
Merge pull request #1992 from bmad-code-org/fix/dev-story-skill-cleanup
fix(skill): clean up bmad-dev-story validation findings
2026-03-14 16:44:25 -06:00
Alex Verkhovsky f15b2d129f fix(skill): clean up bmad-sprint-planning validation findings
Remove installed_path and unused intra-skill path variables from
workflow.md (PATH-02, PATH-04).

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-14 16:43:19 -06:00
Alex Verkhovsky f04a1ba8d8
Merge branch 'main' into fix/dev-story-skill-cleanup 2026-03-14 16:41:20 -06:00
Alex Verkhovsky b9b135573d
Merge pull request #1991 from bmad-code-org/fix/create-story-skill-cleanup
fix(skill): clean up bmad-create-story validation findings
2026-03-14 16:39:51 -06:00
Alex Verkhovsky 709b4e8fc9 fix(skill): clean up bmad-retrospective validation findings
Remove unused installed_path from workflow.md (PATH-02).

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-14 16:39:33 -06:00
Alex Verkhovsky 930b5fd7ea
Merge branch 'main' into fix/dev-story-skill-cleanup 2026-03-14 16:37:46 -06:00
Alex Verkhovsky 6721904adb fix(skill): clean up bmad-dev-story validation findings
Remove unused intra-skill path variable from workflow.md (PATH-04).

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-14 16:36:35 -06:00
Alex Verkhovsky 74391d712b
Merge branch 'main' into fix/create-story-skill-cleanup 2026-03-14 16:35:22 -06:00
Alex Verkhovsky 93a808a3d6 fix(skill): clean up bmad-create-story validation findings
Remove installed_path and intra-skill path variables from
workflow.md (PATH-02, PATH-04).

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-14 16:33:40 -06:00
Alex Verkhovsky 54d097c8ca
Merge pull request #1990 from bmad-code-org/fix/code-review-skill-cleanup
fix(skill): clean up bmad-code-review validation findings
2026-03-14 16:33:08 -06:00
Alex Verkhovsky fb4d9169a6
Merge branch 'main' into fix/code-review-skill-cleanup 2026-03-14 16:32:08 -06:00
Alex Verkhovsky 71630bc4e9
Merge pull request #1989 from bmad-code-org/fix/create-epics-stories-skill-cleanup
fix(skill): clean up bmad-create-epics-and-stories validation findings
2026-03-14 16:31:37 -06:00
Alex Verkhovsky 211c7e38c3
Merge branch 'main' into fix/create-epics-stories-skill-cleanup 2026-03-14 16:30:15 -06:00
Alex Verkhovsky e0a56489f7
Merge pull request #1987 from bmad-code-org/fix/create-architecture-skill-cleanup
fix(skill): clean up bmad-create-architecture validation findings
2026-03-14 16:29:47 -06:00
Alex Verkhovsky 2d78e1d942
Merge branch 'main' into fix/create-epics-stories-skill-cleanup 2026-03-14 16:29:42 -06:00
Alex Verkhovsky 7e6c26cd04
Merge branch 'main' into fix/create-architecture-skill-cleanup 2026-03-14 16:28:57 -06:00
Alex Verkhovsky b3d0810042
Merge pull request #1981 from bmad-code-org/feat/skill-validator
feat(tools): add inference-based skill validator
2026-03-14 16:28:07 -06:00
Alex Verkhovsky df5c32e0dd fix(skill): clean up bmad-code-review validation findings
Remove installed_path definition and intra-skill path variables
from workflow.md (PATH-02, PATH-04).

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-14 16:27:27 -06:00
Alex Verkhovsky d343fbe55f
Merge branch 'main' into feat/skill-validator 2026-03-14 16:27:24 -06:00
Alex Verkhovsky b0d4bf7e28
Merge pull request #1986 from bmad-code-org/fix/check-impl-readiness-skill-cleanup
fix(skill): clean up bmad-check-implementation-readiness validation findings
2026-03-14 16:26:41 -06:00
Alex Verkhovsky 9471c832d5
Merge branch 'main' into fix/check-impl-readiness-skill-cleanup 2026-03-14 16:26:02 -06:00
Alex Verkhovsky 2c23522d87 fix(skill): clean up bmad-create-epics-and-stories validation findings
Remove name/description from step frontmatter (STEP-06) and add
missing HALT before user menu in step-04-final-validation (STEP-04).

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-14 16:24:30 -06:00
Alex Verkhovsky 089c19d7ab fix(skill): clean up bmad-create-architecture validation findings
Remove installed_path and intra-skill path variables (PATH-02, PATH-04),
prefix bare docs/** with {project-root} (PATH-03), fix misspelled
{product_knowledge} -> {project_knowledge} (REF-01).

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-14 16:20:33 -06:00
Alex Verkhovsky b9926e1c4a fix(skill): clean up bmad-check-implementation-readiness validation findings
Remove name/description from step frontmatter (STEP-06) and inline
nextStepFile/templateFile path variables as literal relative paths
(PATH-04).

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-14 16:16:34 -06:00
Alex Verkhovsky 304ef02427
Merge pull request #1985 from bmad-code-org/convert-edit-prd-skill
Convert bmad-edit-prd from type:workflow to native skill
2026-03-14 16:08:03 -06:00
Alex Verkhovsky 122ef9b43c
Merge pull request #1983 from bmad-code-org/fix/create-ux-design-skill-cleanup
fix(skill): clean up bmad-create-ux-design validation findings
2026-03-14 16:06:30 -06:00
Alex Verkhovsky 2b2b9201a7
Merge branch 'main' into fix/create-ux-design-skill-cleanup 2026-03-14 16:06:20 -06:00
Alex Verkhovsky f3d6ee2cb8 fix(skill): clean up bmad-create-ux-design validation findings
Remove installed_path and intra-skill template_path variable (PATH-02,
PATH-04), prefix bare docs/** with {project-root} (PATH-03), inline
undefined variable references (REF-01), fix wrong config variable in
output path (REF-02).

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-14 16:04:03 -06:00
Alex Verkhovsky 9d17cee2a8
Merge pull request #1982 from bmad-code-org/fix/product-brief-skill-cleanup
fix(skill): clean up bmad-create-product-brief validation findings
2026-03-14 16:03:19 -06:00
Alex Verkhovsky f4084ea199 feat(tools): add SKILL-05 name-matches-dir and REF-01 variable-defined rules
SKILL-05 checks that SKILL.md name matches the directory name.
REF-01 checks that every {variable} traces to frontmatter, config,
or runtime — exempts {{double-curly}} template placeholders.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-14 15:49:10 -06:00
Alex Verkhovsky b93d0087db fix(skill): clean up bmad-create-product-brief validation findings
Remove name/description from step frontmatter (STEP-06), inline
intra-skill path variables (PATH-04), prefix bare external path
with {project-root} (PATH-03), and normalize template placeholders
to double-curly convention (REF-01).

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-14 15:49:07 -06:00
Alex Verkhovsky 6ff29d4707 feat(tools): add inference-based skill validator
LLM-readable validation prompt covering 19 rules across 6 categories:
SKILL.md frontmatter, workflow.md hygiene, path resolution, step file
structure, sequential execution, and file reference integrity. Designed
to catch anti-patterns from mechanical workflow-to-skill conversions
(installed_path abuse, intra-skill path variables, metadata in wrong
frontmatter).

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-14 15:18:55 -06:00
64 changed files with 381 additions and 273 deletions

View File

@ -1,8 +1,8 @@
--- ---
stepsCompleted: [] stepsCompleted: []
inputDocuments: [] inputDocuments: []
date: { system-date } date: {{system-date}}
author: { user } author: {{user_name}}
--- ---
# Product Brief: {{project_name}} # Product Brief: {{project_name}}

View File

@ -1,13 +1,6 @@
--- ---
name: 'step-01-init'
description: 'Initialize the product brief workflow by detecting continuation state and setting up the document'
# File References # File References
nextStepFile: './step-02-vision.md'
outputFile: '{planning_artifacts}/product-brief-{{project_name}}-{{date}}.md' outputFile: '{planning_artifacts}/product-brief-{{project_name}}-{{date}}.md'
# Template References
productBriefTemplate: '../product-brief.template.md'
--- ---
# Step 1: Product Brief Initialization # Step 1: Product Brief Initialization
@ -88,7 +81,7 @@ load context documents using smart discovery. Documents can be in the following
- {planning_artifacts}/** - {planning_artifacts}/**
- {output_folder}/** - {output_folder}/**
- {product_knowledge}/** - {product_knowledge}/**
- docs/** - {project-root}/docs/**
Also - when searching - documents can be a single markdown file, or a folder with an index and multiple files. For Example, if searching for `*foo*.md` and not found, also search for a folder called *foo*/index.md (which indicates sharded content) Also - when searching - documents can be a single markdown file, or a folder with an index and multiple files. For Example, if searching for `*foo*.md` and not found, also search for a folder called *foo*/index.md (which indicates sharded content)
@ -112,7 +105,7 @@ Try to discover the following:
**Document Setup:** **Document Setup:**
- Copy the template from `{productBriefTemplate}` to `{outputFile}`, and update the frontmatter fields - Copy the template from `../product-brief.template.md` to `{outputFile}`, and update the frontmatter fields
#### C. Present Initialization Results #### C. Present Initialization Results
@ -141,7 +134,7 @@ Display: "**Proceeding to product vision discovery...**"
#### Menu Handling Logic: #### Menu Handling Logic:
- After setup report is presented, without delay, read fully and follow: {nextStepFile} - After setup report is presented, without delay, read fully and follow: ./step-02-vision.md
#### EXECUTION RULES: #### EXECUTION RULES:
@ -150,7 +143,7 @@ Display: "**Proceeding to product vision discovery...**"
## CRITICAL STEP COMPLETION NOTE ## CRITICAL STEP COMPLETION NOTE
ONLY WHEN [setup completion is achieved and frontmatter properly updated], will you then read fully and follow: `{nextStepFile}` to begin product vision discovery. ONLY WHEN [setup completion is achieved and frontmatter properly updated], will you then read fully and follow: `./step-02-vision.md` to begin product vision discovery.
--- ---

View File

@ -1,7 +1,4 @@
--- ---
name: 'step-01b-continue'
description: 'Resume the product brief workflow from where it was left off, ensuring smooth continuation'
# File References # File References
outputFile: '{planning_artifacts}/product-brief-{{project_name}}-{{date}}.md' outputFile: '{planning_artifacts}/product-brief-{{project_name}}-{{date}}.md'
--- ---

View File

@ -1,9 +1,5 @@
--- ---
name: 'step-02-vision'
description: 'Discover and define the core product vision, problem statement, and unique value proposition'
# File References # File References
nextStepFile: './step-03-users.md'
outputFile: '{planning_artifacts}/product-brief-{{project_name}}-{{date}}.md' outputFile: '{planning_artifacts}/product-brief-{{project_name}}-{{date}}.md'
# Task References # Task References
@ -159,7 +155,7 @@ Prepare the following structure for document append:
- IF A: Read fully and follow: {advancedElicitationTask} with current vision content to dive deeper and refine - IF A: Read fully and follow: {advancedElicitationTask} with current vision content to dive deeper and refine
- IF P: Read fully and follow: {partyModeWorkflow} to bring different perspectives to positioning and differentiation - IF P: Read fully and follow: {partyModeWorkflow} to bring different perspectives to positioning and differentiation
- IF C: Save content to {outputFile}, update frontmatter with stepsCompleted: [1, 2], then read fully and follow: {nextStepFile} - IF C: Save content to {outputFile}, update frontmatter with stepsCompleted: [1, 2], then read fully and follow: ./step-03-users.md
- IF Any other comments or queries: help user respond then [Redisplay Menu Options](#7-present-menu-options) - IF Any other comments or queries: help user respond then [Redisplay Menu Options](#7-present-menu-options)
#### EXECUTION RULES: #### EXECUTION RULES:
@ -171,7 +167,7 @@ Prepare the following structure for document append:
## CRITICAL STEP COMPLETION NOTE ## CRITICAL STEP COMPLETION NOTE
ONLY WHEN [C continue option] is selected and [vision content finalized and saved to document with frontmatter updated], will you then read fully and follow: `{nextStepFile}` to begin target user discovery. ONLY WHEN [C continue option] is selected and [vision content finalized and saved to document with frontmatter updated], will you then read fully and follow: `./step-03-users.md` to begin target user discovery.
--- ---

View File

@ -1,9 +1,5 @@
--- ---
name: 'step-03-users'
description: 'Define target users with rich personas and map their key interactions with the product'
# File References # File References
nextStepFile: './step-04-metrics.md'
outputFile: '{planning_artifacts}/product-brief-{{project_name}}-{{date}}.md' outputFile: '{planning_artifacts}/product-brief-{{project_name}}-{{date}}.md'
# Task References # Task References
@ -162,7 +158,7 @@ Prepare the following structure for document append:
- IF A: Read fully and follow: {advancedElicitationTask} with current user content to dive deeper into personas and journeys - IF A: Read fully and follow: {advancedElicitationTask} with current user content to dive deeper into personas and journeys
- IF P: Read fully and follow: {partyModeWorkflow} to bring different perspectives to validate user understanding - IF P: Read fully and follow: {partyModeWorkflow} to bring different perspectives to validate user understanding
- IF C: Save content to {outputFile}, update frontmatter with stepsCompleted: [1, 2, 3], then read fully and follow: {nextStepFile} - IF C: Save content to {outputFile}, update frontmatter with stepsCompleted: [1, 2, 3], then read fully and follow: ./step-04-metrics.md
- IF Any other comments or queries: help user respond then [Redisplay Menu Options](#6-present-menu-options) - IF Any other comments or queries: help user respond then [Redisplay Menu Options](#6-present-menu-options)
#### EXECUTION RULES: #### EXECUTION RULES:
@ -174,7 +170,7 @@ Prepare the following structure for document append:
## CRITICAL STEP COMPLETION NOTE ## CRITICAL STEP COMPLETION NOTE
ONLY WHEN [C continue option] is selected and [user personas finalized and saved to document with frontmatter updated], will you then read fully and follow: `{nextStepFile}` to begin success metrics definition. ONLY WHEN [C continue option] is selected and [user personas finalized and saved to document with frontmatter updated], will you then read fully and follow: `./step-04-metrics.md` to begin success metrics definition.
--- ---

View File

@ -1,9 +1,5 @@
--- ---
name: 'step-04-metrics'
description: 'Define comprehensive success metrics that include user success, business objectives, and key performance indicators'
# File References # File References
nextStepFile: './step-05-scope.md'
outputFile: '{planning_artifacts}/product-brief-{{project_name}}-{{date}}.md' outputFile: '{planning_artifacts}/product-brief-{{project_name}}-{{date}}.md'
# Task References # Task References
@ -165,7 +161,7 @@ Prepare the following structure for document append:
- IF A: Read fully and follow: {advancedElicitationTask} with current metrics content to dive deeper into success metric insights - IF A: Read fully and follow: {advancedElicitationTask} with current metrics content to dive deeper into success metric insights
- IF P: Read fully and follow: {partyModeWorkflow} to bring different perspectives to validate comprehensive metrics - IF P: Read fully and follow: {partyModeWorkflow} to bring different perspectives to validate comprehensive metrics
- IF C: Save content to {outputFile}, update frontmatter with stepsCompleted: [1, 2, 3, 4], then read fully and follow: {nextStepFile} - IF C: Save content to {outputFile}, update frontmatter with stepsCompleted: [1, 2, 3, 4], then read fully and follow: ./step-05-scope.md
- IF Any other comments or queries: help user respond then [Redisplay Menu Options](#7-present-menu-options) - IF Any other comments or queries: help user respond then [Redisplay Menu Options](#7-present-menu-options)
#### EXECUTION RULES: #### EXECUTION RULES:
@ -177,7 +173,7 @@ Prepare the following structure for document append:
## CRITICAL STEP COMPLETION NOTE ## CRITICAL STEP COMPLETION NOTE
ONLY WHEN [C continue option] is selected and [success metrics finalized and saved to document with frontmatter updated], will you then read fully and follow: `{nextStepFile}` to begin MVP scope definition. ONLY WHEN [C continue option] is selected and [success metrics finalized and saved to document with frontmatter updated], will you then read fully and follow: `./step-05-scope.md` to begin MVP scope definition.
--- ---

View File

@ -1,9 +1,5 @@
--- ---
name: 'step-05-scope'
description: 'Define MVP scope with clear boundaries and outline future vision while managing scope creep'
# File References # File References
nextStepFile: './step-06-complete.md'
outputFile: '{planning_artifacts}/product-brief-{{project_name}}-{{date}}.md' outputFile: '{planning_artifacts}/product-brief-{{project_name}}-{{date}}.md'
# Task References # Task References
@ -179,7 +175,7 @@ Prepare the following structure for document append:
- IF A: Read fully and follow: {advancedElicitationTask} with current scope content to optimize scope definition - IF A: Read fully and follow: {advancedElicitationTask} with current scope content to optimize scope definition
- IF P: Read fully and follow: {partyModeWorkflow} to bring different perspectives to validate MVP scope - IF P: Read fully and follow: {partyModeWorkflow} to bring different perspectives to validate MVP scope
- IF C: Save content to {outputFile}, update frontmatter with stepsCompleted: [1, 2, 3, 4, 5], then read fully and follow: {nextStepFile} - IF C: Save content to {outputFile}, update frontmatter with stepsCompleted: [1, 2, 3, 4, 5], then read fully and follow: ./step-06-complete.md
- IF Any other comments or queries: help user respond then [Redisplay Menu Options](#7-present-menu-options) - IF Any other comments or queries: help user respond then [Redisplay Menu Options](#7-present-menu-options)
#### EXECUTION RULES: #### EXECUTION RULES:
@ -191,7 +187,7 @@ Prepare the following structure for document append:
## CRITICAL STEP COMPLETION NOTE ## CRITICAL STEP COMPLETION NOTE
ONLY WHEN [C continue option] is selected and [MVP scope finalized and saved to document with frontmatter updated], will you then read fully and follow: `{nextStepFile}` to complete the product brief workflow. ONLY WHEN [C continue option] is selected and [MVP scope finalized and saved to document with frontmatter updated], will you then read fully and follow: `./step-06-complete.md` to complete the product brief workflow.
--- ---

View File

@ -1,7 +1,4 @@
--- ---
name: 'step-06-complete'
description: 'Complete the product brief workflow, update status files, and suggest next steps for the project'
# File References # File References
outputFile: '{planning_artifacts}/product-brief-{{project_name}}-{{date}}.md' outputFile: '{planning_artifacts}/product-brief-{{project_name}}-{{date}}.md'
--- ---

View File

@ -58,7 +58,7 @@ Discover and load context documents using smart discovery. Documents can be in t
- {planning_artifacts}/** - {planning_artifacts}/**
- {output_folder}/** - {output_folder}/**
- {product_knowledge}/** - {product_knowledge}/**
- docs/** - {project-root}/docs/**
Also - when searching - documents can be a single markdown file, or a folder with an index and multiple files. For Example, if searching for `*foo*.md` and not found, also search for a folder called *foo*/index.md (which indicates sharded content) Also - when searching - documents can be a single markdown file, or a folder with an index and multiple files. For Example, if searching for `*foo*.md` and not found, also search for a folder called *foo*/index.md (which indicates sharded content)
@ -80,7 +80,7 @@ Try to discover the following:
#### B. Create Initial Document #### B. Create Initial Document
Copy the template from `{installed_path}/ux-design-template.md` to `{planning_artifacts}/ux-design-specification.md` Copy the template from `../ux-design-template.md` to `{planning_artifacts}/ux-design-specification.md`
Initialize frontmatter in the template. Initialize frontmatter in the template.
#### C. Complete Initialization and Report #### C. Complete Initialization and Report

View File

@ -108,7 +108,7 @@ After presenting current progress, ask:
If `lastStep` indicates the final step is completed: If `lastStep` indicates the final step is completed:
"Great news! It looks like we've already completed the UX design workflow for {{project_name}}. "Great news! It looks like we've already completed the UX design workflow for {{project_name}}.
The final UX design specification is ready at {output_folder}/ux-design-specification.md with all sections completed through step {finalStepNumber}. The final UX design specification is ready at {planning_artifacts}/ux-design-specification.md with all sections completed through step {finalStepNumber}.
The complete UX design includes visual foundations, user flows, and design specifications ready for implementation. The complete UX design includes visual foundations, user flows, and design specifications ready for implementation.

View File

@ -75,8 +75,8 @@ This specification is now ready to guide visual design, implementation, and deve
Update the main workflow status file: Update the main workflow status file:
- Load `{status_file}` from workflow configuration (if exists) - Load the project's workflow status file (if one exists)
- Update workflow_status["create-ux-design"] = "{default_output_file}" - Update workflow_status["create-ux-design"] = `{planning_artifacts}/ux-design-specification.md`
- Save file, preserving all comments and structure - Save file, preserving all comments and structure
- Mark current timestamp as completion time - Mark current timestamp as completion time

View File

@ -27,8 +27,6 @@ Load config from `{project-root}/_bmad/bmm/config.yaml` and resolve:
### Paths ### Paths
- `installed_path` = `.`
- `template_path` = `{installed_path}/ux-design-template.md`
- `default_output_file` = `{planning_artifacts}/ux-design-specification.md` - `default_output_file` = `{planning_artifacts}/ux-design-specification.md`
## EXECUTION ## EXECUTION

View File

@ -1,9 +1,4 @@
--- ---
name: 'step-e-01-discovery'
description: 'Discovery & Understanding - Understand what user wants to edit and detect PRD format'
# File references (ONLY variables used in this step)
altStepFile: './step-e-01b-legacy-conversion.md'
prdPurpose: '{project-root}/_bmad/bmm/workflows/2-plan-workflows/create-prd/data/prd-purpose.md' prdPurpose: '{project-root}/_bmad/bmm/workflows/2-plan-workflows/create-prd/data/prd-purpose.md'
advancedElicitationTask: 'skill:bmad-advanced-elicitation' advancedElicitationTask: 'skill:bmad-advanced-elicitation'
partyModeWorkflow: '{project-root}/_bmad/core/workflows/bmad-party-mode/workflow.md' partyModeWorkflow: '{project-root}/_bmad/core/workflows/bmad-party-mode/workflow.md'
@ -190,7 +185,7 @@ Display: "**Edit Requirements Understood**
**Proceeding to deep review and analysis...**" **Proceeding to deep review and analysis...**"
Read fully and follow: next step (step-e-02-review.md) Read fully and follow: ./step-e-02-review.md
**IF PRD is Legacy (Non-Standard) AND no validation report:** **IF PRD is Legacy (Non-Standard) AND no validation report:**
@ -217,7 +212,7 @@ Present MENU OPTIONS below for user selection
#### Menu Handling Logic: #### Menu Handling Logic:
- IF C (Convert): Read fully and follow: {altStepFile} (step-e-01b-legacy-conversion.md) - IF C (Convert): Read fully and follow: ./step-e-01b-legacy-conversion.md
- IF E (Edit As-Is): Display "Proceeding with edits..." then load next step - IF E (Edit As-Is): Display "Proceeding with edits..." then load next step
- IF X (Exit): Display summary and exit - IF X (Exit): Display summary and exit
- IF Any other: help user, then redisplay menu - IF Any other: help user, then redisplay menu

View File

@ -1,9 +1,4 @@
--- ---
name: 'step-e-01b-legacy-conversion'
description: 'Legacy PRD Conversion Assessment - Analyze legacy PRD and propose conversion strategy'
# File references (ONLY variables used in this step)
nextStepFile: './step-e-02-review.md'
prdFile: '{prd_file_path}' prdFile: '{prd_file_path}'
prdPurpose: '{project-root}/_bmad/bmm/workflows/2-plan-workflows/create-prd/data/prd-purpose.md' prdPurpose: '{project-root}/_bmad/bmm/workflows/2-plan-workflows/create-prd/data/prd-purpose.md'
--- ---
@ -182,7 +177,7 @@ Edit goals: {summary}
**Proceeding to deep review...**" **Proceeding to deep review...**"
Read fully and follow: {nextStepFile} (step-e-02-review.md) Read fully and follow: ./step-e-02-review.md
--- ---

View File

@ -1,13 +1,9 @@
--- ---
name: 'step-e-02-review'
description: 'Deep Review & Analysis - Thoroughly review existing PRD and prepare detailed change plan'
# File references (ONLY variables used in this step)
nextStepFile: './step-e-03-edit.md'
prdFile: '{prd_file_path}' prdFile: '{prd_file_path}'
validationReport: '{validation_report_path}' # If provided validationReport: '{validation_report_path}' # If provided
prdPurpose: '{project-root}/_bmad/bmm/workflows/2-plan-workflows/create-prd/data/prd-purpose.md' prdPurpose: '{project-root}/_bmad/bmm/workflows/2-plan-workflows/create-prd/data/prd-purpose.md'
advancedElicitationTask: 'skill:bmad-advanced-elicitation' advancedElicitationTask: 'skill:bmad-advanced-elicitation'
partyModeWorkflow: '{project-root}/_bmad/core/workflows/bmad-party-mode/workflow.md'
--- ---
# Step E-2: Deep Review & Analysis # Step E-2: Deep Review & Analysis
@ -205,7 +201,7 @@ Display: "**Change Plan Approved**
**Proceeding to edit step...**" **Proceeding to edit step...**"
Read fully and follow: {nextStepFile} (step-e-03-edit.md) Read fully and follow: ./step-e-03-edit.md
### 7. Present MENU OPTIONS (If User Wants Discussion) ### 7. Present MENU OPTIONS (If User Wants Discussion)
@ -222,7 +218,7 @@ Read fully and follow: {nextStepFile} (step-e-03-edit.md)
- IF A: Read fully and follow: {advancedElicitationTask}, then return to discussion - IF A: Read fully and follow: {advancedElicitationTask}, then return to discussion
- IF P: Read fully and follow: {partyModeWorkflow}, then return to discussion - IF P: Read fully and follow: {partyModeWorkflow}, then return to discussion
- IF C: Document approval, then load {nextStepFile} - IF C: Document approval, then load ./step-e-03-edit.md
- IF Any other: discuss, then redisplay menu - IF Any other: discuss, then redisplay menu
--- ---

View File

@ -1,11 +1,7 @@
--- ---
name: 'step-e-03-edit'
description: 'Edit & Update - Apply changes to PRD following approved change plan'
# File references (ONLY variables used in this step)
nextStepFile: './step-e-04-complete.md'
prdFile: '{prd_file_path}' prdFile: '{prd_file_path}'
prdPurpose: '{project-root}/_bmad/bmm/workflows/2-plan-workflows/create-prd/data/prd-purpose.md' prdPurpose: '{project-root}/_bmad/bmm/workflows/2-plan-workflows/create-prd/data/prd-purpose.md'
validationWorkflow: '{project-root}/_bmad/bmm/workflows/2-plan-workflows/create-prd/steps-v/step-v-01-discovery.md'
--- ---
# Step E-3: Edit & Update # Step E-3: Edit & Update
@ -211,7 +207,7 @@ Display:
### 8. Present MENU OPTIONS ### 8. Present MENU OPTIONS
**[V] Run Validation** - Execute full validation workflow (steps-v/step-v-01-discovery.md) **[V] Run Validation** - Execute full validation workflow
**[S] Summary Only** - End with summary of changes (no validation) **[S] Summary Only** - End with summary of changes (no validation)
**[A] Adjust** - Make additional edits **[A] Adjust** - Make additional edits
**[X] Exit** - Exit edit workflow **[X] Exit** - Exit edit workflow
@ -223,7 +219,7 @@ Display:
#### Menu Handling Logic: #### Menu Handling Logic:
- IF V (Validate): Display "Starting validation workflow..." then read fully and follow: steps-v/step-v-01-discovery.md - IF V (Validate): Display "Starting validation workflow..." then read fully and follow: {validationWorkflow}
- IF S (Summary): Present edit summary and exit - IF S (Summary): Present edit summary and exit
- IF A (Adjust): Accept additional requirements, loop back to editing - IF A (Adjust): Accept additional requirements, loop back to editing
- IF X (Exit): Display summary and exit - IF X (Exit): Display summary and exit

View File

@ -1,8 +1,4 @@
--- ---
name: 'step-e-04-complete'
description: 'Complete & Validate - Present options for next steps including full validation'
# File references (ONLY variables used in this step)
prdFile: '{prd_file_path}' prdFile: '{prd_file_path}'
validationWorkflow: '{project-root}/_bmad/bmm/workflows/2-plan-workflows/create-prd/steps-v/step-v-01-discovery.md' validationWorkflow: '{project-root}/_bmad/bmm/workflows/2-plan-workflows/create-prd/steps-v/step-v-01-discovery.md'
--- ---
@ -120,14 +116,14 @@ Display:
- Display: "This will run all 13 validation checks on the updated PRD." - Display: "This will run all 13 validation checks on the updated PRD."
- Display: "Preparing to validate: {prd_file_path}" - Display: "Preparing to validate: {prd_file_path}"
- Display: "**Proceeding to validation...**" - Display: "**Proceeding to validation...**"
- Read fully and follow: {validationWorkflow} (steps-v/step-v-01-discovery.md) - Read fully and follow: {validationWorkflow}
- Note: This hands off to the validation workflow which will run its complete 13-step process - Note: This hands off to the validation workflow which will run its complete 13-step process
- **IF E (Edit More):** - **IF E (Edit More):**
- Display: "**Additional Edits**" - Display: "**Additional Edits**"
- Ask: "What additional edits would you like to make?" - Ask: "What additional edits would you like to make?"
- Accept input, then display: "**Returning to edit step...**" - Accept input, then display: "**Returning to edit step...**"
- Read fully and follow: step-e-03-edit.md again - Read fully and follow: ./step-e-03-edit.md again
- **IF S (Summary):** - **IF S (Summary):**
- Display detailed summary including: - Display detailed summary including:

View File

@ -1,6 +1,5 @@
--- ---
main_config: '{project-root}/_bmad/bmm/config.yaml' main_config: '{project-root}/_bmad/bmm/config.yaml'
editWorkflow: './steps-e/step-e-01-discovery.md'
--- ---
# PRD Edit Workflow # PRD Edit Workflow
@ -61,4 +60,4 @@ Load and read full config from {main_config} and resolve:
Prompt for PRD path: "Which PRD would you like to edit? Please provide the path to the PRD.md file." Prompt for PRD path: "Which PRD would you like to edit? Please provide the path to the PRD.md file."
Then read fully and follow: `{editWorkflow}` (steps-e/step-e-01-discovery.md) Then read fully and follow: `./steps-e/step-e-01-discovery.md`

View File

@ -1,10 +1,5 @@
--- ---
name: 'step-01-document-discovery'
description: 'Discover and inventory all project documents, handling duplicates and organizing file structure'
nextStepFile: './step-02-prd-analysis.md'
outputFile: '{planning_artifacts}/implementation-readiness-report-{{date}}.md' outputFile: '{planning_artifacts}/implementation-readiness-report-{{date}}.md'
templateFile: '../templates/readiness-report-template.md'
--- ---
# Step 1: Document Discovery # Step 1: Document Discovery
@ -122,7 +117,7 @@ If required documents not found:
### 5. Add Initial Report Section ### 5. Add Initial Report Section
Initialize {outputFile} with {templateFile}. Initialize {outputFile} with ../templates/readiness-report-template.md.
### 6. Present Findings and Get Confirmation ### 6. Present Findings and Get Confirmation
@ -156,12 +151,12 @@ Display: **Select an Option:** [C] Continue to File Validation
#### Menu Handling Logic: #### Menu Handling Logic:
- IF C: Save document inventory to {outputFile}, update frontmatter with completed step and files being included, and then read fully and follow: {nextStepFile} - IF C: Save document inventory to {outputFile}, update frontmatter with completed step and files being included, and then read fully and follow: ./step-02-prd-analysis.md
- IF Any other comments or queries: help user respond then redisplay menu - IF Any other comments or queries: help user respond then redisplay menu
## CRITICAL STEP COMPLETION NOTE ## CRITICAL STEP COMPLETION NOTE
ONLY WHEN C is selected and document inventory is saved will you load {nextStepFile} to begin file validation. ONLY WHEN C is selected and document inventory is saved will you load ./step-02-prd-analysis.md to begin file validation.
--- ---

View File

@ -1,8 +1,4 @@
--- ---
name: 'step-02-prd-analysis'
description: 'Read and analyze PRD to extract all FRs and NFRs for coverage validation'
nextStepFile: './step-03-epic-coverage-validation.md'
outputFile: '{planning_artifacts}/implementation-readiness-report-{{date}}.md' outputFile: '{planning_artifacts}/implementation-readiness-report-{{date}}.md'
epicsFile: '{planning_artifacts}/*epic*.md' # Will be resolved to actual file epicsFile: '{planning_artifacts}/*epic*.md' # Will be resolved to actual file
--- ---
@ -149,7 +145,7 @@ After PRD analysis complete, immediately load next step for epic coverage valida
## PROCEEDING TO EPIC COVERAGE VALIDATION ## PROCEEDING TO EPIC COVERAGE VALIDATION
PRD analysis complete. Loading next step to validate epic coverage. PRD analysis complete. Read fully and follow: `./step-03-epic-coverage-validation.md`
--- ---

View File

@ -1,8 +1,4 @@
--- ---
name: 'step-03-epic-coverage-validation'
description: 'Validate that all PRD FRs are covered in epics and stories'
nextStepFile: './step-04-ux-alignment.md'
outputFile: '{planning_artifacts}/implementation-readiness-report-{{date}}.md' outputFile: '{planning_artifacts}/implementation-readiness-report-{{date}}.md'
--- ---
@ -150,7 +146,7 @@ After coverage validation complete, immediately load next step.
## PROCEEDING TO UX ALIGNMENT ## PROCEEDING TO UX ALIGNMENT
Epic coverage validation complete. Loading next step for UX alignment. Epic coverage validation complete. Read fully and follow: `./step-04-ux-alignment.md`
--- ---

View File

@ -1,8 +1,4 @@
--- ---
name: 'step-04-ux-alignment'
description: 'Check for UX document and validate alignment with PRD and Architecture'
nextStepFile: './step-05-epic-quality-review.md'
outputFile: '{planning_artifacts}/implementation-readiness-report-{{date}}.md' outputFile: '{planning_artifacts}/implementation-readiness-report-{{date}}.md'
--- ---
@ -113,7 +109,7 @@ After UX assessment complete, immediately load next step.
## PROCEEDING TO EPIC QUALITY REVIEW ## PROCEEDING TO EPIC QUALITY REVIEW
UX alignment assessment complete. Loading next step for epic quality review. UX alignment assessment complete. Read fully and follow: `./step-05-epic-quality-review.md`
--- ---

View File

@ -1,8 +1,4 @@
--- ---
name: 'step-05-epic-quality-review'
description: 'Validate epics and stories against create-epics-and-stories best practices'
nextStepFile: './step-06-final-assessment.md'
outputFile: '{planning_artifacts}/implementation-readiness-report-{{date}}.md' outputFile: '{planning_artifacts}/implementation-readiness-report-{{date}}.md'
--- ---
@ -217,11 +213,11 @@ After completing epic quality review:
- Update {outputFile} with all quality findings - Update {outputFile} with all quality findings
- Document specific best practices violations - Document specific best practices violations
- Provide actionable recommendations - Provide actionable recommendations
- Load {nextStepFile} for final readiness assessment - Load ./step-06-final-assessment.md for final readiness assessment
## CRITICAL STEP COMPLETION NOTE ## CRITICAL STEP COMPLETION NOTE
This step executes autonomously. Load {nextStepFile} only after complete epic quality review is documented. This step executes autonomously. Load ./step-06-final-assessment.md only after complete epic quality review is documented.
--- ---

View File

@ -1,7 +1,4 @@
--- ---
name: 'step-06-final-assessment'
description: 'Compile final assessment and polish the readiness report'
outputFile: '{planning_artifacts}/implementation-readiness-report-{{date}}.md' outputFile: '{planning_artifacts}/implementation-readiness-report-{{date}}.md'
--- ---

View File

@ -57,8 +57,8 @@ If no document exists or no `stepsCompleted` in frontmatter:
Discover and load context documents using smart discovery. Documents can be in the following locations: Discover and load context documents using smart discovery. Documents can be in the following locations:
- {planning_artifacts}/** - {planning_artifacts}/**
- {output_folder}/** - {output_folder}/**
- {product_knowledge}/** - {project_knowledge}/**
- docs/** - {project-root}/docs/**
Also - when searching - documents can be a single markdown file, or a folder with an index and multiple files. For Example, if searching for `*foo*.md` and not found, also search for a folder called *foo*/index.md (which indicates sharded content) Also - when searching - documents can be a single markdown file, or a folder with an index and multiple files. For Example, if searching for `*foo*.md` and not found, also search for a folder called *foo*/index.md (which indicates sharded content)
@ -67,7 +67,7 @@ Try to discover the following:
- Product Requirements Document (`*prd*.md`) - Product Requirements Document (`*prd*.md`)
- UX Design (`*ux-design*.md`) and other - UX Design (`*ux-design*.md`) and other
- Research Documents (`*research*.md`) - Research Documents (`*research*.md`)
- Project Documentation (generally multiple documents might be found for this in the `{product_knowledge}` or `docs` folder.) - Project Documentation (generally multiple documents might be found for this in the `{project_knowledge}` or `{project-root}/docs` folder.)
- Project Context (`**/project-context.md`) - Project Context (`**/project-context.md`)
<critical>Confirm what you have found with the user, along with asking if the user wants to provide anything else. Only after this confirmation will you proceed to follow the loading rules</critical> <critical>Confirm what you have found with the user, along with asking if the user wants to provide anything else. Only after this confirmation will you proceed to follow the loading rules</critical>
@ -95,7 +95,7 @@ Before proceeding, verify we have the essential inputs:
#### C. Create Initial Document #### C. Create Initial Document
Copy the template from `{installed_path}/architecture-decision-template.md` to `{planning_artifacts}/architecture.md` Copy the template from `../architecture-decision-template.md` to `{planning_artifacts}/architecture.md`
#### D. Complete Initialization and Report #### D. Complete Initialization and Report

View File

@ -29,12 +29,6 @@ Load config from `{project-root}/_bmad/bmm/config.yaml` and resolve:
- `date` as system-generated current datetime - `date` as system-generated current datetime
- ✅ YOU MUST ALWAYS SPEAK OUTPUT In your Agent communication style with the config `{communication_language}` - ✅ YOU MUST ALWAYS SPEAK OUTPUT In your Agent communication style with the config `{communication_language}`
### Paths
- `installed_path` = `.`
- `template_path` = `{installed_path}/architecture-decision-template.md`
- `data_files_path` = `{installed_path}/data/`
--- ---
## EXECUTION ## EXECUTION

View File

@ -1,8 +1,3 @@
---
name: 'step-01-validate-prerequisites'
description: 'Validate required documents exist and extract all requirements for epic and story creation'
---
# Step 1: Validate Prerequisites and Extract Requirements # Step 1: Validate Prerequisites and Extract Requirements
## STEP GOAL: ## STEP GOAL:

View File

@ -1,8 +1,3 @@
---
name: 'step-02-design-epics'
description: 'Design and approve the epics_list that will organize all requirements into user-value-focused epics'
---
# Step 2: Design Epic List # Step 2: Design Epic List
## STEP GOAL: ## STEP GOAL:

View File

@ -1,8 +1,3 @@
---
name: 'step-03-create-stories'
description: 'Generate all epics with their stories following the template structure'
---
# Step 3: Generate Epics and Stories # Step 3: Generate Epics and Stories
## STEP GOAL: ## STEP GOAL:

View File

@ -1,8 +1,3 @@
---
name: 'step-04-final-validation'
description: 'Validate complete coverage of all requirements and ensure implementation readiness'
---
# Step 4: Final Validation # Step 4: Final Validation
## STEP GOAL: ## STEP GOAL:
@ -127,6 +122,8 @@ If all validations pass:
**Present Final Menu:** **Present Final Menu:**
**All validations complete!** [C] Complete Workflow **All validations complete!** [C] Complete Workflow
HALT — wait for user input before proceeding.
When C is selected, the workflow is complete and the epics.md is ready for development. When C is selected, the workflow is complete and the epics.md is ready for development.
Epics and Stories complete. Invoke the `bmad-help` skill. Epics and Stories complete. Invoke the `bmad-help` skill.

View File

@ -30,9 +30,7 @@ Load config from `{project-root}/_bmad/bmm/config.yaml` and resolve:
### Paths ### Paths
- `installed_path` = `.`
- `sprint_status` = `{implementation_artifacts}/sprint-status.yaml` - `sprint_status` = `{implementation_artifacts}/sprint-status.yaml`
- `validation` = `{installed_path}/checklist.md`
### Input Files ### Input Files
@ -76,7 +74,7 @@ Load config from `{project-root}/_bmad/bmm/config.yaml` and resolve:
- Missing documentation of what was actually changed - Missing documentation of what was actually changed
</action> </action>
<action>Read fully and follow `{installed_path}/discover-inputs.md` to load all input files</action> <action>Read fully and follow `./discover-inputs.md` to load all input files</action>
<action>Load {project_context} for coding standards (if exists)</action> <action>Load {project_context} for coding standards (if exists)</action>
</step> </step>

View File

@ -27,9 +27,6 @@ Load config from `{project-root}/_bmad/bmm/config.yaml` and resolve:
### Paths ### Paths
- `installed_path` = `.`
- `template` = `./template.md`
- `validation` = `./checklist.md`
- `sprint_status` = `{implementation_artifacts}/sprint-status.yaml` - `sprint_status` = `{implementation_artifacts}/sprint-status.yaml`
- `epics_file` = `{planning_artifacts}/epics.md` - `epics_file` = `{planning_artifacts}/epics.md`
- `prd_file` = `{planning_artifacts}/prd.md` - `prd_file` = `{planning_artifacts}/prd.md`

View File

@ -27,7 +27,6 @@ Load config from `{project-root}/_bmad/bmm/config.yaml` and resolve:
### Paths ### Paths
- `validation` = `./checklist.md`
- `story_file` = `` (explicit story path; auto-discovered if empty) - `story_file` = `` (explicit story path; auto-discovered if empty)
- `sprint_status` = `{implementation_artifacts}/sprint-status.yaml` - `sprint_status` = `{implementation_artifacts}/sprint-status.yaml`

View File

@ -37,7 +37,6 @@ Load config from `{project-root}/_bmad/bmm/config.yaml` and resolve:
### Paths ### Paths
- `installed_path` = `.`
- `sprint_status_file` = `{implementation_artifacts}/sprint-status.yaml` - `sprint_status_file` = `{implementation_artifacts}/sprint-status.yaml`
### Input Files ### Input Files

View File

@ -21,9 +21,6 @@ Load config from `{project-root}/_bmad/bmm/config.yaml` and resolve:
### Paths ### Paths
- `installed_path` = `.`
- `template` = `{installed_path}/sprint-status-template.yaml`
- `checklist` = `{installed_path}/checklist.md`
- `tracking_system` = `file-system` - `tracking_system` = `file-system`
- `project_key` = `NOKEY` - `project_key` = `NOKEY`
- `story_location` = `{implementation_artifacts}` - `story_location` = `{implementation_artifacts}`

View File

@ -20,7 +20,6 @@ Load config from `{project-root}/_bmad/bmm/config.yaml` and resolve:
### Paths ### Paths
- `installed_path` = `.`
- `sprint_status_file` = `{implementation_artifacts}/sprint-status.yaml` - `sprint_status_file` = `{implementation_artifacts}/sprint-status.yaml`
### Input Files ### Input Files

View File

@ -40,18 +40,18 @@
<action>Load cached project_type_id(s) from state file</action> <action>Load cached project_type_id(s) from state file</action>
<critical>CONDITIONAL CSV LOADING FOR RESUME:</critical> <critical>CONDITIONAL CSV LOADING FOR RESUME:</critical>
<action>For each cached project_type_id, load ONLY the corresponding row from: {documentation_requirements_csv}</action> <action>For each cached project_type_id, load ONLY the corresponding row from: ./documentation-requirements.csv</action>
<action>Skip loading project-types.csv and architecture_registry.csv (not needed on resume)</action> <action>Skip loading project-types.csv and architecture_registry.csv (not needed on resume)</action>
<action>Store loaded doc requirements for use in remaining steps</action> <action>Store loaded doc requirements for use in remaining steps</action>
<action>Display: "Resuming {{workflow_mode}} from {{current_step}} with cached project type(s): {{cached_project_types}}"</action> <action>Display: "Resuming {{workflow_mode}} from {{current_step}} with cached project type(s): {{cached_project_types}}"</action>
<check if="workflow_mode == deep_dive"> <check if="workflow_mode == deep_dive">
<action>Read fully and follow: {installed_path}/workflows/deep-dive-workflow.md with resume context</action> <action>Read fully and follow: ./workflows/deep-dive-workflow.md with resume context</action>
</check> </check>
<check if="workflow_mode == initial_scan OR workflow_mode == full_rescan"> <check if="workflow_mode == initial_scan OR workflow_mode == full_rescan">
<action>Read fully and follow: {installed_path}/workflows/full-scan-workflow.md with resume context</action> <action>Read fully and follow: ./workflows/full-scan-workflow.md with resume context</action>
</check> </check>
</check> </check>
@ -98,7 +98,7 @@ Your choice [1/2/3]:
<check if="user selects 1"> <check if="user selects 1">
<action>Set workflow_mode = "full_rescan"</action> <action>Set workflow_mode = "full_rescan"</action>
<action>Display: "Starting full project rescan..."</action> <action>Display: "Starting full project rescan..."</action>
<action>Read fully and follow: {installed_path}/workflows/full-scan-workflow.md</action> <action>Read fully and follow: ./workflows/full-scan-workflow.md</action>
<action>After sub-workflow completes, continue to Step 4</action> <action>After sub-workflow completes, continue to Step 4</action>
</check> </check>
@ -106,7 +106,7 @@ Your choice [1/2/3]:
<action>Set workflow_mode = "deep_dive"</action> <action>Set workflow_mode = "deep_dive"</action>
<action>Set scan_level = "exhaustive"</action> <action>Set scan_level = "exhaustive"</action>
<action>Display: "Starting deep-dive documentation mode..."</action> <action>Display: "Starting deep-dive documentation mode..."</action>
<action>Read fully and follow: {installed_path}/workflows/deep-dive-workflow.md</action> <action>Read fully and follow: ./workflows/deep-dive-workflow.md</action>
<action>After sub-workflow completes, continue to Step 4</action> <action>After sub-workflow completes, continue to Step 4</action>
</check> </check>
@ -119,7 +119,7 @@ Your choice [1/2/3]:
<check if="index.md does not exist"> <check if="index.md does not exist">
<action>Set workflow_mode = "initial_scan"</action> <action>Set workflow_mode = "initial_scan"</action>
<action>Display: "No existing documentation found. Starting initial project scan..."</action> <action>Display: "No existing documentation found. Starting initial project scan..."</action>
<action>Read fully and follow: {installed_path}/workflows/full-scan-workflow.md</action> <action>Read fully and follow: ./workflows/full-scan-workflow.md</action>
<action>After sub-workflow completes, continue to Step 4</action> <action>After sub-workflow completes, continue to Step 4</action>
</check> </check>

View File

@ -20,15 +20,8 @@ Load config from `{project-root}/_bmad/bmm/config.yaml` and resolve:
- `user_skill_level` - `user_skill_level`
- `date` as system-generated current datetime - `date` as system-generated current datetime
### Paths
- `installed_path` = `.`
- `instructions` = `{installed_path}/instructions.md`
- `validation` = `{installed_path}/checklist.md`
- `documentation_requirements_csv` = `{installed_path}/documentation-requirements.csv`
--- ---
## EXECUTION ## EXECUTION
Read fully and follow: `{installed_path}/instructions.md` Read fully and follow: `./instructions.md`

View File

@ -193,7 +193,7 @@ This will read EVERY file in this area. Proceed? [y/n]
- Combine recommended test commands into {{suggested_tests}} - Combine recommended test commands into {{suggested_tests}}
</action> </action>
<action>Load complete deep-dive template from: {installed_path}/templates/deep-dive-template.md</action> <action>Load complete deep-dive template from: ../templates/deep-dive-template.md</action>
<action>Fill template with all collected data from steps 13b-13d</action> <action>Fill template with all collected data from steps 13b-13d</action>
<action>Write filled template to: {project_knowledge}/deep-dive-{{sanitized_target_name}}.md</action> <action>Write filled template to: {project_knowledge}/deep-dive-{{sanitized_target_name}}.md</action>
<action>Validate deep-dive document completeness</action> <action>Validate deep-dive document completeness</action>

View File

@ -21,13 +21,6 @@ Load config from `{project-root}/_bmad/bmm/config.yaml` and resolve:
✅ YOU MUST ALWAYS SPEAK OUTPUT In your Agent communication style with the configured `{communication_language}`. ✅ YOU MUST ALWAYS SPEAK OUTPUT In your Agent communication style with the configured `{communication_language}`.
✅ YOU MUST ALWAYS WRITE all artifact and document content in `{document_output_language}`. ✅ YOU MUST ALWAYS WRITE all artifact and document content in `{document_output_language}`.
### Paths
- `installed_path` = `.`
- `instructions` = `{installed_path}/deep-dive-instructions.md`
- `validation` = `../checklist.md`
- `deep_dive_template` = `../templates/deep-dive-template.md`
### Runtime Inputs ### Runtime Inputs
- `workflow_mode` = `deep_dive` - `workflow_mode` = `deep_dive`
@ -38,4 +31,4 @@ Load config from `{project-root}/_bmad/bmm/config.yaml` and resolve:
## EXECUTION ## EXECUTION
Read fully and follow: `{installed_path}/deep-dive-instructions.md` Read fully and follow: `./deep-dive-instructions.md`

View File

@ -16,7 +16,7 @@
This workflow uses a single comprehensive CSV file to intelligently document your project: This workflow uses a single comprehensive CSV file to intelligently document your project:
**documentation-requirements.csv** ({documentation_requirements_csv}) **documentation-requirements.csv** (../documentation-requirements.csv)
- Contains 12 project types (web, mobile, backend, cli, library, desktop, game, data, extension, infra, embedded) - Contains 12 project types (web, mobile, backend, cli, library, desktop, game, data, extension, infra, embedded)
- 24-column schema combining project type detection AND documentation requirements - 24-column schema combining project type detection AND documentation requirements
@ -36,7 +36,7 @@ This workflow uses a single comprehensive CSV file to intelligently document you
<action>Now loading documentation requirements data for fresh start...</action> <action>Now loading documentation requirements data for fresh start...</action>
<action>Load documentation-requirements.csv from: {documentation_requirements_csv}</action> <action>Load documentation-requirements.csv from: ../documentation-requirements.csv</action>
<action>Store all 12 rows indexed by project_type_id for project detection and requirements lookup</action> <action>Store all 12 rows indexed by project_type_id for project detection and requirements lookup</action>
<action>Display: "Loaded documentation requirements for 12 project types (web, mobile, backend, cli, library, desktop, game, data, extension, infra, embedded)"</action> <action>Display: "Loaded documentation requirements for 12 project types (web, mobile, backend, cli, library, desktop, game, data, extension, infra, embedded)"</action>
@ -810,7 +810,7 @@ Generated in {{project_knowledge}}/:
{{file_list_with_sizes}} {{file_list_with_sizes}}
</action> </action>
<action>Run validation checklist from {validation}</action> <action>Run validation checklist from ../checklist.md</action>
<critical>INCOMPLETE DOCUMENTATION DETECTION: <critical>INCOMPLETE DOCUMENTATION DETECTION:

View File

@ -20,13 +20,6 @@ Load config from `{project-root}/_bmad/bmm/config.yaml` and resolve:
✅ YOU MUST ALWAYS SPEAK OUTPUT In your Agent communication style with the configured `{communication_language}`. ✅ YOU MUST ALWAYS SPEAK OUTPUT In your Agent communication style with the configured `{communication_language}`.
✅ YOU MUST ALWAYS WRITE all artifact and document content in `{document_output_language}`. ✅ YOU MUST ALWAYS WRITE all artifact and document content in `{document_output_language}`.
### Paths
- `installed_path` = `.`
- `instructions` = `{installed_path}/full-scan-instructions.md`
- `validation` = `../checklist.md`
- `documentation_requirements_csv` = `../documentation-requirements.csv`
### Runtime Inputs ### Runtime Inputs
- `workflow_mode` = `""` (set by parent: `initial_scan` or `full_rescan`) - `workflow_mode` = `""` (set by parent: `initial_scan` or `full_rescan`)
@ -38,4 +31,4 @@ Load config from `{project-root}/_bmad/bmm/config.yaml` and resolve:
## EXECUTION ## EXECUTION
Read fully and follow: `{installed_path}/full-scan-instructions.md` Read fully and follow: `./full-scan-instructions.md`

View File

@ -32,8 +32,6 @@ Load config from `{project-root}/_bmad/bmm/config.yaml` and resolve:
### Paths ### Paths
- `installed_path` = `.`
- `template_path` = `./project-context-template.md`
- `output_file` = `{output_folder}/project-context.md` - `output_file` = `{output_folder}/project-context.md`
--- ---

View File

@ -20,8 +20,6 @@ Load config from `{project-root}/_bmad/bmm/config.yaml` and resolve:
### Paths ### Paths
- `installed_path` = `.`
- `checklist` = `./checklist.md`
- `test_dir` = `{project-root}/tests` - `test_dir` = `{project-root}/tests`
- `source_dir` = `{project-root}` - `source_dir` = `{project-root}`
- `default_output_file` = `{implementation_artifacts}/tests/test-summary.md` - `default_output_file` = `{implementation_artifacts}/tests/test-summary.md`
@ -135,4 +133,4 @@ If the project needs:
Save summary to: `{default_output_file}` Save summary to: `{default_output_file}`
**Done!** Tests generated and verified. Validate against `{checklist}`. **Done!** Tests generated and verified. Validate against `./checklist.md`.

View File

@ -1,7 +1,4 @@
--- ---
name: 'step-01-clarify-and-route'
description: 'Capture intent, route to execution path'
wipFile: '{implementation_artifacts}/tech-spec-wip.md' wipFile: '{implementation_artifacts}/tech-spec-wip.md'
deferred_work_file: '{implementation_artifacts}/deferred-work.md' deferred_work_file: '{implementation_artifacts}/deferred-work.md'
spec_file: '' # set at runtime before leaving this step spec_file: '' # set at runtime before leaving this step
@ -50,5 +47,5 @@ spec_file: '' # set at runtime before leaving this step
## NEXT ## NEXT
- One-shot / ready-for-dev: Read fully and follow `./steps/step-03-implement.md` - One-shot / ready-for-dev: Read fully and follow `./step-03-implement.md`
- Plan-code-review: Read fully and follow `./steps/step-02-plan.md` - Plan-code-review: Read fully and follow `./step-02-plan.md`

View File

@ -1,8 +1,4 @@
--- ---
name: 'step-02-plan'
description: 'Investigate, generate spec, present for approval'
templateFile: '../tech-spec-template.md'
wipFile: '{implementation_artifacts}/tech-spec-wip.md' wipFile: '{implementation_artifacts}/tech-spec-wip.md'
deferred_work_file: '{implementation_artifacts}/deferred-work.md' deferred_work_file: '{implementation_artifacts}/deferred-work.md'
--- ---
@ -17,7 +13,7 @@ deferred_work_file: '{implementation_artifacts}/deferred-work.md'
## INSTRUCTIONS ## INSTRUCTIONS
1. Investigate codebase. _Isolate deep exploration in sub-agents/tasks where available. To prevent context snowballing, instruct subagents to give you distilled summaries only._ 1. Investigate codebase. _Isolate deep exploration in sub-agents/tasks where available. To prevent context snowballing, instruct subagents to give you distilled summaries only._
2. Read `{templateFile}` fully. Fill it out based on the intent and investigation, and write the result to `{wipFile}`. 2. Read `../tech-spec-template.md` fully. Fill it out based on the intent and investigation, and write the result to `{wipFile}`.
3. Self-review against READY FOR DEVELOPMENT standard. 3. Self-review against READY FOR DEVELOPMENT standard.
4. If intent gaps exist, do not fantasize, do not leave open questions, HALT and ask the human. 4. If intent gaps exist, do not fantasize, do not leave open questions, HALT and ask the human.
5. Token count check (see SCOPE STANDARD). If spec exceeds 1600 tokens: 5. Token count check (see SCOPE STANDARD). If spec exceeds 1600 tokens:
@ -36,4 +32,4 @@ Present summary. If token count exceeded 1600 and user chose [K], include the to
## NEXT ## NEXT
Read fully and follow `./steps/step-03-implement.md` Read fully and follow `./step-03-implement.md`

View File

@ -1,6 +1,4 @@
--- ---
name: 'step-03-implement'
description: 'Execute implementation directly or via sub-agent. Local only.'
--- ---
# Step 3: Implement # Step 3: Implement
@ -32,4 +30,4 @@ Otherwise (`execution_mode = "plan-code-review"`): hand `{spec_file}` to a sub-a
## NEXT ## NEXT
Read fully and follow `./steps/step-04-review.md` Read fully and follow `./step-04-review.md`

View File

@ -1,7 +1,4 @@
--- ---
name: 'step-04-review'
description: 'Adversarial review, classify findings, optional spec loop'
deferred_work_file: '{implementation_artifacts}/deferred-work.md' deferred_work_file: '{implementation_artifacts}/deferred-work.md'
specLoopIteration: 1 specLoopIteration: 1
--- ---
@ -43,11 +40,11 @@ Do NOT `git add` anything — this is read-only inspection.
- **defer** — pre-existing issue not caused by this story, surfaced incidentally by the review. Collect for later focused attention. - **defer** — pre-existing issue not caused by this story, surfaced incidentally by the review. Collect for later focused attention.
- **reject** — noise. Drop silently. When unsure between defer and reject, prefer reject — only defer findings you are confident are real. - **reject** — noise. Drop silently. When unsure between defer and reject, prefer reject — only defer findings you are confident are real.
3. Process findings in cascading order. If intent_gap or bad_spec findings exist, they trigger a loopback — lower findings are moot since code will be re-derived. If neither exists, process patch and defer normally. Increment `{specLoopIteration}` on each loopback. If it exceeds 5, HALT and escalate to the human. On any loopback, re-evaluate routing — if scope has grown beyond one-shot, escalate `execution_mode` to plan-code-review. 3. Process findings in cascading order. If intent_gap or bad_spec findings exist, they trigger a loopback — lower findings are moot since code will be re-derived. If neither exists, process patch and defer normally. Increment `{specLoopIteration}` on each loopback. If it exceeds 5, HALT and escalate to the human. On any loopback, re-evaluate routing — if scope has grown beyond one-shot, escalate `execution_mode` to plan-code-review.
- **intent_gap** — Root cause is inside `<frozen-after-approval>`. Revert code changes. Loop back to the human to resolve. Once resolved, read fully and follow `./steps/step-02-plan.md` to re-run steps 24. - **intent_gap** — Root cause is inside `<frozen-after-approval>`. Revert code changes. Loop back to the human to resolve. Once resolved, read fully and follow `./step-02-plan.md` to re-run steps 24.
- **bad_spec** — Root cause is outside `<frozen-after-approval>`. Before reverting code: extract KEEP instructions for positive preservation (what worked well and must survive re-derivation). Revert code changes. Read the `## Spec Change Log` in `{spec_file}` and strictly respect all logged constraints when amending the non-frozen sections that contain the root cause. Append a new change-log entry recording: the triggering finding, what was amended, the known-bad state avoided, and the KEEP instructions. Read fully and follow `./steps/step-03-implement.md` to re-derive the code, then this step will run again. - **bad_spec** — Root cause is outside `<frozen-after-approval>`. Before reverting code: extract KEEP instructions for positive preservation (what worked well and must survive re-derivation). Revert code changes. Read the `## Spec Change Log` in `{spec_file}` and strictly respect all logged constraints when amending the non-frozen sections that contain the root cause. Append a new change-log entry recording: the triggering finding, what was amended, the known-bad state avoided, and the KEEP instructions. Read fully and follow `./step-03-implement.md` to re-derive the code, then this step will run again.
- **patch** — Auto-fix. These are the only findings that survive loopbacks. - **patch** — Auto-fix. These are the only findings that survive loopbacks.
- **defer** — Append to `{deferred_work_file}`. - **defer** — Append to `{deferred_work_file}`.
- **reject** — Drop silently. - **reject** — Drop silently.
## NEXT ## NEXT
Read fully and follow `./steps/step-05-present.md` Read fully and follow `./step-05-present.md`

View File

@ -1,6 +1,4 @@
--- ---
name: 'step-05-present'
description: 'Present findings, get approval, create PR'
--- ---
# Step 5: Present # Step 5: Present

View File

@ -72,7 +72,6 @@ YOU MUST ALWAYS SPEAK OUTPUT in your Agent communication style with the config `
### 2. Paths ### 2. Paths
- `templateFile` = `./tech-spec-template.md`
- `wipFile` = `{implementation_artifacts}/tech-spec-wip.md` - `wipFile` = `{implementation_artifacts}/tech-spec-wip.md`
### 3. First Step Execution ### 3. First Step Execution

View File

@ -1,9 +1,4 @@
--- ---
name: 'step-01-mode-detection'
description: 'Determine execution mode (tech-spec vs direct), handle escalation, set state variables'
nextStepFile_modeA: './step-03-execute.md'
nextStepFile_modeB: './step-02-context-gathering.md'
--- ---
# Step 1: Mode Detection # Step 1: Mode Detection
@ -50,7 +45,7 @@ Analyze the user's input to determine mode:
- Load the spec, extract tasks/context/AC - Load the spec, extract tasks/context/AC
- Set `{execution_mode}` = "tech-spec" - Set `{execution_mode}` = "tech-spec"
- Set `{tech_spec_path}` = provided path - Set `{tech_spec_path}` = provided path
- **NEXT:** Read fully and follow: `{nextStepFile_modeA}` - **NEXT:** Read fully and follow: `./step-03-execute.md`
**Mode B: Direct Instructions** **Mode B: Direct Instructions**
@ -91,7 +86,7 @@ Display: "**Select:** [P] Plan first (tech-spec) [E] Execute directly"
#### Menu Handling Logic: #### Menu Handling Logic:
- IF P: Direct user to `{quick_spec_workflow}`. **EXIT Quick Dev.** - IF P: Direct user to `{quick_spec_workflow}`. **EXIT Quick Dev.**
- IF E: Ask for any additional guidance, then **NEXT:** Read fully and follow: `{nextStepFile_modeB}` - IF E: Ask for any additional guidance, then **NEXT:** Read fully and follow: `./step-02-context-gathering.md`
#### EXECUTION RULES: #### EXECUTION RULES:
@ -114,7 +109,7 @@ Display:
- IF P: Direct to `{quick_spec_workflow}`. **EXIT Quick Dev.** - IF P: Direct to `{quick_spec_workflow}`. **EXIT Quick Dev.**
- IF W: Direct user to run the PRD workflow instead. **EXIT Quick Dev.** - IF W: Direct user to run the PRD workflow instead. **EXIT Quick Dev.**
- IF E: Ask for guidance, then **NEXT:** Read fully and follow: `{nextStepFile_modeB}` - IF E: Ask for guidance, then **NEXT:** Read fully and follow: `./step-02-context-gathering.md`
#### EXECUTION RULES: #### EXECUTION RULES:
@ -137,7 +132,7 @@ Display:
- IF P: Direct to `{quick_spec_workflow}`. **EXIT Quick Dev.** - IF P: Direct to `{quick_spec_workflow}`. **EXIT Quick Dev.**
- IF W: Direct user to run the PRD workflow instead. **EXIT Quick Dev.** - IF W: Direct user to run the PRD workflow instead. **EXIT Quick Dev.**
- IF E: Ask for guidance, then **NEXT:** Read fully and follow: `{nextStepFile_modeB}` - IF E: Ask for guidance, then **NEXT:** Read fully and follow: `./step-02-context-gathering.md`
#### EXECUTION RULES: #### EXECUTION RULES:
@ -150,8 +145,8 @@ Display:
**CRITICAL:** When this step completes, explicitly state which step to load: **CRITICAL:** When this step completes, explicitly state which step to load:
- Mode A (tech-spec): "**NEXT:** read fully and follow: `{nextStepFile_modeA}`" - Mode A (tech-spec): "**NEXT:** read fully and follow: `./step-03-execute.md`"
- Mode B (direct, [E] selected): "**NEXT:** Read fully and follow: `{nextStepFile_modeB}`" - Mode B (direct, [E] selected): "**NEXT:** Read fully and follow: `./step-02-context-gathering.md`"
- Escalation ([P] or [W]): "**EXITING Quick Dev.** Follow the directed workflow." - Escalation ([P] or [W]): "**EXITING Quick Dev.** Follow the directed workflow."
--- ---

View File

@ -1,8 +1,4 @@
--- ---
name: 'step-02-context-gathering'
description: 'Quick context gathering for direct mode - identify files, patterns, dependencies'
nextStepFile: './step-03-execute.md'
--- ---
# Step 2: Context Gathering (Direct Mode) # Step 2: Context Gathering (Direct Mode)
@ -97,7 +93,7 @@ Ready to execute? (y/n/adjust)
**CRITICAL:** When user confirms ready, explicitly state: **CRITICAL:** When user confirms ready, explicitly state:
- **y:** "**NEXT:** Read fully and follow: `{nextStepFile}`" - **y:** "**NEXT:** Read fully and follow: `./step-03-execute.md`"
- **n/adjust:** Continue gathering context, then re-present plan - **n/adjust:** Continue gathering context, then re-present plan
--- ---

View File

@ -1,8 +1,4 @@
--- ---
name: 'step-03-execute'
description: 'Execute implementation - iterate through tasks, write code, run tests'
nextStepFile: './step-04-self-check.md'
--- ---
# Step 3: Execute Implementation # Step 3: Execute Implementation
@ -89,7 +85,7 @@ For each task:
## NEXT STEP ## NEXT STEP
When ALL tasks are complete (or halted on blocker), read fully and follow: `{nextStepFile}`. When ALL tasks are complete (or halted on blocker), read fully and follow: `./step-04-self-check.md`.
--- ---

View File

@ -1,8 +1,4 @@
--- ---
name: 'step-04-self-check'
description: 'Self-audit implementation against tasks, tests, AC, and patterns'
nextStepFile: './step-05-adversarial-review.md'
--- ---
# Step 4: Self-Check # Step 4: Self-Check
@ -89,7 +85,7 @@ Proceeding to adversarial code review...
## NEXT STEP ## NEXT STEP
Proceed immediately to `{nextStepFile}`. Proceed immediately to `./step-05-adversarial-review.md`.
--- ---

View File

@ -1,8 +1,4 @@
--- ---
name: 'step-05-adversarial-review'
description: 'Construct diff and invoke adversarial review skill'
nextStepFile: './step-06-resolve-findings.md'
--- ---
# Step 5: Adversarial Code Review # Step 5: Adversarial Code Review
@ -77,7 +73,7 @@ If TodoWrite or similar tool is available, turn each finding into a TODO, includ
## NEXT STEP ## NEXT STEP
With findings in hand, read fully and follow: `{nextStepFile}` for user to choose resolution approach. With findings in hand, read fully and follow: `./step-06-resolve-findings.md` for user to choose resolution approach.
--- ---

View File

@ -1,6 +1,4 @@
--- ---
name: 'step-06-resolve-findings'
description: 'Handle review findings interactively, apply fixes, update tech-spec with final status'
--- ---
# Step 6: Resolve Findings # Step 6: Resolve Findings

View File

@ -1,8 +1,4 @@
--- ---
name: 'step-01-understand'
description: 'Analyze the requirement delta between current state and what user wants to build'
templateFile: '../tech-spec-template.md'
wipFile: '{implementation_artifacts}/tech-spec-wip.md' wipFile: '{implementation_artifacts}/tech-spec-wip.md'
--- ---
@ -125,7 +121,7 @@ b) **Ask the user to confirm the captured understanding before proceeding.**
a) **Create the tech-spec WIP file:** a) **Create the tech-spec WIP file:**
1. Copy template from `{templateFile}` 1. Copy template from `../tech-spec-template.md`
2. Write to `{wipFile}` 2. Write to `{wipFile}`
3. Update frontmatter with captured values: 3. Update frontmatter with captured values:
```yaml ```yaml

View File

@ -1,7 +1,4 @@
--- ---
name: 'step-02-investigate'
description: 'Map technical constraints and anchor points within the codebase'
wipFile: '{implementation_artifacts}/tech-spec-wip.md' wipFile: '{implementation_artifacts}/tech-spec-wip.md'
--- ---

View File

@ -1,7 +1,4 @@
--- ---
name: 'step-03-generate'
description: 'Build the implementation plan based on the technical mapping of constraints'
wipFile: '{implementation_artifacts}/tech-spec-wip.md' wipFile: '{implementation_artifacts}/tech-spec-wip.md'
--- ---

View File

@ -1,7 +1,4 @@
--- ---
name: 'step-04-review'
description: 'Review and finalize the tech-spec'
wipFile: '{implementation_artifacts}/tech-spec-wip.md' wipFile: '{implementation_artifacts}/tech-spec-wip.md'
--- ---

View File

@ -1,5 +1,4 @@
--- ---
methods: './methods.csv'
agent_party: '{project-root}/_bmad/_config/agent-manifest.csv' agent_party: '{project-root}/_bmad/_config/agent-manifest.csv'
--- ---
@ -35,7 +34,7 @@ When invoked from another prompt or process:
### Step 1: Method Registry Loading ### Step 1: Method Registry Loading
**Action:** Load and read `{methods}` and `{agent_party}` **Action:** Load and read `./methods.csv` and `{agent_party}`
#### CSV Structure #### CSV Structure

View File

@ -65,7 +65,7 @@ Create the brainstorming session document:
mkdir -p "$(dirname "{brainstorming_session_output_file}")" mkdir -p "$(dirname "{brainstorming_session_output_file}")"
# Initialize from template # Initialize from template
cp "{template_path}" "{brainstorming_session_output_file}" cp "../template.md" "{brainstorming_session_output_file}"
``` ```
#### B. Context File Check and Loading #### B. Context File Check and Loading

View File

@ -40,8 +40,6 @@ Load config from `{project-root}/_bmad/core/config.yaml` and resolve:
### Paths ### Paths
- `template_path` = `./template.md`
- `brain_techniques_path` = `./brain-methods.csv`
- `brainstorming_session_output_file` = `{output_folder}/brainstorming/brainstorming-session-{{date}}-{{time}}.md` (evaluated once at workflow start) - `brainstorming_session_output_file` = `{output_folder}/brainstorming/brainstorming-session-{{date}}-{{time}}.md` (evaluated once at workflow start)
All steps MUST reference `{brainstorming_session_output_file}` instead of the full path pattern. All steps MUST reference `{brainstorming_session_output_file}` instead of the full path pattern.

300
tools/skill-validator.md Normal file
View File

@ -0,0 +1,300 @@
# Skill Validator — Inference-Based
An LLM-readable validation prompt for skills following the Agent Skills open standard.
## How to Use
1. You are given a **skill directory path** to validate.
2. Read every file in the skill directory recursively.
3. Apply every rule in the catalog below to every applicable file.
4. Produce a findings report using the report template at the end.
If no findings are generated, the skill passes validation.
---
## Definitions
- **Skill directory**: the folder containing `SKILL.md` and all supporting files.
- **Internal reference**: a file path from one file in the skill to another file in the same skill.
- **External reference**: a file path from a skill file to a file outside the skill directory.
- **Originating file**: the file that contains the reference (path resolution is relative to this file's location).
- **Config variable**: a name-value pair whose value comes from the project config file (e.g., `planning_artifacts`, `implementation_artifacts`, `communication_language`).
- **Runtime variable**: a name-value pair whose value is set during workflow execution (e.g., `spec_file`, `date`, `status`).
- **Intra-skill path variable**: a frontmatter variable whose value is a path to another file within the same skill — this is an anti-pattern.
---
## Rule Catalog
### SKILL-01 — SKILL.md Must Exist
- **Severity:** CRITICAL
- **Applies to:** skill directory
- **Rule:** The skill directory must contain a file named `SKILL.md` (exact case).
- **Detection:** Check for the file's existence.
- **Fix:** Create `SKILL.md` as the skill entrypoint.
### SKILL-02 — SKILL.md Must Have `name` in Frontmatter
- **Severity:** CRITICAL
- **Applies to:** `SKILL.md`
- **Rule:** The YAML frontmatter must contain a `name` field.
- **Detection:** Parse the `---` delimited frontmatter block and check for `name:`.
- **Fix:** Add `name: <skill-name>` to the frontmatter.
### SKILL-03 — SKILL.md Must Have `description` in Frontmatter
- **Severity:** CRITICAL
- **Applies to:** `SKILL.md`
- **Rule:** The YAML frontmatter must contain a `description` field.
- **Detection:** Parse the `---` delimited frontmatter block and check for `description:`.
- **Fix:** Add `description: '<what it does and when to use it>'` to the frontmatter.
### SKILL-04 — `name` Format
- **Severity:** HIGH
- **Applies to:** `SKILL.md`
- **Rule:** The `name` value must use only lowercase letters, numbers, and hyphens. Max 64 characters. Must not contain "anthropic" or "claude".
- **Detection:** Regex test: `^[a-z0-9][a-z0-9-]{0,62}[a-z0-9]$`. String search for forbidden substrings.
- **Fix:** Rename to comply with the format.
### SKILL-05 — `name` Must Match Directory Name
- **Severity:** HIGH
- **Applies to:** `SKILL.md`
- **Rule:** The `name` value in SKILL.md frontmatter must exactly match the skill directory name. The directory name is the canonical identifier used by installers, manifests, and `skill:` references throughout the project.
- **Detection:** Compare the `name:` frontmatter value against the basename of the skill directory (i.e., the immediate parent directory of `SKILL.md`).
- **Fix:** Change the `name:` value to match the directory name, or rename the directory to match — prefer changing `name:` unless other references depend on the current value.
### SKILL-06 — `description` Quality
- **Severity:** MEDIUM
- **Applies to:** `SKILL.md`
- **Rule:** The `description` must state both what the skill does AND when to use it. Max 1024 characters.
- **Detection:** Check length. Look for trigger phrases like "Use when" or "Use if" — their absence suggests the description only says _what_ but not _when_.
- **Fix:** Append a "Use when..." clause to the description.
---
### WF-01 — workflow.md Must NOT Have `name` in Frontmatter
- **Severity:** HIGH
- **Applies to:** `workflow.md` (if it exists)
- **Rule:** The `name` field belongs only in `SKILL.md`. If `workflow.md` has YAML frontmatter, it must not contain `name:`.
- **Detection:** Parse frontmatter and check for `name:` key.
- **Fix:** Remove the `name:` line from workflow.md frontmatter.
### WF-02 — workflow.md Must NOT Have `description` in Frontmatter
- **Severity:** HIGH
- **Applies to:** `workflow.md` (if it exists)
- **Rule:** The `description` field belongs only in `SKILL.md`. If `workflow.md` has YAML frontmatter, it must not contain `description:`.
- **Detection:** Parse frontmatter and check for `description:` key.
- **Fix:** Remove the `description:` line from workflow.md frontmatter.
### WF-03 — workflow.md Frontmatter Variables Must Be Config or Runtime Only
- **Severity:** HIGH
- **Applies to:** `workflow.md` frontmatter
- **Rule:** Every variable defined in workflow.md frontmatter must be either:
- A config variable (value references `{project-root}` or a config-derived variable like `{planning_artifacts}`)
- A runtime variable (value is empty, a placeholder, or set during execution)
- A legitimate external path expression
It must NOT be a path to a file within the skill directory.
- **Detection:** For each frontmatter variable, check if its value resolves to a file inside the skill (e.g., starts with `./`, `{installed_path}`, or is a bare relative path to a sibling file). If so, it is an intra-skill path variable.
- **Fix:** Remove the variable. Use a hardcoded relative path inline where the file is referenced.
---
### PATH-01 — Internal References Must Be Relative From Originating File
- **Severity:** CRITICAL
- **Applies to:** all files in the skill
- **Rule:** Any reference from one file in the skill to another file in the same skill must be a relative path resolved from the directory of the originating file. Use `./` prefix for siblings or children, `../` for parent traversal. Bare relative filenames in markdown links (e.g., `[text](sibling.md)`) are also acceptable.
- **Detection:** Scan for file path references (in markdown links, frontmatter values, inline backtick paths, and prose instructions like "Read fully and follow"). Verify each internal reference uses relative notation (`./`, `../`, or bare filename). Always resolve the path from the originating file's directory — a reference to `./steps/step-01.md` from a file already inside `steps/` would resolve to `steps/steps/step-01.md`, which is wrong.
- **Examples:**
- CORRECT: `./steps/step-01-init.md` (from workflow.md at skill root to a step)
- CORRECT: `./template.md` (from workflow.md to a sibling)
- CORRECT: `../template.md` (from steps/step-01.md to a skill-root file)
- CORRECT: `[workflow.md](workflow.md)` (markdown link to sibling — bare relative)
- CORRECT: `./step-02-plan.md` (from steps/step-01.md to a sibling step)
- WRONG: `./steps/step-02-plan.md` (from a file already inside steps/ — resolves to steps/steps/)
- WRONG: `{installed_path}/template.md`
- WRONG: `{project-root}/.claude/skills/my-skill/template.md`
- WRONG: `/Users/someone/.claude/skills/my-skill/steps/step-01.md`
- WRONG: `~/.claude/skills/my-skill/file.md`
### PATH-02 — No `installed_path` Variable
- **Severity:** HIGH
- **Applies to:** all files in the skill
- **Rule:** The `installed_path` variable is an anti-pattern from the pre-skill workflow era. It must not be defined in any frontmatter, and `{installed_path}` must not appear anywhere in any file.
- **Detection:** Search all files for:
- Frontmatter key `installed_path:`
- String `{installed_path}` anywhere in content
- Markdown/prose assigning `installed_path` (e.g., `` `installed_path` = `.` ``)
- **Fix:** Remove all `installed_path` definitions. Replace every `{installed_path}/path` with `./path` (relative from the file that contains the reference). If the reference is in a step file and points to a skill-root file, use `../path` instead.
### PATH-03 — External References Must Use `{project-root}` or Config Variables
- **Severity:** HIGH
- **Applies to:** all files in the skill
- **Rule:** References to files outside the skill directory must use `{project-root}/...` or a config-derived variable path (e.g., `{planning_artifacts}/...`, `{implementation_artifacts}/...`).
- **Detection:** Identify file references that point outside the skill. Verify they start with `{project-root}` or a known config variable. Flag absolute paths, home-relative paths (`~/`), or bare paths that resolve outside the skill.
- **Fix:** Replace with `{project-root}/...` or the appropriate config variable.
### PATH-04 — No Intra-Skill Path Variables
- **Severity:** MEDIUM
- **Applies to:** all files (frontmatter AND body content)
- **Rule:** Variables must not store paths to files within the same skill. These paths should be hardcoded as relative paths inline where used. This applies to YAML frontmatter variables AND markdown body variable assignments (e.g., `` `template` = `./template.md` `` under a `### Paths` section).
- **Detection:** For each variable with a path-like value — whether defined in frontmatter or in body text — determine if the target is inside the skill directory. Indicators: value starts with `./`, `../`, `{installed_path}`, or is a bare filename of a file that exists in the skill. Exclude variables whose values are prefixed with a config variable like `{planning_artifacts}`, `{implementation_artifacts}`, `{project-root}`, or other config-derived paths — these are external references and are legitimate.
- **Fix:** Remove the variable. Replace each `{variable_name}` usage with the direct relative path.
- **Exception:** If a path variable is used in 4+ locations across multiple files and the path is non-trivial, a variable MAY be acceptable. Flag it as LOW instead and note the exception.
---
### STEP-01 — Step File Naming
- **Severity:** MEDIUM
- **Applies to:** files in `steps/` directory
- **Rule:** Step files must be named `step-NN-description.md` where NN is a zero-padded two-digit number. An optional single-letter variant suffix is allowed for branching steps (e.g., `step-01b-continue.md`).
- **Detection:** Regex: `^step-\d{2}[a-z]?-[a-z0-9-]+\.md$`
- **Fix:** Rename to match the pattern.
### STEP-02 — Step Must Have a Goal Section
- **Severity:** HIGH
- **Applies to:** step files
- **Rule:** Each step must clearly state its goal. Look for a heading like `## YOUR TASK`, `## STEP GOAL`, `## INSTRUCTIONS`, `## INITIALIZATION`, `## EXECUTION`, `# Step N:`, or a frontmatter `goal:` field.
- **Detection:** Scan for goal-indicating headings (including `# Step N: Title` as a top-level heading that names the step's purpose) or frontmatter.
- **Fix:** Add a clear goal section.
### STEP-03 — Step Must Reference Next Step
- **Severity:** MEDIUM
- **Applies to:** step files (except the final step)
- **Rule:** Each non-terminal step must contain a reference to the next step file for sequential execution.
- **Detection:** Look for `## NEXT` section or inline reference to a next step file. Remember to resolve the reference from the originating file's directory (PATH-01 applies here too).
- **Fix:** Add a `## NEXT` section with the relative path to the next step.
- **Note:** A terminal step is one that has no next-step reference and either contains completion/finalization language or is the highest-numbered step. If a workflow branches, there may be multiple terminal steps.
### STEP-04 — Halt Before Menu
- **Severity:** HIGH
- **Applies to:** step files
- **Rule:** Any step that presents a user menu (e.g., `[C] Continue`, `[A] Approve`, `[S] Split`) must explicitly HALT and wait for user response before proceeding.
- **Detection:** Find menu patterns (bracketed letter options). Check that text within the same section (under the same heading) includes "HALT", "wait", "stop", "FORBIDDEN to proceed", or equivalent.
- **Fix:** Add an explicit HALT instruction before or after the menu.
### STEP-05 — No Forward Loading
- **Severity:** HIGH
- **Applies to:** step files
- **Rule:** A step must not load or read future step files until the current step is complete. Just-in-time loading only.
- **Detection:** Look for instructions to read multiple step files simultaneously, or unconditional references to step files with higher numbers than the current step. Exempt locations: `## NEXT` sections, navigation/dispatch sections that list valid resumption targets, and conditional routing branches.
- **Fix:** Remove premature step loading. Ensure only the current step is active.
### STEP-06 — Step File Frontmatter: No `name` or `description`
- **Severity:** MEDIUM
- **Applies to:** step files
- **Rule:** Step files should not have `name:` or `description:` in their YAML frontmatter. These are metadata noise — the step's purpose is conveyed by its goal section and filename.
- **Detection:** Parse step file frontmatter for `name:` or `description:` keys.
- **Fix:** Remove `name:` and `description:` from step file frontmatter.
### STEP-07 — Step Count
- **Severity:** LOW
- **Applies to:** workflow as a whole
- **Rule:** A sharded workflow should have between 2 and 10 step files. More than 10 risks LLM context degradation.
- **Detection:** Count files matching `step-*.md` in the `steps/` directory.
- **Fix:** Consider consolidating steps if over 10.
---
### SEQ-01 — No Skip Instructions
- **Severity:** HIGH
- **Applies to:** all files
- **Rule:** No file should instruct the agent to skip steps or optimize step order. Sequential execution is mandatory.
- **Detection:** Scan for phrases like "skip to step", "jump to step", "skip ahead", "optimize the order", "you may skip". Exclude negation context (e.g., "do NOT skip steps", "NEVER skip") — these are enforcement instructions, not skip instructions.
- **Exception:** Conditional routing (e.g., "if X, go to step N; otherwise step M") is valid workflow branching, not skipping.
### SEQ-02 — No Time Estimates
- **Severity:** LOW
- **Applies to:** all files
- **Rule:** Workflow files should not include time estimates. AI execution speed varies too much for estimates to be meaningful.
- **Detection:** Scan for patterns like "takes X minutes", "~N min", "estimated time", "ETA".
- **Fix:** Remove time estimates.
---
### REF-01 — Variable References Must Be Defined
- **Severity:** HIGH
- **Applies to:** all files
- **Rule:** Every `{variable_name}` reference in any file (body text, frontmatter values, inline instructions) must resolve to a defined source. Valid sources are:
1. A frontmatter variable in the same file
2. A frontmatter variable in the skill's `workflow.md` (workflow-level variables are available to all steps)
3. A known config variable from the project config (e.g., `project-root`, `planning_artifacts`, `implementation_artifacts`, `communication_language`)
4. A known runtime variable set during execution (e.g., `date`, `status`, `project_name`, user-provided input variables)
- **Detection:** Collect all `{...}` tokens in the file. For each, check whether it is defined in the file's own frontmatter, in `workflow.md` frontmatter, or is a recognized config/runtime variable. Flag any token that cannot be traced to a source. Use the config variable list from the project's `config.yaml` as the reference for recognized config variables. Runtime variables are those explicitly described as user-provided or set during execution in the workflow instructions.
- **Exceptions:**
- Double-curly `{{variable}}` — these are template placeholders intended to survive into generated output (e.g., `{{project_name}}` in a template file). Do not flag these.
- Variables inside fenced code blocks that are clearly illustrative examples.
- **Fix:** Either define the variable in the appropriate frontmatter, or replace the reference with a literal value. If the variable is a config variable that was misspelled, correct the spelling.
### REF-02 — File References Must Resolve
- **Severity:** HIGH
- **Applies to:** all files
- **Rule:** All file path references within the skill (markdown links, backtick paths, frontmatter values) should point to files that plausibly exist.
- **Detection:** For internal references, verify the target file exists in the skill directory. For external references using config variables, verify the path structure is plausible (you cannot resolve config variables, but you can check that the path after the variable looks reasonable — e.g., `{planning_artifacts}/*.md` is plausible, `{planning_artifacts}/../../etc/passwd` is not).
- **Fix:** Correct the path or remove the dead reference.
---
## Report Template
When reporting findings, use this format:
```markdown
# Skill Validation Report: {skill-name}
**Directory:** {path}
**Date:** {date}
**Files scanned:** {count}
## Summary
| Severity | Count |
|----------|-------|
| CRITICAL | N |
| HIGH | N |
| MEDIUM | N |
| LOW | N |
## Findings
### {RULE-ID} — {Rule Title}
- **Severity:** {severity}
- **File:** `{relative-path-within-skill}`
- **Line:** {line number or range, if identifiable}
- **Detail:** {what was found}
- **Fix:** {specific fix for this instance}
---
(repeat for each finding, grouped by rule ID)
## Passed Rules
(list rule IDs that produced no findings)
```
If zero findings: report "All {N} rules passed. No findings." and list all passed rule IDs.