siesa-agents 2.1.78 → 2.1.80
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bmad/bmm/config.yaml +3 -5
- package/claude/agent-memory/sa-quick-dev/company-standards.md +1 -1
- package/claude/agents/sa-code-review.md +1 -1
- package/claude/agents/sa-create-story.md +1 -1
- package/claude/agents/sa-dev-story.md +1 -1
- package/claude/agents/sa-tea-atdd-run.md +76 -0
- package/claude/agents/sa-tea-atdd.md +40 -0
- package/claude/agents/sa-tea-automate.md +39 -0
- package/claude/agents/sa-tea-framework.md +36 -0
- package/claude/agents/sa-tea-nfr.md +40 -0
- package/claude/agents/sa-tea-review.md +44 -0
- package/claude/agents/sa-tea-test-design.md +37 -0
- package/claude/agents/sa-tea-trace.md +41 -0
- package/claude/commands/sa-quick-dev.md +233 -27
- package/claude/skills/bmad-advanced-elicitation/SKILL.md +142 -0
- package/claude/skills/bmad-agent-analyst/SKILL.md +74 -0
- package/claude/skills/bmad-agent-analyst/customize.toml +90 -0
- package/claude/skills/bmad-agent-architect/SKILL.md +74 -0
- package/claude/skills/bmad-agent-architect/customize.toml +65 -0
- package/claude/skills/bmad-agent-dev/SKILL.md +74 -0
- package/claude/skills/bmad-agent-dev/customize.toml +90 -0
- package/claude/skills/bmad-agent-pm/SKILL.md +74 -0
- package/claude/skills/bmad-agent-pm/customize.toml +85 -0
- package/claude/skills/bmad-agent-tech-writer/SKILL.md +74 -0
- package/claude/skills/bmad-agent-tech-writer/customize.toml +81 -0
- package/claude/skills/bmad-agent-tech-writer/explain-concept.md +20 -0
- package/claude/skills/bmad-agent-tech-writer/mermaid-gen.md +20 -0
- package/claude/skills/bmad-agent-tech-writer/validate-doc.md +19 -0
- package/claude/skills/bmad-agent-tech-writer/write-document.md +20 -0
- package/claude/skills/bmad-agent-ux-designer/SKILL.md +74 -0
- package/claude/skills/bmad-agent-ux-designer/customize.toml +60 -0
- package/claude/skills/bmad-brainstorming/SKILL.md +6 -0
- package/claude/skills/bmad-brainstorming/steps/step-01-session-setup.md +214 -0
- package/claude/skills/bmad-brainstorming/steps/step-01b-continue.md +124 -0
- package/claude/skills/bmad-brainstorming/steps/step-02a-user-selected.md +229 -0
- package/claude/skills/bmad-brainstorming/steps/step-02b-ai-recommended.md +239 -0
- package/claude/skills/bmad-brainstorming/steps/step-02c-random-selection.md +211 -0
- package/claude/skills/bmad-brainstorming/steps/step-02d-progressive-flow.md +266 -0
- package/claude/skills/bmad-brainstorming/steps/step-03-technique-execution.md +401 -0
- package/claude/skills/bmad-brainstorming/steps/step-04-idea-organization.md +305 -0
- package/claude/skills/bmad-brainstorming/workflow.md +53 -0
- package/claude/skills/bmad-check-implementation-readiness/SKILL.md +91 -0
- package/claude/skills/bmad-check-implementation-readiness/customize.toml +41 -0
- package/claude/skills/bmad-check-implementation-readiness/steps/step-01-document-discovery.md +179 -0
- package/claude/skills/bmad-check-implementation-readiness/steps/step-02-prd-analysis.md +168 -0
- package/claude/skills/bmad-check-implementation-readiness/steps/step-03-epic-coverage-validation.md +169 -0
- package/claude/skills/bmad-check-implementation-readiness/steps/step-04-ux-alignment.md +129 -0
- package/claude/skills/bmad-check-implementation-readiness/steps/step-05-epic-quality-review.md +241 -0
- package/claude/skills/bmad-check-implementation-readiness/steps/step-06-final-assessment.md +132 -0
- package/claude/skills/bmad-checkpoint-preview/SKILL.md +68 -0
- package/claude/skills/bmad-checkpoint-preview/customize.toml +41 -0
- package/claude/skills/bmad-checkpoint-preview/generate-trail.md +38 -0
- package/claude/skills/bmad-checkpoint-preview/step-01-orientation.md +105 -0
- package/claude/skills/bmad-checkpoint-preview/step-02-walkthrough.md +89 -0
- package/claude/skills/bmad-checkpoint-preview/step-03-detail-pass.md +106 -0
- package/claude/skills/bmad-checkpoint-preview/step-04-testing.md +74 -0
- package/claude/skills/bmad-checkpoint-preview/step-05-wrapup.md +30 -0
- package/claude/skills/bmad-code-review/SKILL.md +90 -0
- package/claude/skills/bmad-code-review/customize.toml +41 -0
- package/claude/skills/bmad-code-review/steps/step-01-gather-context.md +85 -0
- package/claude/skills/bmad-code-review/steps/step-02-review.md +35 -0
- package/claude/skills/bmad-code-review/steps/step-03-triage.md +49 -0
- package/claude/skills/bmad-code-review/steps/step-04-present.md +132 -0
- package/claude/skills/bmad-correct-course/SKILL.md +301 -0
- package/claude/skills/bmad-correct-course/checklist.md +288 -0
- package/claude/skills/bmad-correct-course/customize.toml +41 -0
- package/claude/skills/bmad-create-architecture/SKILL.md +74 -0
- package/claude/skills/bmad-create-architecture/customize.toml +41 -0
- package/claude/skills/bmad-create-architecture/data/domain-complexity.csv +13 -0
- package/claude/skills/bmad-create-architecture/data/project-types.csv +7 -0
- package/claude/skills/bmad-create-architecture/steps/step-01-init.md +153 -0
- package/claude/skills/bmad-create-architecture/steps/step-01b-continue.md +173 -0
- package/claude/skills/bmad-create-architecture/steps/step-02-context.md +224 -0
- package/claude/skills/bmad-create-architecture/steps/step-03-starter.md +329 -0
- package/claude/skills/bmad-create-architecture/steps/step-04-decisions.md +318 -0
- package/claude/skills/bmad-create-architecture/steps/step-05-patterns.md +359 -0
- package/claude/skills/bmad-create-architecture/steps/step-06-structure.md +379 -0
- package/claude/skills/bmad-create-architecture/steps/step-07-validation.md +359 -0
- package/claude/skills/bmad-create-architecture/steps/step-08-complete.md +82 -0
- package/claude/skills/bmad-create-epics-and-stories/SKILL.md +93 -0
- package/claude/skills/bmad-create-epics-and-stories/customize.toml +41 -0
- package/claude/skills/bmad-create-epics-and-stories/steps/step-01-validate-prerequisites.md +255 -0
- package/claude/skills/bmad-create-epics-and-stories/steps/step-02-design-epics.md +212 -0
- package/claude/skills/bmad-create-epics-and-stories/steps/step-03-create-stories.md +255 -0
- package/claude/skills/bmad-create-epics-and-stories/steps/step-04-final-validation.md +137 -0
- package/claude/skills/bmad-create-epics-and-stories/templates/epics-template.md +61 -0
- package/claude/skills/bmad-create-prd/SKILL.md +104 -0
- package/claude/skills/bmad-create-prd/customize.toml +41 -0
- package/claude/skills/bmad-create-prd/data/domain-complexity.csv +15 -0
- package/claude/skills/bmad-create-prd/data/prd-purpose.md +197 -0
- package/claude/skills/bmad-create-prd/steps-c/step-01-init.md +178 -0
- package/claude/skills/bmad-create-prd/steps-c/step-01b-continue.md +161 -0
- package/claude/skills/bmad-create-prd/steps-c/step-02-discovery.md +208 -0
- package/claude/skills/bmad-create-prd/steps-c/step-02b-vision.md +142 -0
- package/claude/skills/bmad-create-prd/steps-c/step-02c-executive-summary.md +158 -0
- package/claude/skills/bmad-create-prd/steps-c/step-03-success.md +214 -0
- package/claude/skills/bmad-create-prd/steps-c/step-04-journeys.md +201 -0
- package/claude/skills/bmad-create-prd/steps-c/step-05-domain.md +194 -0
- package/claude/skills/bmad-create-prd/steps-c/step-06-innovation.md +211 -0
- package/claude/skills/bmad-create-prd/steps-c/step-07-project-type.md +222 -0
- package/claude/skills/bmad-create-prd/steps-c/step-08-scoping.md +263 -0
- package/claude/skills/bmad-create-prd/steps-c/step-09-functional.md +219 -0
- package/claude/skills/bmad-create-prd/steps-c/step-10-nonfunctional.md +230 -0
- package/claude/skills/bmad-create-prd/steps-c/step-11-polish.md +221 -0
- package/claude/skills/bmad-create-prd/steps-c/step-12-complete.md +121 -0
- package/claude/skills/bmad-create-prd/templates/prd-template.md +10 -0
- package/claude/skills/bmad-create-story/SKILL.md +429 -0
- package/claude/skills/bmad-create-story/checklist.md +357 -0
- package/claude/skills/bmad-create-story/customize.toml +41 -0
- package/claude/skills/bmad-create-story/discover-inputs.md +88 -0
- package/claude/skills/bmad-create-ux-design/SKILL.md +75 -0
- package/claude/skills/bmad-create-ux-design/customize.toml +41 -0
- package/claude/skills/bmad-create-ux-design/steps/step-01-init.md +135 -0
- package/claude/skills/bmad-create-ux-design/steps/step-01b-continue.md +127 -0
- package/claude/skills/bmad-create-ux-design/steps/step-02-discovery.md +190 -0
- package/claude/skills/bmad-create-ux-design/steps/step-03-core-experience.md +217 -0
- package/claude/skills/bmad-create-ux-design/steps/step-04-emotional-response.md +220 -0
- package/claude/skills/bmad-create-ux-design/steps/step-05-inspiration.md +235 -0
- package/claude/skills/bmad-create-ux-design/steps/step-06-design-system.md +253 -0
- package/claude/skills/bmad-create-ux-design/steps/step-07-defining-experience.md +255 -0
- package/claude/skills/bmad-create-ux-design/steps/step-08-visual-foundation.md +225 -0
- package/claude/skills/bmad-create-ux-design/steps/step-09-design-directions.md +225 -0
- package/claude/skills/bmad-create-ux-design/steps/step-10-user-journeys.md +242 -0
- package/claude/skills/bmad-create-ux-design/steps/step-11-component-strategy.md +249 -0
- package/claude/skills/bmad-create-ux-design/steps/step-12-ux-patterns.md +238 -0
- package/claude/skills/bmad-create-ux-design/steps/step-13-responsive-accessibility.md +265 -0
- package/claude/skills/bmad-create-ux-design/steps/step-14-complete.md +177 -0
- package/claude/skills/bmad-customize/SKILL.md +111 -0
- package/claude/skills/bmad-customize/scripts/list_customizable_skills.py +231 -0
- package/claude/skills/bmad-customize/scripts/tests/test_list_customizable_skills.py +249 -0
- package/claude/skills/bmad-dev-story/SKILL.md +485 -0
- package/claude/skills/bmad-dev-story/checklist.md +80 -0
- package/claude/skills/bmad-dev-story/customize.toml +41 -0
- package/claude/skills/bmad-distillator/SKILL.md +177 -0
- package/claude/skills/bmad-distillator/agents/distillate-compressor.md +116 -0
- package/claude/skills/bmad-distillator/agents/round-trip-reconstructor.md +68 -0
- package/claude/skills/bmad-distillator/resources/compression-rules.md +51 -0
- package/claude/skills/bmad-distillator/resources/distillate-format-reference.md +227 -0
- package/claude/skills/bmad-distillator/resources/splitting-strategy.md +78 -0
- package/claude/skills/bmad-distillator/scripts/analyze_sources.py +300 -0
- package/claude/skills/bmad-distillator/scripts/tests/test_analyze_sources.py +204 -0
- package/claude/skills/bmad-document-project/SKILL.md +62 -0
- package/claude/skills/bmad-document-project/customize.toml +41 -0
- package/claude/skills/bmad-document-project/instructions.md +128 -0
- package/claude/skills/bmad-document-project/templates/project-scan-report-schema.json +160 -0
- package/claude/skills/bmad-document-project/workflows/deep-dive-instructions.md +300 -0
- package/claude/skills/bmad-document-project/workflows/deep-dive-workflow.md +34 -0
- package/claude/skills/bmad-document-project/workflows/full-scan-instructions.md +1108 -0
- package/claude/skills/bmad-document-project/workflows/full-scan-workflow.md +34 -0
- package/claude/skills/bmad-domain-research/SKILL.md +96 -0
- package/claude/skills/bmad-domain-research/customize.toml +41 -0
- package/claude/skills/bmad-domain-research/domain-steps/step-06-research-synthesis.md +450 -0
- package/claude/skills/bmad-edit-prd/SKILL.md +102 -0
- package/claude/skills/bmad-edit-prd/customize.toml +42 -0
- package/claude/skills/bmad-edit-prd/data/prd-purpose.md +197 -0
- package/claude/skills/bmad-edit-prd/steps-e/step-e-01-discovery.md +242 -0
- package/claude/skills/bmad-edit-prd/steps-e/step-e-01b-legacy-conversion.md +204 -0
- package/claude/skills/bmad-edit-prd/steps-e/step-e-02-review.md +245 -0
- package/claude/skills/bmad-edit-prd/steps-e/step-e-03-edit.md +250 -0
- package/claude/skills/bmad-edit-prd/steps-e/step-e-04-complete.md +165 -0
- package/claude/skills/bmad-editorial-review-prose/SKILL.md +86 -0
- package/claude/skills/bmad-editorial-review-structure/SKILL.md +179 -0
- package/claude/skills/bmad-generate-project-context/SKILL.md +81 -0
- package/claude/skills/bmad-generate-project-context/customize.toml +41 -0
- package/claude/skills/bmad-generate-project-context/steps/step-01-discover.md +186 -0
- package/claude/skills/bmad-generate-project-context/steps/step-02-generate.md +321 -0
- package/claude/skills/bmad-generate-project-context/steps/step-03-complete.md +284 -0
- package/claude/skills/bmad-help/SKILL.md +75 -0
- package/claude/skills/bmad-index-docs/SKILL.md +66 -0
- package/claude/skills/bmad-market-research/SKILL.md +96 -0
- package/claude/skills/bmad-market-research/customize.toml +41 -0
- package/claude/skills/bmad-market-research/research.template.md +29 -0
- package/claude/skills/bmad-market-research/steps/step-01-init.md +184 -0
- package/claude/skills/bmad-market-research/steps/step-02-customer-behavior.md +239 -0
- package/claude/skills/bmad-market-research/steps/step-03-customer-pain-points.md +251 -0
- package/claude/skills/bmad-market-research/steps/step-04-customer-decisions.md +261 -0
- package/claude/skills/bmad-market-research/steps/step-05-competitive-analysis.md +173 -0
- package/claude/skills/bmad-market-research/steps/step-06-research-completion.md +484 -0
- package/claude/skills/bmad-party-mode/SKILL.md +128 -0
- package/claude/skills/bmad-prfaq/SKILL.md +135 -0
- package/claude/skills/bmad-prfaq/agents/artifact-analyzer.md +60 -0
- package/claude/skills/bmad-prfaq/agents/web-researcher.md +49 -0
- package/claude/skills/bmad-prfaq/assets/prfaq-template.md +62 -0
- package/claude/skills/bmad-prfaq/bmad-manifest.json +16 -0
- package/claude/skills/bmad-prfaq/customize.toml +41 -0
- package/claude/skills/bmad-prfaq/references/customer-faq.md +55 -0
- package/claude/skills/bmad-prfaq/references/internal-faq.md +51 -0
- package/claude/skills/bmad-prfaq/references/press-release.md +60 -0
- package/claude/skills/bmad-prfaq/references/verdict.md +83 -0
- package/claude/skills/bmad-product-brief/SKILL.md +117 -0
- package/claude/skills/bmad-product-brief/agents/artifact-analyzer.md +60 -0
- package/claude/skills/bmad-product-brief/agents/opportunity-reviewer.md +44 -0
- package/claude/skills/bmad-product-brief/agents/skeptic-reviewer.md +44 -0
- package/claude/skills/bmad-product-brief/agents/web-researcher.md +49 -0
- package/claude/skills/bmad-product-brief/bmad-manifest.json +17 -0
- package/claude/skills/bmad-product-brief/customize.toml +47 -0
- package/claude/skills/bmad-product-brief/prompts/contextual-discovery.md +58 -0
- package/claude/skills/bmad-product-brief/prompts/draft-and-review.md +87 -0
- package/claude/skills/bmad-product-brief/prompts/finalize.md +78 -0
- package/claude/skills/bmad-product-brief/prompts/guided-elicitation.md +71 -0
- package/claude/skills/bmad-product-brief/resources/brief-template.md +60 -0
- package/claude/skills/bmad-qa-generate-e2e-tests/SKILL.md +176 -0
- package/claude/skills/bmad-qa-generate-e2e-tests/checklist.md +33 -0
- package/claude/skills/bmad-qa-generate-e2e-tests/customize.toml +41 -0
- package/claude/skills/bmad-quick-dev/SKILL.md +111 -0
- package/claude/skills/bmad-quick-dev/compile-epic-context.md +62 -0
- package/claude/skills/bmad-quick-dev/customize.toml +41 -0
- package/claude/skills/bmad-quick-dev/spec-template.md +88 -0
- package/claude/skills/bmad-quick-dev/step-01-clarify-and-route.md +100 -0
- package/claude/skills/bmad-quick-dev/step-02-plan.md +47 -0
- package/claude/skills/bmad-quick-dev/step-03-implement.md +41 -0
- package/claude/skills/bmad-quick-dev/step-04-review.md +50 -0
- package/claude/skills/bmad-quick-dev/step-05-present.md +78 -0
- package/claude/skills/bmad-quick-dev/step-oneshot.md +71 -0
- package/claude/skills/bmad-quick-dev/sync-sprint-status.md +19 -0
- package/claude/skills/bmad-retrospective/SKILL.md +1512 -0
- package/claude/skills/bmad-retrospective/customize.toml +41 -0
- package/claude/skills/bmad-review-adversarial-general/SKILL.md +37 -0
- package/claude/skills/bmad-review-edge-case-hunter/SKILL.md +67 -0
- package/claude/skills/bmad-shard-doc/SKILL.md +105 -0
- package/claude/skills/bmad-sprint-planning/SKILL.md +299 -0
- package/claude/skills/bmad-sprint-planning/checklist.md +33 -0
- package/claude/skills/bmad-sprint-planning/customize.toml +41 -0
- package/claude/skills/bmad-sprint-planning/sprint-status-template.yaml +56 -0
- package/claude/skills/bmad-sprint-status/SKILL.md +297 -0
- package/claude/skills/bmad-sprint-status/customize.toml +41 -0
- package/claude/skills/bmad-technical-research/SKILL.md +96 -0
- package/claude/skills/bmad-technical-research/customize.toml +41 -0
- package/claude/skills/bmad-technical-research/research.template.md +29 -0
- package/claude/skills/bmad-technical-research/technical-steps/step-04-architectural-patterns.md +202 -0
- package/claude/skills/bmad-technical-research/technical-steps/step-05-implementation-research.md +233 -0
- package/claude/skills/bmad-technical-research/technical-steps/step-06-research-synthesis.md +493 -0
- package/claude/skills/bmad-validate-prd/SKILL.md +104 -0
- package/claude/skills/bmad-validate-prd/customize.toml +42 -0
- package/claude/skills/bmad-validate-prd/data/domain-complexity.csv +15 -0
- package/claude/skills/bmad-validate-prd/data/prd-purpose.md +197 -0
- package/claude/skills/bmad-validate-prd/data/project-types.csv +11 -0
- package/claude/skills/bmad-validate-prd/steps-v/step-v-01-discovery.md +221 -0
- package/claude/skills/bmad-validate-prd/steps-v/step-v-02-format-detection.md +188 -0
- package/claude/skills/bmad-validate-prd/steps-v/step-v-02b-parity-check.md +206 -0
- package/claude/skills/bmad-validate-prd/steps-v/step-v-03-density-validation.md +171 -0
- package/claude/skills/bmad-validate-prd/steps-v/step-v-04-brief-coverage-validation.md +211 -0
- package/claude/skills/bmad-validate-prd/steps-v/step-v-05-measurability-validation.md +225 -0
- package/claude/skills/bmad-validate-prd/steps-v/step-v-06-traceability-validation.md +214 -0
- package/claude/skills/bmad-validate-prd/steps-v/step-v-07-implementation-leakage-validation.md +202 -0
- package/claude/skills/bmad-validate-prd/steps-v/step-v-08-domain-compliance-validation.md +240 -0
- package/claude/skills/bmad-validate-prd/steps-v/step-v-09-project-type-validation.md +260 -0
- package/claude/skills/bmad-validate-prd/steps-v/step-v-10-smart-validation.md +206 -0
- package/claude/skills/bmad-validate-prd/steps-v/step-v-11-holistic-quality-validation.md +261 -0
- package/claude/skills/bmad-validate-prd/steps-v/step-v-12-completeness-validation.md +239 -0
- package/claude/skills/bmad-validate-prd/steps-v/step-v-13-report-complete.md +230 -0
- package/claude/skills/sa-check-implementation-readiness/SKILL.md +10 -0
- package/claude/skills/sa-code-review/SKILL.md +10 -0
- package/claude/skills/sa-correct-course/SKILL.md +10 -0
- package/claude/skills/sa-create-architecture/SKILL.md +10 -0
- package/claude/skills/sa-create-epics-and-stories/SKILL.md +10 -0
- package/claude/skills/sa-create-prd/SKILL.md +10 -0
- package/claude/skills/sa-create-story/SKILL.md +10 -0
- package/claude/skills/sa-create-user-guide/SKILL.md +6 -0
- package/claude/skills/sa-create-ux-design/SKILL.md +10 -0
- package/claude/skills/sa-dev-story/SKILL.md +10 -0
- package/claude/skills/sa-generate-project-context/SKILL.md +10 -0
- package/claude/skills/sa-init-observability/SKILL.md +182 -0
- package/claude/skills/sa-product-brief/SKILL.md +11 -0
- package/claude/skills/sa-quality-process/SKILL.md +6 -0
- package/claude/skills/sa-shard-doc/SKILL.md +8 -0
- package/claude/skills/sa-sprint-planning/SKILL.md +10 -0
- package/claude/skills/sa-sprint-status/SKILL.md +9 -0
- package/claude/skills/sa-workflow-init/SKILL.md +181 -0
- package/package.json +1 -1
- package/siesa-agents/EXTENSIONS.md +151 -0
- package/siesa-agents/bmm/workflows/2-plan-workflows/create-ux-design/workflow_ext.md +177 -4
- package/siesa-agents/bmm/workflows/2-plan-workflows/prd/workflow_ext.md +136 -0
- package/siesa-agents/bmm/workflows/3-solutioning/create-architecture/workflow_ext.md +202 -1
- package/siesa-agents/bmm/workflows/3-solutioning/create-epics-and-stories/templates/epics-template.md +46 -0
- package/siesa-agents/bmm/workflows/3-solutioning/create-epics-and-stories/workflow_ext.md +59 -0
- package/siesa-agents/bmm/workflows/3-solutioning/quality-process/workflow.md +4 -7
- package/siesa-agents/bmm/workflows/4-implementation/code-review/steps/step-01-load-story.md +101 -0
- package/siesa-agents/bmm/workflows/4-implementation/code-review/steps/step-02-build-plan.md +89 -0
- package/siesa-agents/bmm/workflows/4-implementation/code-review/steps/step-03-review.md +91 -0
- package/siesa-agents/bmm/workflows/4-implementation/code-review/steps/step-04-fix.md +92 -0
- package/siesa-agents/bmm/workflows/4-implementation/code-review/steps/step-05-sync-sprint.md +70 -0
- package/siesa-agents/bmm/workflows/4-implementation/code-review/steps/step-06-jira-sync.md +372 -0
- package/siesa-agents/bmm/workflows/4-implementation/code-review/steps/step-07-commit-push.md +174 -0
- package/siesa-agents/bmm/workflows/4-implementation/code-review/workflow.md +57 -0
- package/siesa-agents/bmm/workflows/4-implementation/code-review/workflow_ext.md +8 -6
- package/siesa-agents/bmm/workflows/4-implementation/correct-course/workflow_ext.md +8 -8
- package/siesa-agents/bmm/workflows/4-implementation/create-story/steps/step-01-determine-story.md +85 -0
- package/siesa-agents/bmm/workflows/4-implementation/create-story/steps/step-02-analyze.md +67 -0
- package/siesa-agents/bmm/workflows/4-implementation/create-story/steps/step-03-architecture.md +71 -0
- package/siesa-agents/bmm/workflows/4-implementation/create-story/steps/step-04-web-research.md +58 -0
- package/siesa-agents/bmm/workflows/4-implementation/create-story/steps/step-05-create-file.md +76 -0
- package/siesa-agents/bmm/workflows/4-implementation/create-story/steps/step-06-finalize.md +106 -0
- package/siesa-agents/bmm/workflows/4-implementation/create-story/template.md +49 -0
- package/siesa-agents/bmm/workflows/4-implementation/create-story/workflow_ext.md +2 -2
- package/siesa-agents/bmm/workflows/4-implementation/dev-story/checklist_ext.md +13 -0
- package/siesa-agents/bmm/workflows/4-implementation/dev-story/steps/step-01-find-story.md +109 -0
- package/siesa-agents/bmm/workflows/4-implementation/dev-story/steps/step-02-check-branch.md +108 -0
- package/siesa-agents/bmm/workflows/4-implementation/dev-story/steps/step-03-load-context.md +46 -0
- package/siesa-agents/bmm/workflows/4-implementation/dev-story/steps/step-04-env-readiness.md +45 -0
- package/siesa-agents/bmm/workflows/4-implementation/dev-story/steps/step-05-review-check.md +57 -0
- package/siesa-agents/bmm/workflows/4-implementation/dev-story/steps/step-06-mark-in-progress.md +52 -0
- package/siesa-agents/bmm/workflows/4-implementation/dev-story/steps/step-07-implement.md +62 -0
- package/siesa-agents/bmm/workflows/4-implementation/dev-story/steps/step-08-test-authoring.md +39 -0
- package/siesa-agents/bmm/workflows/4-implementation/dev-story/steps/step-09-run-tests.md +43 -0
- package/siesa-agents/bmm/workflows/4-implementation/dev-story/steps/step-10-validate-task.md +63 -0
- package/siesa-agents/bmm/workflows/4-implementation/dev-story/steps/step-11-mark-review.md +50 -0
- package/siesa-agents/bmm/workflows/4-implementation/dev-story/steps/step-12-communication.md +45 -0
- package/siesa-agents/bmm/workflows/4-implementation/dev-story/workflow_ext.md +7 -1
- package/siesa-agents/bmm/workflows/4-implementation/sprint-planning/workflow_ext.md +60 -0
- package/siesa-agents/bmm/workflows/4-implementation/sprint-status/workflow_ext.md +1 -1
- package/siesa-agents/bmm/workflows/5-documentation/README.md +235 -0
- package/siesa-agents/bmm/workflows/5-documentation/create-user-guide/steps/step-01-init.md +213 -0
- package/siesa-agents/bmm/workflows/5-documentation/create-user-guide/steps/step-01b-continue.md +268 -0
- package/siesa-agents/bmm/workflows/5-documentation/create-user-guide/steps/step-02-seleccion-features.md +197 -0
- package/siesa-agents/bmm/workflows/5-documentation/create-user-guide/steps/step-03-analisis-fuentes.md +235 -0
- package/siesa-agents/bmm/workflows/5-documentation/create-user-guide/steps/step-04-elicitacion.md +116 -0
- package/siesa-agents/bmm/workflows/5-documentation/create-user-guide/steps/step-05-generacion-espanol.md +611 -0
- package/siesa-agents/bmm/workflows/5-documentation/create-user-guide/steps/step-06-traduccion-ingles.md +615 -0
- package/siesa-agents/bmm/workflows/5-documentation/create-user-guide/steps/step-07-validacion-guardado.md +467 -0
- package/siesa-agents/bmm/workflows/5-documentation/create-user-guide/workflow-plan-create-user-guide.md +949 -0
- package/siesa-agents/bmm/workflows/generate-project-context/workflow_ext.md +52 -0
- package/siesa-agents/bmm/workflows/testarch/framework/workflow_ext.md +20 -0
- package/siesa-agents/bmm/workflows/workflow-status/init/workflow_ext.md +194 -0
- package/siesa-agents/observability/README.md +254 -43
- package/siesa-agents/observability/scripts/sa-emit.js +30 -5
- package/siesa-agents/observability/scripts/sa-init-env.js +219 -0
- package/siesa-agents/observability/scripts/sa-init-project.js +294 -0
- package/siesa-agents/resources/architecture/architecture-both.md +64 -58
- package/siesa-agents/resources/architecture/architecture-single-backend.md +31 -27
- package/siesa-agents/resources/ux-ui/ux-design-specification.md +2 -0
- package/siesa-agents/sa/sync-epics-stories/steps/step-01-init.md +2 -2
- package/siesa-agents/sa/sync-epics-stories/steps/step-01b-continue.md +2 -2
- package/bmad/_config/agent-manifest.csv +0 -20
- package/bmad/_config/agents/bmb-agent-builder.customize.yaml +0 -41
- package/bmad/_config/agents/bmb-module-builder.customize.yaml +0 -41
- package/bmad/_config/agents/bmb-workflow-builder.customize.yaml +0 -41
- package/bmad/_config/agents/bmm-analyst.customize.yaml +0 -41
- package/bmad/_config/agents/bmm-architect.customize.yaml +0 -41
- package/bmad/_config/agents/bmm-dev.customize.yaml +0 -41
- package/bmad/_config/agents/bmm-pm.customize.yaml +0 -41
- package/bmad/_config/agents/bmm-quick-flow-solo-dev.customize.yaml +0 -41
- package/bmad/_config/agents/bmm-sm.customize.yaml +0 -41
- package/bmad/_config/agents/bmm-tea.customize.yaml +0 -41
- package/bmad/_config/agents/bmm-tech-writer.customize.yaml +0 -41
- package/bmad/_config/agents/bmm-ux-designer.customize.yaml +0 -41
- package/bmad/_config/agents/cis-brainstorming-coach.customize.yaml +0 -41
- package/bmad/_config/agents/cis-creative-problem-solver.customize.yaml +0 -41
- package/bmad/_config/agents/cis-design-thinking-coach.customize.yaml +0 -41
- package/bmad/_config/agents/cis-innovation-strategist.customize.yaml +0 -41
- package/bmad/_config/agents/cis-presentation-master.customize.yaml +0 -41
- package/bmad/_config/agents/cis-storyteller.customize.yaml +0 -41
- package/bmad/_config/agents/core-bmad-master.customize.yaml +0 -41
- package/bmad/_config/files-manifest.csv +0 -469
- package/bmad/_config/ides/claude-code.yaml +0 -6
- package/bmad/_config/manifest.yaml +0 -14
- package/bmad/_config/task-manifest.csv +0 -6
- package/bmad/_config/tool-manifest.csv +0 -1
- package/bmad/_config/workflow-manifest.csv +0 -46
- package/bmad/_memory/config.yaml +0 -11
- package/bmad/_memory/storyteller-sidecar/stories-told.md +0 -7
- package/bmad/_memory/storyteller-sidecar/story-preferences.md +0 -7
- package/bmad/bmb/README.md +0 -25
- package/bmad/bmb/agents/agent-builder.md +0 -57
- package/bmad/bmb/agents/module-builder.md +0 -60
- package/bmad/bmb/agents/workflow-builder.md +0 -56
- package/bmad/bmb/config.yaml +0 -12
- package/bmad/bmb/docs/workflows/architecture.md +0 -220
- package/bmad/bmb/docs/workflows/common-workflow-tools.csv +0 -19
- package/bmad/bmb/docs/workflows/csv-data-file-standards.md +0 -206
- package/bmad/bmb/docs/workflows/intent-vs-prescriptive-spectrum.md +0 -220
- package/bmad/bmb/docs/workflows/step-file-rules.md +0 -469
- package/bmad/bmb/docs/workflows/templates/step-01-init-continuable-template.md +0 -241
- package/bmad/bmb/docs/workflows/templates/step-1b-template.md +0 -223
- package/bmad/bmb/docs/workflows/templates/step-file.md +0 -139
- package/bmad/bmb/docs/workflows/templates/step-template.md +0 -290
- package/bmad/bmb/docs/workflows/templates/workflow-template.md +0 -104
- package/bmad/bmb/docs/workflows/templates/workflow.md +0 -58
- package/bmad/bmb/docs/workflows/terms.md +0 -97
- package/bmad/bmb/reference/agents/simple-examples/README.md +0 -223
- package/bmad/bmb/reference/readme.md +0 -3
- package/bmad/bmb/reference/workflows/meal-prep-nutrition/data/dietary-restrictions.csv +0 -18
- package/bmad/bmb/reference/workflows/meal-prep-nutrition/data/macro-calculator.csv +0 -16
- package/bmad/bmb/reference/workflows/meal-prep-nutrition/data/recipe-database.csv +0 -28
- package/bmad/bmb/reference/workflows/meal-prep-nutrition/steps/step-01-init.md +0 -177
- package/bmad/bmb/reference/workflows/meal-prep-nutrition/steps/step-01b-continue.md +0 -121
- package/bmad/bmb/reference/workflows/meal-prep-nutrition/steps/step-02-profile.md +0 -165
- package/bmad/bmb/reference/workflows/meal-prep-nutrition/steps/step-03-assessment.md +0 -154
- package/bmad/bmb/reference/workflows/meal-prep-nutrition/steps/step-04-strategy.md +0 -183
- package/bmad/bmb/reference/workflows/meal-prep-nutrition/steps/step-05-shopping.md +0 -168
- package/bmad/bmb/reference/workflows/meal-prep-nutrition/steps/step-06-prep-schedule.md +0 -195
- package/bmad/bmb/reference/workflows/meal-prep-nutrition/templates/assessment-section.md +0 -25
- package/bmad/bmb/reference/workflows/meal-prep-nutrition/templates/nutrition-plan.md +0 -68
- package/bmad/bmb/reference/workflows/meal-prep-nutrition/templates/prep-schedule-section.md +0 -29
- package/bmad/bmb/reference/workflows/meal-prep-nutrition/templates/profile-section.md +0 -47
- package/bmad/bmb/reference/workflows/meal-prep-nutrition/templates/shopping-section.md +0 -37
- package/bmad/bmb/reference/workflows/meal-prep-nutrition/templates/strategy-section.md +0 -18
- package/bmad/bmb/reference/workflows/meal-prep-nutrition/workflow.md +0 -59
- package/bmad/bmb/workflows/agent/data/agent-compilation.md +0 -273
- package/bmad/bmb/workflows/agent/data/agent-menu-patterns.md +0 -233
- package/bmad/bmb/workflows/agent/data/agent-metadata.md +0 -208
- package/bmad/bmb/workflows/agent/data/brainstorm-context.md +0 -146
- package/bmad/bmb/workflows/agent/data/communication-presets.csv +0 -61
- package/bmad/bmb/workflows/agent/data/critical-actions.md +0 -120
- package/bmad/bmb/workflows/agent/data/expert-agent-architecture.md +0 -236
- package/bmad/bmb/workflows/agent/data/expert-agent-validation.md +0 -173
- package/bmad/bmb/workflows/agent/data/module-agent-validation.md +0 -124
- package/bmad/bmb/workflows/agent/data/persona-properties.md +0 -266
- package/bmad/bmb/workflows/agent/data/principles-crafting.md +0 -292
- package/bmad/bmb/workflows/agent/data/reference/expert-examples/journal-keeper/journal-keeper-sidecar/entries/yy-mm-dd-entry-template.md +0 -17
- package/bmad/bmb/workflows/agent/data/reference/module-examples/architect.md +0 -68
- package/bmad/bmb/workflows/agent/data/simple-agent-architecture.md +0 -204
- package/bmad/bmb/workflows/agent/data/simple-agent-validation.md +0 -132
- package/bmad/bmb/workflows/agent/data/understanding-agent-types.md +0 -222
- package/bmad/bmb/workflows/agent/steps-c/step-01-brainstorm.md +0 -126
- package/bmad/bmb/workflows/agent/steps-c/step-02-discovery.md +0 -168
- package/bmad/bmb/workflows/agent/steps-c/step-03-type-metadata.md +0 -294
- package/bmad/bmb/workflows/agent/steps-c/step-04-persona.md +0 -210
- package/bmad/bmb/workflows/agent/steps-c/step-05-commands-menu.md +0 -176
- package/bmad/bmb/workflows/agent/steps-c/step-06-activation.md +0 -275
- package/bmad/bmb/workflows/agent/steps-c/step-07a-build-simple.md +0 -185
- package/bmad/bmb/workflows/agent/steps-c/step-07b-build-expert.md +0 -201
- package/bmad/bmb/workflows/agent/steps-c/step-07c-build-module.md +0 -258
- package/bmad/bmb/workflows/agent/steps-c/step-08a-plan-traceability.md +0 -203
- package/bmad/bmb/workflows/agent/steps-c/step-08b-metadata-validation.md +0 -135
- package/bmad/bmb/workflows/agent/steps-c/step-08c-persona-validation.md +0 -161
- package/bmad/bmb/workflows/agent/steps-c/step-08d-menu-validation.md +0 -158
- package/bmad/bmb/workflows/agent/steps-c/step-08e-structure-validation.md +0 -306
- package/bmad/bmb/workflows/agent/steps-c/step-08f-sidecar-validation.md +0 -462
- package/bmad/bmb/workflows/agent/steps-c/step-09-celebrate.md +0 -244
- package/bmad/bmb/workflows/agent/steps-e/e-01-load-existing.md +0 -214
- package/bmad/bmb/workflows/agent/steps-e/e-02-discover-edits.md +0 -191
- package/bmad/bmb/workflows/agent/steps-e/e-03a-validate-metadata.md +0 -78
- package/bmad/bmb/workflows/agent/steps-e/e-03b-validate-persona.md +0 -76
- package/bmad/bmb/workflows/agent/steps-e/e-03c-validate-menu.md +0 -75
- package/bmad/bmb/workflows/agent/steps-e/e-03d-validate-structure.md +0 -75
- package/bmad/bmb/workflows/agent/steps-e/e-03e-validate-sidecar.md +0 -78
- package/bmad/bmb/workflows/agent/steps-e/e-03f-validation-summary.md +0 -119
- package/bmad/bmb/workflows/agent/steps-e/e-04-type-metadata.md +0 -122
- package/bmad/bmb/workflows/agent/steps-e/e-05-persona.md +0 -132
- package/bmad/bmb/workflows/agent/steps-e/e-06-commands-menu.md +0 -120
- package/bmad/bmb/workflows/agent/steps-e/e-07-activation.md +0 -122
- package/bmad/bmb/workflows/agent/steps-e/e-08a-edit-simple.md +0 -134
- package/bmad/bmb/workflows/agent/steps-e/e-08b-edit-expert.md +0 -117
- package/bmad/bmb/workflows/agent/steps-e/e-08c-edit-module.md +0 -120
- package/bmad/bmb/workflows/agent/steps-e/e-09a-validate-metadata.md +0 -70
- package/bmad/bmb/workflows/agent/steps-e/e-09b-validate-persona.md +0 -70
- package/bmad/bmb/workflows/agent/steps-e/e-09c-validate-menu.md +0 -69
- package/bmad/bmb/workflows/agent/steps-e/e-09d-validate-structure.md +0 -69
- package/bmad/bmb/workflows/agent/steps-e/e-09e-validate-sidecar.md +0 -70
- package/bmad/bmb/workflows/agent/steps-e/e-09f-validation-summary.md +0 -111
- package/bmad/bmb/workflows/agent/steps-e/e-10-celebrate.md +0 -150
- package/bmad/bmb/workflows/agent/steps-v/v-01-load-review.md +0 -128
- package/bmad/bmb/workflows/agent/steps-v/v-02a-validate-metadata.md +0 -73
- package/bmad/bmb/workflows/agent/steps-v/v-02b-validate-persona.md +0 -72
- package/bmad/bmb/workflows/agent/steps-v/v-02c-validate-menu.md +0 -71
- package/bmad/bmb/workflows/agent/steps-v/v-02d-validate-structure.md +0 -71
- package/bmad/bmb/workflows/agent/steps-v/v-02e-validate-sidecar.md +0 -76
- package/bmad/bmb/workflows/agent/steps-v/v-03-summary.md +0 -100
- package/bmad/bmb/workflows/agent/templates/agent-plan.template.md +0 -5
- package/bmad/bmb/workflows/agent/templates/expert-agent-template/expert-agent.template.md +0 -76
- package/bmad/bmb/workflows/agent/templates/simple-agent.template.md +0 -71
- package/bmad/bmb/workflows/agent/workflow.md +0 -123
- package/bmad/bmb/workflows/create-module/steps/step-01-init.md +0 -156
- package/bmad/bmb/workflows/create-module/steps/step-01b-continue.md +0 -170
- package/bmad/bmb/workflows/create-module/steps/step-02-concept.md +0 -218
- package/bmad/bmb/workflows/create-module/steps/step-03-components.md +0 -268
- package/bmad/bmb/workflows/create-module/steps/step-04-structure.md +0 -229
- package/bmad/bmb/workflows/create-module/steps/step-05-config.md +0 -234
- package/bmad/bmb/workflows/create-module/steps/step-06-agents.md +0 -297
- package/bmad/bmb/workflows/create-module/steps/step-07-workflows.md +0 -229
- package/bmad/bmb/workflows/create-module/steps/step-08-installer.md +0 -187
- package/bmad/bmb/workflows/create-module/steps/step-09-documentation.md +0 -310
- package/bmad/bmb/workflows/create-module/steps/step-10-roadmap.md +0 -338
- package/bmad/bmb/workflows/create-module/steps/step-11-validate.md +0 -336
- package/bmad/bmb/workflows/create-module/templates/agent.template.md +0 -313
- package/bmad/bmb/workflows/create-module/templates/installer.template.js +0 -47
- package/bmad/bmb/workflows/create-module/templates/module-plan.template.md +0 -5
- package/bmad/bmb/workflows/create-module/templates/module.template.yaml +0 -53
- package/bmad/bmb/workflows/create-module/templates/workflow-plan-template.md +0 -23
- package/bmad/bmb/workflows/create-module/validation.md +0 -126
- package/bmad/bmb/workflows/create-module/workflow.md +0 -56
- package/bmad/bmb/workflows/create-workflow/data/examples/meal-prep-nutrition/data/dietary-restrictions.csv +0 -18
- package/bmad/bmb/workflows/create-workflow/data/examples/meal-prep-nutrition/data/macro-calculator.csv +0 -16
- package/bmad/bmb/workflows/create-workflow/data/examples/meal-prep-nutrition/data/recipe-database.csv +0 -28
- package/bmad/bmb/workflows/create-workflow/data/examples/meal-prep-nutrition/steps/step-01-init.md +0 -177
- package/bmad/bmb/workflows/create-workflow/data/examples/meal-prep-nutrition/steps/step-01b-continue.md +0 -150
- package/bmad/bmb/workflows/create-workflow/data/examples/meal-prep-nutrition/steps/step-02-profile.md +0 -164
- package/bmad/bmb/workflows/create-workflow/data/examples/meal-prep-nutrition/steps/step-03-assessment.md +0 -152
- package/bmad/bmb/workflows/create-workflow/data/examples/meal-prep-nutrition/steps/step-04-strategy.md +0 -182
- package/bmad/bmb/workflows/create-workflow/data/examples/meal-prep-nutrition/steps/step-05-shopping.md +0 -167
- package/bmad/bmb/workflows/create-workflow/data/examples/meal-prep-nutrition/steps/step-06-prep-schedule.md +0 -194
- package/bmad/bmb/workflows/create-workflow/data/examples/meal-prep-nutrition/templates/assessment-section.md +0 -25
- package/bmad/bmb/workflows/create-workflow/data/examples/meal-prep-nutrition/templates/nutrition-plan.md +0 -68
- package/bmad/bmb/workflows/create-workflow/data/examples/meal-prep-nutrition/templates/prep-schedule-section.md +0 -29
- package/bmad/bmb/workflows/create-workflow/data/examples/meal-prep-nutrition/templates/profile-section.md +0 -47
- package/bmad/bmb/workflows/create-workflow/data/examples/meal-prep-nutrition/templates/shopping-section.md +0 -37
- package/bmad/bmb/workflows/create-workflow/data/examples/meal-prep-nutrition/templates/strategy-section.md +0 -18
- package/bmad/bmb/workflows/create-workflow/data/examples/meal-prep-nutrition/workflow.md +0 -58
- package/bmad/bmb/workflows/create-workflow/steps/step-01-init.md +0 -158
- package/bmad/bmb/workflows/create-workflow/steps/step-02-gather.md +0 -212
- package/bmad/bmb/workflows/create-workflow/steps/step-03-tools-configuration.md +0 -251
- package/bmad/bmb/workflows/create-workflow/steps/step-04-plan-review.md +0 -217
- package/bmad/bmb/workflows/create-workflow/steps/step-05-output-format-design.md +0 -290
- package/bmad/bmb/workflows/create-workflow/steps/step-06-design.md +0 -272
- package/bmad/bmb/workflows/create-workflow/steps/step-07-build.md +0 -323
- package/bmad/bmb/workflows/create-workflow/steps/step-08-review.md +0 -285
- package/bmad/bmb/workflows/create-workflow/steps/step-09-complete.md +0 -188
- package/bmad/bmb/workflows/create-workflow/workflow.md +0 -59
- package/bmad/bmb/workflows/edit-workflow/steps/step-01-analyze.md +0 -217
- package/bmad/bmb/workflows/edit-workflow/steps/step-02-discover.md +0 -254
- package/bmad/bmb/workflows/edit-workflow/steps/step-03-improve.md +0 -218
- package/bmad/bmb/workflows/edit-workflow/steps/step-04-validate.md +0 -194
- package/bmad/bmb/workflows/edit-workflow/steps/step-05-compliance-check.md +0 -246
- package/bmad/bmb/workflows/edit-workflow/templates/completion-summary.md +0 -75
- package/bmad/bmb/workflows/edit-workflow/templates/improvement-goals.md +0 -68
- package/bmad/bmb/workflows/edit-workflow/templates/improvement-log.md +0 -40
- package/bmad/bmb/workflows/edit-workflow/templates/validation-results.md +0 -51
- package/bmad/bmb/workflows/edit-workflow/templates/workflow-analysis.md +0 -56
- package/bmad/bmb/workflows/edit-workflow/workflow.md +0 -59
- package/bmad/bmb/workflows/workflow-compliance-check/steps/step-01-validate-goal.md +0 -153
- package/bmad/bmb/workflows/workflow-compliance-check/steps/step-02-workflow-validation.md +0 -244
- package/bmad/bmb/workflows/workflow-compliance-check/steps/step-03-step-validation.md +0 -275
- package/bmad/bmb/workflows/workflow-compliance-check/steps/step-04-file-validation.md +0 -296
- package/bmad/bmb/workflows/workflow-compliance-check/steps/step-05-intent-spectrum-validation.md +0 -265
- package/bmad/bmb/workflows/workflow-compliance-check/steps/step-06-web-subprocess-validation.md +0 -361
- package/bmad/bmb/workflows/workflow-compliance-check/steps/step-07-holistic-analysis.md +0 -259
- package/bmad/bmb/workflows/workflow-compliance-check/steps/step-08-generate-report.md +0 -302
- package/bmad/bmb/workflows/workflow-compliance-check/templates/compliance-report.md +0 -140
- package/bmad/bmb/workflows/workflow-compliance-check/workflow.md +0 -59
- package/bmad/bmb/workflows-legacy/edit-module/README.md +0 -171
- package/bmad/bmb/workflows-legacy/edit-module/checklist.md +0 -163
- package/bmad/bmb/workflows-legacy/edit-module/instructions.md +0 -340
- package/bmad/bmb/workflows-legacy/edit-module/workflow.yaml +0 -33
- package/bmad/bmb/workflows-legacy/module-brief/README.md +0 -264
- package/bmad/bmb/workflows-legacy/module-brief/checklist.md +0 -116
- package/bmad/bmb/workflows-legacy/module-brief/instructions.md +0 -268
- package/bmad/bmb/workflows-legacy/module-brief/template.md +0 -275
- package/bmad/bmb/workflows-legacy/module-brief/workflow.yaml +0 -35
- package/bmad/bmm/agents/analyst.md +0 -76
- package/bmad/bmm/agents/architect.md +0 -68
- package/bmad/bmm/agents/dev.md +0 -70
- package/bmad/bmm/agents/pm.md +0 -70
- package/bmad/bmm/agents/quick-flow-solo-dev.md +0 -68
- package/bmad/bmm/agents/sm.md +0 -71
- package/bmad/bmm/agents/tea.md +0 -71
- package/bmad/bmm/agents/tech-writer.md +0 -72
- package/bmad/bmm/agents/ux-designer.md +0 -68
- package/bmad/bmm/data/README.md +0 -29
- package/bmad/bmm/data/documentation-standards.md +0 -262
- package/bmad/bmm/data/project-context-template.md +0 -40
- package/bmad/bmm/teams/default-party.csv +0 -21
- package/bmad/bmm/teams/team-fullstack.yaml +0 -12
- package/bmad/bmm/testarch/knowledge/api-request.md +0 -303
- package/bmad/bmm/testarch/knowledge/auth-session.md +0 -356
- package/bmad/bmm/testarch/knowledge/burn-in.md +0 -273
- package/bmad/bmm/testarch/knowledge/ci-burn-in.md +0 -675
- package/bmad/bmm/testarch/knowledge/component-tdd.md +0 -486
- package/bmad/bmm/testarch/knowledge/contract-testing.md +0 -957
- package/bmad/bmm/testarch/knowledge/data-factories.md +0 -500
- package/bmad/bmm/testarch/knowledge/email-auth.md +0 -721
- package/bmad/bmm/testarch/knowledge/error-handling.md +0 -725
- package/bmad/bmm/testarch/knowledge/feature-flags.md +0 -750
- package/bmad/bmm/testarch/knowledge/file-utils.md +0 -260
- package/bmad/bmm/testarch/knowledge/fixture-architecture.md +0 -401
- package/bmad/bmm/testarch/knowledge/fixtures-composition.md +0 -382
- package/bmad/bmm/testarch/knowledge/intercept-network-call.md +0 -280
- package/bmad/bmm/testarch/knowledge/log.md +0 -294
- package/bmad/bmm/testarch/knowledge/network-error-monitor.md +0 -272
- package/bmad/bmm/testarch/knowledge/network-first.md +0 -486
- package/bmad/bmm/testarch/knowledge/network-recorder.md +0 -265
- package/bmad/bmm/testarch/knowledge/nfr-criteria.md +0 -670
- package/bmad/bmm/testarch/knowledge/overview.md +0 -283
- package/bmad/bmm/testarch/knowledge/playwright-config.md +0 -730
- package/bmad/bmm/testarch/knowledge/probability-impact.md +0 -601
- package/bmad/bmm/testarch/knowledge/recurse.md +0 -296
- package/bmad/bmm/testarch/knowledge/risk-governance.md +0 -615
- package/bmad/bmm/testarch/knowledge/selective-testing.md +0 -732
- package/bmad/bmm/testarch/knowledge/selector-resilience.md +0 -527
- package/bmad/bmm/testarch/knowledge/test-healing-patterns.md +0 -644
- package/bmad/bmm/testarch/knowledge/test-levels-framework.md +0 -473
- package/bmad/bmm/testarch/knowledge/test-priorities-matrix.md +0 -373
- package/bmad/bmm/testarch/knowledge/test-quality.md +0 -664
- package/bmad/bmm/testarch/knowledge/timing-debugging.md +0 -372
- package/bmad/bmm/testarch/knowledge/visual-debugging.md +0 -524
- package/bmad/bmm/testarch/tea-index.csv +0 -33
- package/bmad/bmm/workflows/1-analysis/create-product-brief/product-brief.template.md +0 -10
- package/bmad/bmm/workflows/1-analysis/create-product-brief/steps/step-01-init.md +0 -182
- package/bmad/bmm/workflows/1-analysis/create-product-brief/steps/step-01b-continue.md +0 -166
- package/bmad/bmm/workflows/1-analysis/create-product-brief/steps/step-02-vision.md +0 -204
- package/bmad/bmm/workflows/1-analysis/create-product-brief/steps/step-03-users.md +0 -207
- package/bmad/bmm/workflows/1-analysis/create-product-brief/steps/step-04-metrics.md +0 -210
- package/bmad/bmm/workflows/1-analysis/create-product-brief/steps/step-05-scope.md +0 -224
- package/bmad/bmm/workflows/1-analysis/create-product-brief/steps/step-06-complete.md +0 -199
- package/bmad/bmm/workflows/1-analysis/create-product-brief/workflow.md +0 -58
- package/bmad/bmm/workflows/1-analysis/research/domain-steps/step-06-research-synthesis.md +0 -443
- package/bmad/bmm/workflows/1-analysis/research/market-steps/step-01-init.md +0 -182
- package/bmad/bmm/workflows/1-analysis/research/market-steps/step-02-customer-behavior.md +0 -237
- package/bmad/bmm/workflows/1-analysis/research/market-steps/step-02-customer-insights.md +0 -200
- package/bmad/bmm/workflows/1-analysis/research/market-steps/step-03-customer-pain-points.md +0 -249
- package/bmad/bmm/workflows/1-analysis/research/market-steps/step-04-customer-decisions.md +0 -259
- package/bmad/bmm/workflows/1-analysis/research/market-steps/step-05-competitive-analysis.md +0 -177
- package/bmad/bmm/workflows/1-analysis/research/market-steps/step-06-research-completion.md +0 -475
- package/bmad/bmm/workflows/1-analysis/research/technical-steps/step-04-architectural-patterns.md +0 -202
- package/bmad/bmm/workflows/1-analysis/research/technical-steps/step-05-implementation-research.md +0 -239
- package/bmad/bmm/workflows/1-analysis/research/technical-steps/step-06-research-synthesis.md +0 -486
- package/bmad/bmm/workflows/1-analysis/research/workflow.md +0 -173
- package/bmad/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-01-init.md +0 -135
- package/bmad/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-01b-continue.md +0 -127
- package/bmad/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-02-discovery.md +0 -190
- package/bmad/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-03-core-experience.md +0 -216
- package/bmad/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-04-emotional-response.md +0 -219
- package/bmad/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-05-inspiration.md +0 -234
- package/bmad/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-06-design-system.md +0 -252
- package/bmad/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-07-defining-experience.md +0 -254
- package/bmad/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-08-visual-foundation.md +0 -224
- package/bmad/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-09-design-directions.md +0 -224
- package/bmad/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-10-user-journeys.md +0 -241
- package/bmad/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-11-component-strategy.md +0 -338
- package/bmad/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-12-ux-patterns.md +0 -237
- package/bmad/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-13-responsive-accessibility.md +0 -264
- package/bmad/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-14-complete.md +0 -228
- package/bmad/bmm/workflows/2-plan-workflows/create-ux-design/workflow.md +0 -59
- package/bmad/bmm/workflows/2-plan-workflows/prd/domain-complexity.csv +0 -13
- package/bmad/bmm/workflows/2-plan-workflows/prd/prd-template.md +0 -11
- package/bmad/bmm/workflows/2-plan-workflows/prd/steps/step-01-init.md +0 -197
- package/bmad/bmm/workflows/2-plan-workflows/prd/steps/step-01b-continue.md +0 -166
- package/bmad/bmm/workflows/2-plan-workflows/prd/steps/step-02-discovery.md +0 -421
- package/bmad/bmm/workflows/2-plan-workflows/prd/steps/step-03-success.md +0 -290
- package/bmad/bmm/workflows/2-plan-workflows/prd/steps/step-04-journeys.md +0 -291
- package/bmad/bmm/workflows/2-plan-workflows/prd/steps/step-05-domain.md +0 -271
- package/bmad/bmm/workflows/2-plan-workflows/prd/steps/step-06-innovation.md +0 -262
- package/bmad/bmm/workflows/2-plan-workflows/prd/steps/step-07-project-type.md +0 -258
- package/bmad/bmm/workflows/2-plan-workflows/prd/steps/step-08-scoping.md +0 -299
- package/bmad/bmm/workflows/2-plan-workflows/prd/steps/step-09-functional.md +0 -270
- package/bmad/bmm/workflows/2-plan-workflows/prd/steps/step-10-nonfunctional.md +0 -294
- package/bmad/bmm/workflows/2-plan-workflows/prd/steps/step-11-complete.md +0 -186
- package/bmad/bmm/workflows/2-plan-workflows/prd/workflow.md +0 -63
- package/bmad/bmm/workflows/3-solutioning/check-implementation-readiness/steps/step-01-document-discovery.md +0 -190
- package/bmad/bmm/workflows/3-solutioning/check-implementation-readiness/steps/step-02-prd-analysis.md +0 -178
- package/bmad/bmm/workflows/3-solutioning/check-implementation-readiness/steps/step-03-epic-coverage-validation.md +0 -179
- package/bmad/bmm/workflows/3-solutioning/check-implementation-readiness/steps/step-04-ux-alignment.md +0 -139
- package/bmad/bmm/workflows/3-solutioning/check-implementation-readiness/steps/step-05-epic-quality-review.md +0 -252
- package/bmad/bmm/workflows/3-solutioning/check-implementation-readiness/steps/step-06-final-assessment.md +0 -133
- package/bmad/bmm/workflows/3-solutioning/check-implementation-readiness/workflow.md +0 -55
- package/bmad/bmm/workflows/3-solutioning/create-architecture/data/domain-complexity.csv +0 -11
- package/bmad/bmm/workflows/3-solutioning/create-architecture/data/project-types.csv +0 -7
- package/bmad/bmm/workflows/3-solutioning/create-architecture/steps/step-01-init.md +0 -174
- package/bmad/bmm/workflows/3-solutioning/create-architecture/steps/step-01b-continue.md +0 -164
- package/bmad/bmm/workflows/3-solutioning/create-architecture/steps/step-02-context.md +0 -224
- package/bmad/bmm/workflows/3-solutioning/create-architecture/steps/step-03-starter.md +0 -342
- package/bmad/bmm/workflows/3-solutioning/create-architecture/steps/step-04-decisions.md +0 -328
- package/bmad/bmm/workflows/3-solutioning/create-architecture/steps/step-05-patterns.md +0 -368
- package/bmad/bmm/workflows/3-solutioning/create-architecture/steps/step-06-structure.md +0 -381
- package/bmad/bmm/workflows/3-solutioning/create-architecture/steps/step-07-validation.md +0 -366
- package/bmad/bmm/workflows/3-solutioning/create-architecture/steps/step-08-complete.md +0 -352
- package/bmad/bmm/workflows/3-solutioning/create-architecture/workflow.md +0 -51
- package/bmad/bmm/workflows/3-solutioning/create-epics-and-stories/steps/step-01-validate-prerequisites.md +0 -259
- package/bmad/bmm/workflows/3-solutioning/create-epics-and-stories/steps/step-02-design-epics.md +0 -274
- package/bmad/bmm/workflows/3-solutioning/create-epics-and-stories/steps/step-03-create-stories.md +0 -272
- package/bmad/bmm/workflows/3-solutioning/create-epics-and-stories/steps/step-04-final-validation.md +0 -209
- package/bmad/bmm/workflows/3-solutioning/create-epics-and-stories/templates/epics-template.md +0 -72
- package/bmad/bmm/workflows/3-solutioning/create-epics-and-stories/workflow.md +0 -59
- package/bmad/bmm/workflows/4-implementation/code-review/checklist.md +0 -23
- package/bmad/bmm/workflows/4-implementation/code-review/instructions.xml.bak +0 -225
- package/bmad/bmm/workflows/4-implementation/code-review/steps/step-01-load-story.md +0 -101
- package/bmad/bmm/workflows/4-implementation/code-review/steps/step-02-build-plan.md +0 -89
- package/bmad/bmm/workflows/4-implementation/code-review/steps/step-03-review.md +0 -91
- package/bmad/bmm/workflows/4-implementation/code-review/steps/step-04-fix.md +0 -92
- package/bmad/bmm/workflows/4-implementation/code-review/steps/step-05-sync-sprint.md +0 -70
- package/bmad/bmm/workflows/4-implementation/code-review/steps/step-06-jira-sync.md +0 -135
- package/bmad/bmm/workflows/4-implementation/code-review/steps/step-07-commit-push.md +0 -174
- package/bmad/bmm/workflows/4-implementation/code-review/workflow.md +0 -57
- package/bmad/bmm/workflows/4-implementation/code-review/workflow.yaml.bak +0 -50
- package/bmad/bmm/workflows/4-implementation/correct-course/checklist.md +0 -279
- package/bmad/bmm/workflows/4-implementation/correct-course/instructions.md +0 -206
- package/bmad/bmm/workflows/4-implementation/correct-course/workflow.yaml +0 -58
- package/bmad/bmm/workflows/4-implementation/create-story/checklist.md +0 -358
- package/bmad/bmm/workflows/4-implementation/create-story/steps/step-01-determine-story.md +0 -85
- package/bmad/bmm/workflows/4-implementation/create-story/steps/step-02-analyze.md +0 -67
- package/bmad/bmm/workflows/4-implementation/create-story/steps/step-03-architecture.md +0 -71
- package/bmad/bmm/workflows/4-implementation/create-story/steps/step-04-web-research.md +0 -58
- package/bmad/bmm/workflows/4-implementation/create-story/steps/step-05-create-file.md +0 -76
- package/bmad/bmm/workflows/4-implementation/create-story/steps/step-06-finalize.md +0 -106
- package/bmad/bmm/workflows/4-implementation/create-story/workflow.yaml.bak +0 -63
- package/bmad/bmm/workflows/4-implementation/dev-story/checklist.md +0 -85
- package/bmad/bmm/workflows/4-implementation/dev-story/steps/step-01-find-story.md +0 -109
- package/bmad/bmm/workflows/4-implementation/dev-story/steps/step-02-check-branch.md +0 -108
- package/bmad/bmm/workflows/4-implementation/dev-story/steps/step-03-load-context.md +0 -46
- package/bmad/bmm/workflows/4-implementation/dev-story/steps/step-04-env-readiness.md +0 -45
- package/bmad/bmm/workflows/4-implementation/dev-story/steps/step-05-review-check.md +0 -57
- package/bmad/bmm/workflows/4-implementation/dev-story/steps/step-06-mark-in-progress.md +0 -52
- package/bmad/bmm/workflows/4-implementation/dev-story/steps/step-07-implement.md +0 -62
- package/bmad/bmm/workflows/4-implementation/dev-story/steps/step-08-test-authoring.md +0 -39
- package/bmad/bmm/workflows/4-implementation/dev-story/steps/step-09-run-tests.md +0 -43
- package/bmad/bmm/workflows/4-implementation/dev-story/steps/step-10-validate-task.md +0 -63
- package/bmad/bmm/workflows/4-implementation/dev-story/steps/step-11-mark-review.md +0 -50
- package/bmad/bmm/workflows/4-implementation/dev-story/steps/step-12-communication.md +0 -45
- package/bmad/bmm/workflows/4-implementation/retrospective/instructions.md +0 -1443
- package/bmad/bmm/workflows/4-implementation/retrospective/workflow.yaml +0 -57
- package/bmad/bmm/workflows/4-implementation/sprint-planning/checklist.md +0 -34
- package/bmad/bmm/workflows/4-implementation/sprint-planning/instructions.md +0 -276
- package/bmad/bmm/workflows/4-implementation/sprint-planning/sprint-status-template.yaml +0 -63
- package/bmad/bmm/workflows/4-implementation/sprint-planning/workflow.yaml +0 -52
- package/bmad/bmm/workflows/4-implementation/sprint-status/instructions.md +0 -229
- package/bmad/bmm/workflows/4-implementation/sprint-status/workflow.yaml +0 -35
- package/bmad/bmm/workflows/5-documentation/README.md +0 -235
- package/bmad/bmm/workflows/5-documentation/create-user-guide/steps/step-01-init.md +0 -213
- package/bmad/bmm/workflows/5-documentation/create-user-guide/steps/step-01b-continue.md +0 -268
- package/bmad/bmm/workflows/5-documentation/create-user-guide/steps/step-02-seleccion-features.md +0 -197
- package/bmad/bmm/workflows/5-documentation/create-user-guide/steps/step-03-analisis-fuentes.md +0 -235
- package/bmad/bmm/workflows/5-documentation/create-user-guide/steps/step-04-elicitacion.md +0 -116
- package/bmad/bmm/workflows/5-documentation/create-user-guide/steps/step-05-generacion-espanol.md +0 -611
- package/bmad/bmm/workflows/5-documentation/create-user-guide/steps/step-06-traduccion-ingles.md +0 -615
- package/bmad/bmm/workflows/5-documentation/create-user-guide/steps/step-07-validacion-guardado.md +0 -467
- package/bmad/bmm/workflows/5-documentation/create-user-guide/workflow-plan-create-user-guide.md +0 -949
- package/bmad/bmm/workflows/bmad-quick-flow/create-tech-spec/steps/step-01-understand.md +0 -189
- package/bmad/bmm/workflows/bmad-quick-flow/create-tech-spec/steps/step-02-investigate.md +0 -144
- package/bmad/bmm/workflows/bmad-quick-flow/create-tech-spec/steps/step-03-generate.md +0 -128
- package/bmad/bmm/workflows/bmad-quick-flow/create-tech-spec/steps/step-04-review.md +0 -173
- package/bmad/bmm/workflows/bmad-quick-flow/create-tech-spec/tech-spec-template.md +0 -74
- package/bmad/bmm/workflows/bmad-quick-flow/create-tech-spec/workflow.md +0 -79
- package/bmad/bmm/workflows/bmad-quick-flow/quick-dev/steps/step-01-mode-detection.md +0 -156
- package/bmad/bmm/workflows/bmad-quick-flow/quick-dev/steps/step-02-context-gathering.md +0 -120
- package/bmad/bmm/workflows/bmad-quick-flow/quick-dev/steps/step-03-execute.md +0 -113
- package/bmad/bmm/workflows/bmad-quick-flow/quick-dev/steps/step-04-self-check.md +0 -113
- package/bmad/bmm/workflows/bmad-quick-flow/quick-dev/steps/step-05-adversarial-review.md +0 -106
- package/bmad/bmm/workflows/bmad-quick-flow/quick-dev/steps/step-06-resolve-findings.md +0 -140
- package/bmad/bmm/workflows/bmad-quick-flow/quick-dev/workflow.md +0 -52
- package/bmad/bmm/workflows/document-project/instructions.md +0 -221
- package/bmad/bmm/workflows/document-project/templates/project-scan-report-schema.json +0 -160
- package/bmad/bmm/workflows/document-project/workflow.yaml +0 -28
- package/bmad/bmm/workflows/document-project/workflows/deep-dive-instructions.md +0 -298
- package/bmad/bmm/workflows/document-project/workflows/deep-dive.yaml +0 -31
- package/bmad/bmm/workflows/document-project/workflows/full-scan-instructions.md +0 -1106
- package/bmad/bmm/workflows/document-project/workflows/full-scan.yaml +0 -31
- package/bmad/bmm/workflows/excalidraw-diagrams/_shared/excalidraw-library.json +0 -90
- package/bmad/bmm/workflows/excalidraw-diagrams/_shared/excalidraw-templates.yaml +0 -127
- package/bmad/bmm/workflows/excalidraw-diagrams/create-dataflow/checklist.md +0 -39
- package/bmad/bmm/workflows/excalidraw-diagrams/create-dataflow/instructions.md +0 -130
- package/bmad/bmm/workflows/excalidraw-diagrams/create-dataflow/workflow.yaml +0 -26
- package/bmad/bmm/workflows/excalidraw-diagrams/create-diagram/checklist.md +0 -43
- package/bmad/bmm/workflows/excalidraw-diagrams/create-diagram/instructions.md +0 -141
- package/bmad/bmm/workflows/excalidraw-diagrams/create-diagram/workflow.yaml +0 -26
- package/bmad/bmm/workflows/excalidraw-diagrams/create-flowchart/checklist.md +0 -49
- package/bmad/bmm/workflows/excalidraw-diagrams/create-flowchart/instructions.md +0 -241
- package/bmad/bmm/workflows/excalidraw-diagrams/create-flowchart/workflow.yaml +0 -26
- package/bmad/bmm/workflows/excalidraw-diagrams/create-wireframe/checklist.md +0 -38
- package/bmad/bmm/workflows/excalidraw-diagrams/create-wireframe/instructions.md +0 -133
- package/bmad/bmm/workflows/excalidraw-diagrams/create-wireframe/workflow.yaml +0 -26
- package/bmad/bmm/workflows/generate-project-context/steps/step-01-discover.md +0 -261
- package/bmad/bmm/workflows/generate-project-context/steps/step-02-generate.md +0 -342
- package/bmad/bmm/workflows/generate-project-context/steps/step-03-complete.md +0 -278
- package/bmad/bmm/workflows/generate-project-context/workflow.md +0 -51
- package/bmad/bmm/workflows/testarch/atdd/atdd-checklist-template.md +0 -364
- package/bmad/bmm/workflows/testarch/atdd/checklist.md +0 -374
- package/bmad/bmm/workflows/testarch/atdd/instructions.md +0 -806
- package/bmad/bmm/workflows/testarch/atdd/workflow.yaml +0 -45
- package/bmad/bmm/workflows/testarch/automate/checklist.md +0 -582
- package/bmad/bmm/workflows/testarch/automate/instructions.md +0 -1324
- package/bmad/bmm/workflows/testarch/automate/workflow.yaml +0 -52
- package/bmad/bmm/workflows/testarch/ci/checklist.md +0 -248
- package/bmad/bmm/workflows/testarch/ci/github-actions-template.yaml +0 -198
- package/bmad/bmm/workflows/testarch/ci/gitlab-ci-template.yaml +0 -149
- package/bmad/bmm/workflows/testarch/ci/instructions.md +0 -536
- package/bmad/bmm/workflows/testarch/ci/workflow.yaml +0 -45
- package/bmad/bmm/workflows/testarch/framework/checklist.md +0 -321
- package/bmad/bmm/workflows/testarch/framework/instructions.md +0 -481
- package/bmad/bmm/workflows/testarch/framework/workflow.yaml +0 -47
- package/bmad/bmm/workflows/testarch/nfr-assess/checklist.md +0 -407
- package/bmad/bmm/workflows/testarch/nfr-assess/instructions.md +0 -722
- package/bmad/bmm/workflows/testarch/nfr-assess/nfr-report-template.md +0 -445
- package/bmad/bmm/workflows/testarch/nfr-assess/workflow.yaml +0 -47
- package/bmad/bmm/workflows/testarch/test-design/checklist.md +0 -235
- package/bmad/bmm/workflows/testarch/test-design/instructions.md +0 -788
- package/bmad/bmm/workflows/testarch/test-design/test-design-template.md +0 -294
- package/bmad/bmm/workflows/testarch/test-design/workflow.yaml +0 -54
- package/bmad/bmm/workflows/testarch/test-review/checklist.md +0 -472
- package/bmad/bmm/workflows/testarch/test-review/instructions.md +0 -628
- package/bmad/bmm/workflows/testarch/test-review/test-review-template.md +0 -390
- package/bmad/bmm/workflows/testarch/test-review/workflow.yaml +0 -46
- package/bmad/bmm/workflows/testarch/trace/checklist.md +0 -655
- package/bmad/bmm/workflows/testarch/trace/instructions.md +0 -1047
- package/bmad/bmm/workflows/testarch/trace/trace-template.md +0 -675
- package/bmad/bmm/workflows/testarch/trace/workflow.yaml +0 -55
- package/bmad/bmm/workflows/workflow-status/init/instructions.md +0 -346
- package/bmad/bmm/workflows/workflow-status/init/workflow.yaml +0 -29
- package/bmad/bmm/workflows/workflow-status/instructions.md +0 -395
- package/bmad/bmm/workflows/workflow-status/paths/enterprise-brownfield.yaml +0 -103
- package/bmad/bmm/workflows/workflow-status/paths/enterprise-greenfield.yaml +0 -100
- package/bmad/bmm/workflows/workflow-status/paths/method-brownfield.yaml +0 -103
- package/bmad/bmm/workflows/workflow-status/paths/method-greenfield.yaml +0 -100
- package/bmad/bmm/workflows/workflow-status/project-levels.yaml +0 -59
- package/bmad/bmm/workflows/workflow-status/workflow-status-template.yaml +0 -24
- package/bmad/bmm/workflows/workflow-status/workflow.yaml +0 -30
- package/bmad/cis/agents/brainstorming-coach.md +0 -60
- package/bmad/cis/agents/creative-problem-solver.md +0 -60
- package/bmad/cis/agents/design-thinking-coach.md +0 -60
- package/bmad/cis/agents/innovation-strategist.md +0 -60
- package/bmad/cis/agents/presentation-master.md +0 -66
- package/bmad/cis/agents/storyteller/storyteller.md +0 -57
- package/bmad/cis/config.yaml +0 -11
- package/bmad/cis/teams/creative-squad.yaml +0 -7
- package/bmad/cis/teams/default-party.csv +0 -12
- package/bmad/cis/workflows/README.md +0 -139
- package/bmad/cis/workflows/design-thinking/README.md +0 -56
- package/bmad/cis/workflows/design-thinking/design-methods.csv +0 -31
- package/bmad/cis/workflows/design-thinking/instructions.md +0 -202
- package/bmad/cis/workflows/design-thinking/template.md +0 -111
- package/bmad/cis/workflows/design-thinking/workflow.yaml +0 -27
- package/bmad/cis/workflows/innovation-strategy/README.md +0 -56
- package/bmad/cis/workflows/innovation-strategy/innovation-frameworks.csv +0 -31
- package/bmad/cis/workflows/innovation-strategy/instructions.md +0 -276
- package/bmad/cis/workflows/innovation-strategy/template.md +0 -189
- package/bmad/cis/workflows/innovation-strategy/workflow.yaml +0 -27
- package/bmad/cis/workflows/problem-solving/README.md +0 -56
- package/bmad/cis/workflows/problem-solving/instructions.md +0 -252
- package/bmad/cis/workflows/problem-solving/solving-methods.csv +0 -31
- package/bmad/cis/workflows/problem-solving/template.md +0 -165
- package/bmad/cis/workflows/problem-solving/workflow.yaml +0 -27
- package/bmad/cis/workflows/storytelling/README.md +0 -58
- package/bmad/cis/workflows/storytelling/instructions.md +0 -293
- package/bmad/cis/workflows/storytelling/story-types.csv +0 -26
- package/bmad/cis/workflows/storytelling/template.md +0 -113
- package/bmad/cis/workflows/storytelling/workflow.yaml +0 -27
- package/bmad/core/agents/bmad-master.md +0 -57
- package/bmad/core/config.yaml +0 -9
- package/bmad/core/resources/excalidraw/README.md +0 -160
- package/bmad/core/resources/excalidraw/excalidraw-helpers.md +0 -127
- package/bmad/core/resources/excalidraw/library-loader.md +0 -50
- package/bmad/core/resources/excalidraw/validate-json-instructions.md +0 -79
- package/bmad/core/tasks/index-docs.xml +0 -65
- package/bmad/core/tasks/review-adversarial-general.xml +0 -41
- package/bmad/core/tasks/shard-doc.xml +0 -109
- package/bmad/core/tasks/validate-workflow.xml +0 -89
- package/bmad/core/tasks/workflow.xml +0 -235
- package/bmad/core/workflows/advanced-elicitation/workflow.xml +0 -117
- package/bmad/core/workflows/brainstorming/steps/step-01-session-setup.md +0 -197
- package/bmad/core/workflows/brainstorming/steps/step-01b-continue.md +0 -122
- package/bmad/core/workflows/brainstorming/steps/step-02a-user-selected.md +0 -225
- package/bmad/core/workflows/brainstorming/steps/step-02b-ai-recommended.md +0 -237
- package/bmad/core/workflows/brainstorming/steps/step-02c-random-selection.md +0 -209
- package/bmad/core/workflows/brainstorming/steps/step-02d-progressive-flow.md +0 -264
- package/bmad/core/workflows/brainstorming/steps/step-03-technique-execution.md +0 -340
- package/bmad/core/workflows/brainstorming/steps/step-04-idea-organization.md +0 -303
- package/bmad/core/workflows/brainstorming/workflow.md +0 -51
- package/bmad/core/workflows/party-mode/steps/step-01-agent-loading.md +0 -139
- package/bmad/core/workflows/party-mode/steps/step-02-discussion-orchestration.md +0 -204
- package/bmad/core/workflows/party-mode/steps/step-03-graceful-exit.md +0 -159
- package/bmad/core/workflows/party-mode/workflow.md +0 -206
- package/claude/commands/bmad/bmb/agents/agent-builder.md +0 -14
- package/claude/commands/bmad/bmb/agents/module-builder.md +0 -14
- package/claude/commands/bmad/bmb/agents/workflow-builder.md +0 -14
- package/claude/commands/bmad/bmb/workflows/Meal Prep & Nutrition Plan.md +0 -5
- package/claude/commands/bmad/bmb/workflows/agent.md +0 -5
- package/claude/commands/bmad/bmb/workflows/create-module.md +0 -5
- package/claude/commands/bmad/bmb/workflows/create-workflow.md +0 -5
- package/claude/commands/bmad/bmb/workflows/edit-workflow.md +0 -5
- package/claude/commands/bmad/bmb/workflows/workflow-compliance-check.md +0 -5
- package/claude/commands/bmad/bmm/agents/analyst.md +0 -14
- package/claude/commands/bmad/bmm/agents/architect.md +0 -14
- package/claude/commands/bmad/bmm/agents/dev.md +0 -14
- package/claude/commands/bmad/bmm/agents/pm.md +0 -14
- package/claude/commands/bmad/bmm/agents/quick-flow-solo-dev.md +0 -14
- package/claude/commands/bmad/bmm/agents/sm.md +0 -14
- package/claude/commands/bmad/bmm/agents/tea.md +0 -14
- package/claude/commands/bmad/bmm/agents/tech-writer.md +0 -14
- package/claude/commands/bmad/bmm/agents/ux-designer.md +0 -14
- package/claude/commands/bmad/bmm/workflows/check-implementation-readiness.md +0 -9
- package/claude/commands/bmad/bmm/workflows/code-review.md +0 -14
- package/claude/commands/bmad/bmm/workflows/correct-course.md +0 -14
- package/claude/commands/bmad/bmm/workflows/create-architecture.md +0 -9
- package/claude/commands/bmad/bmm/workflows/create-epics-and-stories.md +0 -9
- package/claude/commands/bmad/bmm/workflows/create-excalidraw-dataflow.md +0 -13
- package/claude/commands/bmad/bmm/workflows/create-excalidraw-diagram.md +0 -13
- package/claude/commands/bmad/bmm/workflows/create-excalidraw-flowchart.md +0 -13
- package/claude/commands/bmad/bmm/workflows/create-excalidraw-wireframe.md +0 -13
- package/claude/commands/bmad/bmm/workflows/create-prd.md +0 -11
- package/claude/commands/bmad/bmm/workflows/create-product-brief.md +0 -9
- package/claude/commands/bmad/bmm/workflows/create-story.md +0 -14
- package/claude/commands/bmad/bmm/workflows/create-tech-spec.md +0 -5
- package/claude/commands/bmad/bmm/workflows/create-user-guide.md +0 -5
- package/claude/commands/bmad/bmm/workflows/create-ux-design.md +0 -9
- package/claude/commands/bmad/bmm/workflows/dev-story.md +0 -14
- package/claude/commands/bmad/bmm/workflows/document-project.md +0 -13
- package/claude/commands/bmad/bmm/workflows/fast-track-dev.md +0 -5
- package/claude/commands/bmad/bmm/workflows/generate-project-context.md +0 -11
- package/claude/commands/bmad/bmm/workflows/quality-process.md +0 -5
- package/claude/commands/bmad/bmm/workflows/quick-dev.md +0 -5
- package/claude/commands/bmad/bmm/workflows/research.md +0 -5
- package/claude/commands/bmad/bmm/workflows/retrospective.md +0 -13
- package/claude/commands/bmad/bmm/workflows/sprint-planning.md +0 -14
- package/claude/commands/bmad/bmm/workflows/sprint-status.md +0 -14
- package/claude/commands/bmad/bmm/workflows/testarch-atdd.md +0 -13
- package/claude/commands/bmad/bmm/workflows/testarch-automate.md +0 -13
- package/claude/commands/bmad/bmm/workflows/testarch-ci.md +0 -13
- package/claude/commands/bmad/bmm/workflows/testarch-framework.md +0 -13
- package/claude/commands/bmad/bmm/workflows/testarch-nfr.md +0 -13
- package/claude/commands/bmad/bmm/workflows/testarch-test-design.md +0 -13
- package/claude/commands/bmad/bmm/workflows/testarch-test-review.md +0 -13
- package/claude/commands/bmad/bmm/workflows/testarch-trace.md +0 -13
- package/claude/commands/bmad/bmm/workflows/workflow-init.md +0 -14
- package/claude/commands/bmad/bmm/workflows/workflow-status.md +0 -13
- package/claude/commands/bmad/cis/agents/brainstorming-coach.md +0 -14
- package/claude/commands/bmad/cis/agents/creative-problem-solver.md +0 -14
- package/claude/commands/bmad/cis/agents/design-thinking-coach.md +0 -14
- package/claude/commands/bmad/cis/agents/innovation-strategist.md +0 -14
- package/claude/commands/bmad/cis/agents/presentation-master.md +0 -14
- package/claude/commands/bmad/cis/agents/storyteller.md +0 -14
- package/claude/commands/bmad/cis/workflows/design-thinking.md +0 -13
- package/claude/commands/bmad/cis/workflows/innovation-strategy.md +0 -13
- package/claude/commands/bmad/cis/workflows/problem-solving.md +0 -13
- package/claude/commands/bmad/cis/workflows/storytelling.md +0 -13
- package/claude/commands/bmad/core/agents/bmad-master.md +0 -14
- package/claude/commands/bmad/core/tasks/index-docs.md +0 -9
- package/claude/commands/bmad/core/workflows/brainstorming.md +0 -5
- package/claude/commands/bmad/core/workflows/party-mode.md +0 -5
- package/claude/commands/bmad/core/workflows/shard-docs.md +0 -10
- package/siesa-agents/bmm/workflows/fast-track-dev/completion-summary-fast-track-dev.md +0 -76
- package/siesa-agents/bmm/workflows/fast-track-dev/steps/step-01-init.md +0 -161
- package/siesa-agents/bmm/workflows/fast-track-dev/steps/step-02-configure.md +0 -195
- package/siesa-agents/bmm/workflows/fast-track-dev/steps/step-03-execute.md +0 -169
- package/siesa-agents/bmm/workflows/fast-track-dev/workflow-plan-fast-track-dev.md +0 -198
- package/siesa-agents/bmm/workflows/fast-track-dev/workflow.md +0 -57
- package/siesa-agents/bmm/workflows/workflow-status/Init/workflow_ext.md +0 -194
- package/siesa-agents/scripts/bmad_orchestrator.py +0 -900
- /package/{bmad/core/workflows/advanced-elicitation → claude/skills/bmad-advanced-elicitation}/methods.csv +0 -0
- /package/{bmad/core/workflows/brainstorming → claude/skills/bmad-brainstorming}/brain-methods.csv +0 -0
- /package/{bmad/core/workflows/brainstorming → claude/skills/bmad-brainstorming}/template.md +0 -0
- /package/{bmad/bmm/workflows/3-solutioning/check-implementation-readiness → claude/skills/bmad-check-implementation-readiness}/templates/readiness-report-template.md +0 -0
- /package/{bmad/bmm/workflows/3-solutioning/create-architecture → claude/skills/bmad-create-architecture}/architecture-decision-template.md +0 -0
- /package/{bmad/bmm/workflows/2-plan-workflows/prd → claude/skills/bmad-create-prd/data}/project-types.csv +0 -0
- /package/{bmad/bmm/workflows/4-implementation/create-story → claude/skills/bmad-create-story}/template.md +0 -0
- /package/{bmad/bmm/workflows/2-plan-workflows/create-ux-design → claude/skills/bmad-create-ux-design}/ux-design-template.md +0 -0
- /package/{bmad/bmm/workflows/document-project → claude/skills/bmad-document-project}/checklist.md +0 -0
- /package/{bmad/bmm/workflows/document-project → claude/skills/bmad-document-project}/documentation-requirements.csv +0 -0
- /package/{bmad/bmm/workflows/document-project → claude/skills/bmad-document-project}/templates/deep-dive-template.md +0 -0
- /package/{bmad/bmm/workflows/document-project → claude/skills/bmad-document-project}/templates/index-template.md +0 -0
- /package/{bmad/bmm/workflows/document-project → claude/skills/bmad-document-project}/templates/project-overview-template.md +0 -0
- /package/{bmad/bmm/workflows/document-project → claude/skills/bmad-document-project}/templates/source-tree-template.md +0 -0
- /package/{bmad/bmm/workflows/1-analysis/research → claude/skills/bmad-domain-research}/domain-steps/step-01-init.md +0 -0
- /package/{bmad/bmm/workflows/1-analysis/research → claude/skills/bmad-domain-research}/domain-steps/step-02-domain-analysis.md +0 -0
- /package/{bmad/bmm/workflows/1-analysis/research → claude/skills/bmad-domain-research}/domain-steps/step-03-competitive-landscape.md +0 -0
- /package/{bmad/bmm/workflows/1-analysis/research → claude/skills/bmad-domain-research}/domain-steps/step-04-regulatory-focus.md +0 -0
- /package/{bmad/bmm/workflows/1-analysis/research → claude/skills/bmad-domain-research}/domain-steps/step-05-technical-trends.md +0 -0
- /package/{bmad/bmm/workflows/1-analysis/research → claude/skills/bmad-domain-research}/research.template.md +0 -0
- /package/{bmad/bmm/workflows/generate-project-context → claude/skills/bmad-generate-project-context}/project-context-template.md +0 -0
- /package/{bmad/bmm/workflows/1-analysis/research → claude/skills/bmad-technical-research}/technical-steps/step-01-init.md +0 -0
- /package/{bmad/bmm/workflows/1-analysis/research → claude/skills/bmad-technical-research}/technical-steps/step-02-technical-overview.md +0 -0
- /package/{bmad/bmm/workflows/1-analysis/research → claude/skills/bmad-technical-research}/technical-steps/step-03-integration-patterns.md +0 -0
- /package/{bmad → siesa-agents}/bmm/data/git-flow-siesa.md +0 -0
- /package/{bmad → siesa-agents}/bmm/workflows/3-solutioning/create-architecture/data/company-standards/architecture-patterns.md +0 -0
- /package/{bmad → siesa-agents}/bmm/workflows/3-solutioning/create-architecture/data/company-standards/backend-standards.md +0 -0
- /package/{bmad → siesa-agents}/bmm/workflows/3-solutioning/create-architecture/data/company-standards/database-conventions.md +0 -0
- /package/{bmad → siesa-agents}/bmm/workflows/3-solutioning/create-architecture/data/company-standards/frontend-standards.md +0 -0
- /package/{bmad → siesa-agents}/bmm/workflows/3-solutioning/create-architecture/data/company-standards/mastercrud-use-reference.md +0 -0
- /package/{bmad → siesa-agents}/bmm/workflows/3-solutioning/create-architecture/data/company-standards/technical-preferences-ux.md +0 -0
- /package/{bmad → siesa-agents}/bmm/workflows/3-solutioning/create-architecture/data/company-standards/technology-stack.md +0 -0
- /package/{bmad → siesa-agents}/bmm/workflows/3-solutioning/create-architecture/data/company-standards/vite-config-standard.md +0 -0
- /package/{bmad → siesa-agents}/bmm/workflows/4-implementation/create-story/workflow.md +0 -0
- /package/{bmad → siesa-agents}/bmm/workflows/4-implementation/dev-story/workflow.md +0 -0
- /package/{bmad → siesa-agents}/bmm/workflows/5-documentation/create-user-guide/data/audience-types.csv +0 -0
- /package/{bmad → siesa-agents}/bmm/workflows/5-documentation/create-user-guide/data/diagram-types.csv +0 -0
- /package/{bmad → siesa-agents}/bmm/workflows/5-documentation/create-user-guide/data/section-structure.csv +0 -0
- /package/{bmad → siesa-agents}/bmm/workflows/5-documentation/create-user-guide/steps/step-02-seleccion-epicas.md +0 -0
- /package/{bmad → siesa-agents}/bmm/workflows/5-documentation/create-user-guide/templates/user-guide-template-en.md +0 -0
- /package/{bmad → siesa-agents}/bmm/workflows/5-documentation/create-user-guide/templates/user-guide-template-es.md +0 -0
- /package/{bmad → siesa-agents}/bmm/workflows/5-documentation/create-user-guide/workflow.md +0 -0
|
@@ -1,900 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env python3
|
|
2
|
-
"""
|
|
3
|
-
BMAD Story Orchestrator
|
|
4
|
-
=======================
|
|
5
|
-
Automates the full story development cycle (create → dev → code-review)
|
|
6
|
-
by invoking the Claude Code CLI in sequential, clean-context sessions.
|
|
7
|
-
|
|
8
|
-
Source of truth: _bmad-output/implementation-artifacts/sprint-status.yaml
|
|
9
|
-
Resume state: scripts/.orchestrator-state.json
|
|
10
|
-
Logs: scripts/logs/
|
|
11
|
-
"""
|
|
12
|
-
|
|
13
|
-
import argparse
|
|
14
|
-
import json
|
|
15
|
-
import os
|
|
16
|
-
import re
|
|
17
|
-
import shutil
|
|
18
|
-
import subprocess
|
|
19
|
-
import sys
|
|
20
|
-
import time
|
|
21
|
-
from datetime import datetime
|
|
22
|
-
from pathlib import Path
|
|
23
|
-
|
|
24
|
-
# Ensure stdout/stderr handle Unicode on Windows consoles (cp1252 → utf-8)
|
|
25
|
-
if hasattr(sys.stdout, "reconfigure"):
|
|
26
|
-
sys.stdout.reconfigure(encoding="utf-8", errors="replace")
|
|
27
|
-
if hasattr(sys.stderr, "reconfigure"):
|
|
28
|
-
sys.stderr.reconfigure(encoding="utf-8", errors="replace")
|
|
29
|
-
|
|
30
|
-
# ---------------------------------------------------------------------------
|
|
31
|
-
# Paths
|
|
32
|
-
# ---------------------------------------------------------------------------
|
|
33
|
-
def _find_project_root() -> Path:
|
|
34
|
-
"""Walk up from CWD until we find sprint-status.yaml or a known marker."""
|
|
35
|
-
SPRINT_REL = Path("_bmad-output") / "implementation-artifacts" / "sprint-status.yaml"
|
|
36
|
-
candidate = Path.cwd().resolve()
|
|
37
|
-
for _ in range(10): # max 10 levels up
|
|
38
|
-
if (candidate / SPRINT_REL).exists():
|
|
39
|
-
return candidate
|
|
40
|
-
parent = candidate.parent
|
|
41
|
-
if parent == candidate:
|
|
42
|
-
break
|
|
43
|
-
candidate = parent
|
|
44
|
-
# Fallback: original behavior relative to script
|
|
45
|
-
return Path(__file__).resolve().parent.parent
|
|
46
|
-
|
|
47
|
-
SCRIPT_DIR = Path(__file__).resolve().parent
|
|
48
|
-
PROJECT_ROOT = _find_project_root()
|
|
49
|
-
SPRINT_STATUS = PROJECT_ROOT / "_bmad-output" / "implementation-artifacts" / "sprint-status.yaml"
|
|
50
|
-
STATE_FILE = SCRIPT_DIR / ".orchestrator-state.json"
|
|
51
|
-
LOGS_DIR = SCRIPT_DIR / "logs"
|
|
52
|
-
|
|
53
|
-
# ---------------------------------------------------------------------------
|
|
54
|
-
# Steps
|
|
55
|
-
# ---------------------------------------------------------------------------
|
|
56
|
-
STEPS = ["create", "dev", "review"]
|
|
57
|
-
|
|
58
|
-
_NO_QUESTIONS = (
|
|
59
|
-
' Run in batch mode: do not ask questions, do not offer further help, '
|
|
60
|
-
'do not suggest next steps, do not wait for user input. '
|
|
61
|
-
'Complete the task fully and stop.'
|
|
62
|
-
)
|
|
63
|
-
|
|
64
|
-
STEP_PROMPTS = {
|
|
65
|
-
"create": '/bmad:bmm:workflows:create-story create story {story_id}' + _NO_QUESTIONS,
|
|
66
|
-
"dev": '/bmad:bmm:workflows:dev-story implement story {story_id}' + _NO_QUESTIONS,
|
|
67
|
-
"review": (
|
|
68
|
-
'/bmad:bmm:workflows:code-review review the code for story {story_id}. '
|
|
69
|
-
'Apply ALL fixes automatically without asking for confirmation. '
|
|
70
|
-
'Do not pause for user input — apply every correction you find.'
|
|
71
|
-
+ _NO_QUESTIONS
|
|
72
|
-
),
|
|
73
|
-
}
|
|
74
|
-
|
|
75
|
-
MAX_RETRIES = 8
|
|
76
|
-
DEFAULT_WAIT_SECS = 300 # 5 minutes
|
|
77
|
-
|
|
78
|
-
# ANSI colors
|
|
79
|
-
C_RESET = "\033[0m"
|
|
80
|
-
C_BOLD = "\033[1m"
|
|
81
|
-
C_GREEN = "\033[32m"
|
|
82
|
-
C_YELLOW = "\033[33m"
|
|
83
|
-
C_RED = "\033[31m"
|
|
84
|
-
C_CYAN = "\033[36m"
|
|
85
|
-
C_DIM = "\033[2m"
|
|
86
|
-
C_MAGENTA = "\033[35m"
|
|
87
|
-
C_BLUE = "\033[34m"
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
# ---------------------------------------------------------------------------
|
|
91
|
-
# Sprint-status parser (stdlib only, no yaml lib)
|
|
92
|
-
# ---------------------------------------------------------------------------
|
|
93
|
-
def parse_sprint_status(path: Path) -> list[dict]:
|
|
94
|
-
"""Return list of {'epic': int, 'story_id': str, 'status': str}."""
|
|
95
|
-
stories: list[dict] = []
|
|
96
|
-
current_epic: int | None = None
|
|
97
|
-
|
|
98
|
-
with open(path) as f:
|
|
99
|
-
in_dev_status = False
|
|
100
|
-
for raw_line in f:
|
|
101
|
-
line = raw_line.strip()
|
|
102
|
-
|
|
103
|
-
# Detect development_status block
|
|
104
|
-
if line == "development_status:":
|
|
105
|
-
in_dev_status = True
|
|
106
|
-
continue
|
|
107
|
-
if not in_dev_status:
|
|
108
|
-
continue
|
|
109
|
-
|
|
110
|
-
# Skip comments and blanks
|
|
111
|
-
if not line or line.startswith("#"):
|
|
112
|
-
continue
|
|
113
|
-
|
|
114
|
-
# Parse key: value (ignore inline comments)
|
|
115
|
-
m = re.match(r'^(\S+):\s*(\S+)', line)
|
|
116
|
-
if not m:
|
|
117
|
-
continue
|
|
118
|
-
key, value = m.group(1), m.group(2)
|
|
119
|
-
|
|
120
|
-
# Epic line
|
|
121
|
-
epic_m = re.match(r'^epic-(\d+)$', key)
|
|
122
|
-
if epic_m:
|
|
123
|
-
current_epic = int(epic_m.group(1))
|
|
124
|
-
continue
|
|
125
|
-
|
|
126
|
-
# Retrospective lines — skip
|
|
127
|
-
if "retrospective" in key:
|
|
128
|
-
continue
|
|
129
|
-
|
|
130
|
-
# Story line
|
|
131
|
-
story_m = re.match(r'^(\d+)-(\d+)', key)
|
|
132
|
-
if story_m and current_epic is not None:
|
|
133
|
-
stories.append({
|
|
134
|
-
"epic": current_epic,
|
|
135
|
-
"story_id": key,
|
|
136
|
-
"status": value,
|
|
137
|
-
})
|
|
138
|
-
|
|
139
|
-
return stories
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
# ---------------------------------------------------------------------------
|
|
143
|
-
# State management
|
|
144
|
-
# ---------------------------------------------------------------------------
|
|
145
|
-
def load_state() -> dict | None:
|
|
146
|
-
if STATE_FILE.exists():
|
|
147
|
-
try:
|
|
148
|
-
return json.loads(STATE_FILE.read_text())
|
|
149
|
-
except (json.JSONDecodeError, OSError):
|
|
150
|
-
return None
|
|
151
|
-
return None
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
def save_state(story_id: str, step: str, completed: bool):
|
|
155
|
-
state = {
|
|
156
|
-
"story_id": story_id,
|
|
157
|
-
"step": step,
|
|
158
|
-
"completed": completed,
|
|
159
|
-
"timestamp": datetime.now().isoformat(),
|
|
160
|
-
}
|
|
161
|
-
STATE_FILE.write_text(json.dumps(state, indent=2) + "\n")
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
def clear_state():
|
|
165
|
-
if STATE_FILE.exists():
|
|
166
|
-
STATE_FILE.unlink()
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
# ---------------------------------------------------------------------------
|
|
170
|
-
# Logging
|
|
171
|
-
# ---------------------------------------------------------------------------
|
|
172
|
-
class Logger:
|
|
173
|
-
def __init__(self):
|
|
174
|
-
LOGS_DIR.mkdir(parents=True, exist_ok=True)
|
|
175
|
-
ts = datetime.now().strftime("%Y%m%d_%H%M%S")
|
|
176
|
-
self.general_log = open(LOGS_DIR / f"orchestrator_{ts}.log", "w", encoding="utf-8")
|
|
177
|
-
self._step_log = None
|
|
178
|
-
|
|
179
|
-
def open_step_log(self, story_id: str, step: str):
|
|
180
|
-
self.close_step_log()
|
|
181
|
-
story_dir = LOGS_DIR / f"story_{story_id}"
|
|
182
|
-
story_dir.mkdir(parents=True, exist_ok=True)
|
|
183
|
-
self._step_log = open(story_dir / f"{step}.log", "w", encoding="utf-8")
|
|
184
|
-
|
|
185
|
-
def close_step_log(self):
|
|
186
|
-
if self._step_log:
|
|
187
|
-
self._step_log.close()
|
|
188
|
-
self._step_log = None
|
|
189
|
-
|
|
190
|
-
def log(self, text: str, *, to_step=True):
|
|
191
|
-
ts = datetime.now().strftime("%H:%M:%S")
|
|
192
|
-
entry = f"[{ts}] {text}\n"
|
|
193
|
-
self.general_log.write(entry)
|
|
194
|
-
self.general_log.flush()
|
|
195
|
-
if to_step and self._step_log:
|
|
196
|
-
self._step_log.write(entry)
|
|
197
|
-
self._step_log.flush()
|
|
198
|
-
|
|
199
|
-
def log_output(self, text: str):
|
|
200
|
-
"""Log raw output to step log only."""
|
|
201
|
-
safe = text.encode("utf-8", errors="replace").decode("utf-8")
|
|
202
|
-
if self._step_log:
|
|
203
|
-
self._step_log.write(safe)
|
|
204
|
-
self._step_log.flush()
|
|
205
|
-
|
|
206
|
-
def close(self):
|
|
207
|
-
self.close_step_log()
|
|
208
|
-
self.general_log.close()
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
# ---------------------------------------------------------------------------
|
|
212
|
-
# Rate-limit detection
|
|
213
|
-
# ---------------------------------------------------------------------------
|
|
214
|
-
_RATE_LIMIT_PATTERNS = [
|
|
215
|
-
re.compile(r'rate.?limit', re.IGNORECASE),
|
|
216
|
-
re.compile(r'too many requests', re.IGNORECASE),
|
|
217
|
-
re.compile(r'overloaded', re.IGNORECASE),
|
|
218
|
-
re.compile(r'try again in', re.IGNORECASE),
|
|
219
|
-
re.compile(r'retry.after', re.IGNORECASE),
|
|
220
|
-
]
|
|
221
|
-
|
|
222
|
-
_WAIT_TIME_PATTERNS = [
|
|
223
|
-
re.compile(r'(\d+)\s*second', re.IGNORECASE),
|
|
224
|
-
re.compile(r'(\d+)\s*minute', re.IGNORECASE),
|
|
225
|
-
re.compile(r'try again in\s*(\d+)', re.IGNORECASE),
|
|
226
|
-
re.compile(r'wait\s*(\d+)', re.IGNORECASE),
|
|
227
|
-
]
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
def detect_rate_limit(output: str) -> bool:
|
|
231
|
-
return any(p.search(output) for p in _RATE_LIMIT_PATTERNS)
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
def extract_wait_time(output: str) -> int:
|
|
235
|
-
"""Extract wait time in seconds from error output. Returns default if not found."""
|
|
236
|
-
for p in _WAIT_TIME_PATTERNS:
|
|
237
|
-
m = p.search(output)
|
|
238
|
-
if m:
|
|
239
|
-
val = int(m.group(1))
|
|
240
|
-
if "minute" in p.pattern.lower():
|
|
241
|
-
return val * 60
|
|
242
|
-
return val if val <= 600 else DEFAULT_WAIT_SECS
|
|
243
|
-
return DEFAULT_WAIT_SECS
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
def countdown_wait(seconds: int, logger: Logger):
|
|
247
|
-
"""Wait with a visible countdown."""
|
|
248
|
-
print(f"\n{C_YELLOW}Esperando {seconds}s por rate limit...{C_RESET}")
|
|
249
|
-
logger.log(f"Rate limit — waiting {seconds}s")
|
|
250
|
-
end = time.time() + seconds
|
|
251
|
-
while True:
|
|
252
|
-
remaining = int(end - time.time())
|
|
253
|
-
if remaining <= 0:
|
|
254
|
-
break
|
|
255
|
-
mins, secs = divmod(remaining, 60)
|
|
256
|
-
sys.stdout.write(f"\r{C_DIM} {mins:02d}:{secs:02d} restantes...{C_RESET} ")
|
|
257
|
-
sys.stdout.flush()
|
|
258
|
-
time.sleep(1)
|
|
259
|
-
sys.stdout.write("\r" + " " * 40 + "\r")
|
|
260
|
-
sys.stdout.flush()
|
|
261
|
-
print(f"{C_GREEN}Reanudando...{C_RESET}\n")
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
# ---------------------------------------------------------------------------
|
|
265
|
-
# Question detection
|
|
266
|
-
# ---------------------------------------------------------------------------
|
|
267
|
-
def detect_question(output: str) -> str | None:
|
|
268
|
-
"""Check if Claude ended with a question. Returns the question text or None."""
|
|
269
|
-
lines = output.strip().splitlines()
|
|
270
|
-
if not lines:
|
|
271
|
-
return None
|
|
272
|
-
tail = []
|
|
273
|
-
for line in reversed(lines):
|
|
274
|
-
stripped = line.strip()
|
|
275
|
-
if stripped:
|
|
276
|
-
tail.insert(0, stripped)
|
|
277
|
-
if len(tail) >= 5:
|
|
278
|
-
break
|
|
279
|
-
|
|
280
|
-
tail_text = "\n".join(tail)
|
|
281
|
-
|
|
282
|
-
# Phrases that look like questions but are just polite closings — ignore them
|
|
283
|
-
courtesy_patterns = [
|
|
284
|
-
re.compile(r'(estoy a la orden|happy to help|let me know if|feel free to|si tienes (preguntas|dudas)|cualquier (pregunta|duda))', re.IGNORECASE),
|
|
285
|
-
re.compile(r'(if you (have|need)|si (necesitas|quieres|tienes))', re.IGNORECASE),
|
|
286
|
-
]
|
|
287
|
-
if any(p.search(tail_text) for p in courtesy_patterns):
|
|
288
|
-
return None
|
|
289
|
-
|
|
290
|
-
# Only treat as a real question if it ends with ? or uses direct action-blocking phrases
|
|
291
|
-
if tail_text.rstrip().endswith("?"):
|
|
292
|
-
return tail_text
|
|
293
|
-
question_patterns = [
|
|
294
|
-
re.compile(r'would you like (me to|to)', re.IGNORECASE),
|
|
295
|
-
re.compile(r'do you want (me to|to)', re.IGNORECASE),
|
|
296
|
-
re.compile(r'should I (proceed|continue|apply|create|make)', re.IGNORECASE),
|
|
297
|
-
re.compile(r'please (confirm|clarify|specify)', re.IGNORECASE),
|
|
298
|
-
re.compile(r'which (one|option) (do|should|would)', re.IGNORECASE),
|
|
299
|
-
]
|
|
300
|
-
if any(p.search(tail_text) for p in question_patterns):
|
|
301
|
-
return tail_text
|
|
302
|
-
return None
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
# ---------------------------------------------------------------------------
|
|
306
|
-
# Stream-JSON event renderer
|
|
307
|
-
# ---------------------------------------------------------------------------
|
|
308
|
-
def _truncate(text: str, max_len: int = 200) -> str:
|
|
309
|
-
"""Truncate text for display."""
|
|
310
|
-
text = text.strip()
|
|
311
|
-
if len(text) <= max_len:
|
|
312
|
-
return text
|
|
313
|
-
return text[:max_len] + "..."
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
def _format_tool_input(name: str, inp: dict) -> str:
|
|
317
|
-
"""Format a tool_use input for compact display."""
|
|
318
|
-
if name == "Read":
|
|
319
|
-
path = inp.get("file_path", "")
|
|
320
|
-
parts = []
|
|
321
|
-
if path:
|
|
322
|
-
parts.append(path.replace(str(PROJECT_ROOT) + "/", ""))
|
|
323
|
-
if inp.get("offset"):
|
|
324
|
-
parts.append(f"offset={inp['offset']}")
|
|
325
|
-
if inp.get("limit"):
|
|
326
|
-
parts.append(f"limit={inp['limit']}")
|
|
327
|
-
return " ".join(parts)
|
|
328
|
-
if name == "Write":
|
|
329
|
-
path = inp.get("file_path", "")
|
|
330
|
-
return path.replace(str(PROJECT_ROOT) + "/", "")
|
|
331
|
-
if name == "Edit":
|
|
332
|
-
path = inp.get("file_path", "")
|
|
333
|
-
old = _truncate(inp.get("old_string", ""), 60)
|
|
334
|
-
return f"{path.replace(str(PROJECT_ROOT) + '/', '')} old={old!r}"
|
|
335
|
-
if name == "Glob":
|
|
336
|
-
return inp.get("pattern", "")
|
|
337
|
-
if name == "Grep":
|
|
338
|
-
pattern = inp.get("pattern", "")
|
|
339
|
-
path = inp.get("path", "")
|
|
340
|
-
return f"/{pattern}/ in {path.replace(str(PROJECT_ROOT) + '/', '') or '.'}"
|
|
341
|
-
if name == "Bash":
|
|
342
|
-
cmd = inp.get("command", "")
|
|
343
|
-
return _truncate(cmd, 120)
|
|
344
|
-
if name == "Skill":
|
|
345
|
-
return inp.get("skill", "")
|
|
346
|
-
# Generic
|
|
347
|
-
return _truncate(json.dumps(inp, ensure_ascii=False), 120)
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
def _format_tool_result(event: dict) -> str:
|
|
351
|
-
"""Format a tool result for compact display."""
|
|
352
|
-
result = event.get("tool_use_result", "")
|
|
353
|
-
if isinstance(result, dict):
|
|
354
|
-
# File read result
|
|
355
|
-
if "file" in result:
|
|
356
|
-
f = result["file"]
|
|
357
|
-
path = f.get("filePath", "")
|
|
358
|
-
lines = f.get("totalLines", "?")
|
|
359
|
-
return f"{path.replace(str(PROJECT_ROOT) + '/', '')} ({lines} lines)"
|
|
360
|
-
if "filenames" in result:
|
|
361
|
-
count = len(result["filenames"])
|
|
362
|
-
truncated = result.get("truncated", False)
|
|
363
|
-
suffix = "+" if truncated else ""
|
|
364
|
-
return f"{count}{suffix} files"
|
|
365
|
-
if "durationMs" in result:
|
|
366
|
-
return f"done in {result['durationMs']}ms"
|
|
367
|
-
return _truncate(json.dumps(result, ensure_ascii=False), 150)
|
|
368
|
-
if isinstance(result, str):
|
|
369
|
-
# Error results
|
|
370
|
-
if result.startswith("Error:"):
|
|
371
|
-
return f"{C_RED}{_truncate(result, 150)}{C_RESET}"
|
|
372
|
-
return _truncate(result, 150)
|
|
373
|
-
return str(result)[:150]
|
|
374
|
-
|
|
375
|
-
|
|
376
|
-
def render_event(event: dict, logger: Logger) -> str | None:
|
|
377
|
-
"""
|
|
378
|
-
Render a stream-json event to the terminal.
|
|
379
|
-
Returns extracted assistant text (for question detection) or None.
|
|
380
|
-
"""
|
|
381
|
-
etype = event.get("type", "")
|
|
382
|
-
assistant_text = None
|
|
383
|
-
|
|
384
|
-
if etype == "system":
|
|
385
|
-
subtype = event.get("subtype", "")
|
|
386
|
-
if subtype == "init":
|
|
387
|
-
model = event.get("model", "?")
|
|
388
|
-
mode = event.get("permissionMode", "?")
|
|
389
|
-
print(f" {C_DIM}modelo={model} permisos={mode}{C_RESET}")
|
|
390
|
-
logger.log(f"Init: model={model} permissionMode={mode}")
|
|
391
|
-
# Skip hook events silently
|
|
392
|
-
|
|
393
|
-
elif etype == "assistant":
|
|
394
|
-
msg = event.get("message", {})
|
|
395
|
-
content = msg.get("content", [])
|
|
396
|
-
for block in content:
|
|
397
|
-
btype = block.get("type", "")
|
|
398
|
-
if btype == "text":
|
|
399
|
-
text = block.get("text", "")
|
|
400
|
-
if text.strip():
|
|
401
|
-
print(f"\n{text}")
|
|
402
|
-
assistant_text = text
|
|
403
|
-
logger.log_output(text + "\n")
|
|
404
|
-
elif btype == "tool_use":
|
|
405
|
-
name = block.get("name", "?")
|
|
406
|
-
inp = block.get("input", {})
|
|
407
|
-
formatted = _format_tool_input(name, inp)
|
|
408
|
-
print(f" {C_MAGENTA}{name}{C_RESET} {C_DIM}{formatted}{C_RESET}")
|
|
409
|
-
logger.log_output(f"[tool_use] {name}: {formatted}\n")
|
|
410
|
-
|
|
411
|
-
elif etype == "user":
|
|
412
|
-
# Tool result
|
|
413
|
-
formatted = _format_tool_result(event)
|
|
414
|
-
if formatted:
|
|
415
|
-
print(f" {C_DIM} ↳ {formatted}{C_RESET}")
|
|
416
|
-
logger.log_output(f"[tool_result] {formatted}\n")
|
|
417
|
-
|
|
418
|
-
elif etype == "rate_limit_event":
|
|
419
|
-
info = event.get("rate_limit_info", {})
|
|
420
|
-
status = info.get("status", "")
|
|
421
|
-
if status != "allowed":
|
|
422
|
-
resets_at = info.get("resetsAt", 0)
|
|
423
|
-
now = int(time.time())
|
|
424
|
-
wait = max(resets_at - now, DEFAULT_WAIT_SECS) if resets_at > now else DEFAULT_WAIT_SECS
|
|
425
|
-
print(f"\n {C_RED}Rate limit: status={status}{C_RESET}")
|
|
426
|
-
logger.log(f"Rate limit event: status={status} resetsAt={resets_at}")
|
|
427
|
-
# Will be handled by caller via return value
|
|
428
|
-
|
|
429
|
-
elif etype == "result":
|
|
430
|
-
subtype = event.get("subtype", "")
|
|
431
|
-
is_error = event.get("is_error", False)
|
|
432
|
-
duration = event.get("duration_ms", 0)
|
|
433
|
-
cost = event.get("total_cost_usd", 0)
|
|
434
|
-
turns = event.get("num_turns", 0)
|
|
435
|
-
|
|
436
|
-
dur_str = f"{duration / 1000:.1f}s" if duration else "?"
|
|
437
|
-
cost_str = f"${cost:.4f}" if cost else "?"
|
|
438
|
-
|
|
439
|
-
if is_error:
|
|
440
|
-
err_msg = event.get("result", "unknown error")
|
|
441
|
-
print(f"\n {C_RED}Error: {_truncate(err_msg, 200)}{C_RESET}")
|
|
442
|
-
print(f" {C_DIM}duración={dur_str} costo={cost_str} turnos={turns}{C_RESET}")
|
|
443
|
-
else:
|
|
444
|
-
print(f"\n {C_DIM}───────────────────────────────────────")
|
|
445
|
-
print(f" duración={dur_str} costo={cost_str} turnos={turns}{C_RESET}")
|
|
446
|
-
logger.log(f"Result: subtype={subtype} error={is_error} duration={dur_str} cost={cost_str} turns={turns}")
|
|
447
|
-
|
|
448
|
-
return assistant_text
|
|
449
|
-
|
|
450
|
-
|
|
451
|
-
# ---------------------------------------------------------------------------
|
|
452
|
-
# Claude invocation
|
|
453
|
-
# ---------------------------------------------------------------------------
|
|
454
|
-
def run_claude_step(
|
|
455
|
-
prompt: str,
|
|
456
|
-
model: str | None,
|
|
457
|
-
logger: Logger,
|
|
458
|
-
story_id: str,
|
|
459
|
-
step: str,
|
|
460
|
-
) -> tuple[bool, str]:
|
|
461
|
-
"""
|
|
462
|
-
Run a single Claude CLI invocation with real-time stream-json output.
|
|
463
|
-
|
|
464
|
-
Uses --output-format stream-json to get structured events as they happen,
|
|
465
|
-
including tool calls, results, and text — all rendered live.
|
|
466
|
-
Returns (success: bool, full_assistant_text: str).
|
|
467
|
-
"""
|
|
468
|
-
claude_bin = shutil.which("claude") or shutil.which("claude.cmd") or "claude"
|
|
469
|
-
cmd = [
|
|
470
|
-
claude_bin,
|
|
471
|
-
"--print",
|
|
472
|
-
"--dangerously-skip-permissions",
|
|
473
|
-
"--verbose",
|
|
474
|
-
"--output-format", "stream-json",
|
|
475
|
-
]
|
|
476
|
-
if model:
|
|
477
|
-
cmd.extend(["--model", model])
|
|
478
|
-
|
|
479
|
-
cmd.append(prompt)
|
|
480
|
-
|
|
481
|
-
logger.log(f"Running: claude ... '{prompt[:80]}...'")
|
|
482
|
-
|
|
483
|
-
env = os.environ.copy()
|
|
484
|
-
env.pop("CLAUDECODE", None) # Allow nested invocation
|
|
485
|
-
|
|
486
|
-
try:
|
|
487
|
-
proc = subprocess.Popen(
|
|
488
|
-
cmd,
|
|
489
|
-
stdout=subprocess.PIPE,
|
|
490
|
-
stderr=subprocess.PIPE,
|
|
491
|
-
cwd=str(PROJECT_ROOT),
|
|
492
|
-
env=env,
|
|
493
|
-
)
|
|
494
|
-
except FileNotFoundError:
|
|
495
|
-
print(f"{C_RED}Claude CLI not found. Install it first.{C_RESET}")
|
|
496
|
-
logger.log("ERROR: claude CLI not found")
|
|
497
|
-
return False, ""
|
|
498
|
-
|
|
499
|
-
all_assistant_text: list[str] = []
|
|
500
|
-
hit_rate_limit = False
|
|
501
|
-
result_event: dict | None = None
|
|
502
|
-
|
|
503
|
-
try:
|
|
504
|
-
for raw_line in iter(proc.stdout.readline, b""):
|
|
505
|
-
line = raw_line.decode("utf-8", errors="replace").rstrip("\n\r")
|
|
506
|
-
if not line:
|
|
507
|
-
continue
|
|
508
|
-
|
|
509
|
-
# Log raw JSON
|
|
510
|
-
logger.log_output(line + "\n")
|
|
511
|
-
|
|
512
|
-
try:
|
|
513
|
-
event = json.loads(line)
|
|
514
|
-
except json.JSONDecodeError:
|
|
515
|
-
# Not JSON — print as-is (shouldn't happen with stream-json)
|
|
516
|
-
print(line)
|
|
517
|
-
continue
|
|
518
|
-
|
|
519
|
-
text = render_event(event, logger)
|
|
520
|
-
if text:
|
|
521
|
-
all_assistant_text.append(text)
|
|
522
|
-
|
|
523
|
-
# Track rate limit events
|
|
524
|
-
if event.get("type") == "rate_limit_event":
|
|
525
|
-
info = event.get("rate_limit_info", {})
|
|
526
|
-
if info.get("status") != "allowed":
|
|
527
|
-
hit_rate_limit = True
|
|
528
|
-
|
|
529
|
-
# Capture the result event
|
|
530
|
-
if event.get("type") == "result":
|
|
531
|
-
result_event = event
|
|
532
|
-
|
|
533
|
-
except KeyboardInterrupt:
|
|
534
|
-
proc.kill()
|
|
535
|
-
raise
|
|
536
|
-
|
|
537
|
-
# Read any stderr
|
|
538
|
-
stderr = proc.stderr.read().decode("utf-8", errors="replace").strip()
|
|
539
|
-
proc.wait()
|
|
540
|
-
|
|
541
|
-
if stderr:
|
|
542
|
-
# Check if stderr contains rate limit info
|
|
543
|
-
if detect_rate_limit(stderr):
|
|
544
|
-
hit_rate_limit = True
|
|
545
|
-
print(f"\n {C_RED}stderr: {_truncate(stderr, 200)}{C_RESET}")
|
|
546
|
-
logger.log(f"stderr: {stderr[:300]}")
|
|
547
|
-
|
|
548
|
-
full_text = "\n".join(all_assistant_text)
|
|
549
|
-
|
|
550
|
-
# Determine success
|
|
551
|
-
if result_event:
|
|
552
|
-
success = not result_event.get("is_error", False)
|
|
553
|
-
else:
|
|
554
|
-
success = proc.returncode == 0
|
|
555
|
-
|
|
556
|
-
if hit_rate_limit:
|
|
557
|
-
success = False # Force retry
|
|
558
|
-
|
|
559
|
-
logger.log(f"Exit code: {proc.returncode} | success={success} | rate_limit={hit_rate_limit}")
|
|
560
|
-
return success, full_text
|
|
561
|
-
|
|
562
|
-
|
|
563
|
-
def execute_step(
|
|
564
|
-
story_id: str,
|
|
565
|
-
step: str,
|
|
566
|
-
model: str | None,
|
|
567
|
-
logger: Logger,
|
|
568
|
-
extra_context: str = "",
|
|
569
|
-
) -> bool:
|
|
570
|
-
"""Execute a step with retry logic for rate limits and question handling."""
|
|
571
|
-
prompt_template = STEP_PROMPTS[step]
|
|
572
|
-
prompt = prompt_template.format(story_id=story_id)
|
|
573
|
-
if extra_context:
|
|
574
|
-
prompt = f"{prompt}\n\nAdditional context from user: {extra_context}"
|
|
575
|
-
|
|
576
|
-
step_label = {"create": "Create Story", "dev": "Dev Story", "review": "Code Review"}[step]
|
|
577
|
-
|
|
578
|
-
print(f"\n{'='*60}")
|
|
579
|
-
print(f"{C_BOLD}{C_CYAN}[{story_id}] {step_label}{C_RESET}")
|
|
580
|
-
print(f"{'='*60}")
|
|
581
|
-
logger.log(f"=== Step: {step_label} for {story_id} ===")
|
|
582
|
-
|
|
583
|
-
for attempt in range(1, MAX_RETRIES + 1):
|
|
584
|
-
if attempt > 1:
|
|
585
|
-
print(f"\n{C_YELLOW}Intento {attempt}/{MAX_RETRIES}{C_RESET}")
|
|
586
|
-
logger.log(f"Retry attempt {attempt}/{MAX_RETRIES}")
|
|
587
|
-
|
|
588
|
-
success, output = run_claude_step(prompt, model, logger, story_id, step)
|
|
589
|
-
|
|
590
|
-
# Check rate limit in output text too
|
|
591
|
-
if not success and detect_rate_limit(output):
|
|
592
|
-
wait = extract_wait_time(output)
|
|
593
|
-
countdown_wait(wait, logger)
|
|
594
|
-
continue
|
|
595
|
-
|
|
596
|
-
# Rate limit detected via event (success was forced to False)
|
|
597
|
-
if not success and not output.strip():
|
|
598
|
-
# Likely rate limit with no text output
|
|
599
|
-
countdown_wait(DEFAULT_WAIT_SECS, logger)
|
|
600
|
-
continue
|
|
601
|
-
|
|
602
|
-
if success:
|
|
603
|
-
# Check for questions only if the step didn't succeed cleanly.
|
|
604
|
-
# If success=True, Claude completed the task — ignore any closing
|
|
605
|
-
# courtesy text that might look like a question.
|
|
606
|
-
pass
|
|
607
|
-
else:
|
|
608
|
-
question = detect_question(output)
|
|
609
|
-
if question:
|
|
610
|
-
print(f"\n{C_YELLOW}{'─'*60}")
|
|
611
|
-
print(f"Claude hizo una pregunta:")
|
|
612
|
-
print(f"{'─'*60}{C_RESET}")
|
|
613
|
-
print(question)
|
|
614
|
-
print(f"{C_YELLOW}{'─'*60}{C_RESET}")
|
|
615
|
-
print(f"{C_DIM}Escribe tu respuesta (o 'abort' para detener):{C_RESET}")
|
|
616
|
-
|
|
617
|
-
try:
|
|
618
|
-
user_input = input(f"{C_BOLD}> {C_RESET}").strip()
|
|
619
|
-
except (EOFError, KeyboardInterrupt):
|
|
620
|
-
print(f"\n{C_RED}Abortado por el usuario.{C_RESET}")
|
|
621
|
-
return False
|
|
622
|
-
|
|
623
|
-
if user_input.lower() == "abort":
|
|
624
|
-
print(f"{C_RED}Abortado por el usuario.{C_RESET}")
|
|
625
|
-
logger.log("User aborted after question")
|
|
626
|
-
return False
|
|
627
|
-
|
|
628
|
-
logger.log(f"User answered question: {user_input}")
|
|
629
|
-
prompt = prompt_template.format(story_id=story_id)
|
|
630
|
-
prompt = f"{prompt}\n\nUser clarification: {user_input}"
|
|
631
|
-
continue
|
|
632
|
-
|
|
633
|
-
if success:
|
|
634
|
-
print(f"\n{C_GREEN}{step_label} completado para {story_id}{C_RESET}\n")
|
|
635
|
-
logger.log(f"Step {step} completed successfully for {story_id}")
|
|
636
|
-
return True
|
|
637
|
-
|
|
638
|
-
# Generic failure
|
|
639
|
-
print(f"\n{C_RED}{step_label} falló (exit code != 0){C_RESET}")
|
|
640
|
-
logger.log(f"Step {step} failed for {story_id}")
|
|
641
|
-
if attempt < MAX_RETRIES:
|
|
642
|
-
print(f"{C_YELLOW}Reintentando en 30s...{C_RESET}")
|
|
643
|
-
countdown_wait(30, logger)
|
|
644
|
-
continue
|
|
645
|
-
|
|
646
|
-
print(f"{C_RED}Maximo de reintentos alcanzado para {step_label} [{story_id}]{C_RESET}")
|
|
647
|
-
logger.log(f"Max retries exhausted for {step} on {story_id}")
|
|
648
|
-
return False
|
|
649
|
-
|
|
650
|
-
|
|
651
|
-
# ---------------------------------------------------------------------------
|
|
652
|
-
# Main orchestration
|
|
653
|
-
# ---------------------------------------------------------------------------
|
|
654
|
-
def build_plan(
|
|
655
|
-
stories: list[dict],
|
|
656
|
-
epic_filter: int | None,
|
|
657
|
-
start_story: str | None,
|
|
658
|
-
start_step: str | None,
|
|
659
|
-
state: dict | None,
|
|
660
|
-
) -> list[tuple[str, str]]:
|
|
661
|
-
"""
|
|
662
|
-
Build ordered list of (story_id, step) pairs to execute.
|
|
663
|
-
Skips done stories. Applies --epic, --story, --step filters and resume state.
|
|
664
|
-
"""
|
|
665
|
-
# Filter by epic
|
|
666
|
-
if epic_filter is not None:
|
|
667
|
-
stories = [s for s in stories if s["epic"] == epic_filter]
|
|
668
|
-
|
|
669
|
-
# Map sprint-status values to the first orchestrator step to run.
|
|
670
|
-
# - backlog: nothing done yet → start at create
|
|
671
|
-
# - ready-for-dev: create already ran → start at dev
|
|
672
|
-
# - in-progress: dev started (treat as needing dev again) → start at dev
|
|
673
|
-
# - review: dev done, needs review → start at review
|
|
674
|
-
# - done: skip entirely
|
|
675
|
-
STATUS_TO_FIRST_STEP = {
|
|
676
|
-
"backlog": "create",
|
|
677
|
-
"ready-for-dev": "dev",
|
|
678
|
-
"in-progress": "dev",
|
|
679
|
-
"review": "review",
|
|
680
|
-
}
|
|
681
|
-
|
|
682
|
-
done_ids = {s["story_id"] for s in stories if s["status"] == "done"}
|
|
683
|
-
pending = [s for s in stories if s["status"] != "done"]
|
|
684
|
-
|
|
685
|
-
if done_ids:
|
|
686
|
-
print(f"{C_DIM}Saltando {len(done_ids)} historia(s) ya completadas: {', '.join(sorted(done_ids))}{C_RESET}")
|
|
687
|
-
|
|
688
|
-
# Build plan respecting each story's current status
|
|
689
|
-
plan: list[tuple[str, str]] = []
|
|
690
|
-
for s in pending:
|
|
691
|
-
first_step = STATUS_TO_FIRST_STEP.get(s["status"], "create")
|
|
692
|
-
first_idx = STEPS.index(first_step)
|
|
693
|
-
for step in STEPS[first_idx:]:
|
|
694
|
-
plan.append((s["story_id"], step))
|
|
695
|
-
|
|
696
|
-
if not plan:
|
|
697
|
-
return plan
|
|
698
|
-
|
|
699
|
-
# Determine start point: (1) --story flag, (2) state file, (3) beginning
|
|
700
|
-
resume_story = start_story
|
|
701
|
-
resume_step = start_step
|
|
702
|
-
|
|
703
|
-
if resume_story is None and state is not None:
|
|
704
|
-
resume_story = state.get("story_id")
|
|
705
|
-
if state.get("completed", False):
|
|
706
|
-
# Last step was completed — advance to next
|
|
707
|
-
last_step = state.get("step")
|
|
708
|
-
if last_step in STEPS:
|
|
709
|
-
idx = STEPS.index(last_step)
|
|
710
|
-
if idx + 1 < len(STEPS):
|
|
711
|
-
resume_step = STEPS[idx + 1]
|
|
712
|
-
else:
|
|
713
|
-
# Story was fully done, start next story from first pending step
|
|
714
|
-
story_ids = [s["story_id"] for s in pending]
|
|
715
|
-
if resume_story in story_ids:
|
|
716
|
-
si = story_ids.index(resume_story)
|
|
717
|
-
if si + 1 < len(story_ids):
|
|
718
|
-
resume_story = story_ids[si + 1]
|
|
719
|
-
resume_step = None # Will use plan's first step
|
|
720
|
-
else:
|
|
721
|
-
return [] # All done
|
|
722
|
-
else:
|
|
723
|
-
resume_story = None
|
|
724
|
-
else:
|
|
725
|
-
# Last step was NOT completed — retry it
|
|
726
|
-
resume_step = state.get("step")
|
|
727
|
-
|
|
728
|
-
# Apply start_step only for --step flag (first story only)
|
|
729
|
-
if start_story and start_step is None:
|
|
730
|
-
resume_step = STEPS[0]
|
|
731
|
-
|
|
732
|
-
# Find the start point in plan
|
|
733
|
-
if resume_story:
|
|
734
|
-
target_step = resume_step or STEPS[0]
|
|
735
|
-
target = (resume_story, target_step)
|
|
736
|
-
if target in plan:
|
|
737
|
-
idx = plan.index(target)
|
|
738
|
-
plan = plan[idx:]
|
|
739
|
-
else:
|
|
740
|
-
# Try to find story at any step
|
|
741
|
-
matching = [(i, p) for i, p in enumerate(plan) if p[0] == resume_story]
|
|
742
|
-
if matching:
|
|
743
|
-
plan = plan[matching[0][0]:]
|
|
744
|
-
|
|
745
|
-
return plan
|
|
746
|
-
|
|
747
|
-
|
|
748
|
-
def main():
|
|
749
|
-
parser = argparse.ArgumentParser(
|
|
750
|
-
description="BMAD Story Orchestrator — automates the create→dev→review cycle"
|
|
751
|
-
)
|
|
752
|
-
parser.add_argument("--epic", type=int, metavar="N", help="Solo procesar historias del epic N")
|
|
753
|
-
parser.add_argument("--story", type=str, metavar="ID", help="Empezar desde esta historia (e.g. 3-2)")
|
|
754
|
-
parser.add_argument("--only-story", type=str, metavar="ID", help="Procesar exclusivamente esta historia (e.g. 2-1)")
|
|
755
|
-
parser.add_argument(
|
|
756
|
-
"--step",
|
|
757
|
-
choices=STEPS,
|
|
758
|
-
help="Empezar desde este paso (solo primera historia)",
|
|
759
|
-
)
|
|
760
|
-
parser.add_argument("--dry-run", action="store_true", help="Mostrar el plan sin ejecutar")
|
|
761
|
-
parser.add_argument("--model", type=str, help="Modelo de Claude a usar")
|
|
762
|
-
parser.add_argument("--yes", action="store_true", help="Omitir confirmación interactiva y ejecutar directamente")
|
|
763
|
-
args = parser.parse_args()
|
|
764
|
-
|
|
765
|
-
# Normalize --story: accept "3-2" as prefix match
|
|
766
|
-
story_override = None
|
|
767
|
-
if args.story:
|
|
768
|
-
story_override = args.story
|
|
769
|
-
|
|
770
|
-
print(f"\n{C_BOLD}{'-'*60}")
|
|
771
|
-
print(f" BMAD Story Orchestrator")
|
|
772
|
-
print(f"{'-'*60}{C_RESET}\n")
|
|
773
|
-
|
|
774
|
-
# Parse sprint status
|
|
775
|
-
if not SPRINT_STATUS.exists():
|
|
776
|
-
print(f"{C_RED}No se encontro {SPRINT_STATUS}{C_RESET}")
|
|
777
|
-
sys.exit(1)
|
|
778
|
-
|
|
779
|
-
stories = parse_sprint_status(SPRINT_STATUS)
|
|
780
|
-
if not stories:
|
|
781
|
-
print(f"{C_RED}No se encontraron historias en sprint-status.yaml{C_RESET}")
|
|
782
|
-
sys.exit(1)
|
|
783
|
-
|
|
784
|
-
print(f"{C_DIM}Historias encontradas: {len(stories)}{C_RESET}")
|
|
785
|
-
|
|
786
|
-
# Resolve --story prefix to full ID
|
|
787
|
-
if story_override:
|
|
788
|
-
matches = [s["story_id"] for s in stories if s["story_id"].startswith(story_override)]
|
|
789
|
-
if len(matches) == 1:
|
|
790
|
-
story_override = matches[0]
|
|
791
|
-
elif len(matches) > 1:
|
|
792
|
-
print(f"{C_RED}'{args.story}' coincide con multiples historias: {matches}{C_RESET}")
|
|
793
|
-
sys.exit(1)
|
|
794
|
-
elif len(matches) == 0:
|
|
795
|
-
exact = [s["story_id"] for s in stories if s["story_id"] == story_override]
|
|
796
|
-
if not exact:
|
|
797
|
-
print(f"{C_RED}Historia '{args.story}' no encontrada en sprint-status.yaml{C_RESET}")
|
|
798
|
-
sys.exit(1)
|
|
799
|
-
|
|
800
|
-
# Apply --only-story filter
|
|
801
|
-
if args.only_story:
|
|
802
|
-
only_id = args.only_story
|
|
803
|
-
matches = [s for s in stories if s["story_id"] == only_id or s["story_id"].startswith(only_id)]
|
|
804
|
-
if len(matches) == 0:
|
|
805
|
-
print(f"{C_RED}Historia '{only_id}' no encontrada en sprint-status.yaml{C_RESET}")
|
|
806
|
-
sys.exit(1)
|
|
807
|
-
if len(matches) > 1:
|
|
808
|
-
ids = [s["story_id"] for s in matches]
|
|
809
|
-
print(f"{C_RED}'{only_id}' coincide con multiples historias: {ids}{C_RESET}")
|
|
810
|
-
sys.exit(1)
|
|
811
|
-
stories = matches
|
|
812
|
-
print(f"{C_CYAN}Filtrando exclusivamente historia: {stories[0]['story_id']}{C_RESET}")
|
|
813
|
-
|
|
814
|
-
# Load resume state
|
|
815
|
-
state = load_state()
|
|
816
|
-
if state and not story_override and not args.only_story:
|
|
817
|
-
print(f"{C_CYAN}Estado anterior encontrado: story={state.get('story_id')}, "
|
|
818
|
-
f"step={state.get('step')}, completed={state.get('completed')}{C_RESET}")
|
|
819
|
-
|
|
820
|
-
# Build plan
|
|
821
|
-
plan = build_plan(stories, args.epic, story_override, args.step, state)
|
|
822
|
-
|
|
823
|
-
if not plan:
|
|
824
|
-
print(f"\n{C_GREEN}No hay historias pendientes por procesar.{C_RESET}")
|
|
825
|
-
clear_state()
|
|
826
|
-
sys.exit(0)
|
|
827
|
-
|
|
828
|
-
# Display plan
|
|
829
|
-
print(f"\n{C_BOLD}Plan de ejecucion:{C_RESET}")
|
|
830
|
-
current_story = None
|
|
831
|
-
for story_id, step in plan:
|
|
832
|
-
if story_id != current_story:
|
|
833
|
-
current_story = story_id
|
|
834
|
-
print(f"\n {C_BOLD}{story_id}{C_RESET}")
|
|
835
|
-
print(f" {step}")
|
|
836
|
-
|
|
837
|
-
if args.dry_run:
|
|
838
|
-
print(f"\n{C_YELLOW}--dry-run: no se ejecuta nada.{C_RESET}")
|
|
839
|
-
sys.exit(0)
|
|
840
|
-
|
|
841
|
-
if args.yes:
|
|
842
|
-
print(f"\n{C_DIM}Confirmación automática (--yes){C_RESET}")
|
|
843
|
-
else:
|
|
844
|
-
print(f"\n{C_DIM}Escribe {C_RESET}{C_BOLD}C{C_RESET}{C_DIM} para continuar o {C_RESET}{C_BOLD}X{C_RESET}{C_DIM} para cancelar:{C_RESET}")
|
|
845
|
-
try:
|
|
846
|
-
while True:
|
|
847
|
-
choice = input(f"{C_BOLD}> {C_RESET}").strip().upper()
|
|
848
|
-
if choice == "C":
|
|
849
|
-
break
|
|
850
|
-
elif choice == "X":
|
|
851
|
-
print(f"\n{C_RED}Cancelado.{C_RESET}")
|
|
852
|
-
sys.exit(1)
|
|
853
|
-
else:
|
|
854
|
-
print(f"{C_YELLOW}Opción no válida. Escribe C para continuar o X para cancelar.{C_RESET}")
|
|
855
|
-
except (EOFError, KeyboardInterrupt):
|
|
856
|
-
print(f"\n{C_RED}Cancelado.{C_RESET}")
|
|
857
|
-
sys.exit(1)
|
|
858
|
-
|
|
859
|
-
# Execute
|
|
860
|
-
logger = Logger()
|
|
861
|
-
logger.log(f"Orchestrator started. Plan: {len(plan)} steps.")
|
|
862
|
-
if args.model:
|
|
863
|
-
logger.log(f"Model override: {args.model}")
|
|
864
|
-
|
|
865
|
-
try:
|
|
866
|
-
for story_id, step in plan:
|
|
867
|
-
logger.open_step_log(story_id, step)
|
|
868
|
-
save_state(story_id, step, completed=False)
|
|
869
|
-
|
|
870
|
-
success = execute_step(story_id, step, args.model, logger)
|
|
871
|
-
|
|
872
|
-
if success:
|
|
873
|
-
save_state(story_id, step, completed=True)
|
|
874
|
-
else:
|
|
875
|
-
print(f"\n{C_RED}{'-'*60}")
|
|
876
|
-
print(f" Orquestador detenido en [{story_id}] paso '{step}'")
|
|
877
|
-
print(f" Reanuda con: python3 scripts/bmad_orchestrator.py")
|
|
878
|
-
print(f"{'-'*60}{C_RESET}")
|
|
879
|
-
logger.log(f"Orchestrator stopped at {story_id}/{step}")
|
|
880
|
-
logger.close()
|
|
881
|
-
sys.exit(1)
|
|
882
|
-
|
|
883
|
-
# All done
|
|
884
|
-
clear_state()
|
|
885
|
-
print(f"\n{C_GREEN}{'-'*60}")
|
|
886
|
-
print(f" Todas las historias completadas exitosamente!")
|
|
887
|
-
print(f"{'-'*60}{C_RESET}\n")
|
|
888
|
-
logger.log("Orchestrator completed all steps successfully.")
|
|
889
|
-
logger.close()
|
|
890
|
-
|
|
891
|
-
except KeyboardInterrupt:
|
|
892
|
-
print(f"\n\n{C_YELLOW}Interrumpido por el usuario. Estado guardado.{C_RESET}")
|
|
893
|
-
print(f"{C_DIM}Reanuda con: python3 scripts/bmad_orchestrator.py{C_RESET}")
|
|
894
|
-
logger.log("Orchestrator interrupted by user (KeyboardInterrupt)")
|
|
895
|
-
logger.close()
|
|
896
|
-
sys.exit(130)
|
|
897
|
-
|
|
898
|
-
|
|
899
|
-
if __name__ == "__main__":
|
|
900
|
-
main()
|