feat(workflows): enable auto-create for missing stories in batch-super-dev
Update batch-super-dev workflow to automatically create missing story files using greenfield workflow instead of prompting user for action. Changes: - Set auto_create_missing: true by default - Auto-create stories with /bmad_bmm_create-story (greenfield, no gap analysis) - Remove auto_run_gap_analysis (context-dependent, not automatic) - Update validate_stories to allow missing files through to auto-fix step - Add clear auto-fix prerequisites section with greenfield story creation - Bump workflow version to 3.1.0 - Bump package version to 6.1.0-Beta.4 Gap analysis usage clarified: - Greenfield (net-new features): Use create-story (no gap analysis) - Brownfield (adding to existing): Use create-story-with-gap-analysis Workflow now processes missing stories seamlessly without user intervention.
This commit is contained in:
parent
bacbcc3487
commit
c9425d7a26
|
|
@ -1,7 +1,7 @@
|
||||||
{
|
{
|
||||||
"$schema": "https://json.schemastore.org/package.json",
|
"$schema": "https://json.schemastore.org/package.json",
|
||||||
"name": "@jonahschulte/bmad-method",
|
"name": "@jonahschulte/bmad-method",
|
||||||
"version": "6.1.0-Beta.3",
|
"version": "6.1.0-Beta.4",
|
||||||
"description": "Breakthrough Method of Agile AI-driven Development (Enhanced with TDD, intelligent multi-agent review, and production-hardened enforcement)",
|
"description": "Breakthrough Method of Agile AI-driven Development (Enhanced with TDD, intelligent multi-agent review, and production-hardened enforcement)",
|
||||||
"keywords": [
|
"keywords": [
|
||||||
"agile",
|
"agile",
|
||||||
|
|
|
||||||
|
|
@ -19,7 +19,7 @@ Orchestrator coordinates. Agents do implementation. Orchestrator does reconcilia
|
||||||
|
|
||||||
<config>
|
<config>
|
||||||
name: batch-super-dev
|
name: batch-super-dev
|
||||||
version: 3.0.0
|
version: 3.1.0
|
||||||
|
|
||||||
modes:
|
modes:
|
||||||
sequential: {description: "Process one-by-one in this session", recommended_for: "gap analysis"}
|
sequential: {description: "Process one-by-one in this session", recommended_for: "gap analysis"}
|
||||||
|
|
@ -29,6 +29,9 @@ complexity_routing:
|
||||||
micro: {max_tasks: 3, max_files: 5, skip_review: true}
|
micro: {max_tasks: 3, max_files: 5, skip_review: true}
|
||||||
standard: {max_tasks: 15, max_files: 30, full_pipeline: true}
|
standard: {max_tasks: 15, max_files: 30, full_pipeline: true}
|
||||||
complex: {min_tasks: 16, keywords: [auth, security, payment, migration], enhanced_review: true}
|
complex: {min_tasks: 16, keywords: [auth, security, payment, migration], enhanced_review: true}
|
||||||
|
|
||||||
|
defaults:
|
||||||
|
auto_create_missing: true # Automatically create missing story files using greenfield workflow
|
||||||
</config>
|
</config>
|
||||||
|
|
||||||
<execution_context>
|
<execution_context>
|
||||||
|
|
@ -89,7 +92,7 @@ Legend: ✅ ready | ❌ missing | 🔄 done but not tracked
|
||||||
For each story with existing file:
|
For each story with existing file:
|
||||||
1. Read story file
|
1. Read story file
|
||||||
2. Check for 12 BMAD sections (Business Context, Acceptance Criteria, Tasks, etc.)
|
2. Check for 12 BMAD sections (Business Context, Acceptance Criteria, Tasks, etc.)
|
||||||
3. If invalid: mark for regeneration or skip
|
3. If invalid: mark for regeneration
|
||||||
|
|
||||||
```
|
```
|
||||||
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
||||||
|
|
@ -97,7 +100,7 @@ For each story with existing file:
|
||||||
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
||||||
```
|
```
|
||||||
|
|
||||||
Skip stories with missing files (status ready-for-dev but no file).
|
**Note:** Stories with missing files will be auto-created in the execution step.
|
||||||
</step>
|
</step>
|
||||||
|
|
||||||
<step name="score_complexity">
|
<step name="score_complexity">
|
||||||
|
|
@ -172,51 +175,100 @@ For parallel: proceed to `execute_parallel`
|
||||||
|
|
||||||
For each selected story:
|
For each selected story:
|
||||||
|
|
||||||
**Step A: Invoke super-dev-pipeline**
|
**Step A: Auto-Fix Prerequisites**
|
||||||
```
|
```
|
||||||
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
||||||
📦 Story {{index}}/{{total}}: {{story_key}}
|
📦 Story {{index}}/{{total}}: {{story_key}}
|
||||||
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
||||||
```
|
```
|
||||||
|
|
||||||
|
```bash
|
||||||
|
STORY_FILE="docs/sprint-artifacts/{{story_key}}.md"
|
||||||
|
|
||||||
|
echo "🔍 Checking prerequisites..."
|
||||||
|
```
|
||||||
|
|
||||||
|
**Check 1: Story file exists?**
|
||||||
|
```bash
|
||||||
|
if [ ! -f "$STORY_FILE" ]; then
|
||||||
|
echo "⚠️ Creating greenfield story (no gap analysis)..."
|
||||||
|
fi
|
||||||
|
```
|
||||||
|
|
||||||
|
If missing, auto-create using greenfield workflow:
|
||||||
|
- Use Skill tool: `/bmad_bmm_create-story {{story_key}}`
|
||||||
|
- Verify created: `[ -f "$STORY_FILE" ]`
|
||||||
|
|
||||||
|
```bash
|
||||||
|
echo "✅ Prerequisites satisfied"
|
||||||
|
```
|
||||||
|
|
||||||
|
**Step B: Invoke super-dev-pipeline**
|
||||||
|
|
||||||
Use super-dev-pipeline workflow with:
|
Use super-dev-pipeline workflow with:
|
||||||
- mode: batch
|
- mode: batch
|
||||||
- story_key: {{story_key}}
|
- story_key: {{story_key}}
|
||||||
- complexity_level: {{complexity}}
|
- complexity_level: {{complexity}}
|
||||||
|
|
||||||
**Step B: Reconcile (orchestrator does this directly)**
|
**Step C: Reconcile Using Completion Artifacts (orchestrator does this directly)**
|
||||||
|
|
||||||
After super-dev-pipeline completes:
|
After super-dev-pipeline completes:
|
||||||
|
|
||||||
1. Get what was built:
|
**C1. Load Fixer completion artifact:**
|
||||||
```bash
|
```bash
|
||||||
git log -3 --oneline | grep "{{story_key}}"
|
FIXER_COMPLETION="docs/sprint-artifacts/completions/{{story_key}}-fixer.json"
|
||||||
git diff HEAD~1 --name-only | head -20
|
|
||||||
|
if [ ! -f "$FIXER_COMPLETION" ]; then
|
||||||
|
echo "❌ WARNING: No completion artifact, using fallback"
|
||||||
|
# Fallback to git diff if completion artifact missing
|
||||||
|
else
|
||||||
|
echo "✅ Using completion artifact"
|
||||||
|
fi
|
||||||
```
|
```
|
||||||
|
|
||||||
2. Read story file, check off tasks:
|
Use Read tool on: `docs/sprint-artifacts/completions/{{story_key}}-fixer.json`
|
||||||
```
|
|
||||||
Use Edit tool: "- [ ]" → "- [x]" for completed tasks
|
**C2. Parse completion data:**
|
||||||
|
Extract from JSON:
|
||||||
|
- files_created and files_modified arrays
|
||||||
|
- git_commit hash
|
||||||
|
- quality_checks results
|
||||||
|
- tests counts
|
||||||
|
- fixes_applied list
|
||||||
|
|
||||||
|
**C3. Read story file:**
|
||||||
|
Use Read tool: `docs/sprint-artifacts/{{story_key}}.md`
|
||||||
|
|
||||||
|
**C4. Check off completed tasks:**
|
||||||
|
For each task:
|
||||||
|
- Match task to files in completion artifact
|
||||||
|
- If file was created/modified: check off task
|
||||||
|
- Use Edit tool: `"- [ ]"` → `"- [x]"`
|
||||||
|
|
||||||
|
**C5. Fill Dev Agent Record:**
|
||||||
|
Use Edit tool with data from completion.json:
|
||||||
|
```markdown
|
||||||
|
### Dev Agent Record
|
||||||
|
**Implementation Date:** {{timestamp from json}}
|
||||||
|
**Agent Model:** Claude Sonnet 4.5 (multi-agent pipeline)
|
||||||
|
**Git Commit:** {{git_commit from json}}
|
||||||
|
|
||||||
|
**Files:** {{files_created + files_modified from json}}
|
||||||
|
**Tests:** {{tests.passing}}/{{tests.total}} passing ({{tests.coverage}}%)
|
||||||
|
**Issues Fixed:** {{issues_fixed.total}} issues
|
||||||
```
|
```
|
||||||
|
|
||||||
3. Fill Dev Agent Record:
|
**C6. Verify updates:**
|
||||||
```
|
|
||||||
Use Edit tool to add implementation date, files, notes
|
|
||||||
```
|
|
||||||
|
|
||||||
4. Verify:
|
|
||||||
```bash
|
```bash
|
||||||
CHECKED=$(grep -c "^- \[x\]" "$STORY_FILE")
|
CHECKED=$(grep -c "^- \[x\]" "$STORY_FILE")
|
||||||
[ "$CHECKED" -gt 0 ] || { echo "❌ BLOCKER: Zero tasks checked"; exit 1; }
|
[ "$CHECKED" -gt 0 ] || { echo "❌ Zero tasks checked"; exit 1; }
|
||||||
echo "✅ Reconciled: $CHECKED tasks"
|
echo "✅ Reconciled: $CHECKED tasks"
|
||||||
```
|
```
|
||||||
|
|
||||||
5. Update sprint-status.yaml:
|
**C7. Update sprint-status.yaml:**
|
||||||
```
|
Use Edit tool: `"{{story_key}}: ready-for-dev"` → `"{{story_key}}: done"`
|
||||||
Use Edit tool: "{{story_key}}: ready-for-dev" → "{{story_key}}: done"
|
|
||||||
```
|
|
||||||
|
|
||||||
**Step C: Next story or complete**
|
**Step D: Next story or complete**
|
||||||
- If more stories: continue loop
|
- If more stories: continue loop
|
||||||
- If complete: proceed to `summary`
|
- If complete: proceed to `summary`
|
||||||
</step>
|
</step>
|
||||||
|
|
|
||||||
|
|
@ -19,7 +19,7 @@ Orchestrator coordinates. Agents do implementation. Orchestrator does reconcilia
|
||||||
|
|
||||||
<config>
|
<config>
|
||||||
name: batch-super-dev
|
name: batch-super-dev
|
||||||
version: 3.0.0
|
version: 3.1.0
|
||||||
|
|
||||||
modes:
|
modes:
|
||||||
sequential: {description: "Process one-by-one in this session", recommended_for: "gap analysis"}
|
sequential: {description: "Process one-by-one in this session", recommended_for: "gap analysis"}
|
||||||
|
|
@ -29,6 +29,9 @@ complexity_routing:
|
||||||
micro: {max_tasks: 3, max_files: 5, skip_review: true}
|
micro: {max_tasks: 3, max_files: 5, skip_review: true}
|
||||||
standard: {max_tasks: 15, max_files: 30, full_pipeline: true}
|
standard: {max_tasks: 15, max_files: 30, full_pipeline: true}
|
||||||
complex: {min_tasks: 16, keywords: [auth, security, payment, migration], enhanced_review: true}
|
complex: {min_tasks: 16, keywords: [auth, security, payment, migration], enhanced_review: true}
|
||||||
|
|
||||||
|
defaults:
|
||||||
|
auto_create_missing: true # Automatically create missing story files using greenfield workflow
|
||||||
</config>
|
</config>
|
||||||
|
|
||||||
<execution_context>
|
<execution_context>
|
||||||
|
|
@ -89,7 +92,7 @@ Legend: ✅ ready | ❌ missing | 🔄 done but not tracked
|
||||||
For each story with existing file:
|
For each story with existing file:
|
||||||
1. Read story file
|
1. Read story file
|
||||||
2. Check for 12 BMAD sections (Business Context, Acceptance Criteria, Tasks, etc.)
|
2. Check for 12 BMAD sections (Business Context, Acceptance Criteria, Tasks, etc.)
|
||||||
3. If invalid: mark for regeneration or skip
|
3. If invalid: mark for regeneration
|
||||||
|
|
||||||
```
|
```
|
||||||
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
||||||
|
|
@ -97,7 +100,7 @@ For each story with existing file:
|
||||||
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
||||||
```
|
```
|
||||||
|
|
||||||
Skip stories with missing files (status ready-for-dev but no file).
|
**Note:** Stories with missing files will be auto-created in the execution step.
|
||||||
</step>
|
</step>
|
||||||
|
|
||||||
<step name="score_complexity">
|
<step name="score_complexity">
|
||||||
|
|
@ -188,29 +191,16 @@ echo "🔍 Checking prerequisites..."
|
||||||
**Check 1: Story file exists?**
|
**Check 1: Story file exists?**
|
||||||
```bash
|
```bash
|
||||||
if [ ! -f "$STORY_FILE" ]; then
|
if [ ! -f "$STORY_FILE" ]; then
|
||||||
echo "⚠️ Creating story file..."
|
echo "⚠️ Creating greenfield story (no gap analysis)..."
|
||||||
fi
|
fi
|
||||||
```
|
```
|
||||||
|
|
||||||
If missing, auto-create:
|
If missing, auto-create using greenfield workflow:
|
||||||
- Use Skill tool: `/bmad_bmm_create-story {{story_key}}`
|
- Use Skill tool: `/bmad_bmm_create-story {{story_key}}`
|
||||||
- Verify created: `[ -f "$STORY_FILE" ]`
|
- Verify created: `[ -f "$STORY_FILE" ]`
|
||||||
|
|
||||||
**Check 2: Gap analysis complete?**
|
|
||||||
```bash
|
```bash
|
||||||
GAP_COUNT=$(grep -c "^✅\|^❌" "$STORY_FILE" || echo "0")
|
echo "✅ Prerequisites satisfied"
|
||||||
|
|
||||||
if [ "$GAP_COUNT" -eq 0 ]; then
|
|
||||||
echo "⚠️ Running gap analysis..."
|
|
||||||
fi
|
|
||||||
```
|
|
||||||
|
|
||||||
If missing, auto-run:
|
|
||||||
- Use Skill tool: `/bmad_bmm_gap-analysis {{story_key}}`
|
|
||||||
- Verify markers: `GAP_COUNT=$(grep -c "^✅\|^❌" "$STORY_FILE")`
|
|
||||||
|
|
||||||
```bash
|
|
||||||
echo "✅ Prerequisites satisfied ($GAP_COUNT gaps analyzed)"
|
|
||||||
```
|
```
|
||||||
|
|
||||||
**Step B: Invoke super-dev-pipeline**
|
**Step B: Invoke super-dev-pipeline**
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue