Compare commits
9 Commits
be8a9083a7
...
9351582ba6
| Author | SHA1 | Date |
|---|---|---|
|
|
9351582ba6 | |
|
|
9b9ae44eb9 | |
|
|
8e84b05d5b | |
|
|
efc69ffb2c | |
|
|
44972d62b9 | |
|
|
deedf18fc5 | |
|
|
17fe438452 | |
|
|
d036d34892 | |
|
|
bc7c7f0757 |
|
|
@ -1,6 +1,6 @@
|
||||||
---
|
---
|
||||||
name: bmad-os-review-pr
|
name: bmad-os-review-pr
|
||||||
description: Adversarial PR review tool (Raven's Verdict). Cynical deep review transformed into professional engineering findings. Use when user asks to 'review a PR' and provides a PR url or id.
|
description: Dual-layer PR review tool (Raven's Verdict). Runs adversarial cynical review and edge case hunter in parallel, merges and deduplicates findings into professional engineering output. Use when user asks to 'review a PR' and provides a PR url or id.
|
||||||
---
|
---
|
||||||
|
|
||||||
Read `prompts/instructions.md` and execute.
|
Read `prompts/instructions.md` and execute.
|
||||||
|
|
|
||||||
|
|
@ -93,13 +93,17 @@ gh pr diff {PR_NUMBER} [--repo {REPO}] --name-only | grep -E '\.(png|jpg|jpeg|gi
|
||||||
|
|
||||||
Store list of binary files to skip. Note them in final output.
|
Store list of binary files to skip. Note them in final output.
|
||||||
|
|
||||||
## Adversarial Review
|
## Review Layers
|
||||||
|
|
||||||
### 1.1 Run Cynical Review
|
**Launch steps 1.1 and 1.2 as parallel subagents.** Both receive the same PR diff and run concurrently. Wait for both to complete before proceeding to step 1.3.
|
||||||
|
|
||||||
|
### 1.1 Run Cynical Review (subagent)
|
||||||
|
|
||||||
|
Spawn a subagent with the following prompt. Pass the full PR diff as context.
|
||||||
|
|
||||||
**INTERNAL PERSONA - Never post this directly:**
|
**INTERNAL PERSONA - Never post this directly:**
|
||||||
|
|
||||||
Task: You are a cynical, jaded code reviewer with zero patience for sloppy work. This PR was submitted by a clueless weasel and you expect to find problems. Find at least five issues to fix or improve in it. Number them. Be skeptical of everything. Ultrathink.
|
Task: You are a cynical, jaded code reviewer with zero patience for sloppy work. This PR was submitted by a clueless weasel and you expect to find problems. Find at least five issues to fix or improve in it. Number them. Be skeptical of everything.
|
||||||
|
|
||||||
Output format:
|
Output format:
|
||||||
|
|
||||||
|
|
@ -124,14 +128,64 @@ Likely tag:
|
||||||
- Add `[likely]` to findings with high confidence, e.g. with direct evidence
|
- Add `[likely]` to findings with high confidence, e.g. with direct evidence
|
||||||
- Sort findings by severity (Critical → Moderate → Minor), not by confidence
|
- Sort findings by severity (Critical → Moderate → Minor), not by confidence
|
||||||
|
|
||||||
|
### 1.2 Run Edge Case Hunter (subagent)
|
||||||
|
|
||||||
|
Spawn a subagent that executes the task defined in `_bmad/core/tasks/review-edge-case-hunter.xml`. Pass the full PR diff as the `content` input. Omit `also_consider` unless the user specified extra focus areas.
|
||||||
|
|
||||||
|
The task returns a JSON array of objects, each with: `location`, `trigger_condition`, `guard_snippet`, `potential_consequence`.
|
||||||
|
|
||||||
|
**Map each JSON finding to the standard finding format:**
|
||||||
|
|
||||||
|
````markdown
|
||||||
|
### [NUMBER]. [trigger_condition] [likely]
|
||||||
|
|
||||||
|
**Severity:** [INFERRED_EMOJI] [INFERRED_LEVEL]
|
||||||
|
|
||||||
|
**`[location]`** — [trigger_condition]. [potential_consequence].
|
||||||
|
|
||||||
|
**Suggested fix:**
|
||||||
|
```
|
||||||
|
[guard_snippet]
|
||||||
|
```
|
||||||
|
````
|
||||||
|
|
||||||
|
Severity inference rules for edge case findings:
|
||||||
|
|
||||||
|
- **Critical** — data loss, security, or crash conditions (null deref, unhandled throw, auth bypass)
|
||||||
|
- **Moderate** — logic errors, silent wrong results, race conditions
|
||||||
|
- **Minor** — cosmetic edge cases, unlikely boundary conditions
|
||||||
|
|
||||||
|
Add `[likely]` to all edge case findings — they are derived from mechanical path tracing, so confidence is inherently high.
|
||||||
|
|
||||||
|
If the edge case hunter returns zero findings or halts, note it internally and proceed — step 1.1 findings still stand.
|
||||||
|
|
||||||
|
### 1.3 Merge and Deduplicate
|
||||||
|
|
||||||
|
Combine the findings from step 1.1 (adversarial) and step 1.2 (edge case hunter) into a single list.
|
||||||
|
|
||||||
|
**Deduplication rules:**
|
||||||
|
|
||||||
|
1. Compare each edge case finding against each adversarial finding
|
||||||
|
2. Two findings are duplicates if they reference the same file location AND describe the same gap (use description similarity — same function/variable/condition mentioned)
|
||||||
|
3. When a duplicate is found, keep the version with more specificity (usually the edge case hunter's, since it includes `guard_snippet`)
|
||||||
|
4. Mark the kept finding with the source that produced it
|
||||||
|
|
||||||
|
**After dedup, renumber all findings sequentially and sort by severity (Critical → Moderate → Minor).**
|
||||||
|
|
||||||
|
Tag each finding with its source:
|
||||||
|
|
||||||
|
- `[Adversarial]` — from step 1.1 only
|
||||||
|
- `[Edge Case]` — from step 1.2 only
|
||||||
|
- `[Both]` — flagged by both layers (deduped)
|
||||||
|
|
||||||
## Tone Transformation
|
## Tone Transformation
|
||||||
|
|
||||||
**Transform the cynical output into cold engineering professionalism.**
|
**Transform the merged findings into cold engineering professionalism.**
|
||||||
|
|
||||||
**Transformation rules:**
|
**Transformation rules:**
|
||||||
|
|
||||||
1. Remove all inflammatory language, insults, assumptions about the author
|
1. Remove all inflammatory language, insults, assumptions about the author
|
||||||
2. Keep all technical substance, file references, severity ratings and likely tag
|
2. Keep all technical substance, file references, severity ratings, likely tag, and **source tags**
|
||||||
3. Replace accusatory phrasing with neutral observations:
|
3. Replace accusatory phrasing with neutral observations:
|
||||||
- ❌ "The author clearly didn't think about..."
|
- ❌ "The author clearly didn't think about..."
|
||||||
- ✅ "This implementation may not account for..."
|
- ✅ "This implementation may not account for..."
|
||||||
|
|
@ -140,6 +194,7 @@ Likely tag:
|
||||||
- ✅ "This pattern has historically caused issues in production environments"
|
- ✅ "This pattern has historically caused issues in production environments"
|
||||||
5. Add the suggested fixes.
|
5. Add the suggested fixes.
|
||||||
6. Keep suggestions actionable and specific
|
6. Keep suggestions actionable and specific
|
||||||
|
7. Edge case hunter findings need no persona cleanup, but still apply professional formatting consistently
|
||||||
|
|
||||||
Output format after transformation:
|
Output format after transformation:
|
||||||
|
|
||||||
|
|
@ -149,18 +204,20 @@ Output format after transformation:
|
||||||
**Title:** {PR_TITLE}
|
**Title:** {PR_TITLE}
|
||||||
**Author:** @{AUTHOR}
|
**Author:** @{AUTHOR}
|
||||||
**Branch:** {HEAD} → {BASE}
|
**Branch:** {HEAD} → {BASE}
|
||||||
|
**Review layers:** Adversarial + Edge Case Hunter
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
### Findings
|
### Findings
|
||||||
|
|
||||||
[TRANSFORMED FINDINGS HERE]
|
[TRANSFORMED FINDINGS HERE — each tagged with source]
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
### Summary
|
### Summary
|
||||||
|
|
||||||
**Critical:** {COUNT} | **Moderate:** {COUNT} | **Minor:** {COUNT}
|
**Critical:** {COUNT} | **Moderate:** {COUNT} | **Minor:** {COUNT}
|
||||||
|
**Sources:** {ADVERSARIAL_COUNT} adversarial | {EDGE_CASE_COUNT} edge case | {BOTH_COUNT} both
|
||||||
|
|
||||||
[BINARY_FILES_NOTE if any]
|
[BINARY_FILES_NOTE if any]
|
||||||
|
|
||||||
|
|
|
||||||
15
CHANGELOG.md
15
CHANGELOG.md
|
|
@ -1,5 +1,20 @@
|
||||||
# Changelog
|
# Changelog
|
||||||
|
|
||||||
|
## [6.0.4]
|
||||||
|
|
||||||
|
### 🎁 Features
|
||||||
|
|
||||||
|
* Add edge case hunter review task - new reusable review task that exhaustively traces branching paths and boundary conditions in code, reporting only unhandled gaps. Method-driven analysis complementary to adversarial review (#1790)
|
||||||
|
|
||||||
|
### 🐛 Bug Fixes
|
||||||
|
|
||||||
|
* Fix brainstorming to not overwrite previous sessions; now prompts to continue existing brainstorming or start a new one when older brainstorming sessions are found
|
||||||
|
* Fix installer templates - replace legacy `@` path prefixes with explicit `{project-root}` syntax for consistency (#1769)
|
||||||
|
* Fix edge case hunter - remove zero-findings halt condition that was pressuring the LLM to hallucinate findings when none legitimately exist (#1797)
|
||||||
|
* Fix broken docs domain references in README and GitHub issue templates (#1777)
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
## [6.0.3]
|
## [6.0.3]
|
||||||
|
|
||||||
### 🎁 Features
|
### 🎁 Features
|
||||||
|
|
|
||||||
|
|
@ -1,12 +1,12 @@
|
||||||
{
|
{
|
||||||
"name": "bmad-method",
|
"name": "bmad-method",
|
||||||
"version": "6.0.3",
|
"version": "6.0.4",
|
||||||
"lockfileVersion": 3,
|
"lockfileVersion": 3,
|
||||||
"requires": true,
|
"requires": true,
|
||||||
"packages": {
|
"packages": {
|
||||||
"": {
|
"": {
|
||||||
"name": "bmad-method",
|
"name": "bmad-method",
|
||||||
"version": "6.0.3",
|
"version": "6.0.4",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@clack/core": "^1.0.0",
|
"@clack/core": "^1.0.0",
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
{
|
{
|
||||||
"$schema": "https://json.schemastore.org/package.json",
|
"$schema": "https://json.schemastore.org/package.json",
|
||||||
"name": "bmad-method",
|
"name": "bmad-method",
|
||||||
"version": "6.0.3",
|
"version": "6.0.4",
|
||||||
"description": "Breakthrough Method of Agile AI-driven Development",
|
"description": "Breakthrough Method of Agile AI-driven Development",
|
||||||
"keywords": [
|
"keywords": [
|
||||||
"agile",
|
"agile",
|
||||||
|
|
|
||||||
|
|
@ -2,7 +2,7 @@ code: core
|
||||||
name: "BMad Core Module"
|
name: "BMad Core Module"
|
||||||
|
|
||||||
header: "BMad Core Configuration"
|
header: "BMad Core Configuration"
|
||||||
subheader: "Configure the core settings for your BMad installation.\nThese settings will be used across all modules and agents."
|
subheader: "Configure the core settings for your BMad installation.\nThese settings will be used across all installed bmad skills, workflows, and agents."
|
||||||
|
|
||||||
user_name:
|
user_name:
|
||||||
prompt: "What should agents call you? (Use your name or a team name)"
|
prompt: "What should agents call you? (Use your name or a team name)"
|
||||||
|
|
@ -23,3 +23,13 @@ output_folder:
|
||||||
prompt: "Where should output files be saved?"
|
prompt: "Where should output files be saved?"
|
||||||
default: "_bmad-output"
|
default: "_bmad-output"
|
||||||
result: "{project-root}/{value}"
|
result: "{project-root}/{value}"
|
||||||
|
|
||||||
|
tool_supports_subagents:
|
||||||
|
prompt: "Subagents are supported by the LLM or Tool I will be using?"
|
||||||
|
default: true
|
||||||
|
result: "{value}"
|
||||||
|
|
||||||
|
tool_supports_agent_teams:
|
||||||
|
prompt: "Agent Teams are supported by the LLM or Tool I will be using?"
|
||||||
|
default: false
|
||||||
|
result: "{value}"
|
||||||
|
|
|
||||||
|
|
@ -15,18 +15,18 @@ Ignore the rest of the codebase unless the provided content explicitly reference
|
||||||
</inputs>
|
</inputs>
|
||||||
|
|
||||||
<output-format>Return ONLY a valid JSON array of objects. Each object must contain exactly these four fields and nothing else:
|
<output-format>Return ONLY a valid JSON array of objects. Each object must contain exactly these four fields and nothing else:
|
||||||
{
|
[{
|
||||||
"location": "file:line",
|
"location": "file:start-end (or file:line when single line, or file:hunk when exact line unavailable)",
|
||||||
"trigger_condition": "one-line description (max 15 words)",
|
"trigger_condition": "one-line description (max 15 words)",
|
||||||
"guard_snippet": "minimal code sketch that closes the gap",
|
"guard_snippet": "minimal code sketch that closes the gap (single-line escaped string, no raw newlines or unescaped quotes)",
|
||||||
"potential_consequence": "what could actually go wrong (max 15 words)"
|
"potential_consequence": "what could actually go wrong (max 15 words)"
|
||||||
}
|
}]
|
||||||
No extra text, no explanations, no markdown wrapping.</output-format>
|
No extra text, no explanations, no markdown wrapping. An empty array [] is valid when no unhandled paths are found.</output-format>
|
||||||
|
|
||||||
<llm critical="true">
|
<llm critical="true">
|
||||||
<i>MANDATORY: Execute ALL steps in the flow section IN EXACT ORDER</i>
|
<i>MANDATORY: Execute steps in the flow section IN EXACT ORDER</i>
|
||||||
<i>DO NOT skip steps or change the sequence</i>
|
<i>DO NOT skip steps or change the sequence</i>
|
||||||
<i>HALT immediately when halt-conditions are met</i>
|
<i>When a halt-condition triggers, follow its specific instruction exactly</i>
|
||||||
<i>Each action xml tag within step xml tag is a REQUIRED action to complete that step</i>
|
<i>Each action xml tag within step xml tag is a REQUIRED action to complete that step</i>
|
||||||
|
|
||||||
<i>Your method is exhaustive path enumeration — mechanically walk every branch, not hunt by intuition</i>
|
<i>Your method is exhaustive path enumeration — mechanically walk every branch, not hunt by intuition</i>
|
||||||
|
|
@ -38,8 +38,8 @@ No extra text, no explanations, no markdown wrapping.</output-format>
|
||||||
|
|
||||||
<flow>
|
<flow>
|
||||||
<step n="1" title="Receive Content">
|
<step n="1" title="Receive Content">
|
||||||
<action>Load the content to review from provided input or context</action>
|
<action>Load the content to review strictly from provided input</action>
|
||||||
<action>If content to review is empty, ask for clarification and abort task</action>
|
<action>If content is empty, or cannot be decoded as text, return empty array [] and stop</action>
|
||||||
<action>Identify content type (diff, full file, or function) to determine scope rules</action>
|
<action>Identify content type (diff, full file, or function) to determine scope rules</action>
|
||||||
</step>
|
</step>
|
||||||
|
|
||||||
|
|
@ -51,14 +51,20 @@ No extra text, no explanations, no markdown wrapping.</output-format>
|
||||||
<action>Collect only the unhandled paths as findings - discard handled ones silently</action>
|
<action>Collect only the unhandled paths as findings - discard handled ones silently</action>
|
||||||
</step>
|
</step>
|
||||||
|
|
||||||
<step n="3" title="Present Findings">
|
<step n="3" title="Validate Completeness">
|
||||||
|
<action>Recheck every conditional for missing else/default</action>
|
||||||
|
<action>Recheck every input for null/empty/wrong-type</action>
|
||||||
|
<action>Recheck loop bounds for off-by-one and empty-collection</action>
|
||||||
|
<action>Add any newly found unhandled paths to findings; discard confirmed-handled ones</action>
|
||||||
|
</step>
|
||||||
|
|
||||||
|
<step n="4" title="Present Findings">
|
||||||
<action>Output findings as a JSON array following the output-format specification exactly</action>
|
<action>Output findings as a JSON array following the output-format specification exactly</action>
|
||||||
</step>
|
</step>
|
||||||
</flow>
|
</flow>
|
||||||
|
|
||||||
<halt-conditions>
|
<halt-conditions>
|
||||||
<condition>HALT if zero findings - this is suspicious, re-analyze or ask for guidance</condition>
|
<condition>If content is empty or cannot be decoded as text, return empty array [] and stop</condition>
|
||||||
<condition>HALT if content is empty or unreadable</condition>
|
|
||||||
</halt-conditions>
|
</halt-conditions>
|
||||||
|
|
||||||
</task>
|
</task>
|
||||||
|
|
|
||||||
|
|
@ -29,23 +29,30 @@ Initialize the brainstorming workflow by detecting continuation state and settin
|
||||||
|
|
||||||
## INITIALIZATION SEQUENCE:
|
## INITIALIZATION SEQUENCE:
|
||||||
|
|
||||||
### 1. Check for Existing Workflow
|
### 1. Check for Existing Sessions
|
||||||
|
|
||||||
First, check if the output document already exists:
|
First, check the brainstorming sessions folder for existing sessions:
|
||||||
|
|
||||||
- Look for file at `{output_folder}/brainstorming/brainstorming-session-{{date}}.md`
|
- List all files in `{output_folder}/brainstorming/`
|
||||||
- If exists, read the complete file including frontmatter
|
- **DO NOT read any file contents** - only list filenames
|
||||||
- If not exists, this is a fresh workflow
|
- If files exist, identify the most recent by date/time in the filename
|
||||||
|
- If no files exist, this is a fresh workflow
|
||||||
|
|
||||||
### 2. Handle Continuation (If Document Exists)
|
### 2. Handle Existing Sessions (If Files Found)
|
||||||
|
|
||||||
If the document exists and has frontmatter with `stepsCompleted`:
|
If existing session files are found:
|
||||||
|
|
||||||
- **STOP here** and load `./step-01b-continue.md` immediately
|
- Display the most recent session filename (do NOT read its content)
|
||||||
- Do not proceed with any initialization tasks
|
- Ask the user: "Found existing session: `[filename]`. Would you like to:
|
||||||
- Let step-01b handle the continuation logic
|
**[1]** Continue this session
|
||||||
|
**[2]** Start a new session
|
||||||
|
**[3]** See all existing sessions"
|
||||||
|
|
||||||
### 3. Fresh Workflow Setup (If No Document)
|
- If user selects **[1]** (continue): Set `{brainstorming_session_output_file}` to that file path and load `./step-01b-continue.md`
|
||||||
|
- If user selects **[2]** (new): Generate new filename with current date/time and proceed to step 3
|
||||||
|
- If user selects **[3]** (see all): List all session filenames and ask which to continue or if new
|
||||||
|
|
||||||
|
### 3. Fresh Workflow Setup (If No Files or User Chooses New)
|
||||||
|
|
||||||
If no document exists or no `stepsCompleted` in frontmatter:
|
If no document exists or no `stepsCompleted` in frontmatter:
|
||||||
|
|
||||||
|
|
@ -55,10 +62,10 @@ Create the brainstorming session document:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
# Create directory if needed
|
# Create directory if needed
|
||||||
mkdir -p "$(dirname "{output_folder}/brainstorming/brainstorming-session-{{date}}.md")"
|
mkdir -p "$(dirname "{brainstorming_session_output_file}")"
|
||||||
|
|
||||||
# Initialize from template
|
# Initialize from template
|
||||||
cp "{template_path}" "{output_folder}/brainstorming/brainstorming-session-{{date}}.md"
|
cp "{template_path}" "{brainstorming_session_output_file}"
|
||||||
```
|
```
|
||||||
|
|
||||||
#### B. Context File Check and Loading
|
#### B. Context File Check and Loading
|
||||||
|
|
@ -134,7 +141,7 @@ _[Content based on conversation about session parameters and facilitator approac
|
||||||
|
|
||||||
## APPEND TO DOCUMENT:
|
## APPEND TO DOCUMENT:
|
||||||
|
|
||||||
When user selects approach, append the session overview content directly to `{output_folder}/brainstorming/brainstorming-session-{{date}}.md` using the structure from above.
|
When user selects approach, append the session overview content directly to `{brainstorming_session_output_file}` using the structure from above.
|
||||||
|
|
||||||
### E. Continue to Technique Selection
|
### E. Continue to Technique Selection
|
||||||
|
|
||||||
|
|
@ -152,7 +159,7 @@ Which approach appeals to you most? (Enter 1-4)"
|
||||||
|
|
||||||
#### When user selects approach number:
|
#### When user selects approach number:
|
||||||
|
|
||||||
- **Append initial session overview to `{output_folder}/brainstorming/brainstorming-session-{{date}}.md`**
|
- **Append initial session overview to `{brainstorming_session_output_file}`**
|
||||||
- **Update frontmatter:** `stepsCompleted: [1]`, `selected_approach: '[selected approach]'`
|
- **Update frontmatter:** `stepsCompleted: [1]`, `selected_approach: '[selected approach]'`
|
||||||
- **Load the appropriate step-02 file** based on selection
|
- **Load the appropriate step-02 file** based on selection
|
||||||
|
|
||||||
|
|
@ -167,7 +174,9 @@ After user selects approach number:
|
||||||
|
|
||||||
## SUCCESS METRICS:
|
## SUCCESS METRICS:
|
||||||
|
|
||||||
✅ Existing workflow detected and continuation handled properly
|
✅ Existing sessions detected without reading file contents
|
||||||
|
✅ User prompted to continue existing session or start new
|
||||||
|
✅ Correct session file selected for continuation
|
||||||
✅ Fresh workflow initialized with correct document structure
|
✅ Fresh workflow initialized with correct document structure
|
||||||
✅ Session context gathered and understood clearly
|
✅ Session context gathered and understood clearly
|
||||||
✅ User's approach selection captured and routed correctly
|
✅ User's approach selection captured and routed correctly
|
||||||
|
|
@ -176,7 +185,9 @@ After user selects approach number:
|
||||||
|
|
||||||
## FAILURE MODES:
|
## FAILURE MODES:
|
||||||
|
|
||||||
❌ Not checking for existing document before creating new one
|
❌ Reading file contents during session detection (wastes context)
|
||||||
|
❌ Not asking user before continuing existing session
|
||||||
|
❌ Not properly routing user's continue/new session selection
|
||||||
❌ Missing continuation detection leading to duplicate work
|
❌ Missing continuation detection leading to duplicate work
|
||||||
❌ Insufficient session context gathering
|
❌ Insufficient session context gathering
|
||||||
❌ Not properly routing user's approach selection
|
❌ Not properly routing user's approach selection
|
||||||
|
|
@ -184,7 +195,9 @@ After user selects approach number:
|
||||||
|
|
||||||
## SESSION SETUP PROTOCOLS:
|
## SESSION SETUP PROTOCOLS:
|
||||||
|
|
||||||
- Always verify document existence before initialization
|
- Always list sessions folder WITHOUT reading file contents
|
||||||
|
- Ask user before continuing any existing session
|
||||||
|
- Only load continue step after user confirms
|
||||||
- Load brain techniques CSV only when needed for technique presentation
|
- Load brain techniques CSV only when needed for technique presentation
|
||||||
- Use collaborative facilitation language throughout
|
- Use collaborative facilitation language throughout
|
||||||
- Maintain psychological safety for creative exploration
|
- Maintain psychological safety for creative exploration
|
||||||
|
|
|
||||||
|
|
@ -35,7 +35,7 @@ Load existing document and analyze current state:
|
||||||
|
|
||||||
**Document Analysis:**
|
**Document Analysis:**
|
||||||
|
|
||||||
- Read existing `{output_folder}/brainstorming/brainstorming-session-{{date}}.md`
|
- Read existing `{brainstorming_session_output_file}`
|
||||||
- Examine frontmatter for `stepsCompleted`, `session_topic`, `session_goals`
|
- Examine frontmatter for `stepsCompleted`, `session_topic`, `session_goals`
|
||||||
- Review content to understand session progress and outcomes
|
- Review content to understand session progress and outcomes
|
||||||
- Identify current stage and next logical steps
|
- Identify current stage and next logical steps
|
||||||
|
|
|
||||||
|
|
@ -296,7 +296,7 @@ After final technique element:
|
||||||
|
|
||||||
#### If 'C' (Move to organization):
|
#### If 'C' (Move to organization):
|
||||||
|
|
||||||
- **Append the technique execution content to `{output_folder}/brainstorming/brainstorming-session-{{date}}.md`**
|
- **Append the technique execution content to `{brainstorming_session_output_file}`**
|
||||||
- **Update frontmatter:** `stepsCompleted: [1, 2, 3]`
|
- **Update frontmatter:** `stepsCompleted: [1, 2, 3]`
|
||||||
- **Load:** `./step-04-idea-organization.md`
|
- **Load:** `./step-04-idea-organization.md`
|
||||||
|
|
||||||
|
|
@ -356,7 +356,7 @@ _[Short narrative describing the user and AI collaboration journey - what made t
|
||||||
|
|
||||||
## APPEND TO DOCUMENT:
|
## APPEND TO DOCUMENT:
|
||||||
|
|
||||||
When user selects 'C', append the content directly to `{output_folder}/brainstorming/brainstorming-session-{{date}}.md` using the structure from above.
|
When user selects 'C', append the content directly to `{brainstorming_session_output_file}` using the structure from above.
|
||||||
|
|
||||||
## SUCCESS METRICS:
|
## SUCCESS METRICS:
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -253,14 +253,14 @@ Provide final session wrap-up and forward guidance:
|
||||||
|
|
||||||
#### If [C] Complete:
|
#### If [C] Complete:
|
||||||
|
|
||||||
- **Append the final session content to `{output_folder}/brainstorming/brainstorming-session-{{date}}.md`**
|
- **Append the final session content to `{brainstorming_session_output_file}`**
|
||||||
- Update frontmatter: `stepsCompleted: [1, 2, 3, 4]`
|
- Update frontmatter: `stepsCompleted: [1, 2, 3, 4]`
|
||||||
- Set `session_active: false` and `workflow_completed: true`
|
- Set `session_active: false` and `workflow_completed: true`
|
||||||
- Complete workflow with positive closure message
|
- Complete workflow with positive closure message
|
||||||
|
|
||||||
## APPEND TO DOCUMENT:
|
## APPEND TO DOCUMENT:
|
||||||
|
|
||||||
When user selects 'C', append the content directly to `{output_folder}/brainstorming/brainstorming-session-{{date}}.md` using the structure from step 7.
|
When user selects 'C', append the content directly to `{brainstorming_session_output_file}` using the structure from step 7.
|
||||||
|
|
||||||
## SUCCESS METRICS:
|
## SUCCESS METRICS:
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -45,7 +45,9 @@ Load config from `{project-root}/_bmad/core/config.yaml` and resolve:
|
||||||
- `installed_path` = `{project-root}/_bmad/core/workflows/brainstorming`
|
- `installed_path` = `{project-root}/_bmad/core/workflows/brainstorming`
|
||||||
- `template_path` = `{installed_path}/template.md`
|
- `template_path` = `{installed_path}/template.md`
|
||||||
- `brain_techniques_path` = `{installed_path}/brain-methods.csv`
|
- `brain_techniques_path` = `{installed_path}/brain-methods.csv`
|
||||||
- `default_output_file` = `{output_folder}/brainstorming/brainstorming-session-{{date}}.md`
|
- `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.
|
||||||
- `context_file` = Optional context file path from workflow invocation for project-specific guidance
|
- `context_file` = Optional context file path from workflow invocation for project-specific guidance
|
||||||
- `advancedElicitationTask` = `{project-root}/_bmad/core/workflows/advanced-elicitation/workflow.xml`
|
- `advancedElicitationTask` = `{project-root}/_bmad/core/workflows/advanced-elicitation/workflow.xml`
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -6,7 +6,7 @@ description: '{{description}}'
|
||||||
You must fully embody this agent's persona and follow all activation instructions exactly as specified. NEVER break character until given an exit command.
|
You must fully embody this agent's persona and follow all activation instructions exactly as specified. NEVER break character until given an exit command.
|
||||||
|
|
||||||
<agent-activation CRITICAL="TRUE">
|
<agent-activation CRITICAL="TRUE">
|
||||||
1. LOAD the FULL agent file from @_bmad/{{module}}/agents/{{path}}
|
1. LOAD the FULL agent file from {project-root}/_bmad/{{module}}/agents/{{path}}
|
||||||
2. READ its entire contents - this contains the complete agent persona, menu, and instructions
|
2. READ its entire contents - this contains the complete agent persona, menu, and instructions
|
||||||
3. Execute ALL activation steps exactly as written in the agent file
|
3. Execute ALL activation steps exactly as written in the agent file
|
||||||
4. Follow the agent's persona and menu system precisely
|
4. Follow the agent's persona and menu system precisely
|
||||||
|
|
|
||||||
|
|
@ -6,9 +6,9 @@ description: '{{description}}'
|
||||||
IT IS CRITICAL THAT YOU FOLLOW THESE STEPS - while staying in character as the current agent persona you may have loaded:
|
IT IS CRITICAL THAT YOU FOLLOW THESE STEPS - while staying in character as the current agent persona you may have loaded:
|
||||||
|
|
||||||
<steps CRITICAL="TRUE">
|
<steps CRITICAL="TRUE">
|
||||||
1. Always LOAD the FULL @{project-root}/{{bmadFolderName}}/core/tasks/workflow.xml
|
1. Always LOAD the FULL {project-root}/{{bmadFolderName}}/core/tasks/workflow.xml
|
||||||
2. READ its entire contents - this is the CORE OS for EXECUTING the specific workflow-config @{project-root}/{{bmadFolderName}}/{{path}}
|
2. READ its entire contents - this is the CORE OS for EXECUTING the specific workflow-config {project-root}/{{bmadFolderName}}/{{path}}
|
||||||
3. Pass the yaml path @{project-root}/{{bmadFolderName}}/{{path}} as 'workflow-config' parameter to the workflow.xml instructions
|
3. Pass the yaml path {project-root}/{{bmadFolderName}}/{{path}} as 'workflow-config' parameter to the workflow.xml instructions
|
||||||
4. Follow workflow.xml instructions EXACTLY as written to process and follow the specific workflow config and its instructions
|
4. Follow workflow.xml instructions EXACTLY as written to process and follow the specific workflow config and its instructions
|
||||||
5. Save outputs after EACH section when generating any documents from templates
|
5. Save outputs after EACH section when generating any documents from templates
|
||||||
</steps>
|
</steps>
|
||||||
|
|
|
||||||
|
|
@ -3,4 +3,4 @@ name: '{{name}}'
|
||||||
description: '{{description}}'
|
description: '{{description}}'
|
||||||
---
|
---
|
||||||
|
|
||||||
IT IS CRITICAL THAT YOU FOLLOW THIS COMMAND: LOAD the FULL @{project-root}/{{bmadFolderName}}/{{path}}, READ its entire contents and follow its directions exactly!
|
IT IS CRITICAL THAT YOU FOLLOW THIS COMMAND: LOAD the FULL {project-root}/{{bmadFolderName}}/{{path}}, READ its entire contents and follow its directions exactly!
|
||||||
|
|
|
||||||
|
|
@ -5,8 +5,8 @@ description: '{{description}}'
|
||||||
IT IS CRITICAL THAT YOU FOLLOW THESE STEPS - while staying in character as the current agent persona you may have loaded:
|
IT IS CRITICAL THAT YOU FOLLOW THESE STEPS - while staying in character as the current agent persona you may have loaded:
|
||||||
|
|
||||||
<steps CRITICAL="TRUE">
|
<steps CRITICAL="TRUE">
|
||||||
1. Always LOAD the FULL @_bmad/core/tasks/workflow.xml
|
1. Always LOAD the FULL {project-root}/_bmad/core/tasks/workflow.xml
|
||||||
2. READ its entire contents - this is the CORE OS for EXECUTING the specific workflow-config @{{workflow_path}}
|
2. READ its entire contents - this is the CORE OS for EXECUTING the specific workflow-config {project-root}/{{workflow_path}}
|
||||||
3. Pass the yaml path {{workflow_path}} as 'workflow-config' parameter to the workflow.xml instructions
|
3. Pass the yaml path {{workflow_path}} as 'workflow-config' parameter to the workflow.xml instructions
|
||||||
4. Follow workflow.xml instructions EXACTLY as written to process and follow the specific workflow config and its instructions
|
4. Follow workflow.xml instructions EXACTLY as written to process and follow the specific workflow config and its instructions
|
||||||
5. Save outputs after EACH section when generating any documents from templates
|
5. Save outputs after EACH section when generating any documents from templates
|
||||||
|
|
|
||||||
|
|
@ -2,4 +2,4 @@
|
||||||
description: '{{description}}'
|
description: '{{description}}'
|
||||||
---
|
---
|
||||||
|
|
||||||
IT IS CRITICAL THAT YOU FOLLOW THIS COMMAND: LOAD the FULL @{{workflow_path}}, READ its entire contents and follow its directions exactly!
|
IT IS CRITICAL THAT YOU FOLLOW THIS COMMAND: LOAD the FULL {project-root}/{{workflow_path}}, READ its entire contents and follow its directions exactly!
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue