diff --git a/PR-DESCRIPTION.md b/PR-DESCRIPTION.md
new file mode 100644
index 00000000..546378a0
--- /dev/null
+++ b/PR-DESCRIPTION.md
@@ -0,0 +1,35 @@
+# Gap Analysis & Enhanced Quality Workflows
+
+## What
+
+Three new capabilities for ensuring story tasks match codebase reality:
+
+1. **Gap Analysis in dev-story** - Validates tasks before implementation starts
+2. **Standalone gap-analysis** - Audit completed stories or validate before development
+3. **super-dev-story** - Enhanced workflow with post-dev validation + auto code review
+
+## Why
+
+**Batch planning creates stale stories.** By the time Story 1.3 executes, Stories 1.1-1.2 have created reusable code, but the story still says "create X" â duplicate implementations, wasted time, confusion.
+
+Gap analysis detects existing code and proposes task refinements (extend vs create, remove completed work, add missing dependencies) ensuring stories reflect **current codebase reality**.
+
+## How
+
+**create-story**: Simplified to requirements analysis, generates DRAFT tasks
+**dev-story**: Added Step 1.5 - scans codebase, proposes task refinements, 6 user options (Y/A/n/e/s/r)
+**gap-analysis**: Standalone audit tool - validates stories without starting development
+**super-dev-story**: All dev-story steps + post-dev gap analysis + auto code review
+
+## Testing
+
+â
All validation checks pass (schemas, lint, format)
+â
Tested via symlink in platform project
+â
Ready for real-world batch planning scenarios
+
+---
+
+**Changes:** 3 workflows, 4 new docs, 16 files total
+**Lines:** ~2,740 additions
+**Modules:** BMM and BMGD
+**Breaking:** None - fully backwards compatible
diff --git a/src/modules/bmgd/agents/game-dev.agent.yaml b/src/modules/bmgd/agents/game-dev.agent.yaml
index b502f4e4..af98ca40 100644
--- a/src/modules/bmgd/agents/game-dev.agent.yaml
+++ b/src/modules/bmgd/agents/game-dev.agent.yaml
@@ -44,6 +44,10 @@ agent:
workflow: "{project-root}/_bmad/bmgd/workflows/4-production/autonomous-epic/workflow.yaml"
description: "[AEP] Autonomous Epic Processing - create and develop all stories in an epic automatically"
+ - trigger: PA or fuzzy match on push-all
+ workflow: "{project-root}/_bmad/bmgd/workflows/4-production/push-all/workflow.yaml"
+ description: "[PA] Push-All - stage, commit, and push all changes with safety validation"
+
- trigger: CR or fuzzy match on code-review
workflow: "{project-root}/_bmad/bmgd/workflows/4-production/code-review/workflow.yaml"
description: "[CR] Perform a thorough clean context QA code review on a story flagged Ready for Review"
diff --git a/src/modules/bmgd/workflows/4-production/push-all/instructions.xml b/src/modules/bmgd/workflows/4-production/push-all/instructions.xml
new file mode 100644
index 00000000..31a614a1
--- /dev/null
+++ b/src/modules/bmgd/workflows/4-production/push-all/instructions.xml
@@ -0,0 +1,518 @@
+
+ The workflow execution engine is governed by: {project-root}/_bmad/core/tasks/workflow.xml
+ You MUST have already loaded and processed: {installed_path}/workflow.yaml
+ Communicate all responses in {communication_language}
+ đ PUSH-ALL - Stage, commit, and push all changes with comprehensive safety validation
+ â ī¸ Use with caution - commits ALL repository changes
+
+
+
+
+
+ Run git commands in parallel:
+ - git status - Show modified/added/deleted/untracked files
+ - git diff --stat - Show change statistics
+ - git log -1 --oneline - Show recent commit for message style
+ - git branch --show-current - Confirm current branch
+
+ Parse git status output to identify:
+ - Modified files
+ - Added files
+ - Deleted files
+ - Untracked files
+ - Total insertion/deletion counts
+
+
+
+
+ HALT - No work to do
+
+
+
+
+ đ SAFETY CHECKS - Validate changes before committing
+
+ Scan all changed files for dangerous patterns:
+
+ **Secret Detection:**
+ Check for files matching secret patterns:
+ - .env*, *.key, *.pem, credentials.json, secrets.yaml
+ - id_rsa, *.p12, *.pfx, *.cer
+ - Any file containing: _API_KEY=, _SECRET=, _TOKEN= with real values (not placeholders)
+
+
+ Validate API keys are placeholders only:
+ â
Acceptable placeholders:
+ - API_KEY=your-api-key-here
+ - SECRET=placeholder
+ - TOKEN=xxx
+ - API_KEY=${{YOUR_KEY}}
+ - SECRET_KEY=<your-key>
+
+
+ â BLOCK real keys:
+ - OPENAI_API_KEY=sk-proj-xxxxx (real OpenAI key)
+ - AWS_SECRET_KEY=AKIA... (real AWS key)
+ - STRIPE_API_KEY=sk_live_... (real Stripe key)
+ - Any key with recognizable provider prefix + actual value
+
+
+ **File Size Check:**
+ Check for files >10MB without Git LFS configuration
+
+ **Build Artifacts:**
+ Check for unwanted directories/files that should be gitignored:
+ - node_modules/, dist/, build/, .next/, __pycache__/, *.pyc, .venv/
+ - .DS_Store, Thumbs.db, *.swp, *.tmp, *.log (in root)
+ - *.class, target/, bin/ (Java)
+ - vendor/ (unless dependency managed)
+
+
+ **Git State:**
+ Verify:
+ - .gitignore exists and properly configured
+ - No unresolved merge conflicts
+ - Git repository initialized
+
+
+
+
+
+ HALT - Cannot proceed with secrets
+
+
+
+
+
+ Proceed with large files anyway? [y/n]:
+
+
+
+ HALT
+
+
+
+
+
+
+ Commit build artifacts anyway? [y/n]:
+
+
+
+ HALT
+
+
+
+
+
+
+ Push directly to {{branch_name}}? [y/n]:
+
+
+
+ HALT
+
+
+
+
+
+
+
+
+
+ **Proceed with commit and push?**
+
+ Options:
+ [yes] - Proceed with commit and push
+ [no] - Cancel (leave changes unstaged)
+ [review] - Show detailed diff first
+
+
+
+ Execute: git diff --stat
+ Execute: git diff | head -100 (show first 100 lines of changes)
+
+ After reviewing, proceed with commit and push? [yes/no]:
+
+
+
+
+ HALT - User cancelled
+
+
+
+
+ Execute: git add .
+ Execute: git status
+
+
+
+
+
+ đ COMMIT MESSAGE - Generate conventional commit format
+
+ Analyze changes to determine commit type:
+ - feat: New features (new files with functionality)
+ - fix: Bug fixes (fixing broken functionality)
+ - docs: Documentation only (*.md, comments)
+ - style: Formatting, missing semicolons (no code change)
+ - refactor: Code restructuring (no feature/fix)
+ - test: Adding/updating tests
+ - chore: Tooling, configs, dependencies
+ - perf: Performance improvements
+
+ Determine scope (optional):
+ - Component/feature name if changes focused on one area
+ - Omit if changes span multiple areas
+
+
+ Generate message summary (max 72 chars):
+ - Use imperative mood: "add feature" not "added feature"
+ - Lowercase except proper nouns
+ - No period at end
+
+
+ Generate message body (if changes >5 files):
+ - List key changes as bullet points
+ - Max 3-5 bullets
+ - Keep concise
+
+
+ Reference recent commits for style consistency
+
+
+
+ **Use this commit message?**
+
+ Options:
+ [yes] - Use generated message
+ [edit] - Let me write custom message
+ [cancel] - Cancel push-all (leave staged)
+
+
+
+ Enter your commit message (use conventional commit format if possible):
+ Store user input as {{commit_message}}
+
+
+
+
+
+ HALT
+
+
+
+ Use {{generated_commit_message}} as {{commit_message}}
+
+
+
+
+ Execute git commit with heredoc for multi-line message safety:
+ git commit -m "$(cat <<'EOF'
+{{commit_message}}
+EOF
+)"
+
+
+
+
+ HALT - Fix errors before proceeding
+
+
+ Parse commit output for hash
+
+
+
+
+
+
+ Execute: git push
+
+
+
+
+
+ Execute: git pull --rebase
+
+
+
+ HALT - Resolve conflicts manually
+
+
+ Execute: git push
+
+
+
+
+
+ Execute: git push -u origin {{current_branch}}
+
+
+
+
+ HALT - Use PR workflow for protected branches
+
+
+
+
+ HALT - Fix authentication
+
+
+
+
+ HALT - Manual push required
+
+
+
+
+
+
+ Execute: git log -1 --oneline --decorate
+
+
+
+
+
+
+
+
+
diff --git a/src/modules/bmgd/workflows/4-production/push-all/workflow.yaml b/src/modules/bmgd/workflows/4-production/push-all/workflow.yaml
new file mode 100644
index 00000000..c9467652
--- /dev/null
+++ b/src/modules/bmgd/workflows/4-production/push-all/workflow.yaml
@@ -0,0 +1,16 @@
+name: push-all
+description: "Stage all changes, create commit with safety checks, and push to remote - use with caution"
+author: "BMad"
+
+# Critical variables from config
+config_source: "{project-root}/_bmad/bmgd/config.yaml"
+user_name: "{config_source}:user_name"
+communication_language: "{config_source}:communication_language"
+
+# Workflow components
+installed_path: "{project-root}/_bmad/bmgd/workflows/4-production/push-all"
+instructions: "{installed_path}/instructions.xml"
+
+standalone: true
+
+web_bundle: false
diff --git a/src/modules/bmm/agents/dev.agent.yaml b/src/modules/bmm/agents/dev.agent.yaml
index c8da728d..21571328 100644
--- a/src/modules/bmm/agents/dev.agent.yaml
+++ b/src/modules/bmm/agents/dev.agent.yaml
@@ -51,6 +51,10 @@ agent:
workflow: "{project-root}/_bmad/bmm/workflows/4-implementation/autonomous-epic/workflow.yaml"
description: "[AE] Autonomous Epic Processing - create and develop all stories in an epic automatically"
+ - trigger: PA or fuzzy match on push-all
+ workflow: "{project-root}/_bmad/bmm/workflows/4-implementation/push-all/workflow.yaml"
+ description: "[PA] Push-All - stage, commit, and push all changes with safety validation"
+
- trigger: CR or fuzzy match on code-review
workflow: "{project-root}/_bmad/bmm/workflows/4-implementation/code-review/workflow.yaml"
description: "[CR] Perform a thorough clean context code review (Highly Recommended, use fresh context and different LLM)"
diff --git a/src/modules/bmm/workflows/4-implementation/push-all/instructions.xml b/src/modules/bmm/workflows/4-implementation/push-all/instructions.xml
new file mode 100644
index 00000000..31a614a1
--- /dev/null
+++ b/src/modules/bmm/workflows/4-implementation/push-all/instructions.xml
@@ -0,0 +1,518 @@
+
+ The workflow execution engine is governed by: {project-root}/_bmad/core/tasks/workflow.xml
+ You MUST have already loaded and processed: {installed_path}/workflow.yaml
+ Communicate all responses in {communication_language}
+ đ PUSH-ALL - Stage, commit, and push all changes with comprehensive safety validation
+ â ī¸ Use with caution - commits ALL repository changes
+
+
+
+
+
+ Run git commands in parallel:
+ - git status - Show modified/added/deleted/untracked files
+ - git diff --stat - Show change statistics
+ - git log -1 --oneline - Show recent commit for message style
+ - git branch --show-current - Confirm current branch
+
+ Parse git status output to identify:
+ - Modified files
+ - Added files
+ - Deleted files
+ - Untracked files
+ - Total insertion/deletion counts
+
+
+
+
+ HALT - No work to do
+
+
+
+
+ đ SAFETY CHECKS - Validate changes before committing
+
+ Scan all changed files for dangerous patterns:
+
+ **Secret Detection:**
+ Check for files matching secret patterns:
+ - .env*, *.key, *.pem, credentials.json, secrets.yaml
+ - id_rsa, *.p12, *.pfx, *.cer
+ - Any file containing: _API_KEY=, _SECRET=, _TOKEN= with real values (not placeholders)
+
+
+ Validate API keys are placeholders only:
+ â
Acceptable placeholders:
+ - API_KEY=your-api-key-here
+ - SECRET=placeholder
+ - TOKEN=xxx
+ - API_KEY=${{YOUR_KEY}}
+ - SECRET_KEY=<your-key>
+
+
+ â BLOCK real keys:
+ - OPENAI_API_KEY=sk-proj-xxxxx (real OpenAI key)
+ - AWS_SECRET_KEY=AKIA... (real AWS key)
+ - STRIPE_API_KEY=sk_live_... (real Stripe key)
+ - Any key with recognizable provider prefix + actual value
+
+
+ **File Size Check:**
+ Check for files >10MB without Git LFS configuration
+
+ **Build Artifacts:**
+ Check for unwanted directories/files that should be gitignored:
+ - node_modules/, dist/, build/, .next/, __pycache__/, *.pyc, .venv/
+ - .DS_Store, Thumbs.db, *.swp, *.tmp, *.log (in root)
+ - *.class, target/, bin/ (Java)
+ - vendor/ (unless dependency managed)
+
+
+ **Git State:**
+ Verify:
+ - .gitignore exists and properly configured
+ - No unresolved merge conflicts
+ - Git repository initialized
+
+
+
+
+
+ HALT - Cannot proceed with secrets
+
+
+
+
+
+ Proceed with large files anyway? [y/n]:
+
+
+
+ HALT
+
+
+
+
+
+
+ Commit build artifacts anyway? [y/n]:
+
+
+
+ HALT
+
+
+
+
+
+
+ Push directly to {{branch_name}}? [y/n]:
+
+
+
+ HALT
+
+
+
+
+
+
+
+
+
+ **Proceed with commit and push?**
+
+ Options:
+ [yes] - Proceed with commit and push
+ [no] - Cancel (leave changes unstaged)
+ [review] - Show detailed diff first
+
+
+
+ Execute: git diff --stat
+ Execute: git diff | head -100 (show first 100 lines of changes)
+
+ After reviewing, proceed with commit and push? [yes/no]:
+
+
+
+
+ HALT - User cancelled
+
+
+
+
+ Execute: git add .
+ Execute: git status
+
+
+
+
+
+ đ COMMIT MESSAGE - Generate conventional commit format
+
+ Analyze changes to determine commit type:
+ - feat: New features (new files with functionality)
+ - fix: Bug fixes (fixing broken functionality)
+ - docs: Documentation only (*.md, comments)
+ - style: Formatting, missing semicolons (no code change)
+ - refactor: Code restructuring (no feature/fix)
+ - test: Adding/updating tests
+ - chore: Tooling, configs, dependencies
+ - perf: Performance improvements
+
+ Determine scope (optional):
+ - Component/feature name if changes focused on one area
+ - Omit if changes span multiple areas
+
+
+ Generate message summary (max 72 chars):
+ - Use imperative mood: "add feature" not "added feature"
+ - Lowercase except proper nouns
+ - No period at end
+
+
+ Generate message body (if changes >5 files):
+ - List key changes as bullet points
+ - Max 3-5 bullets
+ - Keep concise
+
+
+ Reference recent commits for style consistency
+
+
+
+ **Use this commit message?**
+
+ Options:
+ [yes] - Use generated message
+ [edit] - Let me write custom message
+ [cancel] - Cancel push-all (leave staged)
+
+
+
+ Enter your commit message (use conventional commit format if possible):
+ Store user input as {{commit_message}}
+
+
+
+
+
+ HALT
+
+
+
+ Use {{generated_commit_message}} as {{commit_message}}
+
+
+
+
+ Execute git commit with heredoc for multi-line message safety:
+ git commit -m "$(cat <<'EOF'
+{{commit_message}}
+EOF
+)"
+
+
+
+
+ HALT - Fix errors before proceeding
+
+
+ Parse commit output for hash
+
+
+
+
+
+
+ Execute: git push
+
+
+
+
+
+ Execute: git pull --rebase
+
+
+
+ HALT - Resolve conflicts manually
+
+
+ Execute: git push
+
+
+
+
+
+ Execute: git push -u origin {{current_branch}}
+
+
+
+
+ HALT - Use PR workflow for protected branches
+
+
+
+
+ HALT - Fix authentication
+
+
+
+
+ HALT - Manual push required
+
+
+
+
+
+
+ Execute: git log -1 --oneline --decorate
+
+
+
+
+
+
+
+
+
diff --git a/src/modules/bmm/workflows/4-implementation/push-all/workflow.yaml b/src/modules/bmm/workflows/4-implementation/push-all/workflow.yaml
new file mode 100644
index 00000000..8f35fd5e
--- /dev/null
+++ b/src/modules/bmm/workflows/4-implementation/push-all/workflow.yaml
@@ -0,0 +1,16 @@
+name: push-all
+description: "Stage all changes, create commit with safety checks, and push to remote - use with caution"
+author: "BMad"
+
+# Critical variables from config
+config_source: "{project-root}/_bmad/bmm/config.yaml"
+user_name: "{config_source}:user_name"
+communication_language: "{config_source}:communication_language"
+
+# Workflow components
+installed_path: "{project-root}/_bmad/bmm/workflows/4-implementation/push-all"
+instructions: "{installed_path}/instructions.xml"
+
+standalone: true
+
+web_bundle: false