@su-record/vibe 2.8.52 β 2.8.53
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/.env.example +37 -37
- package/CLAUDE.md +169 -169
- package/LICENSE +21 -21
- package/agents/architect-low.md +41 -41
- package/agents/architect-medium.md +59 -59
- package/agents/architect.md +80 -80
- package/agents/build-error-resolver.md +115 -115
- package/agents/compounder.md +261 -261
- package/agents/diagrammer.md +178 -178
- package/agents/docs/api-documenter.md +99 -99
- package/agents/docs/changelog-writer.md +93 -93
- package/agents/e2e-tester.md +294 -294
- package/agents/event/event-comms.md +78 -78
- package/agents/event/event-content.md +68 -68
- package/agents/event/event-image.md +95 -95
- package/agents/event/event-ops.md +84 -84
- package/agents/event/event-scheduler.md +69 -69
- package/agents/event/event-speaker.md +86 -86
- package/agents/explorer-low.md +42 -42
- package/agents/explorer-medium.md +59 -59
- package/agents/explorer.md +48 -48
- package/agents/implementer-low.md +43 -43
- package/agents/implementer-medium.md +52 -52
- package/agents/implementer.md +54 -54
- package/agents/junior-mentor.md +141 -141
- package/agents/planning/requirements-analyst.md +84 -84
- package/agents/planning/ux-advisor.md +83 -83
- package/agents/qa/acceptance-tester.md +86 -86
- package/agents/qa/edge-case-finder.md +93 -93
- package/agents/qa/qa-coordinator.md +131 -131
- package/agents/refactor-cleaner.md +143 -143
- package/agents/research/best-practices-agent.md +199 -199
- package/agents/research/codebase-patterns-agent.md +157 -157
- package/agents/research/framework-docs-agent.md +188 -188
- package/agents/research/security-advisory-agent.md +213 -213
- package/agents/review/architecture-reviewer.md +107 -107
- package/agents/review/complexity-reviewer.md +116 -116
- package/agents/review/data-integrity-reviewer.md +88 -88
- package/agents/review/git-history-reviewer.md +103 -103
- package/agents/review/performance-reviewer.md +86 -86
- package/agents/review/python-reviewer.md +150 -150
- package/agents/review/rails-reviewer.md +139 -139
- package/agents/review/react-reviewer.md +144 -144
- package/agents/review/security-reviewer.md +80 -80
- package/agents/review/simplicity-reviewer.md +140 -140
- package/agents/review/test-coverage-reviewer.md +116 -116
- package/agents/review/typescript-reviewer.md +127 -127
- package/agents/searcher.md +54 -54
- package/agents/simplifier.md +120 -120
- package/agents/tester.md +49 -49
- package/agents/ui/ui-a11y-auditor.md +93 -93
- package/agents/ui/ui-antipattern-detector.md +102 -102
- package/agents/ui/ui-dataviz-advisor.md +69 -69
- package/agents/ui/ui-design-system-gen.md +57 -57
- package/agents/ui/ui-industry-analyzer.md +49 -49
- package/agents/ui/ui-layout-architect.md +65 -65
- package/agents/ui/ui-stack-implementer.md +68 -68
- package/agents/ui/ux-compliance-reviewer.md +81 -81
- package/agents/ui-previewer.md +258 -258
- package/commands/vibe.analyze.md +379 -379
- package/commands/vibe.docs.md +32 -32
- package/commands/vibe.event.md +163 -163
- package/commands/vibe.figma.md +69 -69
- package/commands/vibe.review.md +686 -686
- package/commands/vibe.run.md +2276 -2276
- package/commands/vibe.spec.md +1195 -1195
- package/commands/vibe.spec.review.md +609 -609
- package/commands/vibe.trace.md +259 -259
- package/commands/vibe.utils.md +413 -413
- package/commands/vibe.verify.md +510 -510
- package/dist/cli/collaborator.js +52 -52
- package/dist/cli/commands/config.js +9 -9
- package/dist/cli/commands/evolution.js +12 -12
- package/dist/cli/commands/figma.js +20 -20
- package/dist/cli/commands/info.js +53 -53
- package/dist/cli/commands/init.js +5 -5
- package/dist/cli/commands/remove.js +14 -14
- package/dist/cli/commands/sentinel.js +27 -27
- package/dist/cli/commands/skills.js +5 -5
- package/dist/cli/commands/slack.js +10 -10
- package/dist/cli/commands/stats.js +6 -6
- package/dist/cli/commands/telegram.js +12 -12
- package/dist/cli/detect.js +32 -32
- package/dist/cli/index.js +51 -51
- package/dist/cli/llm/claude-commands.js +16 -16
- package/dist/cli/llm/config.js +18 -18
- package/dist/cli/llm/gemini-commands.js +16 -16
- package/dist/cli/llm/gpt-commands.js +19 -19
- package/dist/cli/llm/help.js +21 -21
- package/dist/cli/postinstall/cursor-agents.js +32 -32
- package/dist/cli/postinstall/cursor-rules.js +83 -83
- package/dist/cli/postinstall/cursor-skills.js +743 -743
- package/dist/cli/setup/Provisioner.js +42 -42
- package/dist/infra/lib/DeepInit.js +24 -24
- package/dist/infra/lib/IterationTracker.js +11 -11
- package/dist/infra/lib/PythonParser.js +108 -108
- package/dist/infra/lib/ReviewRace.js +96 -96
- package/dist/infra/lib/SkillFrontmatter.js +28 -28
- package/dist/infra/lib/SkillQualityGate.js +9 -9
- package/dist/infra/lib/SkillRepository.js +159 -159
- package/dist/infra/lib/TokenBudgetTracker.d.ts +13 -0
- package/dist/infra/lib/TokenBudgetTracker.d.ts.map +1 -1
- package/dist/infra/lib/TokenBudgetTracker.js +44 -3
- package/dist/infra/lib/TokenBudgetTracker.js.map +1 -1
- package/dist/infra/lib/UltraQA.js +99 -99
- package/dist/infra/lib/autonomy/AuditStore.js +41 -41
- package/dist/infra/lib/autonomy/ConfirmationStore.js +30 -30
- package/dist/infra/lib/autonomy/EventOutbox.js +38 -38
- package/dist/infra/lib/autonomy/PolicyEngine.d.ts +3 -3
- package/dist/infra/lib/autonomy/PolicyEngine.js +18 -18
- package/dist/infra/lib/autonomy/SecuritySentinel.js +1 -1
- package/dist/infra/lib/autonomy/SuggestionStore.js +33 -33
- package/dist/infra/lib/embedding/VectorStore.js +22 -22
- package/dist/infra/lib/evolution/AgentAnalyzer.js +10 -10
- package/dist/infra/lib/evolution/DescriptionOptimizer.js +21 -21
- package/dist/infra/lib/evolution/GenerationRegistry.js +36 -36
- package/dist/infra/lib/evolution/InsightStore.js +90 -90
- package/dist/infra/lib/evolution/ParityTester.js +57 -57
- package/dist/infra/lib/evolution/RollbackManager.js +5 -5
- package/dist/infra/lib/evolution/SkillBenchmark.js +23 -23
- package/dist/infra/lib/evolution/SkillEvalRunner.js +50 -50
- package/dist/infra/lib/evolution/SkillGapDetector.js +10 -10
- package/dist/infra/lib/evolution/UsageTracker.js +28 -28
- package/dist/infra/lib/gemini/orchestration.js +5 -5
- package/dist/infra/lib/gpt/orchestration.js +4 -4
- package/dist/infra/lib/memory/KnowledgeGraph.js +4 -4
- package/dist/infra/lib/memory/MemorySearch.js +57 -57
- package/dist/infra/lib/memory/MemoryStorage.js +181 -181
- package/dist/infra/lib/memory/ObservationStore.js +28 -28
- package/dist/infra/lib/memory/ReflectionStore.js +30 -30
- package/dist/infra/lib/memory/SessionRAGRetriever.js +7 -7
- package/dist/infra/lib/memory/SessionRAGStore.js +225 -225
- package/dist/infra/lib/memory/SessionSummarizer.js +9 -9
- package/dist/infra/orchestrator/AgentManager.js +12 -12
- package/dist/infra/orchestrator/AgentRegistry.js +65 -65
- package/dist/infra/orchestrator/MultiLlmResearch.js +8 -8
- package/dist/infra/orchestrator/SwarmOrchestrator.test.js +16 -16
- package/dist/infra/orchestrator/parallelResearch.js +24 -24
- package/dist/tools/convention/analyzeComplexity.test.js +115 -115
- package/dist/tools/convention/validateCodeQuality.test.js +104 -104
- package/dist/tools/memory/createMemoryTimeline.js +10 -10
- package/dist/tools/memory/getMemoryGraph.js +12 -12
- package/dist/tools/memory/getSessionContext.js +9 -9
- package/dist/tools/memory/linkMemories.js +14 -14
- package/dist/tools/memory/listMemories.js +4 -4
- package/dist/tools/memory/recallMemory.js +4 -4
- package/dist/tools/memory/saveMemory.js +4 -4
- package/dist/tools/memory/searchMemoriesAdvanced.js +23 -23
- package/dist/tools/semantic/analyzeDependencyGraph.js +12 -12
- package/dist/tools/semantic/astGrep.test.js +6 -6
- package/dist/tools/spec/prdParser.test.js +171 -171
- package/dist/tools/spec/specGenerator.js +169 -169
- package/dist/tools/spec/traceabilityMatrix.js +64 -64
- package/dist/tools/spec/traceabilityMatrix.test.js +28 -28
- package/hooks/gemini-hooks.json +73 -73
- package/hooks/hooks.json +174 -174
- package/hooks/scripts/__tests__/keyword-detector.test.js +199 -199
- package/hooks/scripts/__tests__/pre-tool-guard.test.js +286 -286
- package/hooks/scripts/__tests__/sentinel-guard.test.js +210 -210
- package/hooks/scripts/auto-commit.js +97 -97
- package/hooks/scripts/auto-format.js +64 -64
- package/hooks/scripts/auto-test.js +81 -81
- package/hooks/scripts/code-check.js +268 -268
- package/hooks/scripts/codex-detect.js +46 -46
- package/hooks/scripts/codex-review-gate.js +80 -80
- package/hooks/scripts/command-log.js +32 -32
- package/hooks/scripts/context-save.js +353 -353
- package/hooks/scripts/evolution-engine.js +91 -91
- package/hooks/scripts/figma-extract.js +635 -477
- package/hooks/scripts/hud-status.js +321 -321
- package/hooks/scripts/keyword-detector.js +214 -214
- package/hooks/scripts/llm-orchestrate.js +572 -572
- package/hooks/scripts/post-edit.js +32 -32
- package/hooks/scripts/pr-test-gate.js +52 -52
- package/hooks/scripts/pre-tool-guard.js +214 -159
- package/hooks/scripts/prompt-dispatcher.js +185 -185
- package/hooks/scripts/sentinel-guard.js +131 -131
- package/hooks/scripts/session-start.js +177 -177
- package/hooks/scripts/skill-injector.js +83 -83
- package/hooks/scripts/stop-notify.js +209 -209
- package/hooks/scripts/utils.js +243 -243
- package/languages/csharp-unity.md +515 -515
- package/languages/gdscript-godot.md +470 -470
- package/languages/ruby-rails.md +489 -489
- package/languages/typescript-angular.md +433 -433
- package/languages/typescript-astro.md +416 -416
- package/languages/typescript-electron.md +406 -406
- package/languages/typescript-nestjs.md +524 -524
- package/languages/typescript-svelte.md +407 -407
- package/languages/typescript-tauri.md +365 -365
- package/package.json +101 -101
- package/skills/agents-md/SKILL.md +121 -121
- package/skills/agents-md/rubrics/what-to-keep.md +49 -49
- package/skills/agents-md/templates/agents-md.md +36 -36
- package/skills/arch-guard/SKILL.md +181 -181
- package/skills/arch-guard/agents/detector.md +48 -48
- package/skills/arch-guard/agents/reporter.md +48 -48
- package/skills/arch-guard/agents/rule-generator.md +49 -49
- package/skills/arch-guard/agents/violation-checker.md +51 -51
- package/skills/arch-guard/frameworks/clean-architecture.md +108 -108
- package/skills/arch-guard/frameworks/solid.md +102 -102
- package/skills/arch-guard/scripts/check-boundaries.js +90 -90
- package/skills/arch-guard/templates/arch-rules.json +47 -47
- package/skills/arch-guard/templates/violation-report.md +53 -53
- package/skills/brand-assets/SKILL.md +147 -147
- package/skills/brand-assets/rubrics/asset-checklist.md +98 -98
- package/skills/brand-assets/templates/brand-guide.md +161 -161
- package/skills/capability-loop/SKILL.md +168 -168
- package/skills/capability-loop/agents/capability-designer.md +61 -61
- package/skills/capability-loop/agents/failure-analyst.md +55 -55
- package/skills/capability-loop/agents/implementer.md +50 -50
- package/skills/capability-loop/agents/tester.md +53 -53
- package/skills/capability-loop/templates/capability-spec.md +118 -118
- package/skills/capability-loop/templates/failure-analysis.md +118 -118
- package/skills/characterization-test/SKILL.md +207 -207
- package/skills/characterization-test/agents/behavior-capturer.md +50 -50
- package/skills/characterization-test/agents/coverage-checker.md +54 -54
- package/skills/characterization-test/agents/reporter.md +50 -50
- package/skills/characterization-test/agents/test-writer.md +49 -49
- package/skills/characterization-test/rubrics/coverage-criteria.md +53 -53
- package/skills/characterization-test/templates/test-template.ts +101 -101
- package/skills/chub-usage/SKILL.md +139 -139
- package/skills/claude-md-guide/SKILL.md +351 -351
- package/skills/claude-md-guide/rubrics/anti-patterns.md +88 -88
- package/skills/claude-md-guide/templates/claude-md.md +54 -54
- package/skills/commerce-patterns/SKILL.md +64 -64
- package/skills/commerce-patterns/rubrics/checkout-flow.md +48 -48
- package/skills/commerce-patterns/templates/product-schema.md +85 -85
- package/skills/commit-push-pr/SKILL.md +77 -77
- package/skills/commit-push-pr/agents/change-analyzer.md +55 -55
- package/skills/commit-push-pr/agents/message-writer.md +50 -50
- package/skills/commit-push-pr/agents/pr-writer.md +58 -58
- package/skills/commit-push-pr/agents/reviewer.md +52 -52
- package/skills/commit-push-pr/rubrics/commit-message.md +73 -73
- package/skills/commit-push-pr/templates/pr-body.md +63 -63
- package/skills/context7-usage/SKILL.md +106 -106
- package/skills/context7-usage/rubrics/when-to-use.md +50 -50
- package/skills/create-prd/SKILL.md +90 -90
- package/skills/create-prd/agents/edge-case-finder.md +48 -48
- package/skills/create-prd/agents/prioritizer.md +60 -60
- package/skills/create-prd/agents/requirements-writer.md +48 -48
- package/skills/create-prd/agents/researcher.md +55 -55
- package/skills/create-prd/agents/reviewer.md +54 -54
- package/skills/create-prd/frameworks/jobs-to-be-done.md +96 -96
- package/skills/create-prd/frameworks/rice-scoring.md +97 -97
- package/skills/create-prd/orchestrator.md +70 -70
- package/skills/create-prd/rubrics/completeness.md +58 -58
- package/skills/create-prd/templates/prd.md +139 -139
- package/skills/design-audit/SKILL.md +152 -152
- package/skills/design-audit/agents/a11y-auditor.md +43 -43
- package/skills/design-audit/agents/performance-auditor.md +46 -46
- package/skills/design-audit/agents/responsive-auditor.md +46 -46
- package/skills/design-audit/agents/scorer.md +47 -47
- package/skills/design-audit/agents/slop-detector.md +47 -47
- package/skills/design-audit/frameworks/core-web-vitals.md +107 -107
- package/skills/design-audit/frameworks/wcag-checklist.md +64 -64
- package/skills/design-audit/orchestrator.md +64 -64
- package/skills/design-audit/rubrics/ai-slop-patterns.md +83 -83
- package/skills/design-audit/rubrics/scoring.md +63 -63
- package/skills/design-audit/templates/report.md +88 -88
- package/skills/design-critique/SKILL.md +139 -139
- package/skills/design-critique/rubrics/ux-heuristics.md +143 -143
- package/skills/design-critique/templates/critique-report.md +86 -86
- package/skills/design-distill/SKILL.md +130 -130
- package/skills/design-distill/templates/design-system.md +132 -132
- package/skills/design-normalize/SKILL.md +133 -133
- package/skills/design-normalize/rubrics/token-naming.md +117 -117
- package/skills/design-normalize/templates/token-audit.md +89 -89
- package/skills/design-polish/SKILL.md +131 -131
- package/skills/design-polish/rubrics/polish-checklist.md +68 -68
- package/skills/design-polish/templates/polish-report.md +64 -64
- package/skills/design-teach/SKILL.md +182 -182
- package/skills/design-teach/rubrics/brand-personality.md +73 -73
- package/skills/design-teach/templates/design-context.json +36 -36
- package/skills/e2e-commerce/SKILL.md +62 -62
- package/skills/e2e-commerce/templates/test-scenarios.md +170 -170
- package/skills/event-comms/SKILL.md +162 -162
- package/skills/event-comms/templates/email-invite.md +99 -99
- package/skills/event-comms/templates/sns-post.md +133 -133
- package/skills/event-ops/SKILL.md +198 -198
- package/skills/event-ops/rubrics/contingency.md +85 -85
- package/skills/event-ops/templates/d-day-checklist.md +65 -65
- package/skills/event-planning/SKILL.md +132 -132
- package/skills/event-planning/rubrics/timeline.md +70 -70
- package/skills/event-planning/templates/event-plan.md +91 -91
- package/skills/exec-plan/SKILL.md +149 -149
- package/skills/exec-plan/agents/decomposer.md +47 -47
- package/skills/exec-plan/agents/dependency-mapper.md +44 -44
- package/skills/exec-plan/agents/estimator.md +43 -43
- package/skills/exec-plan/agents/validator.md +55 -55
- package/skills/exec-plan/orchestrator.md +70 -70
- package/skills/exec-plan/rubrics/complexity-scoring.md +75 -75
- package/skills/exec-plan/templates/plan.md +147 -147
- package/skills/git-worktree/SKILL.md +73 -73
- package/skills/git-worktree/rubrics/when-to-use.md +55 -55
- package/skills/handoff/SKILL.md +110 -110
- package/skills/handoff/agents/context-summarizer.md +51 -51
- package/skills/handoff/agents/document-writer.md +63 -63
- package/skills/handoff/agents/state-collector.md +53 -53
- package/skills/handoff/agents/verifier.md +48 -48
- package/skills/handoff/rubrics/completeness.md +62 -62
- package/skills/handoff/templates/handoff.md +107 -107
- package/skills/parallel-research/SKILL.md +89 -89
- package/skills/parallel-research/agents/best-practices.md +43 -43
- package/skills/parallel-research/agents/codebase-patterns.md +46 -46
- package/skills/parallel-research/agents/framework-docs.md +45 -45
- package/skills/parallel-research/agents/security-advisory.md +46 -46
- package/skills/parallel-research/agents/synthesizer.md +52 -52
- package/skills/parallel-research/experts/best-practices.md +50 -50
- package/skills/parallel-research/experts/codebase-patterns.md +70 -70
- package/skills/parallel-research/experts/framework-docs.md +65 -65
- package/skills/parallel-research/experts/security-advisory.md +69 -69
- package/skills/parallel-research/orchestrator.md +65 -65
- package/skills/parallel-research/templates/synthesis.md +101 -101
- package/skills/prioritization-frameworks/SKILL.md +87 -87
- package/skills/prioritization-frameworks/rubrics/frameworks.md +79 -79
- package/skills/prioritization-frameworks/templates/scoring-matrix.md +69 -69
- package/skills/priority-todos/SKILL.md +64 -64
- package/skills/priority-todos/rubrics/prioritization.md +70 -70
- package/skills/priority-todos/templates/todo-board.md +59 -59
- package/skills/seo-checklist/SKILL.md +58 -58
- package/skills/seo-checklist/frameworks/structured-data.md +153 -153
- package/skills/seo-checklist/rubrics/content-seo.md +42 -42
- package/skills/seo-checklist/rubrics/technical-seo.md +48 -48
- package/skills/techdebt/SKILL.md +124 -124
- package/skills/techdebt/agents/analyzer.md +50 -50
- package/skills/techdebt/agents/fixer.md +41 -41
- package/skills/techdebt/agents/reviewer.md +47 -47
- package/skills/techdebt/agents/scanner.md +44 -44
- package/skills/techdebt/orchestrator.md +70 -70
- package/skills/techdebt/rubrics/severity.md +51 -51
- package/skills/techdebt/scripts/scan.js +90 -90
- package/skills/techdebt/templates/report.md +86 -86
- package/skills/tool-fallback/SKILL.md +104 -104
- package/skills/tool-fallback/rubrics/fallback-chain.md +58 -58
- package/skills/typescript-advanced-types/SKILL.md +67 -67
- package/skills/typescript-advanced-types/rubrics/type-patterns.md +109 -109
- package/skills/ui-ux-pro-max/SKILL.md +236 -236
- package/skills/ui-ux-pro-max/reference/color-and-contrast.md +517 -517
- package/skills/ui-ux-pro-max/reference/interaction-design.md +544 -544
- package/skills/ui-ux-pro-max/reference/motion-design.md +591 -591
- package/skills/ui-ux-pro-max/reference/responsive-design.md +463 -463
- package/skills/ui-ux-pro-max/reference/spatial-design.md +390 -390
- package/skills/ui-ux-pro-max/reference/typography.md +455 -455
- package/skills/ui-ux-pro-max/reference/ux-writing.md +469 -469
- package/skills/ui-ux-pro-max/rubrics/interaction-states.md +83 -83
- package/skills/ui-ux-pro-max/rubrics/responsive-breakpoints.md +99 -99
- package/skills/user-personas/SKILL.md +75 -75
- package/skills/user-personas/rubrics/research-methods.md +56 -56
- package/skills/user-personas/templates/persona.md +89 -89
- package/skills/vercel-react-best-practices/SKILL.md +60 -60
- package/skills/vercel-react-best-practices/rubrics/performance.md +82 -82
- package/skills/vercel-react-best-practices/rubrics/server-components.md +86 -86
- package/skills/vibe.docs/SKILL.md +171 -171
- package/skills/vibe.docs/templates/architecture.md +80 -80
- package/skills/vibe.docs/templates/readme.md +84 -84
- package/skills/vibe.docs/templates/release-notes.md +74 -74
- package/skills/vibe.figma/SKILL.md +215 -982
- package/skills/vibe.figma/rubrics/extraction-checklist.md +51 -51
- package/skills/vibe.figma/templates/component-index.md +126 -126
- package/skills/vibe.figma/templates/figma-handoff.md +100 -100
- package/skills/vibe.figma/templates/remapped-tree.md +277 -277
- package/skills/vibe.figma.convert/SKILL.md +188 -511
- package/skills/vibe.figma.convert/rubrics/conversion-rules.md +129 -113
- package/skills/vibe.figma.convert/templates/component.md +140 -140
- package/skills/vibe.figma.extract/SKILL.md +179 -300
- package/skills/vibe.figma.extract/rubrics/image-rules.md +145 -137
- package/skills/video-production/SKILL.md +52 -52
- package/skills/video-production/rubrics/quality-checklist.md +58 -58
- package/skills/video-production/templates/production-plan.md +104 -104
- package/vibe/config.json +29 -29
- package/vibe/constitution.md +227 -227
- package/vibe/rules/principles/communication-guide.md +98 -98
- package/vibe/rules/principles/development-philosophy.md +52 -52
- package/vibe/rules/principles/quick-start.md +102 -102
- package/vibe/rules/quality/bdd-contract-testing.md +393 -393
- package/vibe/rules/quality/checklist.md +276 -276
- package/vibe/rules/quality/performance.md +236 -236
- package/vibe/rules/quality/testing-strategy.md +440 -440
- package/vibe/rules/standards/anti-patterns.md +541 -541
- package/vibe/rules/standards/code-structure.md +291 -291
- package/vibe/rules/standards/complexity-metrics.md +313 -313
- package/vibe/rules/standards/git-workflow.md +237 -237
- package/vibe/rules/standards/naming-conventions.md +198 -198
- package/vibe/rules/standards/security.md +305 -305
- package/vibe/rules/writing/document-style.md +74 -74
- package/vibe/setup.sh +31 -31
- package/vibe/templates/constitution-template.md +252 -252
- package/vibe/templates/contract-backend-template.md +526 -526
- package/vibe/templates/contract-frontend-template.md +599 -599
- package/vibe/templates/feature-template.md +96 -96
- package/vibe/templates/spec-template.md +221 -221
- package/vibe/ui-ux-data/charts.csv +26 -26
- package/vibe/ui-ux-data/colors.csv +97 -97
- package/vibe/ui-ux-data/icons.csv +101 -101
- package/vibe/ui-ux-data/landing.csv +31 -31
- package/vibe/ui-ux-data/products.csv +96 -96
- package/vibe/ui-ux-data/react-performance.csv +45 -45
- package/vibe/ui-ux-data/stacks/astro.csv +54 -54
- package/vibe/ui-ux-data/stacks/flutter.csv +53 -53
- package/vibe/ui-ux-data/stacks/html-tailwind.csv +56 -56
- package/vibe/ui-ux-data/stacks/jetpack-compose.csv +53 -53
- package/vibe/ui-ux-data/stacks/nextjs.csv +53 -53
- package/vibe/ui-ux-data/stacks/nuxt-ui.csv +51 -51
- package/vibe/ui-ux-data/stacks/nuxtjs.csv +59 -59
- package/vibe/ui-ux-data/stacks/react-native.csv +52 -52
- package/vibe/ui-ux-data/stacks/react.csv +54 -54
- package/vibe/ui-ux-data/stacks/shadcn.csv +61 -61
- package/vibe/ui-ux-data/stacks/svelte.csv +54 -54
- package/vibe/ui-ux-data/stacks/swiftui.csv +51 -51
- package/vibe/ui-ux-data/stacks/vue.csv +50 -50
- package/vibe/ui-ux-data/styles.csv +68 -68
- package/vibe/ui-ux-data/typography.csv +57 -57
- package/vibe/ui-ux-data/ui-reasoning.csv +101 -101
- package/vibe/ui-ux-data/ux-guidelines.csv +99 -99
- package/vibe/ui-ux-data/version.json +31 -31
- package/vibe/ui-ux-data/web-interface.csv +31 -31
package/commands/vibe.run.md
CHANGED
|
@@ -1,2276 +1,2276 @@
|
|
|
1
|
-
---
|
|
2
|
-
description: Execute implementation from SPEC
|
|
3
|
-
argument-hint: "feature name" or --phase N
|
|
4
|
-
---
|
|
5
|
-
|
|
6
|
-
# /vibe.run
|
|
7
|
-
|
|
8
|
-
Execute **Scenario-Driven Implementation** with automatic quality verification.
|
|
9
|
-
|
|
10
|
-
> **Core Principle**: Scenarios are both the implementation unit and verification criteria. All scenarios passing = Quality guaranteed.
|
|
11
|
-
|
|
12
|
-
## Usage
|
|
13
|
-
|
|
14
|
-
```
|
|
15
|
-
/vibe.run "feature-name" # Full implementation
|
|
16
|
-
/vibe.run "feature-name" --phase 1 # Specific Phase only
|
|
17
|
-
/vibe.run "feature-name" ultrawork # ULTRAWORK mode (recommended)
|
|
18
|
-
/vibe.run "feature-name" ulw # Short alias for ultrawork
|
|
19
|
-
```
|
|
20
|
-
|
|
21
|
-
---
|
|
22
|
-
|
|
23
|
-
## Codex Plugin Integration
|
|
24
|
-
|
|
25
|
-
> **Codex νλ¬κ·ΈμΈ κ°μ§**: μν¬νλ‘μ° μμ μ μλ λͺ
λ ΉμΌλ‘ μλ κ°μ§.
|
|
26
|
-
>
|
|
27
|
-
> ```bash
|
|
28
|
-
> CODEX_AVAILABLE=$(node "{{VIBE_PATH}}/hooks/scripts/codex-detect.js" 2>/dev/null || echo "unavailable")
|
|
29
|
-
> ```
|
|
30
|
-
>
|
|
31
|
-
> `available`μ΄λ©΄ `/codex:rescue` (ꡬν μμ), `/codex:review` (μ½λ 리뷰) μλ νΈμΆ. `unavailable`μ΄λ©΄ κΈ°μ‘΄ μν¬νλ‘μ°λ‘ λμ.
|
|
32
|
-
|
|
33
|
-
---
|
|
34
|
-
|
|
35
|
-
> **β±οΈ Timer**: Call `getCurrentTime` tool at the START. Record the result as `{start_time}`.
|
|
36
|
-
|
|
37
|
-
## File Reading Policy (Mandatory)
|
|
38
|
-
|
|
39
|
-
- **SPEC/Feature νμΌ**: λ°λμ `Read` λκ΅¬λ‘ μ 체 νμΌμ μ½μ κ² (Grep κΈμ§)
|
|
40
|
-
- **μμ€μ½λ νμΌ**: ꡬν/μμ λμ νμΌμ λ°λμ `Read` λκ΅¬λ‘ μ 체 μ½μ ν μμ
ν κ²
|
|
41
|
-
- **Grep μ¬μ© μ ν**: νμΌ μμΉ νμ(μ΄λ€ νμΌμ μλμ§ μ°ΎκΈ°)μλ§ μ¬μ©. νμΌ λ΄μ© νμ
μλ λ°λμ Read μ¬μ©
|
|
42
|
-
- **μμ΄μ νΈ spawn μ**: ν둬ννΈμ "λμ νμΌμ Read λκ΅¬λ‘ μ 체 μ½μ ν ꡬννλΌ"λ₯Ό λ°λμ ν¬ν¨ν κ²
|
|
43
|
-
- **λΆλΆ μ½κΈ° κΈμ§**: Grep κ²°κ³Όμ μ£Όλ³ λͺ μ€λ§ λ³΄κ³ μμ νμ§ λ§ κ². μ 체 λ§₯λ½μ νμ
ν΄μΌ κΈ°μ‘΄ μ½λμ μΌκ΄λ ꡬν κ°λ₯
|
|
44
|
-
|
|
45
|
-
## **Scenario-Driven Development (SDD)**
|
|
46
|
-
|
|
47
|
-
> Automate **Scenario = Implementation = Verification** so even non-developers can trust quality
|
|
48
|
-
|
|
49
|
-
### Core Flow
|
|
50
|
-
|
|
51
|
-
```
|
|
52
|
-
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
|
|
53
|
-
β SCENARIO-DRIVEN IMPLEMENTATION β
|
|
54
|
-
β β
|
|
55
|
-
β Load Feature file β
|
|
56
|
-
β β β
|
|
57
|
-
β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
|
|
58
|
-
β β Scenario 1: Happy Path β β
|
|
59
|
-
β β Given β When β Then β β
|
|
60
|
-
β β β β β
|
|
61
|
-
β β [Implement] β [Verify immediately] β β
Pass β β
|
|
62
|
-
β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
|
|
63
|
-
β β β
|
|
64
|
-
β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
|
|
65
|
-
β β Scenario 2: Edge Case β β
|
|
66
|
-
β β Given β When β Then β β
|
|
67
|
-
β β β β β
|
|
68
|
-
β β [Implement] β [Verify] β β Fail β [Fix] β β
Pass β β
|
|
69
|
-
β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
|
|
70
|
-
β β β
|
|
71
|
-
β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
|
|
72
|
-
β β Scenario N: ... β β
|
|
73
|
-
β β [Implement] β [Verify immediately] β β
Pass β β
|
|
74
|
-
β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
|
|
75
|
-
β β β
|
|
76
|
-
β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
|
|
77
|
-
β β π QUALITY REPORT β β
|
|
78
|
-
β β βββββββββββββββββββββββββββββββββββββββββββββββββββββ β β
|
|
79
|
-
β β Scenarios: 5/5 passed β
β β
|
|
80
|
-
β β Quality score: 94/100 β β
|
|
81
|
-
β β Build: β
| Tests: β
β β
|
|
82
|
-
β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
|
|
83
|
-
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
|
|
84
|
-
```
|
|
85
|
-
|
|
86
|
-
### Scenario = Implementation Unit
|
|
87
|
-
|
|
88
|
-
**Traditional approach (Phase-based)**:
|
|
89
|
-
```
|
|
90
|
-
Phase 1 β Phase 2 β Phase 3 β ... β Verify at the end
|
|
91
|
-
β
|
|
92
|
-
"Where did it go wrong?"
|
|
93
|
-
```
|
|
94
|
-
|
|
95
|
-
**SDD approach (Scenario-based)**:
|
|
96
|
-
```
|
|
97
|
-
Scenario 1 β Implement β Verify β
|
|
98
|
-
Scenario 2 β Implement β Verify β
|
|
99
|
-
Scenario 3 β Implement β Verify β β Fix β β
|
|
100
|
-
...
|
|
101
|
-
All pass = Quality guaranteed
|
|
102
|
-
```
|
|
103
|
-
|
|
104
|
-
### Automated Verification (Closed Loop)
|
|
105
|
-
|
|
106
|
-
**μμ¨μ AI μ½λ© = ꡬν + κ²μ¦ + λ°λ³΅. κ²μ¦μ AIμκ² λ§‘κΈ°λ μκ° λ£¨νκ° λ«νλ€.**
|
|
107
|
-
|
|
108
|
-
After implementing each scenario, **automatic verification**:
|
|
109
|
-
|
|
110
|
-
| Verification Item | Auto Check | Method |
|
|
111
|
-
|-------------------|------------|--------|
|
|
112
|
-
| Given (precondition) | State/data preparation confirmed | Code analysis |
|
|
113
|
-
| When (action) | Feature execution possible | Code analysis + Build |
|
|
114
|
-
| Then (result) | Expected result matches | Code analysis + Test |
|
|
115
|
-
| Code quality | Complexity, style, security | Static analysis |
|
|
116
|
-
| **UI behavior** | **μ€μ λΈλΌμ°μ μμ λμ νμΈ** | **E2E Closed Loop** |
|
|
117
|
-
|
|
118
|
-
### E2E Closed Loop (UI Scenarios)
|
|
119
|
-
|
|
120
|
-
**UI μλ리μ€κ° ν¬ν¨λ FeatureμΌ λ μλ νμ±ν.**
|
|
121
|
-
|
|
122
|
-
```
|
|
123
|
-
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
|
|
124
|
-
β CLOSED LOOP = ꡬν + κ²μ¦ + λ°λ³΅ β
|
|
125
|
-
β β
|
|
126
|
-
β Scenario ꡬν μλ£ β
|
|
127
|
-
β β β
|
|
128
|
-
β [E2E κ²μ¦] AIκ° μ§μ λΈλΌμ°μ μ‘°μ β
|
|
129
|
-
β β (μ κ·Όμ± νΈλ¦¬ κΈ°λ° β ν ν° ν¨μ¨μ ) β
|
|
130
|
-
β ββ PASS β Next scenario β
|
|
131
|
-
β ββ FAIL β Root cause analysis β
|
|
132
|
-
β β Fix code (Read full file first) β
|
|
133
|
-
β β Re-run failed scenario only β
|
|
134
|
-
β β PASS? β Next scenario β
|
|
135
|
-
β β FAIL? β Retry (max 3) β
|
|
136
|
-
β β
|
|
137
|
-
β ν΅μ¬: κ²μ¦μ΄ κ°λ²ΌμΈμλ‘ λ£¨νλ λ λ§μ΄ λλ€ β
|
|
138
|
-
β - μ κ·Όμ± νΈλ¦¬: button "Sign In" = 15 chars β
|
|
139
|
-
β - DOM νΈλ¦¬: div class="nav-wrapper mx-4..." = 200+ chars β
|
|
140
|
-
β - μ μλ₯Ό μ¨μΌ ν μΈμ
μμ μμ κ° μλλ¦¬μ€ κ²μ¦ κ°λ₯ β
|
|
141
|
-
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
|
|
142
|
-
```
|
|
143
|
-
|
|
144
|
-
**Browser Tool Priority:**
|
|
145
|
-
|
|
146
|
-
| Priority | Tool | μ©λ |
|
|
147
|
-
|----------|------|------|
|
|
148
|
-
| 1st | Agent Browser (μ κ·Όμ± νΈλ¦¬) | AI μ§μ μ‘°μ, μ΅μ ν ν° |
|
|
149
|
-
| 2nd | Playwright Test Runner | ν
μ€νΈ μ½λ μ€ν, pass/fail λ°ν |
|
|
150
|
-
| 3rd | Playwright MCP (DOM) | μ΅ν μλ¨, ν ν° λΉν¨μ¨ |
|
|
151
|
-
|
|
152
|
-
**νμ±ν 쑰건:**
|
|
153
|
-
- Feature νμΌμ UI κ΄λ ¨ μλλ¦¬μ€ μ‘΄μ¬ (form, button, page, navigate λ±)
|
|
154
|
-
- `.claude/vibe/e2e/config.json`μ `closedLoop.enabled: true` (κΈ°λ³Έκ°)
|
|
155
|
-
- dev serverκ° μ€ν μ€ (`baseURL` μ κ·Ό κ°λ₯)
|
|
156
|
-
|
|
157
|
-
### Auto-Fix on Failure
|
|
158
|
-
|
|
159
|
-
```
|
|
160
|
-
Scenario verification failed (μ½λ λΆμ λλ E2E)
|
|
161
|
-
β
|
|
162
|
-
[Collect evidence]
|
|
163
|
-
- E2E: screenshot, console errors, accessibility tree snapshot
|
|
164
|
-
- Code: build errors, test failures, type errors
|
|
165
|
-
β
|
|
166
|
-
[Root cause analysis] - Which Then condition failed?
|
|
167
|
-
β
|
|
168
|
-
[Read target file FULLY] - GrepμΌλ‘ νμ§ λ§ κ²
|
|
169
|
-
β
|
|
170
|
-
[Implement fix] - Fix only that part
|
|
171
|
-
β
|
|
172
|
-
[Re-verify] - Re-run ONLY failed scenario (save tokens)
|
|
173
|
-
β
|
|
174
|
-
Repeat until pass (max 3 times)
|
|
175
|
-
```
|
|
176
|
-
|
|
177
|
-
---
|
|
178
|
-
|
|
179
|
-
## **ULTRAWORK Mode** (ulw)
|
|
180
|
-
|
|
181
|
-
> Include `ultrawork` or `ulw` in your command to activate **maximum performance mode**.
|
|
182
|
-
|
|
183
|
-
### What ULTRAWORK Enables
|
|
184
|
-
|
|
185
|
-
When you include `ultrawork` (or `ulw`), ALL of these activate automatically:
|
|
186
|
-
|
|
187
|
-
| Feature | Description |
|
|
188
|
-
|---------|-------------|
|
|
189
|
-
| **Parallel Exploration** | 3+ Task(haiku) agents run simultaneously |
|
|
190
|
-
| **Boulder Loop** | Auto-continues until ALL phases complete |
|
|
191
|
-
| **Context Compression** | Aggressive auto-save at 70%+ context |
|
|
192
|
-
| **No Pause** | Doesn't wait for confirmation between phases |
|
|
193
|
-
| **External LLMs** | Auto-consults GPT/Gemini if enabled |
|
|
194
|
-
| **Error Recovery** | Auto-retries on failure (up to 3 times) |
|
|
195
|
-
| **Race Review (v2.6.9)** | Multi-LLM review (GPT+Gemini) with cross-validation |
|
|
196
|
-
|
|
197
|
-
### Boulder Loop (Inspired by Sisyphus)
|
|
198
|
-
|
|
199
|
-
Like Sisyphus rolling the boulder, ULTRAWORK **keeps going until done**:
|
|
200
|
-
|
|
201
|
-
```
|
|
202
|
-
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
|
|
203
|
-
β BOULDER LOOP (ultrawork) β
|
|
204
|
-
β β
|
|
205
|
-
β ββββββββββββ ββββββββββββ ββββββββββββ ββββββββββββ β
|
|
206
|
-
β β Phase 1 ββββββ Phase 2 ββββββ Phase 3 ββββββ Phase N β β
|
|
207
|
-
β ββββββββββββ ββββββββββββ ββββββββββββ ββββββββββββ β
|
|
208
|
-
β β β β β β
|
|
209
|
-
β β β β β β
|
|
210
|
-
β [Parallel] [Parallel] [Parallel] [Parallel] β
|
|
211
|
-
β [Implement] [Implement] [Implement] [Implement] β
|
|
212
|
-
β [Test] [Test] [Test] [Test] β
|
|
213
|
-
β β β β β β
|
|
214
|
-
β βββββββββββββββββ΄ββββββββββββββββ΄ββββββββββββββββ β
|
|
215
|
-
β β β
|
|
216
|
-
β β β
|
|
217
|
-
β ββββββββββββββββ β
|
|
218
|
-
β β ALL DONE? β β
|
|
219
|
-
β ββββββββββββββββ β
|
|
220
|
-
β β β β
|
|
221
|
-
β NO YES β
|
|
222
|
-
β β β β
|
|
223
|
-
β β β β
|
|
224
|
-
β [Continue] [π Complete!] β
|
|
225
|
-
β β
|
|
226
|
-
β NO STOPPING until acceptance criteria met or error limit hit β
|
|
227
|
-
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
|
|
228
|
-
```
|
|
229
|
-
|
|
230
|
-
### Ralph Loop (Completion Verification) - CRITICAL
|
|
231
|
-
|
|
232
|
-
> **Inspired by [ghuntley.com/ralph](https://ghuntley.com/ralph)**: "Deterministically bad in an undeterministic world" - Keep iterating until TRULY complete.
|
|
233
|
-
|
|
234
|
-
**Problem**: AI often claims "complete" when implementation is partial.
|
|
235
|
-
|
|
236
|
-
**Solution**: RTM-based automated coverage verification with iteration tracking.
|
|
237
|
-
|
|
238
|
-
```
|
|
239
|
-
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
|
|
240
|
-
β RALPH LOOP (Mandatory) β
|
|
241
|
-
β β
|
|
242
|
-
β After ALL phases complete: β
|
|
243
|
-
β β
|
|
244
|
-
β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
|
|
245
|
-
β β RTM COVERAGE VERIFICATION [Iteration {{ITER}}/{{MAX}}] β β
|
|
246
|
-
β β β β
|
|
247
|
-
β β Generate RTM via core tools: β β
|
|
248
|
-
β β β generateTraceabilityMatrix("{feature-name}") β β
|
|
249
|
-
β β β β
|
|
250
|
-
β β Coverage Metrics (automated): β β
|
|
251
|
-
β β β‘ Requirements coverage: {coveragePercent}% β β
|
|
252
|
-
β β β‘ SPEC β Feature mapping: {featureCovered}/{total} β β
|
|
253
|
-
β β β‘ Feature β Test mapping: {testCovered}/{total} β β
|
|
254
|
-
β β β‘ Build successful? β β
|
|
255
|
-
β β β‘ Tests passing? β β
|
|
256
|
-
β β β β
|
|
257
|
-
β β UNCOVERED: {uncoveredRequirements[]} β β
|
|
258
|
-
β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
|
|
259
|
-
β β β
|
|
260
|
-
β ββββββββββββ΄βββββββββββ β
|
|
261
|
-
β β Coverage β₯ 95%? β β
|
|
262
|
-
β ββββββββββββ¬βββββββββββ β
|
|
263
|
-
β β β β
|
|
264
|
-
β NO YES β
|
|
265
|
-
β β β β
|
|
266
|
-
β β β β
|
|
267
|
-
β ββββββββββββββββββ ββββββββββββββββββ β
|
|
268
|
-
β β IMPLEMENT β β β
TRULY DONE β β
|
|
269
|
-
β β UNCOVERED β β β β
|
|
270
|
-
β β REQUIREMENTS β β Report final β β
|
|
271
|
-
β β (auto-extract) β β RTM coverage β β
|
|
272
|
-
β βββββββββ¬βββββββββ ββββββββββββββββββ β
|
|
273
|
-
β β β
|
|
274
|
-
β ββββββββββββ [Re-generate RTM] β
|
|
275
|
-
β β
|
|
276
|
-
β MAX_ITERATIONS: 5 (prevent infinite loops) β
|
|
277
|
-
β COVERAGE_THRESHOLD: 95% (quality gate) β
|
|
278
|
-
β ZERO TOLERANCE for scope reduction β
|
|
279
|
-
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
|
|
280
|
-
```
|
|
281
|
-
|
|
282
|
-
**Ralph Loop with RTM:**
|
|
283
|
-
|
|
284
|
-
```bash
|
|
285
|
-
# Generate RTM for coverage verification
|
|
286
|
-
node -e "import('{{VIBE_PATH_URL}}/node_modules/@su-record/vibe/dist/tools/index.js').then(t => t.generateTraceabilityMatrix('{feature-name}', {projectPath: process.cwd()}).then(r => console.log(JSON.stringify(r, null, 2))))"
|
|
287
|
-
```
|
|
288
|
-
|
|
289
|
-
**RTM provides automated metrics:**
|
|
290
|
-
|
|
291
|
-
| Metric | Description |
|
|
292
|
-
|--------|-------------|
|
|
293
|
-
| `totalRequirements` | Total REQ-* items in SPEC |
|
|
294
|
-
| `specCovered` | Requirements with SPEC mapping |
|
|
295
|
-
| `featureCovered` | Requirements with Feature scenarios |
|
|
296
|
-
| `testCovered` | Requirements with test files |
|
|
297
|
-
| `coveragePercent` | Overall coverage percentage |
|
|
298
|
-
| `uncoveredRequirements` | List of missing REQ-* IDs |
|
|
299
|
-
|
|
300
|
-
**Ralph Loop Rules:**
|
|
301
|
-
|
|
302
|
-
| Rule | Description |
|
|
303
|
-
|------|-------------|
|
|
304
|
-
| **No Scope Reduction** | Never say "simplified" or "basic version" - implement FULL request |
|
|
305
|
-
| **Iteration Tracking** | Display `[{{ITER}}/{{MAX}}]` to show progress |
|
|
306
|
-
| **RTM-Based Gap List** | Use `uncoveredRequirements` array - no manual comparison |
|
|
307
|
-
| **Coverage Threshold** | Must reach 95% coverage to complete |
|
|
308
|
-
| **Max Iterations** | Stop at 5 iterations (report remaining gaps as TODO) |
|
|
309
|
-
| **Convergence Detection** | If coverage % unchanged between iterations β STOP (converged) |
|
|
310
|
-
| **Diminishing Returns** | Iteration 3+ β only implement unmet core requirements (REQ-*-001~003), rest goes to TODO |
|
|
311
|
-
|
|
312
|
-
**Ralph Loop Output Format:**
|
|
313
|
-
|
|
314
|
-
```
|
|
315
|
-
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
|
|
316
|
-
π RALPH VERIFICATION [Iteration 1/5]
|
|
317
|
-
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
|
|
318
|
-
|
|
319
|
-
π RTM Coverage Report: login
|
|
320
|
-
|
|
321
|
-
Requirements Traceability:
|
|
322
|
-
Total Requirements: 9
|
|
323
|
-
SPEC Covered: 9/9 (100%)
|
|
324
|
-
Feature Covered: 5/9 (55%)
|
|
325
|
-
Test Covered: 4/9 (44%)
|
|
326
|
-
|
|
327
|
-
β
REQ-login-001: Login form UI β Scenario 1 β login.test.ts
|
|
328
|
-
β
REQ-login-002: Email validation β Scenario 2 β validation.test.ts
|
|
329
|
-
β
REQ-login-003: Password validation β Scenario 2 β validation.test.ts
|
|
330
|
-
β REQ-login-004: Remember me checkbox β NOT IMPLEMENTED
|
|
331
|
-
β REQ-login-005: Forgot password link β NOT IMPLEMENTED
|
|
332
|
-
β
REQ-login-006: API integration β Scenario 3 β api.test.ts
|
|
333
|
-
β REQ-login-007: Loading state β NOT IMPLEMENTED
|
|
334
|
-
β REQ-login-008: Error toast β NOT IMPLEMENTED
|
|
335
|
-
β
REQ-login-009: Session storage β Scenario 4 β (no test)
|
|
336
|
-
|
|
337
|
-
Overall Coverage: 55% β οΈ BELOW 95% THRESHOLD
|
|
338
|
-
|
|
339
|
-
UNCOVERED REQUIREMENTS (auto-extracted from RTM):
|
|
340
|
-
1. REQ-login-004: Remember me checkbox
|
|
341
|
-
2. REQ-login-005: Forgot password link
|
|
342
|
-
3. REQ-login-007: Loading state
|
|
343
|
-
4. REQ-login-008: Error toast notifications
|
|
344
|
-
|
|
345
|
-
β οΈ NOT COMPLETE - Implementing uncovered requirements...
|
|
346
|
-
|
|
347
|
-
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
|
|
348
|
-
π RALPH VERIFICATION [Iteration 2/5]
|
|
349
|
-
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
|
|
350
|
-
|
|
351
|
-
π RTM Coverage Report: login
|
|
352
|
-
|
|
353
|
-
Requirements Traceability:
|
|
354
|
-
Total Requirements: 9
|
|
355
|
-
SPEC Covered: 9/9 (100%)
|
|
356
|
-
Feature Covered: 9/9 (100%)
|
|
357
|
-
Test Covered: 9/9 (100%)
|
|
358
|
-
|
|
359
|
-
Overall Coverage: 100% β
ABOVE 95% THRESHOLD
|
|
360
|
-
|
|
361
|
-
Build: β
Passed
|
|
362
|
-
Tests: β
12/12 Passed
|
|
363
|
-
Type Check: β
No errors
|
|
364
|
-
|
|
365
|
-
β
RALPH VERIFIED COMPLETE!
|
|
366
|
-
|
|
367
|
-
π RTM saved: .claude/vibe/rtm/login-rtm.md
|
|
368
|
-
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
|
|
369
|
-
```
|
|
370
|
-
|
|
371
|
-
**When to Trigger Ralph Loop:**
|
|
372
|
-
|
|
373
|
-
1. After all phases complete
|
|
374
|
-
2. Before final quality report
|
|
375
|
-
3. Whenever user says "ultrawork" or "ralph"
|
|
376
|
-
|
|
377
|
-
**Forbidden Responses (VIOLATIONS):**
|
|
378
|
-
|
|
379
|
-
| β NEVER Say | β
Instead |
|
|
380
|
-
|-------------|-----------|
|
|
381
|
-
| "I've implemented a basic version" | Implement the FULL version |
|
|
382
|
-
| "This is a simplified approach" | Implement as specified |
|
|
383
|
-
| "You can add X later" | Add X now |
|
|
384
|
-
| "For demonstration purposes" | Implement production-ready |
|
|
385
|
-
| "The core functionality is done" | ALL functionality must be done |
|
|
386
|
-
|
|
387
|
-
### ULTRAWORK Example
|
|
388
|
-
|
|
389
|
-
```
|
|
390
|
-
User: /vibe.run "brick-game" ultrawork
|
|
391
|
-
|
|
392
|
-
Claude:
|
|
393
|
-
π ULTRAWORK MODE ACTIVATED
|
|
394
|
-
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
|
|
395
|
-
|
|
396
|
-
π SPEC: .claude/vibe/specs/brick-game.md
|
|
397
|
-
π― 4 Phases detected
|
|
398
|
-
β‘ Boulder Loop: ENABLED (will continue until all phases complete)
|
|
399
|
-
π Auto-retry: ON (max 3 per phase)
|
|
400
|
-
πΎ Context compression: AGGRESSIVE
|
|
401
|
-
|
|
402
|
-
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
|
|
403
|
-
ποΈ BOULDER ROLLING... Phase 1/4
|
|
404
|
-
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
|
|
405
|
-
|
|
406
|
-
β‘ [PARALLEL] Launching 3 exploration agents...
|
|
407
|
-
β
Exploration complete (7.2s)
|
|
408
|
-
π¨ Implementing...
|
|
409
|
-
β
Phase 1 complete
|
|
410
|
-
|
|
411
|
-
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
|
|
412
|
-
ποΈ BOULDER ROLLING... Phase 2/4
|
|
413
|
-
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
|
|
414
|
-
|
|
415
|
-
β‘ [PARALLEL] Launching 3 exploration agents...
|
|
416
|
-
β
Exploration complete (6.8s)
|
|
417
|
-
π¨ Implementing...
|
|
418
|
-
β Test failed: collision detection
|
|
419
|
-
π Auto-retry 1/3...
|
|
420
|
-
π¨ Fixing...
|
|
421
|
-
β
Phase 2 complete
|
|
422
|
-
|
|
423
|
-
[...continues automatically...]
|
|
424
|
-
|
|
425
|
-
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
|
|
426
|
-
π BOULDER REACHED THE TOP!
|
|
427
|
-
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
|
|
428
|
-
|
|
429
|
-
β
All 4 phases complete
|
|
430
|
-
β
All acceptance criteria passed
|
|
431
|
-
β
Build succeeded
|
|
432
|
-
β
Tests passed
|
|
433
|
-
|
|
434
|
-
β±οΈ Total: 8m 24s
|
|
435
|
-
π Retries: 2
|
|
436
|
-
πΎ Context saved: 3 checkpoints
|
|
437
|
-
```
|
|
438
|
-
|
|
439
|
-
### Normal vs ULTRAWORK Comparison
|
|
440
|
-
|
|
441
|
-
| Aspect | Normal | ULTRAWORK |
|
|
442
|
-
|--------|--------|-----------|
|
|
443
|
-
| Phase transition | May pause | Auto-continues |
|
|
444
|
-
| On error | Reports and stops | Auto-retries (3x) |
|
|
445
|
-
| Context 70%+ | Warning only | Auto-compress + save |
|
|
446
|
-
| Exploration | Sequential possible | FORCED parallel |
|
|
447
|
-
| Completion | Phase-by-phase | Until ALL done |
|
|
448
|
-
|
|
449
|
-
---
|
|
450
|
-
|
|
451
|
-
## Automation Level System
|
|
452
|
-
|
|
453
|
-
Magic keywords in the user input automatically set the **AutomationLevel**, which controls how much the AI self-advances vs. pausing for confirmation.
|
|
454
|
-
|
|
455
|
-
### Level Definitions
|
|
456
|
-
|
|
457
|
-
| Level | Name | Keyword(s) | Auto-advance | Auto-retry | Max Retries | Parallel Agents | Checkpoints |
|
|
458
|
-
|-------|------|------------|--------------|------------|-------------|-----------------|-------------|
|
|
459
|
-
| L0 | Manual | `manual` | No | No | 0 | No | All |
|
|
460
|
-
| L1 | Guided | `guided`, `verify` | No | No | 0 | No | All |
|
|
461
|
-
| L2 | Semi-auto | `quick` (default) | Yes | Yes | 2 | No | Key points |
|
|
462
|
-
| L3 | Auto | `ultrawork`, `ulw` | Yes | Yes | 3 | Yes | Checkpoint-only |
|
|
463
|
-
| L4 | Full-auto | `ralph`, `ralplan` | Yes | Yes | 5 | Yes | None |
|
|
464
|
-
|
|
465
|
-
### Detection Rule
|
|
466
|
-
|
|
467
|
-
The AI detects automation level from word boundaries in the user's input:
|
|
468
|
-
|
|
469
|
-
```
|
|
470
|
-
/vibe.run "login" β L2 Semi-auto (default)
|
|
471
|
-
/vibe.run "login" ultrawork β L3 Auto
|
|
472
|
-
/vibe.run "login" ralph β L4 Full-auto
|
|
473
|
-
/vibe.run "login" verify β L1 Guided
|
|
474
|
-
```
|
|
475
|
-
|
|
476
|
-
### Confirmation Matrix
|
|
477
|
-
|
|
478
|
-
Certain action types require user confirmation depending on the active level:
|
|
479
|
-
|
|
480
|
-
| Action | L0 | L1 | L2 | L3 | L4 |
|
|
481
|
-
|--------|----|----|----|----|-----|
|
|
482
|
-
| `destructive` | confirm | confirm | confirm | confirm | auto |
|
|
483
|
-
| `architecture_choice` | confirm | confirm | confirm | auto | auto |
|
|
484
|
-
| `implementation_scope` | confirm | confirm | confirm | auto | auto |
|
|
485
|
-
| `phase_advance` | confirm | confirm | auto | auto | auto |
|
|
486
|
-
| `fix_strategy` | confirm | confirm | auto | auto | auto |
|
|
487
|
-
| `retry` | confirm | auto | auto | auto | auto |
|
|
488
|
-
|
|
489
|
-
**Rule**: When confirmation is required, pause and display a checkpoint before proceeding.
|
|
490
|
-
|
|
491
|
-
---
|
|
492
|
-
|
|
493
|
-
## Interactive Checkpoints
|
|
494
|
-
|
|
495
|
-
Checkpoints are decision gates inserted at critical points in the workflow. At L3/L4, most checkpoints are **auto-resolved** using the default option.
|
|
496
|
-
|
|
497
|
-
### Checkpoint Types
|
|
498
|
-
|
|
499
|
-
| Type | When It Fires | Default Option |
|
|
500
|
-
|------|--------------|----------------|
|
|
501
|
-
| `requirements_confirm` | Before starting Phase 1 | Confirm (a) |
|
|
502
|
-
| `architecture_choice` | When architecture approach is ambiguous | Clean/balanced (b) |
|
|
503
|
-
| `implementation_scope` | Before any large scope change (6+ files) | Approve (a) |
|
|
504
|
-
| `verification_result` | After each VerificationLoop iteration below threshold | Continue fixing (a) |
|
|
505
|
-
| `fix_strategy` | When critical issues are found during quality gate | Fix all (a) |
|
|
506
|
-
|
|
507
|
-
### Checkpoint Format
|
|
508
|
-
|
|
509
|
-
When a checkpoint fires, display it in this format:
|
|
510
|
-
|
|
511
|
-
```
|
|
512
|
-
ββββββββββββββββββββββββββββββββββββββββββββββββββ
|
|
513
|
-
CHECKPOINT: Requirements Confirmation
|
|
514
|
-
ββββββββββββββββββββββββββββββββββββββββββββββββββ
|
|
515
|
-
Feature: login
|
|
516
|
-
|
|
517
|
-
Requirements:
|
|
518
|
-
1. User can log in with email and password
|
|
519
|
-
2. Invalid credentials show an error message
|
|
520
|
-
3. Remember me persists session for 30 days
|
|
521
|
-
|
|
522
|
-
Options:
|
|
523
|
-
a) Confirm
|
|
524
|
-
Proceed with these requirements as stated.
|
|
525
|
-
b) Revise
|
|
526
|
-
Modify or clarify requirements before proceeding.
|
|
527
|
-
c) Abort
|
|
528
|
-
Cancel this workflow.
|
|
529
|
-
|
|
530
|
-
Default: a
|
|
531
|
-
ββββββββββββββββββββββββββββββββββββββββββββββββββ
|
|
532
|
-
```
|
|
533
|
-
|
|
534
|
-
### Auto-Resolution (L3/L4)
|
|
535
|
-
|
|
536
|
-
At automation levels L3 and L4, checkpoints that do not require confirmation are auto-resolved:
|
|
537
|
-
|
|
538
|
-
```
|
|
539
|
-
[AUTO] CHECKPOINT: implementation_scope β option a (Approve) [auto-resolved]
|
|
540
|
-
```
|
|
541
|
-
|
|
542
|
-
---
|
|
543
|
-
|
|
544
|
-
## Rules Reference
|
|
545
|
-
|
|
546
|
-
**Must follow `~/.claude/vibe/rules/` (global):**
|
|
547
|
-
|
|
548
|
-
- `core/development-philosophy.md` - Surgical precision, modify only requested scope
|
|
549
|
-
- `core/quick-start.md` - Korean, DRY, SRP, YAGNI
|
|
550
|
-
- `standards/complexity-metrics.md` - Functions β€20 lines, nesting β€3 levels
|
|
551
|
-
- `quality/checklist.md` - Code quality checklist
|
|
552
|
-
|
|
553
|
-
**Language guide:** `~/.claude/vibe/languages/{stack}.md` (global reference)
|
|
554
|
-
|
|
555
|
-
---
|
|
556
|
-
|
|
557
|
-
## Coding Guidelines (Mandatory)
|
|
558
|
-
|
|
559
|
-
### Type Safety: Use Types Explicitly
|
|
560
|
-
|
|
561
|
-
> **Core Principle**: Use types explicitly in every language that has a type system!
|
|
562
|
-
|
|
563
|
-
Type definitions are not just language syntax β they are a **core engineering philosophy for simplifying and controlling complex software**.
|
|
564
|
-
|
|
565
|
-
### Applies to ALL Typed Languages
|
|
566
|
-
|
|
567
|
-
| Category | Languages | Key Principle |
|
|
568
|
-
|----------|-----------|---------------|
|
|
569
|
-
| **Static Typed** | Java, C#, C++, Go, Rust, Swift, Kotlin, Scala | Types = compile-time contracts |
|
|
570
|
-
| **Gradual Typed** | TypeScript, Python (typing), PHP (typed), Ruby (RBS) | Types = optional safety nets |
|
|
571
|
-
| **Functional** | Haskell, OCaml, F#, Elm | Types = logical proofs |
|
|
572
|
-
|
|
573
|
-
### Universal Anti-Patterns (All Languages)
|
|
574
|
-
|
|
575
|
-
| β Forbidden Pattern | Why | β
Instead |
|
|
576
|
-
|---------------------|-----|-----------|
|
|
577
|
-
| Type escape hatches (`any`, `Any`, `Object`, `void*`, `interface{}`) | Loses type info, runtime errors | Concrete types or `unknown` + guards |
|
|
578
|
-
| Type suppression (`@ts-ignore`, `# type: ignore`, `@SuppressWarnings`) | Hides errors | Fix actual type issues |
|
|
579
|
-
| Raw generic types (`List`, `Map` without params) | Loses type safety | `List<User>`, `Map<String, Order>` |
|
|
580
|
-
| Excessive casting (`as`, `(Type)`, `unsafe`) | Bypasses compiler | Type guards or pattern matching |
|
|
581
|
-
|
|
582
|
-
### Language-Specific Guidelines
|
|
583
|
-
|
|
584
|
-
**TypeScript/JavaScript:**
|
|
585
|
-
```typescript
|
|
586
|
-
// β BAD
|
|
587
|
-
function process(data: any): any { return data.foo; }
|
|
588
|
-
|
|
589
|
-
// β
GOOD
|
|
590
|
-
function process(data: unknown): Result {
|
|
591
|
-
if (isValidData(data)) return data.foo;
|
|
592
|
-
throw new Error('Invalid');
|
|
593
|
-
}
|
|
594
|
-
```
|
|
595
|
-
|
|
596
|
-
**Python:**
|
|
597
|
-
```python
|
|
598
|
-
# β BAD
|
|
599
|
-
def process(data: Any) -> Any: return data["key"]
|
|
600
|
-
|
|
601
|
-
# β
GOOD
|
|
602
|
-
def process(data: UserData) -> str: return data["name"]
|
|
603
|
-
```
|
|
604
|
-
|
|
605
|
-
**Java/Kotlin:**
|
|
606
|
-
```java
|
|
607
|
-
// β BAD
|
|
608
|
-
List items = new ArrayList(); // Raw type
|
|
609
|
-
Object data = getData(); // Lost type info
|
|
610
|
-
|
|
611
|
-
// β
GOOD
|
|
612
|
-
List<User> users = new ArrayList<>();
|
|
613
|
-
User user = getUser();
|
|
614
|
-
```
|
|
615
|
-
|
|
616
|
-
**Go:**
|
|
617
|
-
```go
|
|
618
|
-
// β BAD
|
|
619
|
-
func process(data interface{}) interface{} { ... }
|
|
620
|
-
|
|
621
|
-
// β
GOOD
|
|
622
|
-
func process(data UserRequest) (UserResponse, error) { ... }
|
|
623
|
-
```
|
|
624
|
-
|
|
625
|
-
**Rust:**
|
|
626
|
-
```rust
|
|
627
|
-
// β BAD (unnecessary unsafe or Box<dyn Any>)
|
|
628
|
-
let data: Box<dyn Any> = get_data();
|
|
629
|
-
|
|
630
|
-
// β
GOOD
|
|
631
|
-
let data: UserData = get_data()?;
|
|
632
|
-
```
|
|
633
|
-
|
|
634
|
-
**C#:**
|
|
635
|
-
```csharp
|
|
636
|
-
// β BAD
|
|
637
|
-
object data = GetData();
|
|
638
|
-
dynamic result = Process(data);
|
|
639
|
-
|
|
640
|
-
// β
GOOD
|
|
641
|
-
UserData data = GetData();
|
|
642
|
-
Result result = Process(data);
|
|
643
|
-
```
|
|
644
|
-
|
|
645
|
-
### Type Safety Rules (Universal)
|
|
646
|
-
|
|
647
|
-
| Rule | Description |
|
|
648
|
-
|------|-------------|
|
|
649
|
-
| **Boundary Validation** | Validate only at system boundaries (API, JSON, user input) |
|
|
650
|
-
| **Internal Trust** | After validation, pass only precise types internally |
|
|
651
|
-
| **No Type Escape** | Never use escape hatches to "fix" type errors |
|
|
652
|
-
| **Explicit Signatures** | Specify types in function/method signatures |
|
|
653
|
-
| **Generics with Params** | Always use generics with type parameters |
|
|
654
|
-
|
|
655
|
-
### Quality Gate: Type Violations Block Merge
|
|
656
|
-
|
|
657
|
-
| Violation | Action |
|
|
658
|
-
|-----------|--------|
|
|
659
|
-
| Type escape hatches (`any`, `Any`, `Object`, `interface{}`, etc.) | β Block |
|
|
660
|
-
| Type suppression comments | β Block |
|
|
661
|
-
| Raw generic types | β Block |
|
|
662
|
-
| Missing function return types | β οΈ Warning |
|
|
663
|
-
| Excessive type casting | β οΈ Warning |
|
|
664
|
-
|
|
665
|
-
## Description
|
|
666
|
-
|
|
667
|
-
Read PTCF structured SPEC document and execute implementation immediately.
|
|
668
|
-
|
|
669
|
-
> **PLAN, TASKS documents unnecessary** - SPEC is the executable prompt
|
|
670
|
-
|
|
671
|
-
## Model Orchestration (Intelligent Routing)
|
|
672
|
-
|
|
673
|
-
Automatically select optimal model based on **task complexity analysis**.
|
|
674
|
-
|
|
675
|
-
### Complexity-Based Model Selection
|
|
676
|
-
|
|
677
|
-
| Complexity Score | Model | When to Use |
|
|
678
|
-
|------------------|-------|-------------|
|
|
679
|
-
| 0-7 (Low) | **Haiku** | Simple fixes, searches, single file changes |
|
|
680
|
-
| 8-19 (Medium) | **Sonnet** | Standard features, 3-5 files, integrations |
|
|
681
|
-
| 20+ (High) | **Opus** | Architecture, security, multi-service, 6+ files |
|
|
682
|
-
|
|
683
|
-
### Complexity Signals
|
|
684
|
-
|
|
685
|
-
The following signals increase complexity score:
|
|
686
|
-
|
|
687
|
-
| Signal | Score |
|
|
688
|
-
|--------|-------|
|
|
689
|
-
| Architecture change | +15 |
|
|
690
|
-
| Security implication | +12 |
|
|
691
|
-
| Multi-service | +8 |
|
|
692
|
-
| Refactoring | +12 |
|
|
693
|
-
| 6+ files | +15 |
|
|
694
|
-
| 3-5 files | +8 |
|
|
695
|
-
| New feature | +5 |
|
|
696
|
-
| Bug fix | -3 |
|
|
697
|
-
| Documentation | -5 |
|
|
698
|
-
|
|
699
|
-
### Agent Tier System
|
|
700
|
-
|
|
701
|
-
Each agent has tier variants for cost optimization:
|
|
702
|
-
|
|
703
|
-
| Agent | Low (Haiku) | Medium (Sonnet) | High (Opus) |
|
|
704
|
-
|-------|-------------|-----------------|-------------|
|
|
705
|
-
| explorer | explorer-low | explorer-medium | explorer |
|
|
706
|
-
| implementer | implementer-low | implementer-medium | implementer |
|
|
707
|
-
| architect | architect-low | architect-medium | architect |
|
|
708
|
-
|
|
709
|
-
### Task Calls by Role
|
|
710
|
-
|
|
711
|
-
| Task Type | Model | Task Parameter |
|
|
712
|
-
|-----------|-------|----------------|
|
|
713
|
-
| Simple search | Haiku | `model: "haiku"` |
|
|
714
|
-
| Codebase exploration | Haiku/Sonnet | Auto-selected |
|
|
715
|
-
| Core implementation | Sonnet | `model: "sonnet"` |
|
|
716
|
-
| Test writing | Haiku | `model: "haiku"` |
|
|
717
|
-
| Architecture decisions | Opus | Main session |
|
|
718
|
-
| Final review | Opus | Main session |
|
|
719
|
-
|
|
720
|
-
### External LLM Usage (When Enabled)
|
|
721
|
-
|
|
722
|
-
When external LLMs are enabled in `.claude/vibe/config.json`:
|
|
723
|
-
|
|
724
|
-
| Role | Method | Condition |
|
|
725
|
-
|------|--------|-----------|
|
|
726
|
-
| User direct query | `gpt.question`, `gemini.question` | Hook auto-handles |
|
|
727
|
-
| Internal orchestration | Call global script via Bash | Claude calls directly |
|
|
728
|
-
|
|
729
|
-
**User questions (Hook auto-handles):**
|
|
730
|
-
- `gpt.question` - GPT architecture consultation
|
|
731
|
-
- `gemini.question` - Gemini Q&A/consultation
|
|
732
|
-
|
|
733
|
-
**Claude internal calls (directly via Bash):**
|
|
734
|
-
```bash
|
|
735
|
-
# Usage: node llm-orchestrate.js <provider> <mode> [systemPrompt] [prompt]
|
|
736
|
-
# - If systemPrompt omitted, uses default
|
|
737
|
-
# - If systemPrompt is "-", uses default and treats next argument as prompt
|
|
738
|
-
|
|
739
|
-
# [LLM_SCRIPT] = {{VIBE_PATH}}/hooks/scripts/llm-orchestrate.js
|
|
740
|
-
|
|
741
|
-
# GPT call (short prompt - CLI arg)
|
|
742
|
-
node "[LLM_SCRIPT]" gpt orchestrate-json "[question content]"
|
|
743
|
-
|
|
744
|
-
# Gemini call
|
|
745
|
-
node "[LLM_SCRIPT]" gemini orchestrate-json "[question content]"
|
|
746
|
-
|
|
747
|
-
# Custom system prompt usage
|
|
748
|
-
node "[LLM_SCRIPT]" gpt orchestrate-json "You are a code reviewer" "[question content]"
|
|
749
|
-
|
|
750
|
-
# Long prompt - use --input file (write JSON file first with Write tool)
|
|
751
|
-
# JSON format: {"prompt": "your prompt here"}
|
|
752
|
-
node "[LLM_SCRIPT]" gpt orchestrate-json --input "[SCRATCHPAD]/input.json"
|
|
753
|
-
```
|
|
754
|
-
|
|
755
|
-
### External LLM Fallback
|
|
756
|
-
|
|
757
|
-
**IMPORTANT**: When GPT/Gemini hook fails, Claude MUST handle the task directly:
|
|
758
|
-
|
|
759
|
-
**Fallback behavior**:
|
|
760
|
-
- Do NOT retry the external LLM call
|
|
761
|
-
- Claude handles the task using its own capabilities
|
|
762
|
-
- Continue with the implementation without interruption
|
|
763
|
-
- Log the fallback but don't block progress
|
|
764
|
-
|
|
765
|
-
## Core Tools (Semantic Analysis & Memory)
|
|
766
|
-
|
|
767
|
-
Use core tools for accurate codebase understanding and session continuity.
|
|
768
|
-
|
|
769
|
-
### Tool Invocation
|
|
770
|
-
|
|
771
|
-
All tools are called via:
|
|
772
|
-
```bash
|
|
773
|
-
node -e "import('{{VIBE_PATH_URL}}/node_modules/@su-record/vibe/dist/tools/index.js').then(t => t.TOOL_NAME({...args}).then(r => console.log(r.content[0].text)))"
|
|
774
|
-
```
|
|
775
|
-
|
|
776
|
-
### Semantic Analysis Tools
|
|
777
|
-
|
|
778
|
-
| Tool | Purpose | Usage |
|
|
779
|
-
|------|---------|-------|
|
|
780
|
-
| `findSymbol` | Find symbol definitions | `{symbolName: 'functionName', searchPath: '.'}` |
|
|
781
|
-
| `findReferences` | Find all references | `{symbolName: 'functionName', searchPath: '.'}` |
|
|
782
|
-
| `analyzeComplexity` | Analyze code complexity | `{filePath: 'src/file.ts'}` |
|
|
783
|
-
| `validateCodeQuality` | Validate code quality | `{filePath: 'src/file.ts'}` |
|
|
784
|
-
|
|
785
|
-
**Example - Find symbol:**
|
|
786
|
-
```bash
|
|
787
|
-
node -e "import('{{VIBE_PATH_URL}}/node_modules/@su-record/vibe/dist/tools/index.js').then(t => t.findSymbol({symbolName: 'login', searchPath: '.'}).then(r => console.log(r.content[0].text)))"
|
|
788
|
-
```
|
|
789
|
-
|
|
790
|
-
### Memory Tools
|
|
791
|
-
|
|
792
|
-
| Tool | Purpose | Usage |
|
|
793
|
-
|------|---------|-------|
|
|
794
|
-
| `saveMemory` | Save important decisions | `{key: 'decision-name', value: 'content', category: 'project'}` |
|
|
795
|
-
| `recallMemory` | Recall saved memory | `{key: 'decision-name'}` |
|
|
796
|
-
| `listMemories` | List all memories | `{category: 'project'}` |
|
|
797
|
-
|
|
798
|
-
**Example - Save important decision:**
|
|
799
|
-
```bash
|
|
800
|
-
node -e "import('{{VIBE_PATH_URL}}/node_modules/@su-record/vibe/dist/tools/index.js').then(t => t.saveMemory({key: 'auth-pattern', value: 'Using JWT with refresh tokens', category: 'project'}).then(r => console.log(r.content[0].text)))"
|
|
801
|
-
```
|
|
802
|
-
|
|
803
|
-
### Session Management (Auto via Hooks)
|
|
804
|
-
|
|
805
|
-
- **Session start**: Hook auto-calls `startSession` to restore previous context
|
|
806
|
-
- **Context 80%+**: Hook auto-calls `autoSaveContext` to preserve state
|
|
807
|
-
|
|
808
|
-
## Process
|
|
809
|
-
|
|
810
|
-
### 1. Load SPEC + Feature
|
|
811
|
-
|
|
812
|
-
**Search order (check BOTH file AND folder):**
|
|
813
|
-
|
|
814
|
-
```
|
|
815
|
-
Step 1: Check if SPLIT structure exists (folder)
|
|
816
|
-
π .claude/vibe/specs/{feature-name}/ β Folder with _index.md + phase files
|
|
817
|
-
π .claude/vibe/features/{feature-name}/ β Folder with _index.feature + phase files
|
|
818
|
-
|
|
819
|
-
Step 2: If no folder, check single file
|
|
820
|
-
π .claude/vibe/specs/{feature-name}.md β Single SPEC file
|
|
821
|
-
π .claude/vibe/features/{feature-name}.feature β Single Feature file
|
|
822
|
-
|
|
823
|
-
Step 3: If neither exists β Error
|
|
824
|
-
```
|
|
825
|
-
|
|
826
|
-
**Split structure (folder) detected:**
|
|
827
|
-
```
|
|
828
|
-
π .claude/vibe/specs/{feature-name}/
|
|
829
|
-
βββ _index.md β Master SPEC (read first for overview)
|
|
830
|
-
βββ phase-1-{name}.md β Phase 1 SPEC
|
|
831
|
-
βββ phase-2-{name}.md β Phase 2 SPEC
|
|
832
|
-
βββ ...
|
|
833
|
-
|
|
834
|
-
π .claude/vibe/features/{feature-name}/
|
|
835
|
-
βββ _index.feature β Master Feature (read first for scenario overview)
|
|
836
|
-
βββ phase-1-{name}.feature β Phase 1 scenarios
|
|
837
|
-
βββ phase-2-{name}.feature β Phase 2 scenarios
|
|
838
|
-
βββ ...
|
|
839
|
-
|
|
840
|
-
β Load _index.md first, then load phase files in order
|
|
841
|
-
β Execute phases sequentially (or per --phase flag)
|
|
842
|
-
```
|
|
843
|
-
|
|
844
|
-
**Single file detected:**
|
|
845
|
-
```
|
|
846
|
-
π .claude/vibe/specs/{feature-name}.md β SPEC (structure, constraints, context)
|
|
847
|
-
π .claude/vibe/features/{feature-name}.feature β Feature (scenario = implementation unit)
|
|
848
|
-
```
|
|
849
|
-
|
|
850
|
-
**Error if NEITHER file NOR folder found:**
|
|
851
|
-
```
|
|
852
|
-
β SPEC not found. Searched:
|
|
853
|
-
- .claude/vibe/specs/{feature-name}/ (folder)
|
|
854
|
-
- .claude/vibe/specs/{feature-name}.md (file)
|
|
855
|
-
|
|
856
|
-
Run /vibe.spec "{feature-name}" first.
|
|
857
|
-
```
|
|
858
|
-
|
|
859
|
-
### 1-1. Phase Isolation Protocol (Large SPEC Guard)
|
|
860
|
-
|
|
861
|
-
> **Problem**: Large SPECs (3+ phases, 5+ scenarios) overflow context β agent drifts from SPEC by Phase 3.
|
|
862
|
-
> **Solution**: Load only the current phase's SPEC section. Re-anchor before each scenario.
|
|
863
|
-
|
|
864
|
-
**Phase Isolation Rules (MANDATORY for 3+ phases):**
|
|
865
|
-
|
|
866
|
-
```
|
|
867
|
-
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
|
|
868
|
-
β PHASE ISOLATION PROTOCOL β
|
|
869
|
-
β β
|
|
870
|
-
β β WRONG: Load entire SPEC β implement all phases β
|
|
871
|
-
β β
RIGHT: Load _index overview β per-phase load β implement β
|
|
872
|
-
β β
|
|
873
|
-
β Step A: Read _index.md (overview only β phase list, REQ IDs) β
|
|
874
|
-
β Step B: For each Phase N: β
|
|
875
|
-
β 1. RE-READ Phase N SPEC section (every time, no memory) β
|
|
876
|
-
β 2. RE-READ Phase N Feature scenarios β
|
|
877
|
-
β 3. Extract Phase N scope: files, scenarios, requirements β
|
|
878
|
-
β 4. Implement Phase N scenarios β
|
|
879
|
-
β 5. Verify Phase N β
|
|
880
|
-
β 6. Write Phase Checkpoint β .claude/vibe/checkpoints/ β
|
|
881
|
-
β 7. DISCARD Phase N details from working memory β
|
|
882
|
-
β Step C: Next Phase β go to Step B β
|
|
883
|
-
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
|
|
884
|
-
```
|
|
885
|
-
|
|
886
|
-
**Phase Checkpoint Format** (`.claude/vibe/checkpoints/{feature}-phase-{N}.md`):
|
|
887
|
-
|
|
888
|
-
```markdown
|
|
889
|
-
# Checkpoint: {feature} Phase {N}
|
|
890
|
-
|
|
891
|
-
## Completed
|
|
892
|
-
- Scenario 1: {name} β
|
|
893
|
-
- Scenario 2: {name} β
|
|
894
|
-
|
|
895
|
-
## Files Changed
|
|
896
|
-
- src/auth.service.ts (added login(), validateToken())
|
|
897
|
-
- src/auth.controller.ts (POST /login, POST /refresh)
|
|
898
|
-
|
|
899
|
-
## State for Next Phase
|
|
900
|
-
- Auth service exports: login(), logout(), validateToken(), refreshToken()
|
|
901
|
-
- JWT secret configured in .env (JWT_SECRET)
|
|
902
|
-
- Test baseline: 12 tests passing
|
|
903
|
-
|
|
904
|
-
## Remaining Phases
|
|
905
|
-
- Phase {N+1}: {name} β {scenario count} scenarios
|
|
906
|
-
- Phase {N+2}: {name} β {scenario count} scenarios
|
|
907
|
-
```
|
|
908
|
-
|
|
909
|
-
**SPEC Re-anchoring (Before EVERY scenario):**
|
|
910
|
-
|
|
911
|
-
```
|
|
912
|
-
Before implementing Scenario X:
|
|
913
|
-
1. Re-read the EXACT Given/When/Then from Feature file (not from memory!)
|
|
914
|
-
2. Compare: "Am I about to implement what the SPEC says, or what I think it says?"
|
|
915
|
-
3. If single-file SPEC: re-read only the current phase section (use line offsets)
|
|
916
|
-
4. If split SPEC: re-read only phase-N-{name}.md
|
|
917
|
-
```
|
|
918
|
-
|
|
919
|
-
**Scope Lock (Per Phase):**
|
|
920
|
-
|
|
921
|
-
```
|
|
922
|
-
At Phase start, declare:
|
|
923
|
-
MODIFY: [list of files this phase will touch]
|
|
924
|
-
CREATE: [list of files this phase will create]
|
|
925
|
-
DO NOT TOUCH: everything else
|
|
926
|
-
|
|
927
|
-
If implementation requires files outside scope:
|
|
928
|
-
β STOP. Re-read SPEC. Is this actually needed?
|
|
929
|
-
β If yes: add to scope with explicit justification
|
|
930
|
-
β If no: you're drifting. Return to SPEC.
|
|
931
|
-
```
|
|
932
|
-
|
|
933
|
-
**Context Pressure Handling:**
|
|
934
|
-
|
|
935
|
-
| Context Level | Action |
|
|
936
|
-
|---------------|--------|
|
|
937
|
-
| < 50% | Normal execution |
|
|
938
|
-
| 50-70% | Save checkpoint, trim exploration results |
|
|
939
|
-
| 70%+ | Save checkpoint β `/new` β resume from checkpoint |
|
|
940
|
-
| Phase boundary | Always save checkpoint regardless of context level |
|
|
941
|
-
|
|
942
|
-
### 1-2. SPEC-First Gate (Level 3: Spec = Source of Truth)
|
|
943
|
-
|
|
944
|
-
> **Principle**: SPEC is the source of truth for code. To modify code, update the SPEC first.
|
|
945
|
-
|
|
946
|
-
**When a change not in the SPEC is needed during implementation:**
|
|
947
|
-
|
|
948
|
-
```
|
|
949
|
-
Discovery during implementation: "An API endpoint not in SPEC is needed"
|
|
950
|
-
β
|
|
951
|
-
ββ Already in SPEC?
|
|
952
|
-
β YES β Implement as-is
|
|
953
|
-
β
|
|
954
|
-
ββ Not in SPEC but within SPEC scope?
|
|
955
|
-
β YES β Add to SPEC first (Edit tool β SPEC file)
|
|
956
|
-
β β Add corresponding scenario to Feature file
|
|
957
|
-
β β Then implement
|
|
958
|
-
β
|
|
959
|
-
ββ Outside SPEC scope?
|
|
960
|
-
YES β Record as TODO and exclude from current scope
|
|
961
|
-
.claude/vibe/todos/out-of-scope-{item}.md
|
|
962
|
-
```
|
|
963
|
-
|
|
964
|
-
**Required when changing SPEC:**
|
|
965
|
-
|
|
966
|
-
1. Update REQ-* IDs in SPEC file (add new requirements)
|
|
967
|
-
2. Add corresponding scenarios to Feature file
|
|
968
|
-
3. New REQ-* must be traceable in RTM after implementation
|
|
969
|
-
|
|
970
|
-
**Reverse direction also applies β when requirements change from code:**
|
|
971
|
-
|
|
972
|
-
```
|
|
973
|
-
Test failure β "Is this behavior correct?"
|
|
974
|
-
β
|
|
975
|
-
ββ Check SPEC β If SPEC is correct, fix the code
|
|
976
|
-
β
|
|
977
|
-
ββ If SPEC is wrong β Fix SPEC first β Then fix code
|
|
978
|
-
(Changing code without updating SPEC causes SPEC β code drift)
|
|
979
|
-
```
|
|
980
|
-
|
|
981
|
-
**Extended Git commit rules:**
|
|
982
|
-
|
|
983
|
-
- SPEC changes and code changes must be in the same commit
|
|
984
|
-
- Committing feature code without SPEC changes β warning (except intentional refactoring)
|
|
985
|
-
|
|
986
|
-
### 2. Extract Scenario List
|
|
987
|
-
|
|
988
|
-
Extract all Scenarios from Feature file:
|
|
989
|
-
|
|
990
|
-
```markdown
|
|
991
|
-
## Scenarios to Implement
|
|
992
|
-
|
|
993
|
-
| # | Scenario | Status |
|
|
994
|
-
|---|----------|--------|
|
|
995
|
-
| 1 | Valid login success | β¬ |
|
|
996
|
-
| 2 | Invalid password error | β¬ |
|
|
997
|
-
| 3 | Email format validation | β¬ |
|
|
998
|
-
| 4 | Password reset link | β¬ |
|
|
999
|
-
|
|
1000
|
-
Total: 4 scenarios
|
|
1001
|
-
```
|
|
1002
|
-
|
|
1003
|
-
### 3. Scenario-by-Scenario Implementation (Core)
|
|
1004
|
-
|
|
1005
|
-
**For each scenario**:
|
|
1006
|
-
|
|
1007
|
-
```
|
|
1008
|
-
ββββββββββββββββββββββββββββββββββββββββββββ
|
|
1009
|
-
π― Scenario 1/4: Valid login success
|
|
1010
|
-
ββββββββββββββββββββββββββββββββββββββββββββ
|
|
1011
|
-
|
|
1012
|
-
Given: User is registered
|
|
1013
|
-
When: Login with valid email and password
|
|
1014
|
-
Then: Login success + JWT token returned
|
|
1015
|
-
|
|
1016
|
-
[Step 1] Analyzing implementation...
|
|
1017
|
-
- Required files: auth.service.ts, login.controller.ts
|
|
1018
|
-
- Exploring related code...
|
|
1019
|
-
|
|
1020
|
-
[Step 2] Implementing...
|
|
1021
|
-
β
auth.service.ts - Added login() method
|
|
1022
|
-
β
login.controller.ts - POST /login endpoint
|
|
1023
|
-
|
|
1024
|
-
[Step 3] Verifying...
|
|
1025
|
-
β
Given: Test user creation possible
|
|
1026
|
-
β
When: Login API call succeeded
|
|
1027
|
-
β
Then: JWT token return confirmed
|
|
1028
|
-
|
|
1029
|
-
β
Scenario 1 passed!
|
|
1030
|
-
ββββββββββββββββββββββββββββββββββββββββββββ
|
|
1031
|
-
```
|
|
1032
|
-
|
|
1033
|
-
**On failure**:
|
|
1034
|
-
|
|
1035
|
-
```
|
|
1036
|
-
ββββββββββββββββββββββββββββββββββββββββββββ
|
|
1037
|
-
π― Scenario 2/4: Invalid password error
|
|
1038
|
-
ββββββββββββββββββββββββββββββββββββββββββββ
|
|
1039
|
-
|
|
1040
|
-
[Step 3] Verifying...
|
|
1041
|
-
β
Given: Test user exists
|
|
1042
|
-
β
When: Login attempt with wrong password
|
|
1043
|
-
β Then: "Invalid credentials" error message
|
|
1044
|
-
Actual: "Error occurred" returned
|
|
1045
|
-
|
|
1046
|
-
[Auto-fix 1/3]
|
|
1047
|
-
Cause: Error message not properly set
|
|
1048
|
-
Fix: auth.service.ts line 42
|
|
1049
|
-
|
|
1050
|
-
[Re-verify]
|
|
1051
|
-
β
Then: "Invalid credentials" error message
|
|
1052
|
-
|
|
1053
|
-
β
Scenario 2 passed! (1 fix)
|
|
1054
|
-
ββββββββββββββββββββββββββββββββββββββββββββ
|
|
1055
|
-
```
|
|
1056
|
-
|
|
1057
|
-
---
|
|
1058
|
-
|
|
1059
|
-
## **CRITICAL: Parallel Sub-Agent Execution**
|
|
1060
|
-
|
|
1061
|
-
> **MUST USE PARALLEL TASK CALLS** - This is REQUIRED, not optional.
|
|
1062
|
-
> Sequential execution when parallel is possible = VIOLATION of this workflow.
|
|
1063
|
-
|
|
1064
|
-
### Codex λ³λ ¬ ꡬν (Codex νλ¬κ·ΈμΈ νμ±ν μ)
|
|
1065
|
-
|
|
1066
|
-
> **νμ±ν 쑰건**: Codex νλ¬κ·ΈμΈ μ€μΉ + λ
립μ μΈ μλλ¦¬μ€ 2κ° μ΄μ
|
|
1067
|
-
> λ―Έμ€μΉ μ κΈ°μ‘΄ Claude μλΈμμ΄μ νΈ λ°©μμΌλ‘ λμ.
|
|
1068
|
-
|
|
1069
|
-
λ
립μ μΈ μλ리μ€(νμΌ μμ‘΄μ± μμ)λ₯Ό Codexμ μμνμ¬ Claudeμ **λ³λ ¬ ꡬν**:
|
|
1070
|
-
|
|
1071
|
-
```
|
|
1072
|
-
/codex:rescue "Implement scenario: {scenario-name}. Files: {file-list}. Requirements: {requirements-summary}" --background
|
|
1073
|
-
```
|
|
1074
|
-
|
|
1075
|
-
- Claudeλ λ€μ μλ리μ€λ₯Ό **λμμ** ꡬν
|
|
1076
|
-
- Codex μλ£ μ `/codex:result`λ‘ κ²°κ³Ό νμΈ
|
|
1077
|
-
- μΆ©λ λ°μ μ Claudeκ° merge νλ¨
|
|
1078
|
-
|
|
1079
|
-
**μμ κΈ°μ€**:
|
|
1080
|
-
- μλλ¦¬μ€ κ° νμΌ μμ‘΄μ± μμ (λ
립μ )
|
|
1081
|
-
- μλλ¦¬μ€ λ³΅μ‘λ μ€κ° μ΄ν
|
|
1082
|
-
- μμ‘΄μ± μλ μλ리μ€λ Claudeκ° μ§μ ꡬν
|
|
1083
|
-
|
|
1084
|
-
### Mandatory Parallel Exploration (Phase Start)
|
|
1085
|
-
|
|
1086
|
-
**BEFORE any implementation, you MUST launch these Task calls IN PARALLEL (single message, multiple tool calls):**
|
|
1087
|
-
|
|
1088
|
-
```
|
|
1089
|
-
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
|
|
1090
|
-
β STEP 1: PARALLEL EXPLORATION (REQUIRED) β
|
|
1091
|
-
β β
|
|
1092
|
-
β Launch ALL of these in ONE message: β
|
|
1093
|
-
β β
|
|
1094
|
-
β Task(haiku) ββ¬ββ "Analyze related files in <context>" β
|
|
1095
|
-
β β β
|
|
1096
|
-
β Task(haiku) ββΌββ "Check dependencies and imports" β
|
|
1097
|
-
β β β
|
|
1098
|
-
β Task(haiku) ββ΄ββ "Find existing patterns and conventions" β
|
|
1099
|
-
β β
|
|
1100
|
-
β [If GPT enabled] Bash: node "[LLM_SCRIPT]" gpt-codex orchestrate-json "[question]"
|
|
1101
|
-
β [If Gemini enabled] Bash: node "[LLM_SCRIPT]" gemini orchestrate-json "[question]"
|
|
1102
|
-
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
|
|
1103
|
-
β
|
|
1104
|
-
β (wait for all to complete)
|
|
1105
|
-
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
|
|
1106
|
-
β STEP 2: SYNTHESIZE (Opus) β
|
|
1107
|
-
β - Review all exploration results β
|
|
1108
|
-
β - Decide implementation approach β
|
|
1109
|
-
β - Identify files to modify/create β
|
|
1110
|
-
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
|
|
1111
|
-
β
|
|
1112
|
-
β
|
|
1113
|
-
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
|
|
1114
|
-
β STEP 3: IMPLEMENT + BACKGROUND AGENTS (PARALLEL) β
|
|
1115
|
-
β β
|
|
1116
|
-
β Main Agent (sonnet): β
|
|
1117
|
-
β βββ Execute current phase implementation β
|
|
1118
|
-
β β
|
|
1119
|
-
β Background Agents (haiku, run_in_background=true): β
|
|
1120
|
-
β βββ Task: "Prepare Phase N+1 - analyze required files" β
|
|
1121
|
-
β βββ Task: "Pre-generate test cases for current implementation" β
|
|
1122
|
-
β βββ Task: "Search for related types/interfaces needed" β
|
|
1123
|
-
β β
|
|
1124
|
-
β [ULTRAWORK] All 4 agents run simultaneously! β
|
|
1125
|
-
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
|
|
1126
|
-
β
|
|
1127
|
-
β (main completes, check backgrounds)
|
|
1128
|
-
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
|
|
1129
|
-
β STEP 4: TEST + PHASE PIPELINING β
|
|
1130
|
-
β β
|
|
1131
|
-
β Current Phase: β
|
|
1132
|
-
β βββ Task(haiku): Write tests using pre-generated cases β
|
|
1133
|
-
β β
|
|
1134
|
-
β Next Phase Prep (from background results): β
|
|
1135
|
-
β βββ Already have file analysis, ready to start immediately β
|
|
1136
|
-
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
|
|
1137
|
-
```
|
|
1138
|
-
|
|
1139
|
-
### Parallel Task Call Pattern (MUST FOLLOW)
|
|
1140
|
-
|
|
1141
|
-
**Correct - Single message with multiple parallel Tasks:**
|
|
1142
|
-
```
|
|
1143
|
-
<message>
|
|
1144
|
-
Task(haiku, "Analyze src/components/ for existing patterns")
|
|
1145
|
-
Task(haiku, "Check package.json dependencies")
|
|
1146
|
-
Task(haiku, "Find usage of similar features in codebase")
|
|
1147
|
-
</message>
|
|
1148
|
-
β All 3 run simultaneously, ~3x faster
|
|
1149
|
-
```
|
|
1150
|
-
|
|
1151
|
-
**WRONG - Sequential calls (DO NOT DO THIS):**
|
|
1152
|
-
```
|
|
1153
|
-
<message>Task(haiku, "Analyze...")</message>
|
|
1154
|
-
<message>Task(haiku, "Check...")</message>
|
|
1155
|
-
<message>Task(haiku, "Find...")</message>
|
|
1156
|
-
β 3x slower, wastes time
|
|
1157
|
-
```
|
|
1158
|
-
|
|
1159
|
-
### Background Agent Pattern (ULTRAWORK) via Orchestrator
|
|
1160
|
-
|
|
1161
|
-
**Launch background agents for next phase via Orchestrator:**
|
|
1162
|
-
```bash
|
|
1163
|
-
# Start background agent (doesn't block)
|
|
1164
|
-
node -e "import('{{VIBE_PATH_URL}}/node_modules/@su-record/vibe/dist/infra/orchestrator/index.js').then(o => o.runAgent('Phase 2 prep: Analyze auth API endpoints', 'phase2-prep').then(r => console.log(r.content[0].text)))"
|
|
1165
|
-
|
|
1166
|
-
# Multiple backgrounds in parallel
|
|
1167
|
-
node -e "import('{{VIBE_PATH_URL}}/node_modules/@su-record/vibe/dist/infra/orchestrator/index.js').then(async o => {
|
|
1168
|
-
await Promise.all([
|
|
1169
|
-
o.runAgent('Phase 2 prep: Analyze auth API endpoints', 'phase2-prep'),
|
|
1170
|
-
o.runAgent('Pre-generate test cases for login form', 'test-prep'),
|
|
1171
|
-
o.runAgent('Find existing validation patterns', 'pattern-finder')
|
|
1172
|
-
]);
|
|
1173
|
-
console.log('All background agents started');
|
|
1174
|
-
})"
|
|
1175
|
-
```
|
|
1176
|
-
|
|
1177
|
-
**Check background agent status:**
|
|
1178
|
-
```bash
|
|
1179
|
-
node -e "import('{{VIBE_PATH_URL}}/node_modules/@su-record/vibe/dist/infra/orchestrator/index.js').then(o => console.log(o.status().content[0].text))"
|
|
1180
|
-
```
|
|
1181
|
-
|
|
1182
|
-
**Get result when ready:**
|
|
1183
|
-
```bash
|
|
1184
|
-
node -e "import('{{VIBE_PATH_URL}}/node_modules/@su-record/vibe/dist/infra/orchestrator/index.js').then(o => o.getResult('SESSION_ID').then(r => console.log(r.content[0].text)))"
|
|
1185
|
-
```
|
|
1186
|
-
|
|
1187
|
-
**Why Background Agents Matter:**
|
|
1188
|
-
|
|
1189
|
-
| Without Background | With Background |
|
|
1190
|
-
|--------------------|-----------------|
|
|
1191
|
-
| Phase 1: 60s | Phase 1: 60s (+ backgrounds running) |
|
|
1192
|
-
| Phase 2 prep: 20s | Phase 2 prep: 0s (already done!) |
|
|
1193
|
-
| Phase 2: 60s | Phase 2: 60s |
|
|
1194
|
-
| **Total: 140s** | **Total: 120s** |
|
|
1195
|
-
|
|
1196
|
-
For 5 phases: 4 Γ 20s saved = **80s faster**
|
|
1197
|
-
|
|
1198
|
-
### Why Parallel Matters
|
|
1199
|
-
|
|
1200
|
-
| Approach | Time | Cache Benefit |
|
|
1201
|
-
|----------|------|---------------|
|
|
1202
|
-
| Sequential (3 Tasks) | ~30s | Cache cold on each |
|
|
1203
|
-
| **Parallel (3 Tasks)** | **~10s** | **Cache warmed once, shared** |
|
|
1204
|
-
|
|
1205
|
-
core ProjectCache (LRU) caches ts-morph parsing results. Parallel calls share the warmed cache.
|
|
1206
|
-
|
|
1207
|
-
### UI/UX Design Intelligence (Auto-triggered before Phase 1)
|
|
1208
|
-
|
|
1209
|
-
> **쑰건**: SPEC λλ Featureμ UI/UX ν€μλ ν¬ν¨ μ μλ μ€ν
|
|
1210
|
-
> **λΉνμ±ν**: `.claude/vibe/config.json`μ `"uiUxAnalysis": false` μ€μ
|
|
1211
|
-
|
|
1212
|
-
**Phase 1 μμ μ , 2κ° μμ΄μ νΈ μλ μ€ν:**
|
|
1213
|
-
|
|
1214
|
-
| Agent | Condition | Role |
|
|
1215
|
-
|-------|-----------|------|
|
|
1216
|
-
| β£ ui-stack-implementer | **νμ μ€ν** | νλ μμν¬λ³ μ»΄ν¬λνΈ κ°μ΄λλΌμΈ μ 곡 |
|
|
1217
|
-
| β€ ui-dataviz-advisor | **쑰건λΆ** (chart/dashboard/visualization ν€μλ) | μ°¨νΈ/μκ°ν λΌμ΄λΈλ¬λ¦¬ μΆμ² |
|
|
1218
|
-
|
|
1219
|
-
**μ€ν λ°©λ²:**
|
|
1220
|
-
|
|
1221
|
-
```text
|
|
1222
|
-
# β£ νμ μ€ν (Haiku)
|
|
1223
|
-
Task(subagent_type="ui-stack-implementer",
|
|
1224
|
-
prompt="Provide implementation guidelines for project '{project}' using {detected_stack}. Use core_ui_stack_search for framework-specific patterns.")
|
|
1225
|
-
|
|
1226
|
-
# β€ μ‘°κ±΄λΆ μ€ν (Haiku) β SPECμ μ°¨νΈ/λμ보λ/μκ°ν ν€μλ ν¬ν¨ μ
|
|
1227
|
-
Task(subagent_type="ui-dataviz-advisor",
|
|
1228
|
-
prompt="Recommend data visualization approach for project '{project}'. Use core_ui_search for chart types and react-performance patterns.")
|
|
1229
|
-
```
|
|
1230
|
-
|
|
1231
|
-
**λμμΈ μμ€ν
μλ μ°Έμ‘°:**
|
|
1232
|
-
- `.claude/vibe/design-system/{project}/MASTER.md` μ‘΄μ¬ μ μλ λ‘λ
|
|
1233
|
-
- ꡬν μμ΄μ νΈκ° CSS λ³μ, ν°νΈ, μμ νλ νΈλ₯Ό μ§μ μ°Έμ‘°
|
|
1234
|
-
- νμ΄μ§λ³ μ€λ²λΌμ΄λ `pages/{page}.md` μ‘΄μ¬ μ μ°μ μ μ©
|
|
1235
|
-
|
|
1236
|
-
### Phase Execution Flow (ULTRAWORK Pipeline)
|
|
1237
|
-
|
|
1238
|
-
```
|
|
1239
|
-
Phase N Start
|
|
1240
|
-
β
|
|
1241
|
-
βββ [PARALLEL] Task(haiku) Γ 3: Exploration
|
|
1242
|
-
β - Related code analysis
|
|
1243
|
-
β - Dependency check
|
|
1244
|
-
β - Pattern discovery
|
|
1245
|
-
β
|
|
1246
|
-
β (all complete)
|
|
1247
|
-
β
|
|
1248
|
-
βββ Opus: Synthesize and decide
|
|
1249
|
-
β
|
|
1250
|
-
βββ [PARALLEL PIPELINE] βββ KEY SPEED OPTIMIZATION
|
|
1251
|
-
β β
|
|
1252
|
-
β βββ Main: Task(sonnet) Implementation
|
|
1253
|
-
β β
|
|
1254
|
-
β βββ Background (run_in_background=true):
|
|
1255
|
-
β βββ Task(haiku): Phase N+1 file analysis
|
|
1256
|
-
β βββ Task(haiku): Test case preparation
|
|
1257
|
-
β βββ Task(haiku): Type/interface lookup
|
|
1258
|
-
β
|
|
1259
|
-
β (main completes)
|
|
1260
|
-
β
|
|
1261
|
-
βββ Task(haiku): Tests (uses pre-generated cases)
|
|
1262
|
-
β
|
|
1263
|
-
β
|
|
1264
|
-
Phase N Complete
|
|
1265
|
-
β
|
|
1266
|
-
β (Background results ready - NO WAIT for Phase N+1 exploration!)
|
|
1267
|
-
β
|
|
1268
|
-
Phase N+1 Start (IMMEDIATE - exploration already done!)
|
|
1269
|
-
```
|
|
1270
|
-
|
|
1271
|
-
**Speed Comparison:**
|
|
1272
|
-
|
|
1273
|
-
| Mode | Phase Time | 5 Phases Total |
|
|
1274
|
-
|------|------------|----------------|
|
|
1275
|
-
| Sequential | ~2min/phase | ~10min |
|
|
1276
|
-
| Parallel Exploration | ~1.5min/phase | ~7.5min |
|
|
1277
|
-
| **ULTRAWORK Pipeline** | **~1min/phase** | **~5min** |
|
|
1278
|
-
|
|
1279
|
-
**Why Pipeline is Faster:**
|
|
1280
|
-
- Background agents prepare next phase WHILE current phase implements
|
|
1281
|
-
- No idle time between phases
|
|
1282
|
-
- Test cases pre-generated during implementation
|
|
1283
|
-
- Cache stays warm across parallel tasks
|
|
1284
|
-
|
|
1285
|
-
---
|
|
1286
|
-
|
|
1287
|
-
### Agent Teams β Dev Team
|
|
1288
|
-
|
|
1289
|
-
> **Agent Teams**: μμ΄μ νΈλ€μ΄ νμ μ΄λ£¨μ΄ μλ‘ μν΅νλ©° ꡬνν©λλ€.
|
|
1290
|
-
> μ€μ : `CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS=1` + `teammateMode: in-process` (`~/.claude/settings.json` μ μ β postinstall μλ μ€μ )
|
|
1291
|
-
|
|
1292
|
-
**ν ꡬμ±:**
|
|
1293
|
-
|
|
1294
|
-
| νμ | μν |
|
|
1295
|
-
|------|------|
|
|
1296
|
-
| architect (리λ) | μ€κ³ κ²°μ , ꡬν λ°©ν₯ μ‘°μ¨, SPEC μ€μ κ²μ¦, ν ν©μ μ£Όλ |
|
|
1297
|
-
| implementer | ν΅μ¬ λΉμ¦λμ€ λ‘μ§ κ΅¬ν, architect μ€κ³λ₯Ό λ°λΌ μ½λ μμ± |
|
|
1298
|
-
| tester | ꡬν μλ£ μ¦μ ν
μ€νΈ μμ±, μ€ν¨ μ implementerμ νΌλλ°± |
|
|
1299
|
-
| security-reviewer | μ€μκ° λ³΄μ μ·¨μ½μ κ²μ¦, λΈλ‘νΉ μ΄μ μλ³ |
|
|
1300
|
-
|
|
1301
|
-
**μ€ν μμ:**
|
|
1302
|
-
|
|
1303
|
-
1. `TeamCreate(team_name="dev-{feature}")` β ν + 곡μ νμ€ν¬ 리μ€νΈ μμ±
|
|
1304
|
-
2. 4κ° νμ λ³λ ¬ μμ± β κ°κ° `Task(team_name=..., name=..., subagent_type=...)` μΌλ‘ spawn
|
|
1305
|
-
3. architectκ° SPEC Phaseλ₯Ό λΆμνμ¬ κ΅¬ν κ³ν μ립 β TaskListμ μμ
λ±λ‘
|
|
1306
|
-
4. νμλ€μ΄ TaskListμμ μμ
μ claimνκ³ , SendMessageλ‘ μ€μκ° νμ
|
|
1307
|
-
5. λͺ¨λ μλλ¦¬μ€ κ²μ¦ μλ£ β νμ shutdown_request β TeamDeleteλ‘ μ 리
|
|
1308
|
-
|
|
1309
|
-
**νμ spawn ν¨ν΄:**
|
|
1310
|
-
|
|
1311
|
-
```text
|
|
1312
|
-
TeamCreate(team_name="dev-{feature}", description="Implementation team for {feature} Phase {N}")
|
|
1313
|
-
|
|
1314
|
-
# 4κ° λ³λ ¬ spawn
|
|
1315
|
-
Task(team_name="dev-{feature}", name="architect", subagent_type="architect",
|
|
1316
|
-
prompt="ꡬν ν 리λ. Phase {N}μ SPECμ λΆμνκ³ κ΅¬ν κ³νμ μ립νμΈμ.
|
|
1317
|
-
SPEC: {spec_content}
|
|
1318
|
-
Feature Scenarios: {scenarios}
|
|
1319
|
-
μν : μ€κ³ κ²°μ , ꡬν λ°©ν₯ μ‘°μ¨, νμ κ° μΆ©λ ν΄κ²°, SPEC μ€μ κ²μ¦.
|
|
1320
|
-
TaskListμ ꡬν μμ
μ λ±λ‘νμΈμ. implementerμκ² μ€κ³λ₯Ό SendMessageλ‘ μ λ¬νμΈμ.
|
|
1321
|
-
λͺ¨λ μλ리μ€κ° ν΅κ³Όν λκΉμ§ νμ μ‘°μ¨νμΈμ.")
|
|
1322
|
-
|
|
1323
|
-
Task(team_name="dev-{feature}", name="implementer", subagent_type="implementer",
|
|
1324
|
-
mode="bypassPermissions",
|
|
1325
|
-
prompt="ꡬν ν μ½λ λ΄λΉ. SPEC: {spec_content}
|
|
1326
|
-
μν : architectμ μ€κ³λ₯Ό λ°λΌ νλ‘λμ
μ½λ μμ±.
|
|
1327
|
-
architectμκ²μ μ€κ³λ₯Ό λ°μΌλ©΄ ꡬνμ μμνμΈμ.
|
|
1328
|
-
μ»΄ν¬λνΈ κ΅¬ν μλ£ μ testerμκ² SendMessageλ‘ ν
μ€νΈ μμ²νμΈμ.
|
|
1329
|
-
security-reviewerμ λΈλ‘νΉ μ΄μλ μ¦μ μμ νμΈμ.
|
|
1330
|
-
TaskListμμ ꡬν μμ
μ claimνμΈμ.")
|
|
1331
|
-
|
|
1332
|
-
Task(team_name="dev-{feature}", name="tester", subagent_type="tester",
|
|
1333
|
-
mode="bypassPermissions",
|
|
1334
|
-
prompt="ꡬν ν ν
μ€νΈ λ΄λΉ. SPEC: {spec_content}
|
|
1335
|
-
μν : implementerκ° μλ£ν μ»΄ν¬λνΈλΆν° μ¦μ ν
μ€νΈ μμ±.
|
|
1336
|
-
ꡬν μ 체λ₯Ό κΈ°λ€λ¦¬μ§ λ§κ³ μ»΄ν¬λνΈ λ¨μλ‘ μ μ§μ ν
μ€νΈνμΈμ.
|
|
1337
|
-
ν
μ€νΈ μ€ν¨ μ implementerμκ² SendMessageλ‘ νΌλλ°±νμΈμ.
|
|
1338
|
-
edge case λ°κ²¬ μ architectμκ² μ€κ³ κ²ν λ₯Ό μμ²νμΈμ.
|
|
1339
|
-
TaskListμμ ν
μ€νΈ μμ
μ claimνμΈμ.")
|
|
1340
|
-
|
|
1341
|
-
Task(team_name="dev-{feature}", name="security-reviewer", subagent_type="security-reviewer",
|
|
1342
|
-
mode="bypassPermissions",
|
|
1343
|
-
prompt="ꡬν ν 보μ λ΄λΉ. SPEC: {spec_content}
|
|
1344
|
-
μν : ꡬν μ½λμ 보μ μ·¨μ½μ μ€μκ° κ²μ¦.
|
|
1345
|
-
보μ μ΄μλ BLOCKING β implementerμκ² SendMessageλ‘ μ¦μ μμ μμ²νμΈμ.
|
|
1346
|
-
μ¬κ°ν μ€κ³ κ²°ν¨ λ°κ²¬ μ architectμκ² SendMessageλ‘ μ리μΈμ.
|
|
1347
|
-
TaskListμμ 보μ κ²μ¦ μμ
μ claimνμΈμ.")
|
|
1348
|
-
```
|
|
1349
|
-
|
|
1350
|
-
**νμ κ° ν΅μ μμ:**
|
|
1351
|
-
|
|
1352
|
-
```text
|
|
1353
|
-
architect β implementer: "Repository ν¨ν΄μΌλ‘ λ°μ΄ν° μ κ·Ό κ³μΈ΅ λΆλ¦¬ν΄μ ꡬνν΄μ£ΌμΈμ. μΈν°νμ΄μ€λ TaskListμ λ±λ‘νμ΅λλ€"
|
|
1354
|
-
implementer β tester: "LoginService ꡬν μλ£. μ μ/μ€ν¨/μ κΈ μλλ¦¬μ€ ν
μ€νΈ μμ²ν©λλ€"
|
|
1355
|
-
security-reviewer β implementer: "SQL injection μν: raw query μ¬μ© κ°μ§. parameterized queryλ‘ μ¦μ μμ νμ"
|
|
1356
|
-
tester β architect: "edge case 3건 μ€ν¨ (λΉ μ
λ ₯, νΉμλ¬Έμ, λμ μμ²). μ€κ³ κ²ν μμ²ν©λλ€"
|
|
1357
|
-
architect β broadcast: "Phase {N} λͺ¨λ μλλ¦¬μ€ ν΅κ³Ό νμΈ. ꡬν μλ£ν©λλ€"
|
|
1358
|
-
```
|
|
1359
|
-
|
|
1360
|
-
**ν λͺ¨λ vs κΈ°μ‘΄ λ³λ ¬ λͺ¨λ λΉκ΅:**
|
|
1361
|
-
|
|
1362
|
-
| μΈ‘λ©΄ | κΈ°μ‘΄ λ³λ ¬ λͺ¨λ | Agent Teams |
|
|
1363
|
-
|------|---------------|-------------|
|
|
1364
|
-
| ν΅μ | κ²°κ³Όλ§ μμ§ | μ€μκ° μνΈ νΌλλ°± |
|
|
1365
|
-
| ν
μ€νΈ | ꡬν ν λ³λ λ¨κ³ | ꡬνκ³Ό λμ μ§ν |
|
|
1366
|
-
| 보μ | μ¬ν 리뷰 | μ€μκ° κ²μ¦ |
|
|
1367
|
-
| μ€κ³ λ³κ²½ | λ©μΈ μμ΄μ νΈλ§ κ²°μ | architect μ£Όλ ν ν©μ |
|
|
1368
|
-
| μ€λ₯ 볡ꡬ | μ¬μλ 루ν | ν λ΄ μ¦μ νΌλλ°± |
|
|
1369
|
-
|
|
1370
|
-
**νμ±ν 쑰건 (Dev Team Full β 4λͺ
):**
|
|
1371
|
-
- ULTRAWORK λͺ¨λ + 3κ° μ΄μ μλ리μ€
|
|
1372
|
-
- λλ 볡μ‘λ μ μ 20+ (High)
|
|
1373
|
-
|
|
1374
|
-
### Agent Teams β Lite Team (Normal Mode)
|
|
1375
|
-
|
|
1376
|
-
> **μΌλ° λͺ¨λμμλ ν νμ
**. Dev Teamμ μΆμ λ²μ μΌλ‘, 3κ° μ΄μ μλλ¦¬μ€ μ μλ νμ±ν.
|
|
1377
|
-
> security-reviewerλ₯Ό μ μΈν architect + implementer + tester 3λͺ
ꡬμ±.
|
|
1378
|
-
|
|
1379
|
-
**ν ꡬμ±:**
|
|
1380
|
-
|
|
1381
|
-
| νμ | μν |
|
|
1382
|
-
|------|------|
|
|
1383
|
-
| architect (리λ) | μ€κ³ κ²°μ , μλλ¦¬μ€ λΆμ, ꡬν λ°©ν₯ μ‘°μ¨ |
|
|
1384
|
-
| implementer | ν΅μ¬ λΉμ¦λμ€ λ‘μ§ κ΅¬ν |
|
|
1385
|
-
| tester | ꡬν μλ£ μ¦μ ν
μ€νΈ μμ±, μ€ν¨ μ νΌλλ°± |
|
|
1386
|
-
|
|
1387
|
-
**spawn ν¨ν΄:**
|
|
1388
|
-
|
|
1389
|
-
```text
|
|
1390
|
-
TeamCreate(team_name="lite-{feature}", description="Lite implementation team for {feature} Phase {N}")
|
|
1391
|
-
|
|
1392
|
-
Task(team_name="lite-{feature}", name="architect", subagent_type="architect",
|
|
1393
|
-
prompt="Lite ν 리λ. Phase {N}μ SPECμ λΆμνκ³ κ΅¬ν κ³νμ μ립νμΈμ.
|
|
1394
|
-
SPEC: {spec_content}
|
|
1395
|
-
Feature Scenarios: {scenarios}
|
|
1396
|
-
μν : μ€κ³ κ²°μ , ꡬν λ°©ν₯ μ‘°μ¨. TaskListμ μμ
μ λ±λ‘νμΈμ.
|
|
1397
|
-
implementerμκ² μ€κ³λ₯Ό SendMessageλ‘ μ λ¬νμΈμ.")
|
|
1398
|
-
|
|
1399
|
-
Task(team_name="lite-{feature}", name="implementer", subagent_type="implementer",
|
|
1400
|
-
mode="bypassPermissions",
|
|
1401
|
-
prompt="Lite ν μ½λ λ΄λΉ. SPEC: {spec_content}
|
|
1402
|
-
μν : architectμ μ€κ³λ₯Ό λ°λΌ νλ‘λμ
μ½λ μμ±.
|
|
1403
|
-
μλ£ μ testerμκ² SendMessageλ‘ ν
μ€νΈ μμ²νμΈμ.")
|
|
1404
|
-
|
|
1405
|
-
Task(team_name="lite-{feature}", name="tester", subagent_type="tester",
|
|
1406
|
-
mode="bypassPermissions",
|
|
1407
|
-
prompt="Lite ν ν
μ€νΈ λ΄λΉ. SPEC: {spec_content}
|
|
1408
|
-
μν : implementerκ° μλ£ν μ»΄ν¬λνΈλΆν° μ¦μ ν
μ€νΈ μμ±.
|
|
1409
|
-
ν
μ€νΈ μ€ν¨ μ implementerμκ² SendMessageλ‘ νΌλλ°±νμΈμ.")
|
|
1410
|
-
```
|
|
1411
|
-
|
|
1412
|
-
**νμ±ν 쑰건 (Lite Team β 3λͺ
):**
|
|
1413
|
-
- μΌλ° λͺ¨λ + 3κ° μ΄μ μλ리μ€
|
|
1414
|
-
- 볡μ‘λ μ μ 8-19 (Medium)
|
|
1415
|
-
- λ¨μ ꡬν(1-2 νμΌ, μλλ¦¬μ€ 2κ° μ΄ν)μμλ κΈ°μ‘΄ λ³λ ¬ λͺ¨λ μ μ§
|
|
1416
|
-
|
|
1417
|
-
**ν μ ν κΈ°μ€:**
|
|
1418
|
-
|
|
1419
|
-
| 쑰건 | ν |
|
|
1420
|
-
|------|-----|
|
|
1421
|
-
| μλλ¦¬μ€ 1-2κ°, νμΌ 1-2κ° | κΈ°μ‘΄ λ³λ ¬ λͺ¨λ (ν μμ) |
|
|
1422
|
-
| μλλ¦¬μ€ 3κ°+, μΌλ° λͺ¨λ | **Lite Team (3λͺ
)** |
|
|
1423
|
-
| ULTRAWORK λλ 볡μ‘λ 20+ | Dev Team Full (4λͺ
) |
|
|
1424
|
-
|
|
1425
|
-
### Agent Teams β Review Team
|
|
1426
|
-
|
|
1427
|
-
> P1/P2 μ΄μ κ΅μ°¨ κ²μ¦μ μν 보μ+μν€ν
μ²+μ±λ₯+λ¨μμ± μ λ¬Έ 리뷰 ν.
|
|
1428
|
-
> `/vibe.review` μ P1/P2 μ΄μκ° λ°κ²¬λλ©΄ μλ νμ±ν.
|
|
1429
|
-
|
|
1430
|
-
**ν ꡬμ±:**
|
|
1431
|
-
|
|
1432
|
-
| νμ | μν |
|
|
1433
|
-
|------|------|
|
|
1434
|
-
| security-reviewer (리λ) | 보μ μ΄μ μ°μ μμ κ²°μ , κ΅μ°¨ κ²μ¦ μ£Όλ, μ€ν μ κ±° |
|
|
1435
|
-
| architecture-reviewer | μν€ν
μ² μλ° κ²μ¦, μ€κ³ ν¨ν΄ νκ° |
|
|
1436
|
-
| performance-reviewer | μ±λ₯ λ³λͺ© κ²μ¦, N+1 쿼리/λ©λͺ¨λ¦¬ λμ νμΈ |
|
|
1437
|
-
| simplicity-reviewer | κ³Όλν 볡μ‘μ± κ²μ¦, λΆνμν μΆμν μλ³ |
|
|
1438
|
-
|
|
1439
|
-
**spawn ν¨ν΄:**
|
|
1440
|
-
|
|
1441
|
-
```text
|
|
1442
|
-
TeamCreate(team_name="review-{feature}", description="Cross-validation review team for {feature}")
|
|
1443
|
-
|
|
1444
|
-
Task(team_name="review-{feature}", name="security-reviewer", subagent_type="security-reviewer",
|
|
1445
|
-
mode="bypassPermissions",
|
|
1446
|
-
prompt="Review team leader. Cross-validate P1/P2 issues found in parallel review.
|
|
1447
|
-
Files: {changed_files}
|
|
1448
|
-
Found issues: {p1_p2_issues}
|
|
1449
|
-
Role: Verify each P1/P2 issue is genuine (not false positive). Prioritize by actual impact.
|
|
1450
|
-
Send disputed findings to relevant reviewer for confirmation via SendMessage.")
|
|
1451
|
-
|
|
1452
|
-
Task(team_name="review-{feature}", name="architecture-reviewer", subagent_type="architecture-reviewer",
|
|
1453
|
-
mode="bypassPermissions",
|
|
1454
|
-
prompt="Review team architecture expert. Validate architecture-related findings.
|
|
1455
|
-
Files: {changed_files}
|
|
1456
|
-
Role: Confirm or dispute architecture violations. Check SOLID principles and layer boundaries.")
|
|
1457
|
-
|
|
1458
|
-
Task(team_name="review-{feature}", name="performance-reviewer", subagent_type="performance-reviewer",
|
|
1459
|
-
mode="bypassPermissions",
|
|
1460
|
-
prompt="Review team performance expert. Validate performance-related findings.
|
|
1461
|
-
Files: {changed_files}
|
|
1462
|
-
Role: Confirm or dispute performance issues. Run complexity analysis on flagged code.")
|
|
1463
|
-
|
|
1464
|
-
Task(team_name="review-{feature}", name="simplicity-reviewer", subagent_type="simplicity-reviewer",
|
|
1465
|
-
mode="bypassPermissions",
|
|
1466
|
-
prompt="Review team simplicity advocate. Challenge over-engineering findings.
|
|
1467
|
-
Files: {changed_files}
|
|
1468
|
-
Role: Verify YAGNI violations. Confirm or dispute unnecessary abstraction flags.")
|
|
1469
|
-
```
|
|
1470
|
-
|
|
1471
|
-
**νμ κ° ν΅μ μμ:**
|
|
1472
|
-
|
|
1473
|
-
```text
|
|
1474
|
-
security-reviewer β architecture-reviewer: "SQL injection finding in users.py:42 β is this pattern used elsewhere?"
|
|
1475
|
-
architecture-reviewer β security-reviewer: "Confirmed. Same pattern in orders.py:78. Elevate to P1."
|
|
1476
|
-
performance-reviewer β security-reviewer: "N+1 query finding is false positive β already uses prefetch_related."
|
|
1477
|
-
security-reviewer β broadcast: "Review complete. 2 P1 confirmed, 1 P2 downgraded to P3."
|
|
1478
|
-
```
|
|
1479
|
-
|
|
1480
|
-
**νμ±ν 쑰건:**
|
|
1481
|
-
|
|
1482
|
-
- `/vibe.review` μ€ν ν P1 λλ P2 μ΄μ 2κ° μ΄μ λ°κ²¬ μ
|
|
1483
|
-
- Agent Teams νκ²½λ³μ νμ±ν μν
|
|
1484
|
-
|
|
1485
|
-
### Agent Teams β Debug Team
|
|
1486
|
-
|
|
1487
|
-
> λΉλ/ν
μ€νΈ μ€ν¨ μ μν€ν
νΈ μ§λ¨ β ꡬνμ μμ β ν
μ€ν° κ²μ¦ μ¬μ΄ν΄.
|
|
1488
|
-
> UltraQA 3ν μ€ν¨ μ§μ
μ λλ λΉλ μ€ν¨ 3ν+ μ μλ νμ±ν.
|
|
1489
|
-
|
|
1490
|
-
**ν ꡬμ±:**
|
|
1491
|
-
|
|
1492
|
-
| νμ | μν |
|
|
1493
|
-
|------|------|
|
|
1494
|
-
| architect (리λ) | κ·Όλ³Έ μμΈ μ§λ¨, μμ λ°©ν₯ μ€κ³, μν€ν
μ² λ 벨 λ¬Έμ μλ³ |
|
|
1495
|
-
| implementer | architect μ§λ¨μ λ°λΌ μ΅μ diff μμ μ μ© |
|
|
1496
|
-
| tester | μμ ν μ¦μ ν
μ€νΈ μ€ν, νκ· κ²μ¦ |
|
|
1497
|
-
|
|
1498
|
-
**spawn ν¨ν΄:**
|
|
1499
|
-
|
|
1500
|
-
```text
|
|
1501
|
-
TeamCreate(team_name="debug-{feature}", description="Debug team for {feature} build/test failure")
|
|
1502
|
-
|
|
1503
|
-
Task(team_name="debug-{feature}", name="architect", subagent_type="architect",
|
|
1504
|
-
prompt="Debug team leader. Diagnose root cause of build/test failure.
|
|
1505
|
-
Error: {error_output}
|
|
1506
|
-
Failed files: {failed_files}
|
|
1507
|
-
Previous attempts: {attempt_history}
|
|
1508
|
-
Role: Analyze error, identify root cause (not symptoms). Design minimal fix.
|
|
1509
|
-
Send diagnosis to implementer via SendMessage. If same failure 3x, escalate to user.")
|
|
1510
|
-
|
|
1511
|
-
Task(team_name="debug-{feature}", name="implementer", subagent_type="implementer",
|
|
1512
|
-
mode="bypassPermissions",
|
|
1513
|
-
prompt="Debug team fixer. Apply minimal-diff fixes based on architect diagnosis.
|
|
1514
|
-
Role: Wait for architect diagnosis. Apply ONLY the specific fix recommended.
|
|
1515
|
-
Do NOT refactor surrounding code. Notify tester when fix is applied.")
|
|
1516
|
-
|
|
1517
|
-
Task(team_name="debug-{feature}", name="tester", subagent_type="tester",
|
|
1518
|
-
mode="bypassPermissions",
|
|
1519
|
-
prompt="Debug team verifier. Run tests after each fix to verify resolution.
|
|
1520
|
-
Role: Wait for implementer fix notification. Run failing tests.
|
|
1521
|
-
Report results to architect. If still failing, provide detailed error output.")
|
|
1522
|
-
```
|
|
1523
|
-
|
|
1524
|
-
**νμ±ν 쑰건:**
|
|
1525
|
-
|
|
1526
|
-
- λμΌ λΉλ/ν
μ€νΈ μ€ν¨ 3ν μ΄μ
|
|
1527
|
-
- UltraQA `architecture_question` μν μ§μ
μ
|
|
1528
|
-
|
|
1529
|
-
### Agent Teams β Research Team
|
|
1530
|
-
|
|
1531
|
-
> `/vibe.spec` Step 3 리μμΉ λ¨κ³μμ 4κ° μ λ¬Έ 리μμΉ μμ΄μ νΈκ° νμΌλ‘ νμ
.
|
|
1532
|
-
> 리μμΉ κ²°κ³Ό κ΅μ°¨ κ²μ¦ λ° μΆ©λ ν΄κ²°.
|
|
1533
|
-
|
|
1534
|
-
**ν ꡬμ±:**
|
|
1535
|
-
|
|
1536
|
-
| νμ | μν |
|
|
1537
|
-
|------|------|
|
|
1538
|
-
| best-practices-agent (리λ) | λ² μ€νΈ νλν°μ€ μμ§, 리μμΉ ν΅ν©, μΆ©λ ν΄κ²° |
|
|
1539
|
-
| security-advisory-agent | 보μ μ·¨μ½μ μ‘°μ¬, CVE νμΈ, 보μ κΆμ₯μ¬ν |
|
|
1540
|
-
| codebase-patterns-agent | κΈ°μ‘΄ μ½λλ² μ΄μ€ ν¨ν΄ λΆμ, μ μ¬ κ΅¬ν μ°Έμ‘° |
|
|
1541
|
-
| framework-docs-agent | νλ μμν¬ μ΅μ λ¬Έμ νμΈ, API λ³κ²½μ¬ν μΆμ |
|
|
1542
|
-
|
|
1543
|
-
**spawn ν¨ν΄:**
|
|
1544
|
-
|
|
1545
|
-
```text
|
|
1546
|
-
TeamCreate(team_name="research-{feature}", description="Research team for {feature} SPEC")
|
|
1547
|
-
|
|
1548
|
-
Task(team_name="research-{feature}", name="best-practices-agent", subagent_type="best-practices-agent",
|
|
1549
|
-
prompt="Research team leader. Coordinate research for {feature} SPEC.
|
|
1550
|
-
Tech stack: {tech_stack}
|
|
1551
|
-
Requirements: {requirements}
|
|
1552
|
-
Role: Collect best practices. Integrate findings from all researchers.
|
|
1553
|
-
Resolve conflicting recommendations. Produce unified research summary.")
|
|
1554
|
-
|
|
1555
|
-
Task(team_name="research-{feature}", name="security-advisory-agent", subagent_type="security-advisory-agent",
|
|
1556
|
-
prompt="Research team security specialist. Check security advisories for {feature}.
|
|
1557
|
-
Tech stack: {tech_stack}
|
|
1558
|
-
Role: Check CVEs for dependencies. Identify security patterns to follow.
|
|
1559
|
-
Share findings with best-practices-agent for integration.")
|
|
1560
|
-
|
|
1561
|
-
Task(team_name="research-{feature}", name="codebase-patterns-agent", subagent_type="codebase-patterns-agent",
|
|
1562
|
-
prompt="Research team codebase analyst. Analyze existing patterns for {feature}.
|
|
1563
|
-
Project path: {project_path}
|
|
1564
|
-
Role: Find similar implementations in codebase. Extract conventions and patterns.
|
|
1565
|
-
Share findings with best-practices-agent.")
|
|
1566
|
-
|
|
1567
|
-
Task(team_name="research-{feature}", name="framework-docs-agent", subagent_type="framework-docs-agent",
|
|
1568
|
-
prompt="Research team docs specialist. Check latest framework docs for {feature}.
|
|
1569
|
-
Tech stack: {tech_stack}
|
|
1570
|
-
Role: Verify API usage against latest docs. Check for breaking changes.
|
|
1571
|
-
Share findings with best-practices-agent.")
|
|
1572
|
-
```
|
|
1573
|
-
|
|
1574
|
-
**νμ±ν 쑰건:**
|
|
1575
|
-
|
|
1576
|
-
- `/vibe.spec` Step 3 리μμΉ λ¨κ³
|
|
1577
|
-
- Agent Teams νκ²½λ³μ νμ±ν μν
|
|
1578
|
-
|
|
1579
|
-
### Agent Teams β Security Team
|
|
1580
|
-
|
|
1581
|
-
> 보μ λ―Όκ° μ½λ λ³κ²½ μ μ λ¬Έ 보μ κ²μ¦ ν.
|
|
1582
|
-
> μΈμ¦, κΆν, κ²°μ , κ°μΈμ 보 κ΄λ ¨ μ½λ λ³κ²½ κ°μ§ μ μλ νμ±ν.
|
|
1583
|
-
|
|
1584
|
-
**ν ꡬμ±:**
|
|
1585
|
-
|
|
1586
|
-
| νμ | μν |
|
|
1587
|
-
|------|------|
|
|
1588
|
-
| security-reviewer (리λ) | OWASP Top 10 κ²μ¦, 보μ μ΄μ μ°μ μμ κ²°μ |
|
|
1589
|
-
| data-integrity-reviewer | λ°μ΄ν° 무결μ±, νΈλμμ
κ΄λ¦¬, μ
λ ₯ κ²μ¦ |
|
|
1590
|
-
| security-advisory-agent | μ¬μ© λΌμ΄λΈλ¬λ¦¬ CVE νμΈ, 보μ ν¨μΉ νμΈ |
|
|
1591
|
-
| tester | 보μ ν
μ€νΈ μΌμ΄μ€ μμ±, μΉ¨ν¬ ν
μ€νΈ μλλ¦¬μ€ κ²μ¦ |
|
|
1592
|
-
|
|
1593
|
-
**spawn ν¨ν΄:**
|
|
1594
|
-
|
|
1595
|
-
```text
|
|
1596
|
-
TeamCreate(team_name="security-{feature}", description="Security audit team for {feature}")
|
|
1597
|
-
|
|
1598
|
-
Task(team_name="security-{feature}", name="security-reviewer", subagent_type="security-reviewer",
|
|
1599
|
-
mode="bypassPermissions",
|
|
1600
|
-
prompt="Security team leader. Comprehensive security audit for {feature}.
|
|
1601
|
-
Files: {changed_files}
|
|
1602
|
-
Role: OWASP Top 10 check. XSS, CSRF, SQL injection, auth bypass.
|
|
1603
|
-
Coordinate with data-integrity-reviewer for data flow analysis.
|
|
1604
|
-
Any P1 finding blocks merge β notify team immediately.")
|
|
1605
|
-
|
|
1606
|
-
Task(team_name="security-{feature}", name="data-integrity-reviewer", subagent_type="data-integrity-reviewer",
|
|
1607
|
-
mode="bypassPermissions",
|
|
1608
|
-
prompt="Security team data specialist. Verify data integrity for {feature}.
|
|
1609
|
-
Files: {changed_files}
|
|
1610
|
-
Role: Check transaction management, input validation, data sanitization.
|
|
1611
|
-
Report findings to security-reviewer.")
|
|
1612
|
-
|
|
1613
|
-
Task(team_name="security-{feature}", name="security-advisory-agent", subagent_type="security-advisory-agent",
|
|
1614
|
-
prompt="Security team advisory specialist. Check dependencies for {feature}.
|
|
1615
|
-
Role: Scan for known CVEs in project dependencies. Check security advisories.
|
|
1616
|
-
Report critical findings to security-reviewer.")
|
|
1617
|
-
|
|
1618
|
-
Task(team_name="security-{feature}", name="tester", subagent_type="tester",
|
|
1619
|
-
mode="bypassPermissions",
|
|
1620
|
-
prompt="Security team test specialist. Write security-focused tests for {feature}.
|
|
1621
|
-
Files: {changed_files}
|
|
1622
|
-
Role: Write tests for auth bypass, injection, permission escalation.
|
|
1623
|
-
Report test results to security-reviewer.")
|
|
1624
|
-
```
|
|
1625
|
-
|
|
1626
|
-
**νμ±ν 쑰건:**
|
|
1627
|
-
|
|
1628
|
-
- auth, payment, user-data, crypto κ΄λ ¨ νμΌ λ³κ²½ κ°μ§ μ
|
|
1629
|
-
- λλ μλμΌλ‘ `security` ν€μλ μ§μ μ
|
|
1630
|
-
|
|
1631
|
-
### Agent Teams β Migration Team
|
|
1632
|
-
|
|
1633
|
-
> νλ μμν¬/λΌμ΄λΈλ¬λ¦¬ λ§μ΄κ·Έλ μ΄μ
μ λ¬Έ ν.
|
|
1634
|
-
> λκ·λͺ¨ μμ‘΄μ± μ
κ·Έλ μ΄λ, νλ μμν¬ μ ν μ νμ±ν.
|
|
1635
|
-
|
|
1636
|
-
**ν ꡬμ±:**
|
|
1637
|
-
|
|
1638
|
-
| νμ | μν |
|
|
1639
|
-
|------|------|
|
|
1640
|
-
| architect (리λ) | λ§μ΄κ·Έλ μ΄μ
μ λ΅ μ€κ³, νΈνμ± λΆμ, λ¨κ³λ³ κ³ν |
|
|
1641
|
-
| implementer | μ½λ λ³ν μ€ν, API λ³κ²½ μ μ© |
|
|
1642
|
-
| tester | λ§μ΄κ·Έλ μ΄μ
ν νκ· ν
μ€νΈ, νΈνμ± κ²μ¦ |
|
|
1643
|
-
| build-error-resolver | λΉλ μλ¬ μ¦μ ν΄κ²°, νμ
μλ¬ μμ |
|
|
1644
|
-
|
|
1645
|
-
**spawn ν¨ν΄:**
|
|
1646
|
-
|
|
1647
|
-
```text
|
|
1648
|
-
TeamCreate(team_name="migration-{feature}", description="Migration team for {feature}")
|
|
1649
|
-
|
|
1650
|
-
Task(team_name="migration-{feature}", name="architect", subagent_type="architect",
|
|
1651
|
-
prompt="Migration team leader. Plan migration strategy for {feature}.
|
|
1652
|
-
From: {current_version}
|
|
1653
|
-
To: {target_version}
|
|
1654
|
-
Role: Analyze breaking changes. Create step-by-step migration plan.
|
|
1655
|
-
Assign file groups to implementer. Monitor build-error-resolver for blockers.")
|
|
1656
|
-
|
|
1657
|
-
Task(team_name="migration-{feature}", name="implementer", subagent_type="implementer",
|
|
1658
|
-
mode="bypassPermissions",
|
|
1659
|
-
prompt="Migration team implementer. Execute code migration for {feature}.
|
|
1660
|
-
Role: Apply migration changes per architect plan. Work file-by-file.
|
|
1661
|
-
Notify tester after each file group. Report blockers to architect.")
|
|
1662
|
-
|
|
1663
|
-
Task(team_name="migration-{feature}", name="tester", subagent_type="tester",
|
|
1664
|
-
mode="bypassPermissions",
|
|
1665
|
-
prompt="Migration team tester. Verify migration correctness for {feature}.
|
|
1666
|
-
Role: Run existing tests after each migration step. Add new tests for changed APIs.
|
|
1667
|
-
Report regressions to implementer and architect.")
|
|
1668
|
-
|
|
1669
|
-
Task(team_name="migration-{feature}", name="build-error-resolver", subagent_type="build-error-resolver",
|
|
1670
|
-
mode="bypassPermissions",
|
|
1671
|
-
prompt="Migration team build fixer. Resolve build errors during {feature} migration.
|
|
1672
|
-
Role: Monitor build output. Apply minimal-diff type fixes for migration errors.
|
|
1673
|
-
Notify implementer of patterns requiring broader changes.")
|
|
1674
|
-
```
|
|
1675
|
-
|
|
1676
|
-
**νμ±ν 쑰건:**
|
|
1677
|
-
|
|
1678
|
-
- package.json μ£Όμ μμ‘΄μ± λ²μ λ³κ²½ κ°μ§ μ
|
|
1679
|
-
- λλ μλμΌλ‘ `migration` ν€μλ μ§μ μ
|
|
1680
|
-
|
|
1681
|
-
### Agent Teams β Fullstack Team
|
|
1682
|
-
|
|
1683
|
-
> Frontend + Backend λμ λ³κ²½μ΄ νμν νμ€ν κΈ°λ₯ ꡬν ν.
|
|
1684
|
-
> API μλν¬μΈνΈ + UI μ»΄ν¬λνΈλ₯Ό λμμ κ°λ°.
|
|
1685
|
-
|
|
1686
|
-
**ν ꡬμ±:**
|
|
1687
|
-
|
|
1688
|
-
| νμ | μν |
|
|
1689
|
-
|------|------|
|
|
1690
|
-
| architect (리λ) | API μΈν°νμ΄μ€ μ€κ³, frontend/backend λΆμ
μ‘°μ¨ |
|
|
1691
|
-
| implementer-backend | Backend API, λ°μ΄ν°λ² μ΄μ€, μλΉμ€ λ‘μ§ κ΅¬ν |
|
|
1692
|
-
| implementer-frontend | Frontend UI, μν κ΄λ¦¬, API μ°λ ꡬν |
|
|
1693
|
-
| tester | E2E ν
μ€νΈ, API ν
μ€νΈ, ν΅ν© ν
μ€νΈ |
|
|
1694
|
-
|
|
1695
|
-
**spawn ν¨ν΄:**
|
|
1696
|
-
|
|
1697
|
-
```text
|
|
1698
|
-
TeamCreate(team_name="fullstack-{feature}", description="Fullstack team for {feature}")
|
|
1699
|
-
|
|
1700
|
-
Task(team_name="fullstack-{feature}", name="architect", subagent_type="architect",
|
|
1701
|
-
prompt="Fullstack team leader. Design API contract for {feature}.
|
|
1702
|
-
SPEC: {spec_content}
|
|
1703
|
-
Role: Define API endpoints (request/response schemas). Design data models.
|
|
1704
|
-
Share API contract with both implementers. Coordinate integration timing.")
|
|
1705
|
-
|
|
1706
|
-
Task(team_name="fullstack-{feature}", name="implementer-backend", subagent_type="implementer",
|
|
1707
|
-
mode="bypassPermissions",
|
|
1708
|
-
prompt="Fullstack team backend developer. Implement API for {feature}.
|
|
1709
|
-
SPEC: {spec_content}
|
|
1710
|
-
Role: Implement API endpoints per architect's contract. Create data models and services.
|
|
1711
|
-
Notify implementer-frontend when endpoints are ready for integration.
|
|
1712
|
-
Share API response samples with tester.")
|
|
1713
|
-
|
|
1714
|
-
Task(team_name="fullstack-{feature}", name="implementer-frontend", subagent_type="implementer",
|
|
1715
|
-
mode="bypassPermissions",
|
|
1716
|
-
prompt="Fullstack team frontend developer. Implement UI for {feature}.
|
|
1717
|
-
SPEC: {spec_content}
|
|
1718
|
-
Role: Build UI components and pages per SPEC. Use architect's API contract for types.
|
|
1719
|
-
Start with mock data, switch to real API when backend notifies readiness.
|
|
1720
|
-
Notify tester when UI is ready for E2E testing.")
|
|
1721
|
-
|
|
1722
|
-
Task(team_name="fullstack-{feature}", name="tester", subagent_type="tester",
|
|
1723
|
-
mode="bypassPermissions",
|
|
1724
|
-
prompt="Fullstack team tester. Write comprehensive tests for {feature}.
|
|
1725
|
-
SPEC: {spec_content}
|
|
1726
|
-
Role: Write API tests (after backend ready). Write E2E tests (after frontend ready).
|
|
1727
|
-
Test API contract conformance. Report integration issues to architect.")
|
|
1728
|
-
```
|
|
1729
|
-
|
|
1730
|
-
**νμ±ν 쑰건:**
|
|
1731
|
-
|
|
1732
|
-
- SPECμ frontend + backend νμΌμ΄ λͺ¨λ ν¬ν¨λ κ²½μ°
|
|
1733
|
-
- λλ μλμΌλ‘ `fullstack` ν€μλ μ§μ μ
|
|
1734
|
-
|
|
1735
|
-
---
|
|
1736
|
-
|
|
1737
|
-
1. **Related code analysis**: Task(haiku) explores `<context>` related code
|
|
1738
|
-
2. **File creation/modification**: Task(sonnet) implements per `<output_format>`
|
|
1739
|
-
3. **Constraint compliance**: Check `<constraints>`
|
|
1740
|
-
4. **Run verification**: Execute verification commands
|
|
1741
|
-
|
|
1742
|
-
### 4. Brand Assets Generation (Optional)
|
|
1743
|
-
|
|
1744
|
-
When starting a **new project** with brand context in SPEC, auto-generate app icons and favicons:
|
|
1745
|
-
|
|
1746
|
-
```
|
|
1747
|
-
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
|
|
1748
|
-
π¨ BRAND ASSETS GENERATION
|
|
1749
|
-
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
|
|
1750
|
-
|
|
1751
|
-
[Check] Brand assets exist? β Skip if favicon.ico exists
|
|
1752
|
-
[Check] Gemini API configured? β Required for image generation
|
|
1753
|
-
[Check] SPEC has brand context? β Extract app name, colors, style
|
|
1754
|
-
|
|
1755
|
-
[Generate] Creating app icon with Gemini Image API...
|
|
1756
|
-
- Prompt: "App icon for [AppName], [style], [color]..."
|
|
1757
|
-
- Generated: 512x512 master icon
|
|
1758
|
-
|
|
1759
|
-
[Resize] Creating platform variants...
|
|
1760
|
-
β
favicon.ico (16/32/48)
|
|
1761
|
-
β
favicon-16x16.png
|
|
1762
|
-
β
favicon-32x32.png
|
|
1763
|
-
β
apple-touch-icon.png (180x180)
|
|
1764
|
-
β
android-chrome-192x192.png
|
|
1765
|
-
β
android-chrome-512x512.png
|
|
1766
|
-
β
site.webmanifest
|
|
1767
|
-
|
|
1768
|
-
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
|
|
1769
|
-
β
Brand assets generated in public/
|
|
1770
|
-
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
|
|
1771
|
-
```
|
|
1772
|
-
|
|
1773
|
-
**SPEC Brand Context Example:**
|
|
1774
|
-
|
|
1775
|
-
```xml
|
|
1776
|
-
<context>
|
|
1777
|
-
Brand:
|
|
1778
|
-
- App Name: MyApp
|
|
1779
|
-
- Primary Color: #2F6BFF
|
|
1780
|
-
- Style: Modern, minimalist, flat design
|
|
1781
|
-
- Icon Concept: Abstract geometric shape
|
|
1782
|
-
</context>
|
|
1783
|
-
```
|
|
1784
|
-
|
|
1785
|
-
**Trigger Conditions:**
|
|
1786
|
-
- First `/vibe.run` execution (no existing icons)
|
|
1787
|
-
- SPEC contains brand/design context
|
|
1788
|
-
- Gemini API key configured (`vibe gemini key <key>`)
|
|
1789
|
-
|
|
1790
|
-
**Manual Generation:**
|
|
1791
|
-
```bash
|
|
1792
|
-
# [LLM_SCRIPT] = {{VIBE_PATH}}/hooks/scripts/llm-orchestrate.js
|
|
1793
|
-
node "[LLM_SCRIPT]" gemini image "App icon for MyApp, primary color #2F6BFF, square format 1:1, simple recognizable design, works well at small sizes, no text or letters, solid or gradient background, modern minimalist" --output "./public/app-icon.png"
|
|
1794
|
-
```
|
|
1795
|
-
|
|
1796
|
-
---
|
|
1797
|
-
|
|
1798
|
-
### 5. Race Code Review (GPT + Gemini) + Auto-Fix (v2.6.9)
|
|
1799
|
-
|
|
1800
|
-
After all scenarios are implemented, **GPT and Gemini review in parallel with cross-validation**:
|
|
1801
|
-
|
|
1802
|
-
> **ULTRAWORK Default**: In ULTRAWORK mode, race review is automatically enabled.
|
|
1803
|
-
|
|
1804
|
-
```
|
|
1805
|
-
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
|
|
1806
|
-
π RACE CODE REVIEW (GPT + Gemini)
|
|
1807
|
-
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
|
|
1808
|
-
|
|
1809
|
-
[Step 1] Parallel review execution...
|
|
1810
|
-
ββ GPT Codex: Reviewing...
|
|
1811
|
-
ββ Gemini: Reviewing...
|
|
1812
|
-
|
|
1813
|
-
[Step 2] Cross-validation results:
|
|
1814
|
-
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
|
|
1815
|
-
β Issue β GPT β Gemini β Codex β Confidenceβ
|
|
1816
|
-
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
|
|
1817
|
-
β Timing attack in password β β
β β
β β
β 100% β P1 β
|
|
1818
|
-
β Rate limiting missing β β
β β
β β
β 100% β P1 β
|
|
1819
|
-
β Magic number usage β β
β β β β β 50% β P2 β
|
|
1820
|
-
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
|
|
1821
|
-
|
|
1822
|
-
Summary: 3 issues (P1: 2, P2: 1)
|
|
1823
|
-
|
|
1824
|
-
[Step 3] Auto-fixing P1/P2 issues...
|
|
1825
|
-
β
auth.service.ts:24 - Applied timingSafeEqual (P1)
|
|
1826
|
-
β
auth.controller.ts:15 - Added rate limiter (P1)
|
|
1827
|
-
β
auth.service.ts:42 - Extracted constant (P2)
|
|
1828
|
-
|
|
1829
|
-
[Step 4] Re-verifying...
|
|
1830
|
-
β
Build succeeded
|
|
1831
|
-
β
Tests passed
|
|
1832
|
-
|
|
1833
|
-
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
|
|
1834
|
-
β
Race review complete! 3 improvements (2 P1, 1 P2)
|
|
1835
|
-
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
|
|
1836
|
-
```
|
|
1837
|
-
|
|
1838
|
-
**Race Review Invocation (GPT + Gemini in parallel via Bash):**
|
|
1839
|
-
|
|
1840
|
-
**π¨ Use --input file to avoid CLI argument length limits and Windows pipe issues.**
|
|
1841
|
-
|
|
1842
|
-
1. Save code to review into `[SCRATCHPAD]/review-code.txt` (using Write tool)
|
|
1843
|
-
2. Write JSON input file `[SCRATCHPAD]/review-input.json` (using Write tool):
|
|
1844
|
-
- `{"prompt": "Review this code for security, performance, and best practices. Return JSON: {issues: [{id, title, description, severity, suggestion}]}. Code: [CODE_CONTENT]"}`
|
|
1845
|
-
- Where `[CODE_CONTENT]` is the code text (properly JSON-escaped inside the prompt string)
|
|
1846
|
-
3. Script path: `[LLM_SCRIPT]` = `{{VIBE_PATH}}/hooks/scripts/llm-orchestrate.js`
|
|
1847
|
-
4. Run GPT + Gemini in PARALLEL (two Bash tool calls at once):
|
|
1848
|
-
|
|
1849
|
-
```bash
|
|
1850
|
-
# GPT review (Bash tool call 1)
|
|
1851
|
-
node "[LLM_SCRIPT]" gpt orchestrate-json --input "[SCRATCHPAD]/review-input.json"
|
|
1852
|
-
```
|
|
1853
|
-
|
|
1854
|
-
```bash
|
|
1855
|
-
# Gemini review (Bash tool call 2 - run in parallel)
|
|
1856
|
-
node "[LLM_SCRIPT]" gemini orchestrate-json --input "[SCRATCHPAD]/review-input.json"
|
|
1857
|
-
```
|
|
1858
|
-
|
|
1859
|
-
**Confidence-based Priority:**
|
|
1860
|
-
|
|
1861
|
-
| Confidence | Priority | Action |
|
|
1862
|
-
|------------|----------|--------|
|
|
1863
|
-
| 100% (3/3 or 2/2) | P1 | Auto-fix immediately |
|
|
1864
|
-
| 67% (2/3) | P1 | Auto-fix immediately |
|
|
1865
|
-
| 50% (1/2) or 33% (1/3) | P2 | Auto-fix with review |
|
|
1866
|
-
|
|
1867
|
-
**Fallback handling:**
|
|
1868
|
-
- If one LLM fails β Use remaining LLM results (reduced confidence)
|
|
1869
|
-
- If all fail β Skip and proceed (log warning)
|
|
1870
|
-
|
|
1871
|
-
**Review application rules:**
|
|
1872
|
-
|
|
1873
|
-
| Feedback Type | Action |
|
|
1874
|
-
|---------------|--------|
|
|
1875
|
-
| Security vulnerability (P1) | Auto-fix immediately |
|
|
1876
|
-
| Performance improvement (P1/P2) | Auto-fix immediately |
|
|
1877
|
-
| Best practices (P2) | Auto-fix |
|
|
1878
|
-
| Style/preference (P3) | Apply selectively |
|
|
1879
|
-
|
|
1880
|
-
**Conditions:**
|
|
1881
|
-
- **ULTRAWORK**: Race review enabled by default
|
|
1882
|
-
- **Normal mode**: Use `--race` flag to enable
|
|
1883
|
-
- Must re-verify build/tests after fixes
|
|
1884
|
-
|
|
1885
|
-
### Codex Code Review (Codex νλ¬κ·ΈμΈ νμ±ν μ)
|
|
1886
|
-
|
|
1887
|
-
GPT+Gemini raceμ **λμμ** Codex review μ€ν:
|
|
1888
|
-
|
|
1889
|
-
```
|
|
1890
|
-
/codex:review
|
|
1891
|
-
```
|
|
1892
|
-
|
|
1893
|
-
κ²°κ³Όλ₯Ό race review κ΅μ°¨ κ²μ¦μ ν¬ν¨ β 3μ€ λ¦¬λ·°:
|
|
1894
|
-
|
|
1895
|
-
```markdown
|
|
1896
|
-
| Issue | GPT | Gemini | Codex | Confidence |
|
|
1897
|
-
|-------|-----|--------|-------|------------|
|
|
1898
|
-
| {μ΄μ} | β
/β | β
/β | β
/β | {%} |
|
|
1899
|
-
```
|
|
1900
|
-
|
|
1901
|
-
### 6. Quality Report (Auto-generated)
|
|
1902
|
-
|
|
1903
|
-
After all scenarios complete + Gemini review, **quality report is auto-generated**:
|
|
1904
|
-
|
|
1905
|
-
```
|
|
1906
|
-
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
|
|
1907
|
-
β π QUALITY REPORT: login β
|
|
1908
|
-
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
|
|
1909
|
-
β β
|
|
1910
|
-
β β
Scenarios: 4/4 passed β
|
|
1911
|
-
β β
|
|
1912
|
-
β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
|
|
1913
|
-
β β # β Scenario β Status β Retries β β β
|
|
1914
|
-
β ββββββββββββββββββββββββββββββββββββββββββββββββββββ β β
|
|
1915
|
-
β β 1 β Valid login success β β
β 0 β β β
|
|
1916
|
-
β β 2 β Invalid password error β β
β 1 β β β
|
|
1917
|
-
β β 3 β Email format validation β β
β 0 β β β
|
|
1918
|
-
β β 4 β Password reset link β β
β 0 β β β
|
|
1919
|
-
β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
|
|
1920
|
-
β β
|
|
1921
|
-
β π Quality score: 94/100 β
|
|
1922
|
-
β β
|
|
1923
|
-
β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
|
|
1924
|
-
β β Item β Result β Notes β β
|
|
1925
|
-
β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
|
|
1926
|
-
β β Build β β
β npm run build succeeded β β
|
|
1927
|
-
β β Tests β β
β 12/12 passed β β
|
|
1928
|
-
β β Type check β β
β 0 errors β β
|
|
1929
|
-
β β Complexity β β
β All functions β€30 lines β β
|
|
1930
|
-
β β Security β β
β 0 vulnerabilities β β
|
|
1931
|
-
β β Race review β β
β 3 improvements applied β β
|
|
1932
|
-
β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
|
|
1933
|
-
β β
|
|
1934
|
-
β β±οΈ Started: {start_time} β
|
|
1935
|
-
β β±οΈ Completed: {getCurrentTime κ²°κ³Ό} β
|
|
1936
|
-
β β
|
|
1937
|
-
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
|
|
1938
|
-
```
|
|
1939
|
-
|
|
1940
|
-
**What users should check**:
|
|
1941
|
-
- Scenario pass rate (4/4 = 100%)
|
|
1942
|
-
- Quality score (94/100)
|
|
1943
|
-
- Build/test status
|
|
1944
|
-
|
|
1945
|
-
**This alone is enough to trust quality.**
|
|
1946
|
-
|
|
1947
|
-
### 7. Update Feature File
|
|
1948
|
-
|
|
1949
|
-
Auto-update scenario status:
|
|
1950
|
-
|
|
1951
|
-
```markdown
|
|
1952
|
-
## Coverage
|
|
1953
|
-
|
|
1954
|
-
| Scenario | SPEC AC | Status |
|
|
1955
|
-
|----------|---------|--------|
|
|
1956
|
-
| Valid login success | AC-1 | β
|
|
|
1957
|
-
| Invalid password error | AC-2 | β
|
|
|
1958
|
-
| Email format validation | AC-3 | β
|
|
|
1959
|
-
| Password reset link | AC-4 | β
|
|
|
1960
|
-
|
|
1961
|
-
**Last verified**: 2024-01-15 14:32
|
|
1962
|
-
**Quality score**: 94/100
|
|
1963
|
-
```
|
|
1964
|
-
|
|
1965
|
-
## TRUST 5 Principles
|
|
1966
|
-
|
|
1967
|
-
Follow during implementation:
|
|
1968
|
-
|
|
1969
|
-
| Principle | Description |
|
|
1970
|
-
|-----------|-------------|
|
|
1971
|
-
| **T**est-first | Write tests first |
|
|
1972
|
-
| **R**eadable | Clear code |
|
|
1973
|
-
| **U**nified | Consistent style |
|
|
1974
|
-
| **S**ecured | Consider security |
|
|
1975
|
-
| **T**rackable | Logging, monitoring |
|
|
1976
|
-
|
|
1977
|
-
## Input
|
|
1978
|
-
|
|
1979
|
-
- `.claude/vibe/specs/{feature-name}.md` (PTCF SPEC)
|
|
1980
|
-
- `.claude/vibe/features/{feature-name}.feature` (BDD)
|
|
1981
|
-
- `CLAUDE.md` (project context)
|
|
1982
|
-
|
|
1983
|
-
## Output
|
|
1984
|
-
|
|
1985
|
-
- Implemented code files
|
|
1986
|
-
- Test files
|
|
1987
|
-
- Updated SPEC document (checkmarks)
|
|
1988
|
-
|
|
1989
|
-
## Example
|
|
1990
|
-
|
|
1991
|
-
```
|
|
1992
|
-
User: /vibe.run "login"
|
|
1993
|
-
|
|
1994
|
-
Claude:
|
|
1995
|
-
π Loading SPEC: .claude/vibe/specs/login.md
|
|
1996
|
-
π Loading Feature: .claude/vibe/features/login.feature
|
|
1997
|
-
|
|
1998
|
-
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
|
|
1999
|
-
π Scenarios to Implement
|
|
2000
|
-
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
|
|
2001
|
-
|
|
2002
|
-
| # | Scenario | Status |
|
|
2003
|
-
|---|----------|--------|
|
|
2004
|
-
| 1 | Valid login success | β¬ |
|
|
2005
|
-
| 2 | Invalid password error | β¬ |
|
|
2006
|
-
| 3 | Email format validation | β¬ |
|
|
2007
|
-
| 4 | Password reset link | β¬ |
|
|
2008
|
-
|
|
2009
|
-
Total: 4 scenarios
|
|
2010
|
-
|
|
2011
|
-
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
|
|
2012
|
-
π― Scenario 1/4: Valid login success
|
|
2013
|
-
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
|
|
2014
|
-
|
|
2015
|
-
Given: User is registered
|
|
2016
|
-
When: Login with valid email and password
|
|
2017
|
-
Then: Login success + JWT token returned
|
|
2018
|
-
|
|
2019
|
-
β‘ [PARALLEL] Exploring...
|
|
2020
|
-
β
Exploration complete (2.1s)
|
|
2021
|
-
|
|
2022
|
-
π¨ Implementing...
|
|
2023
|
-
β
auth.service.ts - Added login()
|
|
2024
|
-
β
auth.controller.ts - POST /login
|
|
2025
|
-
|
|
2026
|
-
π Verifying...
|
|
2027
|
-
β
Given: OK
|
|
2028
|
-
β
When: OK
|
|
2029
|
-
β
Then: OK
|
|
2030
|
-
|
|
2031
|
-
β
Scenario 1 passed!
|
|
2032
|
-
|
|
2033
|
-
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
|
|
2034
|
-
π― Scenario 2/4: Invalid password error
|
|
2035
|
-
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
|
|
2036
|
-
|
|
2037
|
-
π¨ Implementing...
|
|
2038
|
-
β
auth.service.ts - Password validation logic
|
|
2039
|
-
|
|
2040
|
-
π Verifying...
|
|
2041
|
-
β
Given: OK
|
|
2042
|
-
β
When: OK
|
|
2043
|
-
β Then: "Invalid credentials" error message
|
|
2044
|
-
Actual: "Error" returned
|
|
2045
|
-
|
|
2046
|
-
π Auto-fix 1/3...
|
|
2047
|
-
Fix: auth.service.ts line 42
|
|
2048
|
-
|
|
2049
|
-
π Re-verifying...
|
|
2050
|
-
β
Then: OK
|
|
2051
|
-
|
|
2052
|
-
β
Scenario 2 passed! (1 fix)
|
|
2053
|
-
|
|
2054
|
-
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
|
|
2055
|
-
π― Scenario 3/4: Email format validation
|
|
2056
|
-
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
|
|
2057
|
-
|
|
2058
|
-
π¨ Implementing...
|
|
2059
|
-
π Verifying...
|
|
2060
|
-
β
Scenario 3 passed!
|
|
2061
|
-
|
|
2062
|
-
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
|
|
2063
|
-
π― Scenario 4/4: Password reset link
|
|
2064
|
-
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
|
|
2065
|
-
|
|
2066
|
-
π¨ Implementing...
|
|
2067
|
-
π Verifying...
|
|
2068
|
-
β
Scenario 4 passed!
|
|
2069
|
-
|
|
2070
|
-
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
|
|
2071
|
-
π GEMINI CODE REVIEW
|
|
2072
|
-
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
|
|
2073
|
-
|
|
2074
|
-
π€ Sending code to Gemini...
|
|
2075
|
-
π Gemini feedback:
|
|
2076
|
-
1. [Security] Need timing attack prevention β Fixing...
|
|
2077
|
-
2. [Performance] Unnecessary DB call β Fixing...
|
|
2078
|
-
|
|
2079
|
-
β
2 improvements auto-applied
|
|
2080
|
-
π Re-verifying... β
Passed
|
|
2081
|
-
|
|
2082
|
-
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
|
|
2083
|
-
β π QUALITY REPORT: login β
|
|
2084
|
-
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
|
|
2085
|
-
β β
|
|
2086
|
-
β β
Scenarios: 4/4 passed β
|
|
2087
|
-
β β
|
|
2088
|
-
β | # | Scenario | Status | Retries | β
|
|
2089
|
-
β |---|βββββββββββββββββββββββ|βββββββ|βββββββββ| β
|
|
2090
|
-
β | 1 | Valid login success | β
| 0 | β
|
|
2091
|
-
β | 2 | Invalid password error| β
| 1 | β
|
|
2092
|
-
β | 3 | Email format validation| β
| 0 | β
|
|
2093
|
-
β | 4 | Password reset link | β
| 0 | β
|
|
2094
|
-
β β
|
|
2095
|
-
β π Quality score: 94/100 β
|
|
2096
|
-
β Build: β
| Tests: β
| Types: β
| Gemini: β
(2 applied) β
|
|
2097
|
-
β β
|
|
2098
|
-
β β±οΈ Started: {start_time} β
|
|
2099
|
-
β β±οΈ Completed: {getCurrentTime κ²°κ³Ό} β
|
|
2100
|
-
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
|
|
2101
|
-
|
|
2102
|
-
π Implementation complete! All scenarios passed + Gemini review applied.
|
|
2103
|
-
|
|
2104
|
-
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
|
|
2105
|
-
π AUTO REVIEW (13+ Agents)
|
|
2106
|
-
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
|
|
2107
|
-
|
|
2108
|
-
β‘ [PARALLEL] 13 expert agents reviewing...
|
|
2109
|
-
- security-reviewer β
|
|
2110
|
-
- performance-reviewer β
|
|
2111
|
-
- architecture-reviewer β
|
|
2112
|
-
- ...
|
|
2113
|
-
|
|
2114
|
-
π Review results:
|
|
2115
|
-
- P1 Critical: 0
|
|
2116
|
-
- P2 Important: 2
|
|
2117
|
-
- P3 Nice-to-have: 1
|
|
2118
|
-
|
|
2119
|
-
π§ Auto-fixing P2 issues...
|
|
2120
|
-
1. [PERF] N+1 query β Fixed
|
|
2121
|
-
2. [ARCH] Circular dependency β Fixed
|
|
2122
|
-
|
|
2123
|
-
β
Auto Review complete! 2 issues auto-resolved.
|
|
2124
|
-
```
|
|
2125
|
-
|
|
2126
|
-
### Phase-specific Execution
|
|
2127
|
-
|
|
2128
|
-
```
|
|
2129
|
-
User: /vibe.run "brick-game" --phase 2
|
|
2130
|
-
|
|
2131
|
-
Claude:
|
|
2132
|
-
π Reading SPEC: .claude/vibe/specs/brick-game.md
|
|
2133
|
-
π― Executing Phase 2 only.
|
|
2134
|
-
|
|
2135
|
-
Phase 2: Game Logic
|
|
2136
|
-
1. [ ] Paddle movement implementation
|
|
2137
|
-
2. [ ] Ball physics engine
|
|
2138
|
-
3. [ ] Brick collision handling
|
|
2139
|
-
4. [ ] Score system
|
|
2140
|
-
5. [ ] Game over conditions
|
|
2141
|
-
|
|
2142
|
-
β‘ Launching parallel exploration...
|
|
2143
|
-
[Task(haiku) Γ 3 launched in parallel]
|
|
2144
|
-
|
|
2145
|
-
π Starting implementation...
|
|
2146
|
-
```
|
|
2147
|
-
|
|
2148
|
-
## Error Handling
|
|
2149
|
-
|
|
2150
|
-
On failure:
|
|
2151
|
-
1. Check error message
|
|
2152
|
-
2. Review `<constraints>`
|
|
2153
|
-
3. Fix code and retry
|
|
2154
|
-
4. If continues to fail, report to user
|
|
2155
|
-
|
|
2156
|
-
---
|
|
2157
|
-
|
|
2158
|
-
## Quality Gate (Mandatory)
|
|
2159
|
-
|
|
2160
|
-
### Implementation Quality Checklist
|
|
2161
|
-
|
|
2162
|
-
Before marking any scenario as complete, ALL items must pass:
|
|
2163
|
-
|
|
2164
|
-
| Category | Check Item | Weight |
|
|
2165
|
-
|----------|------------|--------|
|
|
2166
|
-
| **Functionality** | All Given/When/Then conditions verified | 20% |
|
|
2167
|
-
| **Functionality** | Edge cases handled per scenario | 10% |
|
|
2168
|
-
| **Code Quality** | No `any` types in TypeScript | 10% |
|
|
2169
|
-
| **Code Quality** | Functions β€30 lines, nesting β€3 levels | 10% |
|
|
2170
|
-
| **Code Quality** | No hardcoded values (use constants) | 5% |
|
|
2171
|
-
| **Security** | Input validation implemented | 10% |
|
|
2172
|
-
| **Security** | Authentication/authorization checked | 5% |
|
|
2173
|
-
| **Error Handling** | Try-catch or error states present | 10% |
|
|
2174
|
-
| **Error Handling** | User-friendly error messages | 5% |
|
|
2175
|
-
| **Testing** | Unit tests exist for core logic | 10% |
|
|
2176
|
-
| **Performance** | No N+1 queries or unnecessary loops | 5% |
|
|
2177
|
-
|
|
2178
|
-
### Quality Score Calculation
|
|
2179
|
-
|
|
2180
|
-
```
|
|
2181
|
-
Score = Ξ£(checked items Γ weight) / 100
|
|
2182
|
-
|
|
2183
|
-
Grades:
|
|
2184
|
-
- 95-100: β
EXCELLENT - Ready to merge
|
|
2185
|
-
- 90-94: β οΈ GOOD - Minor improvements required before merge
|
|
2186
|
-
- 80-89: β οΈ FAIR - Significant improvements required
|
|
2187
|
-
- 0-79: β POOR - Major fixes needed
|
|
2188
|
-
```
|
|
2189
|
-
|
|
2190
|
-
### Quality Gate Thresholds
|
|
2191
|
-
|
|
2192
|
-
| Gate | Minimum Score | Condition |
|
|
2193
|
-
|------|---------------|-----------|
|
|
2194
|
-
| **Scenario Complete** | 95 | Each scenario must score β₯95 |
|
|
2195
|
-
| **Phase Complete** | 95 | Average of all scenarios β₯95 |
|
|
2196
|
-
| **Feature Complete** | 95 | All phases complete + Gemini review |
|
|
2197
|
-
|
|
2198
|
-
### Auto-Fix Triggers
|
|
2199
|
-
|
|
2200
|
-
| Issue Type | Auto-Fix Action |
|
|
2201
|
-
|------------|-----------------|
|
|
2202
|
-
| Missing error handling | Add try-catch wrapper |
|
|
2203
|
-
| Hardcoded values | Extract to constants file |
|
|
2204
|
-
| Missing input validation | Add validation schema |
|
|
2205
|
-
| Function too long | Suggest split points |
|
|
2206
|
-
| N+1 query detected | Add eager loading |
|
|
2207
|
-
|
|
2208
|
-
### Auto-Fix μ€ν¨ μ Codex Rescue (Codex νλ¬κ·ΈμΈ νμ±ν μ)
|
|
2209
|
-
|
|
2210
|
-
P1 auto-fixκ° **3ν μ€ν¨** μ, Codexμ μμ:
|
|
2211
|
-
|
|
2212
|
-
```
|
|
2213
|
-
/codex:rescue "Fix P1 issue: {issue-description}. File: {file-path}. Error: {error-message}"
|
|
2214
|
-
```
|
|
2215
|
-
|
|
2216
|
-
Codex μμ μλ£ ν μ¬κ²μ¦. Codexλ μ€ν¨ μ TODO νμΌμ κΈ°λ‘.
|
|
2217
|
-
|
|
2218
|
-
### Forbidden Patterns (Block Merge)
|
|
2219
|
-
|
|
2220
|
-
| Pattern | Why Forbidden | Detection |
|
|
2221
|
-
|---------|---------------|-----------|
|
|
2222
|
-
| `console.log` | Debug code in production | Regex scan |
|
|
2223
|
-
| `// TODO` without issue | Untracked work | Comment scan |
|
|
2224
|
-
| `any` type | Type safety bypass | TypeScript check |
|
|
2225
|
-
| `@ts-ignore` | Type error suppression | TypeScript check |
|
|
2226
|
-
| Empty catch blocks | Silent error swallowing | AST analysis |
|
|
2227
|
-
| Commented-out code | Dead code | Comment scan |
|
|
2228
|
-
|
|
2229
|
-
---
|
|
2230
|
-
|
|
2231
|
-
## Auto-Retrospective (Post-Implementation)
|
|
2232
|
-
|
|
2233
|
-
After ALL phases complete successfully, **automatically** perform a brief retrospective:
|
|
2234
|
-
|
|
2235
|
-
### Retrospective Template
|
|
2236
|
-
|
|
2237
|
-
```
|
|
2238
|
-
## Retrospective: {feature-name}
|
|
2239
|
-
|
|
2240
|
-
### What Worked
|
|
2241
|
-
- [List effective patterns, tools, approaches used]
|
|
2242
|
-
|
|
2243
|
-
### What Didn't
|
|
2244
|
-
- [List issues, failures, unexpected blockers]
|
|
2245
|
-
|
|
2246
|
-
### Key Decisions
|
|
2247
|
-
- [Important architectural or implementation decisions made during this run]
|
|
2248
|
-
|
|
2249
|
-
### Lessons Learned
|
|
2250
|
-
- [Principle format: "When X, do Y because Z"]
|
|
2251
|
-
```
|
|
2252
|
-
|
|
2253
|
-
### Execution Steps
|
|
2254
|
-
|
|
2255
|
-
1. Generate retrospective based on the implementation session
|
|
2256
|
-
2. Save to `.claude/vibe/retros/{feature-name}.md`
|
|
2257
|
-
3. Save key lessons via `core_save_memory` (for cross-session recall)
|
|
2258
|
-
4. Update `claude-progress.txt` with final status
|
|
2259
|
-
|
|
2260
|
-
**Important:**
|
|
2261
|
-
|
|
2262
|
-
- Keep it concise (under 20 lines)
|
|
2263
|
-
- Focus on **project-specific** insights, not generic knowledge
|
|
2264
|
-
- Only save to memory if the lesson is actionable and non-obvious
|
|
2265
|
-
|
|
2266
|
-
---
|
|
2267
|
-
|
|
2268
|
-
## Next Step
|
|
2269
|
-
|
|
2270
|
-
```
|
|
2271
|
-
/vibe.verify "brick-game"
|
|
2272
|
-
```
|
|
2273
|
-
|
|
2274
|
-
---
|
|
2275
|
-
|
|
2276
|
-
ARGUMENTS: $ARGUMENTS
|
|
1
|
+
---
|
|
2
|
+
description: Execute implementation from SPEC
|
|
3
|
+
argument-hint: "feature name" or --phase N
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# /vibe.run
|
|
7
|
+
|
|
8
|
+
Execute **Scenario-Driven Implementation** with automatic quality verification.
|
|
9
|
+
|
|
10
|
+
> **Core Principle**: Scenarios are both the implementation unit and verification criteria. All scenarios passing = Quality guaranteed.
|
|
11
|
+
|
|
12
|
+
## Usage
|
|
13
|
+
|
|
14
|
+
```
|
|
15
|
+
/vibe.run "feature-name" # Full implementation
|
|
16
|
+
/vibe.run "feature-name" --phase 1 # Specific Phase only
|
|
17
|
+
/vibe.run "feature-name" ultrawork # ULTRAWORK mode (recommended)
|
|
18
|
+
/vibe.run "feature-name" ulw # Short alias for ultrawork
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
---
|
|
22
|
+
|
|
23
|
+
## Codex Plugin Integration
|
|
24
|
+
|
|
25
|
+
> **Codex νλ¬κ·ΈμΈ κ°μ§**: μν¬νλ‘μ° μμ μ μλ λͺ
λ ΉμΌλ‘ μλ κ°μ§.
|
|
26
|
+
>
|
|
27
|
+
> ```bash
|
|
28
|
+
> CODEX_AVAILABLE=$(node "{{VIBE_PATH}}/hooks/scripts/codex-detect.js" 2>/dev/null || echo "unavailable")
|
|
29
|
+
> ```
|
|
30
|
+
>
|
|
31
|
+
> `available`μ΄λ©΄ `/codex:rescue` (ꡬν μμ), `/codex:review` (μ½λ 리뷰) μλ νΈμΆ. `unavailable`μ΄λ©΄ κΈ°μ‘΄ μν¬νλ‘μ°λ‘ λμ.
|
|
32
|
+
|
|
33
|
+
---
|
|
34
|
+
|
|
35
|
+
> **β±οΈ Timer**: Call `getCurrentTime` tool at the START. Record the result as `{start_time}`.
|
|
36
|
+
|
|
37
|
+
## File Reading Policy (Mandatory)
|
|
38
|
+
|
|
39
|
+
- **SPEC/Feature νμΌ**: λ°λμ `Read` λκ΅¬λ‘ μ 체 νμΌμ μ½μ κ² (Grep κΈμ§)
|
|
40
|
+
- **μμ€μ½λ νμΌ**: ꡬν/μμ λμ νμΌμ λ°λμ `Read` λκ΅¬λ‘ μ 체 μ½μ ν μμ
ν κ²
|
|
41
|
+
- **Grep μ¬μ© μ ν**: νμΌ μμΉ νμ(μ΄λ€ νμΌμ μλμ§ μ°ΎκΈ°)μλ§ μ¬μ©. νμΌ λ΄μ© νμ
μλ λ°λμ Read μ¬μ©
|
|
42
|
+
- **μμ΄μ νΈ spawn μ**: ν둬ννΈμ "λμ νμΌμ Read λκ΅¬λ‘ μ 체 μ½μ ν ꡬννλΌ"λ₯Ό λ°λμ ν¬ν¨ν κ²
|
|
43
|
+
- **λΆλΆ μ½κΈ° κΈμ§**: Grep κ²°κ³Όμ μ£Όλ³ λͺ μ€λ§ λ³΄κ³ μμ νμ§ λ§ κ². μ 체 λ§₯λ½μ νμ
ν΄μΌ κΈ°μ‘΄ μ½λμ μΌκ΄λ ꡬν κ°λ₯
|
|
44
|
+
|
|
45
|
+
## **Scenario-Driven Development (SDD)**
|
|
46
|
+
|
|
47
|
+
> Automate **Scenario = Implementation = Verification** so even non-developers can trust quality
|
|
48
|
+
|
|
49
|
+
### Core Flow
|
|
50
|
+
|
|
51
|
+
```
|
|
52
|
+
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
|
|
53
|
+
β SCENARIO-DRIVEN IMPLEMENTATION β
|
|
54
|
+
β β
|
|
55
|
+
β Load Feature file β
|
|
56
|
+
β β β
|
|
57
|
+
β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
|
|
58
|
+
β β Scenario 1: Happy Path β β
|
|
59
|
+
β β Given β When β Then β β
|
|
60
|
+
β β β β β
|
|
61
|
+
β β [Implement] β [Verify immediately] β β
Pass β β
|
|
62
|
+
β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
|
|
63
|
+
β β β
|
|
64
|
+
β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
|
|
65
|
+
β β Scenario 2: Edge Case β β
|
|
66
|
+
β β Given β When β Then β β
|
|
67
|
+
β β β β β
|
|
68
|
+
β β [Implement] β [Verify] β β Fail β [Fix] β β
Pass β β
|
|
69
|
+
β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
|
|
70
|
+
β β β
|
|
71
|
+
β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
|
|
72
|
+
β β Scenario N: ... β β
|
|
73
|
+
β β [Implement] β [Verify immediately] β β
Pass β β
|
|
74
|
+
β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
|
|
75
|
+
β β β
|
|
76
|
+
β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
|
|
77
|
+
β β π QUALITY REPORT β β
|
|
78
|
+
β β βββββββββββββββββββββββββββββββββββββββββββββββββββββ β β
|
|
79
|
+
β β Scenarios: 5/5 passed β
β β
|
|
80
|
+
β β Quality score: 94/100 β β
|
|
81
|
+
β β Build: β
| Tests: β
β β
|
|
82
|
+
β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
|
|
83
|
+
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
|
|
84
|
+
```
|
|
85
|
+
|
|
86
|
+
### Scenario = Implementation Unit
|
|
87
|
+
|
|
88
|
+
**Traditional approach (Phase-based)**:
|
|
89
|
+
```
|
|
90
|
+
Phase 1 β Phase 2 β Phase 3 β ... β Verify at the end
|
|
91
|
+
β
|
|
92
|
+
"Where did it go wrong?"
|
|
93
|
+
```
|
|
94
|
+
|
|
95
|
+
**SDD approach (Scenario-based)**:
|
|
96
|
+
```
|
|
97
|
+
Scenario 1 β Implement β Verify β
|
|
98
|
+
Scenario 2 β Implement β Verify β
|
|
99
|
+
Scenario 3 β Implement β Verify β β Fix β β
|
|
100
|
+
...
|
|
101
|
+
All pass = Quality guaranteed
|
|
102
|
+
```
|
|
103
|
+
|
|
104
|
+
### Automated Verification (Closed Loop)
|
|
105
|
+
|
|
106
|
+
**μμ¨μ AI μ½λ© = ꡬν + κ²μ¦ + λ°λ³΅. κ²μ¦μ AIμκ² λ§‘κΈ°λ μκ° λ£¨νκ° λ«νλ€.**
|
|
107
|
+
|
|
108
|
+
After implementing each scenario, **automatic verification**:
|
|
109
|
+
|
|
110
|
+
| Verification Item | Auto Check | Method |
|
|
111
|
+
|-------------------|------------|--------|
|
|
112
|
+
| Given (precondition) | State/data preparation confirmed | Code analysis |
|
|
113
|
+
| When (action) | Feature execution possible | Code analysis + Build |
|
|
114
|
+
| Then (result) | Expected result matches | Code analysis + Test |
|
|
115
|
+
| Code quality | Complexity, style, security | Static analysis |
|
|
116
|
+
| **UI behavior** | **μ€μ λΈλΌμ°μ μμ λμ νμΈ** | **E2E Closed Loop** |
|
|
117
|
+
|
|
118
|
+
### E2E Closed Loop (UI Scenarios)
|
|
119
|
+
|
|
120
|
+
**UI μλ리μ€κ° ν¬ν¨λ FeatureμΌ λ μλ νμ±ν.**
|
|
121
|
+
|
|
122
|
+
```
|
|
123
|
+
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
|
|
124
|
+
β CLOSED LOOP = ꡬν + κ²μ¦ + λ°λ³΅ β
|
|
125
|
+
β β
|
|
126
|
+
β Scenario ꡬν μλ£ β
|
|
127
|
+
β β β
|
|
128
|
+
β [E2E κ²μ¦] AIκ° μ§μ λΈλΌμ°μ μ‘°μ β
|
|
129
|
+
β β (μ κ·Όμ± νΈλ¦¬ κΈ°λ° β ν ν° ν¨μ¨μ ) β
|
|
130
|
+
β ββ PASS β Next scenario β
|
|
131
|
+
β ββ FAIL β Root cause analysis β
|
|
132
|
+
β β Fix code (Read full file first) β
|
|
133
|
+
β β Re-run failed scenario only β
|
|
134
|
+
β β PASS? β Next scenario β
|
|
135
|
+
β β FAIL? β Retry (max 3) β
|
|
136
|
+
β β
|
|
137
|
+
β ν΅μ¬: κ²μ¦μ΄ κ°λ²ΌμΈμλ‘ λ£¨νλ λ λ§μ΄ λλ€ β
|
|
138
|
+
β - μ κ·Όμ± νΈλ¦¬: button "Sign In" = 15 chars β
|
|
139
|
+
β - DOM νΈλ¦¬: div class="nav-wrapper mx-4..." = 200+ chars β
|
|
140
|
+
β - μ μλ₯Ό μ¨μΌ ν μΈμ
μμ μμ κ° μλλ¦¬μ€ κ²μ¦ κ°λ₯ β
|
|
141
|
+
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
|
|
142
|
+
```
|
|
143
|
+
|
|
144
|
+
**Browser Tool Priority:**
|
|
145
|
+
|
|
146
|
+
| Priority | Tool | μ©λ |
|
|
147
|
+
|----------|------|------|
|
|
148
|
+
| 1st | Agent Browser (μ κ·Όμ± νΈλ¦¬) | AI μ§μ μ‘°μ, μ΅μ ν ν° |
|
|
149
|
+
| 2nd | Playwright Test Runner | ν
μ€νΈ μ½λ μ€ν, pass/fail λ°ν |
|
|
150
|
+
| 3rd | Playwright MCP (DOM) | μ΅ν μλ¨, ν ν° λΉν¨μ¨ |
|
|
151
|
+
|
|
152
|
+
**νμ±ν 쑰건:**
|
|
153
|
+
- Feature νμΌμ UI κ΄λ ¨ μλλ¦¬μ€ μ‘΄μ¬ (form, button, page, navigate λ±)
|
|
154
|
+
- `.claude/vibe/e2e/config.json`μ `closedLoop.enabled: true` (κΈ°λ³Έκ°)
|
|
155
|
+
- dev serverκ° μ€ν μ€ (`baseURL` μ κ·Ό κ°λ₯)
|
|
156
|
+
|
|
157
|
+
### Auto-Fix on Failure
|
|
158
|
+
|
|
159
|
+
```
|
|
160
|
+
Scenario verification failed (μ½λ λΆμ λλ E2E)
|
|
161
|
+
β
|
|
162
|
+
[Collect evidence]
|
|
163
|
+
- E2E: screenshot, console errors, accessibility tree snapshot
|
|
164
|
+
- Code: build errors, test failures, type errors
|
|
165
|
+
β
|
|
166
|
+
[Root cause analysis] - Which Then condition failed?
|
|
167
|
+
β
|
|
168
|
+
[Read target file FULLY] - GrepμΌλ‘ νμ§ λ§ κ²
|
|
169
|
+
β
|
|
170
|
+
[Implement fix] - Fix only that part
|
|
171
|
+
β
|
|
172
|
+
[Re-verify] - Re-run ONLY failed scenario (save tokens)
|
|
173
|
+
β
|
|
174
|
+
Repeat until pass (max 3 times)
|
|
175
|
+
```
|
|
176
|
+
|
|
177
|
+
---
|
|
178
|
+
|
|
179
|
+
## **ULTRAWORK Mode** (ulw)
|
|
180
|
+
|
|
181
|
+
> Include `ultrawork` or `ulw` in your command to activate **maximum performance mode**.
|
|
182
|
+
|
|
183
|
+
### What ULTRAWORK Enables
|
|
184
|
+
|
|
185
|
+
When you include `ultrawork` (or `ulw`), ALL of these activate automatically:
|
|
186
|
+
|
|
187
|
+
| Feature | Description |
|
|
188
|
+
|---------|-------------|
|
|
189
|
+
| **Parallel Exploration** | 3+ Task(haiku) agents run simultaneously |
|
|
190
|
+
| **Boulder Loop** | Auto-continues until ALL phases complete |
|
|
191
|
+
| **Context Compression** | Aggressive auto-save at 70%+ context |
|
|
192
|
+
| **No Pause** | Doesn't wait for confirmation between phases |
|
|
193
|
+
| **External LLMs** | Auto-consults GPT/Gemini if enabled |
|
|
194
|
+
| **Error Recovery** | Auto-retries on failure (up to 3 times) |
|
|
195
|
+
| **Race Review (v2.6.9)** | Multi-LLM review (GPT+Gemini) with cross-validation |
|
|
196
|
+
|
|
197
|
+
### Boulder Loop (Inspired by Sisyphus)
|
|
198
|
+
|
|
199
|
+
Like Sisyphus rolling the boulder, ULTRAWORK **keeps going until done**:
|
|
200
|
+
|
|
201
|
+
```
|
|
202
|
+
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
|
|
203
|
+
β BOULDER LOOP (ultrawork) β
|
|
204
|
+
β β
|
|
205
|
+
β ββββββββββββ ββββββββββββ ββββββββββββ ββββββββββββ β
|
|
206
|
+
β β Phase 1 ββββββ Phase 2 ββββββ Phase 3 ββββββ Phase N β β
|
|
207
|
+
β ββββββββββββ ββββββββββββ ββββββββββββ ββββββββββββ β
|
|
208
|
+
β β β β β β
|
|
209
|
+
β β β β β β
|
|
210
|
+
β [Parallel] [Parallel] [Parallel] [Parallel] β
|
|
211
|
+
β [Implement] [Implement] [Implement] [Implement] β
|
|
212
|
+
β [Test] [Test] [Test] [Test] β
|
|
213
|
+
β β β β β β
|
|
214
|
+
β βββββββββββββββββ΄ββββββββββββββββ΄ββββββββββββββββ β
|
|
215
|
+
β β β
|
|
216
|
+
β β β
|
|
217
|
+
β ββββββββββββββββ β
|
|
218
|
+
β β ALL DONE? β β
|
|
219
|
+
β ββββββββββββββββ β
|
|
220
|
+
β β β β
|
|
221
|
+
β NO YES β
|
|
222
|
+
β β β β
|
|
223
|
+
β β β β
|
|
224
|
+
β [Continue] [π Complete!] β
|
|
225
|
+
β β
|
|
226
|
+
β NO STOPPING until acceptance criteria met or error limit hit β
|
|
227
|
+
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
|
|
228
|
+
```
|
|
229
|
+
|
|
230
|
+
### Ralph Loop (Completion Verification) - CRITICAL
|
|
231
|
+
|
|
232
|
+
> **Inspired by [ghuntley.com/ralph](https://ghuntley.com/ralph)**: "Deterministically bad in an undeterministic world" - Keep iterating until TRULY complete.
|
|
233
|
+
|
|
234
|
+
**Problem**: AI often claims "complete" when implementation is partial.
|
|
235
|
+
|
|
236
|
+
**Solution**: RTM-based automated coverage verification with iteration tracking.
|
|
237
|
+
|
|
238
|
+
```
|
|
239
|
+
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
|
|
240
|
+
β RALPH LOOP (Mandatory) β
|
|
241
|
+
β β
|
|
242
|
+
β After ALL phases complete: β
|
|
243
|
+
β β
|
|
244
|
+
β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
|
|
245
|
+
β β RTM COVERAGE VERIFICATION [Iteration {{ITER}}/{{MAX}}] β β
|
|
246
|
+
β β β β
|
|
247
|
+
β β Generate RTM via core tools: β β
|
|
248
|
+
β β β generateTraceabilityMatrix("{feature-name}") β β
|
|
249
|
+
β β β β
|
|
250
|
+
β β Coverage Metrics (automated): β β
|
|
251
|
+
β β β‘ Requirements coverage: {coveragePercent}% β β
|
|
252
|
+
β β β‘ SPEC β Feature mapping: {featureCovered}/{total} β β
|
|
253
|
+
β β β‘ Feature β Test mapping: {testCovered}/{total} β β
|
|
254
|
+
β β β‘ Build successful? β β
|
|
255
|
+
β β β‘ Tests passing? β β
|
|
256
|
+
β β β β
|
|
257
|
+
β β UNCOVERED: {uncoveredRequirements[]} β β
|
|
258
|
+
β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
|
|
259
|
+
β β β
|
|
260
|
+
β ββββββββββββ΄βββββββββββ β
|
|
261
|
+
β β Coverage β₯ 95%? β β
|
|
262
|
+
β ββββββββββββ¬βββββββββββ β
|
|
263
|
+
β β β β
|
|
264
|
+
β NO YES β
|
|
265
|
+
β β β β
|
|
266
|
+
β β β β
|
|
267
|
+
β ββββββββββββββββββ ββββββββββββββββββ β
|
|
268
|
+
β β IMPLEMENT β β β
TRULY DONE β β
|
|
269
|
+
β β UNCOVERED β β β β
|
|
270
|
+
β β REQUIREMENTS β β Report final β β
|
|
271
|
+
β β (auto-extract) β β RTM coverage β β
|
|
272
|
+
β βββββββββ¬βββββββββ ββββββββββββββββββ β
|
|
273
|
+
β β β
|
|
274
|
+
β ββββββββββββ [Re-generate RTM] β
|
|
275
|
+
β β
|
|
276
|
+
β MAX_ITERATIONS: 5 (prevent infinite loops) β
|
|
277
|
+
β COVERAGE_THRESHOLD: 95% (quality gate) β
|
|
278
|
+
β ZERO TOLERANCE for scope reduction β
|
|
279
|
+
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
|
|
280
|
+
```
|
|
281
|
+
|
|
282
|
+
**Ralph Loop with RTM:**
|
|
283
|
+
|
|
284
|
+
```bash
|
|
285
|
+
# Generate RTM for coverage verification
|
|
286
|
+
node -e "import('{{VIBE_PATH_URL}}/node_modules/@su-record/vibe/dist/tools/index.js').then(t => t.generateTraceabilityMatrix('{feature-name}', {projectPath: process.cwd()}).then(r => console.log(JSON.stringify(r, null, 2))))"
|
|
287
|
+
```
|
|
288
|
+
|
|
289
|
+
**RTM provides automated metrics:**
|
|
290
|
+
|
|
291
|
+
| Metric | Description |
|
|
292
|
+
|--------|-------------|
|
|
293
|
+
| `totalRequirements` | Total REQ-* items in SPEC |
|
|
294
|
+
| `specCovered` | Requirements with SPEC mapping |
|
|
295
|
+
| `featureCovered` | Requirements with Feature scenarios |
|
|
296
|
+
| `testCovered` | Requirements with test files |
|
|
297
|
+
| `coveragePercent` | Overall coverage percentage |
|
|
298
|
+
| `uncoveredRequirements` | List of missing REQ-* IDs |
|
|
299
|
+
|
|
300
|
+
**Ralph Loop Rules:**
|
|
301
|
+
|
|
302
|
+
| Rule | Description |
|
|
303
|
+
|------|-------------|
|
|
304
|
+
| **No Scope Reduction** | Never say "simplified" or "basic version" - implement FULL request |
|
|
305
|
+
| **Iteration Tracking** | Display `[{{ITER}}/{{MAX}}]` to show progress |
|
|
306
|
+
| **RTM-Based Gap List** | Use `uncoveredRequirements` array - no manual comparison |
|
|
307
|
+
| **Coverage Threshold** | Must reach 95% coverage to complete |
|
|
308
|
+
| **Max Iterations** | Stop at 5 iterations (report remaining gaps as TODO) |
|
|
309
|
+
| **Convergence Detection** | If coverage % unchanged between iterations β STOP (converged) |
|
|
310
|
+
| **Diminishing Returns** | Iteration 3+ β only implement unmet core requirements (REQ-*-001~003), rest goes to TODO |
|
|
311
|
+
|
|
312
|
+
**Ralph Loop Output Format:**
|
|
313
|
+
|
|
314
|
+
```
|
|
315
|
+
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
|
|
316
|
+
π RALPH VERIFICATION [Iteration 1/5]
|
|
317
|
+
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
|
|
318
|
+
|
|
319
|
+
π RTM Coverage Report: login
|
|
320
|
+
|
|
321
|
+
Requirements Traceability:
|
|
322
|
+
Total Requirements: 9
|
|
323
|
+
SPEC Covered: 9/9 (100%)
|
|
324
|
+
Feature Covered: 5/9 (55%)
|
|
325
|
+
Test Covered: 4/9 (44%)
|
|
326
|
+
|
|
327
|
+
β
REQ-login-001: Login form UI β Scenario 1 β login.test.ts
|
|
328
|
+
β
REQ-login-002: Email validation β Scenario 2 β validation.test.ts
|
|
329
|
+
β
REQ-login-003: Password validation β Scenario 2 β validation.test.ts
|
|
330
|
+
β REQ-login-004: Remember me checkbox β NOT IMPLEMENTED
|
|
331
|
+
β REQ-login-005: Forgot password link β NOT IMPLEMENTED
|
|
332
|
+
β
REQ-login-006: API integration β Scenario 3 β api.test.ts
|
|
333
|
+
β REQ-login-007: Loading state β NOT IMPLEMENTED
|
|
334
|
+
β REQ-login-008: Error toast β NOT IMPLEMENTED
|
|
335
|
+
β
REQ-login-009: Session storage β Scenario 4 β (no test)
|
|
336
|
+
|
|
337
|
+
Overall Coverage: 55% β οΈ BELOW 95% THRESHOLD
|
|
338
|
+
|
|
339
|
+
UNCOVERED REQUIREMENTS (auto-extracted from RTM):
|
|
340
|
+
1. REQ-login-004: Remember me checkbox
|
|
341
|
+
2. REQ-login-005: Forgot password link
|
|
342
|
+
3. REQ-login-007: Loading state
|
|
343
|
+
4. REQ-login-008: Error toast notifications
|
|
344
|
+
|
|
345
|
+
β οΈ NOT COMPLETE - Implementing uncovered requirements...
|
|
346
|
+
|
|
347
|
+
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
|
|
348
|
+
π RALPH VERIFICATION [Iteration 2/5]
|
|
349
|
+
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
|
|
350
|
+
|
|
351
|
+
π RTM Coverage Report: login
|
|
352
|
+
|
|
353
|
+
Requirements Traceability:
|
|
354
|
+
Total Requirements: 9
|
|
355
|
+
SPEC Covered: 9/9 (100%)
|
|
356
|
+
Feature Covered: 9/9 (100%)
|
|
357
|
+
Test Covered: 9/9 (100%)
|
|
358
|
+
|
|
359
|
+
Overall Coverage: 100% β
ABOVE 95% THRESHOLD
|
|
360
|
+
|
|
361
|
+
Build: β
Passed
|
|
362
|
+
Tests: β
12/12 Passed
|
|
363
|
+
Type Check: β
No errors
|
|
364
|
+
|
|
365
|
+
β
RALPH VERIFIED COMPLETE!
|
|
366
|
+
|
|
367
|
+
π RTM saved: .claude/vibe/rtm/login-rtm.md
|
|
368
|
+
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
|
|
369
|
+
```
|
|
370
|
+
|
|
371
|
+
**When to Trigger Ralph Loop:**
|
|
372
|
+
|
|
373
|
+
1. After all phases complete
|
|
374
|
+
2. Before final quality report
|
|
375
|
+
3. Whenever user says "ultrawork" or "ralph"
|
|
376
|
+
|
|
377
|
+
**Forbidden Responses (VIOLATIONS):**
|
|
378
|
+
|
|
379
|
+
| β NEVER Say | β
Instead |
|
|
380
|
+
|-------------|-----------|
|
|
381
|
+
| "I've implemented a basic version" | Implement the FULL version |
|
|
382
|
+
| "This is a simplified approach" | Implement as specified |
|
|
383
|
+
| "You can add X later" | Add X now |
|
|
384
|
+
| "For demonstration purposes" | Implement production-ready |
|
|
385
|
+
| "The core functionality is done" | ALL functionality must be done |
|
|
386
|
+
|
|
387
|
+
### ULTRAWORK Example
|
|
388
|
+
|
|
389
|
+
```
|
|
390
|
+
User: /vibe.run "brick-game" ultrawork
|
|
391
|
+
|
|
392
|
+
Claude:
|
|
393
|
+
π ULTRAWORK MODE ACTIVATED
|
|
394
|
+
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
|
|
395
|
+
|
|
396
|
+
π SPEC: .claude/vibe/specs/brick-game.md
|
|
397
|
+
π― 4 Phases detected
|
|
398
|
+
β‘ Boulder Loop: ENABLED (will continue until all phases complete)
|
|
399
|
+
π Auto-retry: ON (max 3 per phase)
|
|
400
|
+
πΎ Context compression: AGGRESSIVE
|
|
401
|
+
|
|
402
|
+
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
|
|
403
|
+
ποΈ BOULDER ROLLING... Phase 1/4
|
|
404
|
+
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
|
|
405
|
+
|
|
406
|
+
β‘ [PARALLEL] Launching 3 exploration agents...
|
|
407
|
+
β
Exploration complete (7.2s)
|
|
408
|
+
π¨ Implementing...
|
|
409
|
+
β
Phase 1 complete
|
|
410
|
+
|
|
411
|
+
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
|
|
412
|
+
ποΈ BOULDER ROLLING... Phase 2/4
|
|
413
|
+
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
|
|
414
|
+
|
|
415
|
+
β‘ [PARALLEL] Launching 3 exploration agents...
|
|
416
|
+
β
Exploration complete (6.8s)
|
|
417
|
+
π¨ Implementing...
|
|
418
|
+
β Test failed: collision detection
|
|
419
|
+
π Auto-retry 1/3...
|
|
420
|
+
π¨ Fixing...
|
|
421
|
+
β
Phase 2 complete
|
|
422
|
+
|
|
423
|
+
[...continues automatically...]
|
|
424
|
+
|
|
425
|
+
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
|
|
426
|
+
π BOULDER REACHED THE TOP!
|
|
427
|
+
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
|
|
428
|
+
|
|
429
|
+
β
All 4 phases complete
|
|
430
|
+
β
All acceptance criteria passed
|
|
431
|
+
β
Build succeeded
|
|
432
|
+
β
Tests passed
|
|
433
|
+
|
|
434
|
+
β±οΈ Total: 8m 24s
|
|
435
|
+
π Retries: 2
|
|
436
|
+
πΎ Context saved: 3 checkpoints
|
|
437
|
+
```
|
|
438
|
+
|
|
439
|
+
### Normal vs ULTRAWORK Comparison
|
|
440
|
+
|
|
441
|
+
| Aspect | Normal | ULTRAWORK |
|
|
442
|
+
|--------|--------|-----------|
|
|
443
|
+
| Phase transition | May pause | Auto-continues |
|
|
444
|
+
| On error | Reports and stops | Auto-retries (3x) |
|
|
445
|
+
| Context 70%+ | Warning only | Auto-compress + save |
|
|
446
|
+
| Exploration | Sequential possible | FORCED parallel |
|
|
447
|
+
| Completion | Phase-by-phase | Until ALL done |
|
|
448
|
+
|
|
449
|
+
---
|
|
450
|
+
|
|
451
|
+
## Automation Level System
|
|
452
|
+
|
|
453
|
+
Magic keywords in the user input automatically set the **AutomationLevel**, which controls how much the AI self-advances vs. pausing for confirmation.
|
|
454
|
+
|
|
455
|
+
### Level Definitions
|
|
456
|
+
|
|
457
|
+
| Level | Name | Keyword(s) | Auto-advance | Auto-retry | Max Retries | Parallel Agents | Checkpoints |
|
|
458
|
+
|-------|------|------------|--------------|------------|-------------|-----------------|-------------|
|
|
459
|
+
| L0 | Manual | `manual` | No | No | 0 | No | All |
|
|
460
|
+
| L1 | Guided | `guided`, `verify` | No | No | 0 | No | All |
|
|
461
|
+
| L2 | Semi-auto | `quick` (default) | Yes | Yes | 2 | No | Key points |
|
|
462
|
+
| L3 | Auto | `ultrawork`, `ulw` | Yes | Yes | 3 | Yes | Checkpoint-only |
|
|
463
|
+
| L4 | Full-auto | `ralph`, `ralplan` | Yes | Yes | 5 | Yes | None |
|
|
464
|
+
|
|
465
|
+
### Detection Rule
|
|
466
|
+
|
|
467
|
+
The AI detects automation level from word boundaries in the user's input:
|
|
468
|
+
|
|
469
|
+
```
|
|
470
|
+
/vibe.run "login" β L2 Semi-auto (default)
|
|
471
|
+
/vibe.run "login" ultrawork β L3 Auto
|
|
472
|
+
/vibe.run "login" ralph β L4 Full-auto
|
|
473
|
+
/vibe.run "login" verify β L1 Guided
|
|
474
|
+
```
|
|
475
|
+
|
|
476
|
+
### Confirmation Matrix
|
|
477
|
+
|
|
478
|
+
Certain action types require user confirmation depending on the active level:
|
|
479
|
+
|
|
480
|
+
| Action | L0 | L1 | L2 | L3 | L4 |
|
|
481
|
+
|--------|----|----|----|----|-----|
|
|
482
|
+
| `destructive` | confirm | confirm | confirm | confirm | auto |
|
|
483
|
+
| `architecture_choice` | confirm | confirm | confirm | auto | auto |
|
|
484
|
+
| `implementation_scope` | confirm | confirm | confirm | auto | auto |
|
|
485
|
+
| `phase_advance` | confirm | confirm | auto | auto | auto |
|
|
486
|
+
| `fix_strategy` | confirm | confirm | auto | auto | auto |
|
|
487
|
+
| `retry` | confirm | auto | auto | auto | auto |
|
|
488
|
+
|
|
489
|
+
**Rule**: When confirmation is required, pause and display a checkpoint before proceeding.
|
|
490
|
+
|
|
491
|
+
---
|
|
492
|
+
|
|
493
|
+
## Interactive Checkpoints
|
|
494
|
+
|
|
495
|
+
Checkpoints are decision gates inserted at critical points in the workflow. At L3/L4, most checkpoints are **auto-resolved** using the default option.
|
|
496
|
+
|
|
497
|
+
### Checkpoint Types
|
|
498
|
+
|
|
499
|
+
| Type | When It Fires | Default Option |
|
|
500
|
+
|------|--------------|----------------|
|
|
501
|
+
| `requirements_confirm` | Before starting Phase 1 | Confirm (a) |
|
|
502
|
+
| `architecture_choice` | When architecture approach is ambiguous | Clean/balanced (b) |
|
|
503
|
+
| `implementation_scope` | Before any large scope change (6+ files) | Approve (a) |
|
|
504
|
+
| `verification_result` | After each VerificationLoop iteration below threshold | Continue fixing (a) |
|
|
505
|
+
| `fix_strategy` | When critical issues are found during quality gate | Fix all (a) |
|
|
506
|
+
|
|
507
|
+
### Checkpoint Format
|
|
508
|
+
|
|
509
|
+
When a checkpoint fires, display it in this format:
|
|
510
|
+
|
|
511
|
+
```
|
|
512
|
+
ββββββββββββββββββββββββββββββββββββββββββββββββββ
|
|
513
|
+
CHECKPOINT: Requirements Confirmation
|
|
514
|
+
ββββββββββββββββββββββββββββββββββββββββββββββββββ
|
|
515
|
+
Feature: login
|
|
516
|
+
|
|
517
|
+
Requirements:
|
|
518
|
+
1. User can log in with email and password
|
|
519
|
+
2. Invalid credentials show an error message
|
|
520
|
+
3. Remember me persists session for 30 days
|
|
521
|
+
|
|
522
|
+
Options:
|
|
523
|
+
a) Confirm
|
|
524
|
+
Proceed with these requirements as stated.
|
|
525
|
+
b) Revise
|
|
526
|
+
Modify or clarify requirements before proceeding.
|
|
527
|
+
c) Abort
|
|
528
|
+
Cancel this workflow.
|
|
529
|
+
|
|
530
|
+
Default: a
|
|
531
|
+
ββββββββββββββββββββββββββββββββββββββββββββββββββ
|
|
532
|
+
```
|
|
533
|
+
|
|
534
|
+
### Auto-Resolution (L3/L4)
|
|
535
|
+
|
|
536
|
+
At automation levels L3 and L4, checkpoints that do not require confirmation are auto-resolved:
|
|
537
|
+
|
|
538
|
+
```
|
|
539
|
+
[AUTO] CHECKPOINT: implementation_scope β option a (Approve) [auto-resolved]
|
|
540
|
+
```
|
|
541
|
+
|
|
542
|
+
---
|
|
543
|
+
|
|
544
|
+
## Rules Reference
|
|
545
|
+
|
|
546
|
+
**Must follow `~/.claude/vibe/rules/` (global):**
|
|
547
|
+
|
|
548
|
+
- `core/development-philosophy.md` - Surgical precision, modify only requested scope
|
|
549
|
+
- `core/quick-start.md` - Korean, DRY, SRP, YAGNI
|
|
550
|
+
- `standards/complexity-metrics.md` - Functions β€20 lines, nesting β€3 levels
|
|
551
|
+
- `quality/checklist.md` - Code quality checklist
|
|
552
|
+
|
|
553
|
+
**Language guide:** `~/.claude/vibe/languages/{stack}.md` (global reference)
|
|
554
|
+
|
|
555
|
+
---
|
|
556
|
+
|
|
557
|
+
## Coding Guidelines (Mandatory)
|
|
558
|
+
|
|
559
|
+
### Type Safety: Use Types Explicitly
|
|
560
|
+
|
|
561
|
+
> **Core Principle**: Use types explicitly in every language that has a type system!
|
|
562
|
+
|
|
563
|
+
Type definitions are not just language syntax β they are a **core engineering philosophy for simplifying and controlling complex software**.
|
|
564
|
+
|
|
565
|
+
### Applies to ALL Typed Languages
|
|
566
|
+
|
|
567
|
+
| Category | Languages | Key Principle |
|
|
568
|
+
|----------|-----------|---------------|
|
|
569
|
+
| **Static Typed** | Java, C#, C++, Go, Rust, Swift, Kotlin, Scala | Types = compile-time contracts |
|
|
570
|
+
| **Gradual Typed** | TypeScript, Python (typing), PHP (typed), Ruby (RBS) | Types = optional safety nets |
|
|
571
|
+
| **Functional** | Haskell, OCaml, F#, Elm | Types = logical proofs |
|
|
572
|
+
|
|
573
|
+
### Universal Anti-Patterns (All Languages)
|
|
574
|
+
|
|
575
|
+
| β Forbidden Pattern | Why | β
Instead |
|
|
576
|
+
|---------------------|-----|-----------|
|
|
577
|
+
| Type escape hatches (`any`, `Any`, `Object`, `void*`, `interface{}`) | Loses type info, runtime errors | Concrete types or `unknown` + guards |
|
|
578
|
+
| Type suppression (`@ts-ignore`, `# type: ignore`, `@SuppressWarnings`) | Hides errors | Fix actual type issues |
|
|
579
|
+
| Raw generic types (`List`, `Map` without params) | Loses type safety | `List<User>`, `Map<String, Order>` |
|
|
580
|
+
| Excessive casting (`as`, `(Type)`, `unsafe`) | Bypasses compiler | Type guards or pattern matching |
|
|
581
|
+
|
|
582
|
+
### Language-Specific Guidelines
|
|
583
|
+
|
|
584
|
+
**TypeScript/JavaScript:**
|
|
585
|
+
```typescript
|
|
586
|
+
// β BAD
|
|
587
|
+
function process(data: any): any { return data.foo; }
|
|
588
|
+
|
|
589
|
+
// β
GOOD
|
|
590
|
+
function process(data: unknown): Result {
|
|
591
|
+
if (isValidData(data)) return data.foo;
|
|
592
|
+
throw new Error('Invalid');
|
|
593
|
+
}
|
|
594
|
+
```
|
|
595
|
+
|
|
596
|
+
**Python:**
|
|
597
|
+
```python
|
|
598
|
+
# β BAD
|
|
599
|
+
def process(data: Any) -> Any: return data["key"]
|
|
600
|
+
|
|
601
|
+
# β
GOOD
|
|
602
|
+
def process(data: UserData) -> str: return data["name"]
|
|
603
|
+
```
|
|
604
|
+
|
|
605
|
+
**Java/Kotlin:**
|
|
606
|
+
```java
|
|
607
|
+
// β BAD
|
|
608
|
+
List items = new ArrayList(); // Raw type
|
|
609
|
+
Object data = getData(); // Lost type info
|
|
610
|
+
|
|
611
|
+
// β
GOOD
|
|
612
|
+
List<User> users = new ArrayList<>();
|
|
613
|
+
User user = getUser();
|
|
614
|
+
```
|
|
615
|
+
|
|
616
|
+
**Go:**
|
|
617
|
+
```go
|
|
618
|
+
// β BAD
|
|
619
|
+
func process(data interface{}) interface{} { ... }
|
|
620
|
+
|
|
621
|
+
// β
GOOD
|
|
622
|
+
func process(data UserRequest) (UserResponse, error) { ... }
|
|
623
|
+
```
|
|
624
|
+
|
|
625
|
+
**Rust:**
|
|
626
|
+
```rust
|
|
627
|
+
// β BAD (unnecessary unsafe or Box<dyn Any>)
|
|
628
|
+
let data: Box<dyn Any> = get_data();
|
|
629
|
+
|
|
630
|
+
// β
GOOD
|
|
631
|
+
let data: UserData = get_data()?;
|
|
632
|
+
```
|
|
633
|
+
|
|
634
|
+
**C#:**
|
|
635
|
+
```csharp
|
|
636
|
+
// β BAD
|
|
637
|
+
object data = GetData();
|
|
638
|
+
dynamic result = Process(data);
|
|
639
|
+
|
|
640
|
+
// β
GOOD
|
|
641
|
+
UserData data = GetData();
|
|
642
|
+
Result result = Process(data);
|
|
643
|
+
```
|
|
644
|
+
|
|
645
|
+
### Type Safety Rules (Universal)
|
|
646
|
+
|
|
647
|
+
| Rule | Description |
|
|
648
|
+
|------|-------------|
|
|
649
|
+
| **Boundary Validation** | Validate only at system boundaries (API, JSON, user input) |
|
|
650
|
+
| **Internal Trust** | After validation, pass only precise types internally |
|
|
651
|
+
| **No Type Escape** | Never use escape hatches to "fix" type errors |
|
|
652
|
+
| **Explicit Signatures** | Specify types in function/method signatures |
|
|
653
|
+
| **Generics with Params** | Always use generics with type parameters |
|
|
654
|
+
|
|
655
|
+
### Quality Gate: Type Violations Block Merge
|
|
656
|
+
|
|
657
|
+
| Violation | Action |
|
|
658
|
+
|-----------|--------|
|
|
659
|
+
| Type escape hatches (`any`, `Any`, `Object`, `interface{}`, etc.) | β Block |
|
|
660
|
+
| Type suppression comments | β Block |
|
|
661
|
+
| Raw generic types | β Block |
|
|
662
|
+
| Missing function return types | β οΈ Warning |
|
|
663
|
+
| Excessive type casting | β οΈ Warning |
|
|
664
|
+
|
|
665
|
+
## Description
|
|
666
|
+
|
|
667
|
+
Read PTCF structured SPEC document and execute implementation immediately.
|
|
668
|
+
|
|
669
|
+
> **PLAN, TASKS documents unnecessary** - SPEC is the executable prompt
|
|
670
|
+
|
|
671
|
+
## Model Orchestration (Intelligent Routing)
|
|
672
|
+
|
|
673
|
+
Automatically select optimal model based on **task complexity analysis**.
|
|
674
|
+
|
|
675
|
+
### Complexity-Based Model Selection
|
|
676
|
+
|
|
677
|
+
| Complexity Score | Model | When to Use |
|
|
678
|
+
|------------------|-------|-------------|
|
|
679
|
+
| 0-7 (Low) | **Haiku** | Simple fixes, searches, single file changes |
|
|
680
|
+
| 8-19 (Medium) | **Sonnet** | Standard features, 3-5 files, integrations |
|
|
681
|
+
| 20+ (High) | **Opus** | Architecture, security, multi-service, 6+ files |
|
|
682
|
+
|
|
683
|
+
### Complexity Signals
|
|
684
|
+
|
|
685
|
+
The following signals increase complexity score:
|
|
686
|
+
|
|
687
|
+
| Signal | Score |
|
|
688
|
+
|--------|-------|
|
|
689
|
+
| Architecture change | +15 |
|
|
690
|
+
| Security implication | +12 |
|
|
691
|
+
| Multi-service | +8 |
|
|
692
|
+
| Refactoring | +12 |
|
|
693
|
+
| 6+ files | +15 |
|
|
694
|
+
| 3-5 files | +8 |
|
|
695
|
+
| New feature | +5 |
|
|
696
|
+
| Bug fix | -3 |
|
|
697
|
+
| Documentation | -5 |
|
|
698
|
+
|
|
699
|
+
### Agent Tier System
|
|
700
|
+
|
|
701
|
+
Each agent has tier variants for cost optimization:
|
|
702
|
+
|
|
703
|
+
| Agent | Low (Haiku) | Medium (Sonnet) | High (Opus) |
|
|
704
|
+
|-------|-------------|-----------------|-------------|
|
|
705
|
+
| explorer | explorer-low | explorer-medium | explorer |
|
|
706
|
+
| implementer | implementer-low | implementer-medium | implementer |
|
|
707
|
+
| architect | architect-low | architect-medium | architect |
|
|
708
|
+
|
|
709
|
+
### Task Calls by Role
|
|
710
|
+
|
|
711
|
+
| Task Type | Model | Task Parameter |
|
|
712
|
+
|-----------|-------|----------------|
|
|
713
|
+
| Simple search | Haiku | `model: "haiku"` |
|
|
714
|
+
| Codebase exploration | Haiku/Sonnet | Auto-selected |
|
|
715
|
+
| Core implementation | Sonnet | `model: "sonnet"` |
|
|
716
|
+
| Test writing | Haiku | `model: "haiku"` |
|
|
717
|
+
| Architecture decisions | Opus | Main session |
|
|
718
|
+
| Final review | Opus | Main session |
|
|
719
|
+
|
|
720
|
+
### External LLM Usage (When Enabled)
|
|
721
|
+
|
|
722
|
+
When external LLMs are enabled in `.claude/vibe/config.json`:
|
|
723
|
+
|
|
724
|
+
| Role | Method | Condition |
|
|
725
|
+
|------|--------|-----------|
|
|
726
|
+
| User direct query | `gpt.question`, `gemini.question` | Hook auto-handles |
|
|
727
|
+
| Internal orchestration | Call global script via Bash | Claude calls directly |
|
|
728
|
+
|
|
729
|
+
**User questions (Hook auto-handles):**
|
|
730
|
+
- `gpt.question` - GPT architecture consultation
|
|
731
|
+
- `gemini.question` - Gemini Q&A/consultation
|
|
732
|
+
|
|
733
|
+
**Claude internal calls (directly via Bash):**
|
|
734
|
+
```bash
|
|
735
|
+
# Usage: node llm-orchestrate.js <provider> <mode> [systemPrompt] [prompt]
|
|
736
|
+
# - If systemPrompt omitted, uses default
|
|
737
|
+
# - If systemPrompt is "-", uses default and treats next argument as prompt
|
|
738
|
+
|
|
739
|
+
# [LLM_SCRIPT] = {{VIBE_PATH}}/hooks/scripts/llm-orchestrate.js
|
|
740
|
+
|
|
741
|
+
# GPT call (short prompt - CLI arg)
|
|
742
|
+
node "[LLM_SCRIPT]" gpt orchestrate-json "[question content]"
|
|
743
|
+
|
|
744
|
+
# Gemini call
|
|
745
|
+
node "[LLM_SCRIPT]" gemini orchestrate-json "[question content]"
|
|
746
|
+
|
|
747
|
+
# Custom system prompt usage
|
|
748
|
+
node "[LLM_SCRIPT]" gpt orchestrate-json "You are a code reviewer" "[question content]"
|
|
749
|
+
|
|
750
|
+
# Long prompt - use --input file (write JSON file first with Write tool)
|
|
751
|
+
# JSON format: {"prompt": "your prompt here"}
|
|
752
|
+
node "[LLM_SCRIPT]" gpt orchestrate-json --input "[SCRATCHPAD]/input.json"
|
|
753
|
+
```
|
|
754
|
+
|
|
755
|
+
### External LLM Fallback
|
|
756
|
+
|
|
757
|
+
**IMPORTANT**: When GPT/Gemini hook fails, Claude MUST handle the task directly:
|
|
758
|
+
|
|
759
|
+
**Fallback behavior**:
|
|
760
|
+
- Do NOT retry the external LLM call
|
|
761
|
+
- Claude handles the task using its own capabilities
|
|
762
|
+
- Continue with the implementation without interruption
|
|
763
|
+
- Log the fallback but don't block progress
|
|
764
|
+
|
|
765
|
+
## Core Tools (Semantic Analysis & Memory)
|
|
766
|
+
|
|
767
|
+
Use core tools for accurate codebase understanding and session continuity.
|
|
768
|
+
|
|
769
|
+
### Tool Invocation
|
|
770
|
+
|
|
771
|
+
All tools are called via:
|
|
772
|
+
```bash
|
|
773
|
+
node -e "import('{{VIBE_PATH_URL}}/node_modules/@su-record/vibe/dist/tools/index.js').then(t => t.TOOL_NAME({...args}).then(r => console.log(r.content[0].text)))"
|
|
774
|
+
```
|
|
775
|
+
|
|
776
|
+
### Semantic Analysis Tools
|
|
777
|
+
|
|
778
|
+
| Tool | Purpose | Usage |
|
|
779
|
+
|------|---------|-------|
|
|
780
|
+
| `findSymbol` | Find symbol definitions | `{symbolName: 'functionName', searchPath: '.'}` |
|
|
781
|
+
| `findReferences` | Find all references | `{symbolName: 'functionName', searchPath: '.'}` |
|
|
782
|
+
| `analyzeComplexity` | Analyze code complexity | `{filePath: 'src/file.ts'}` |
|
|
783
|
+
| `validateCodeQuality` | Validate code quality | `{filePath: 'src/file.ts'}` |
|
|
784
|
+
|
|
785
|
+
**Example - Find symbol:**
|
|
786
|
+
```bash
|
|
787
|
+
node -e "import('{{VIBE_PATH_URL}}/node_modules/@su-record/vibe/dist/tools/index.js').then(t => t.findSymbol({symbolName: 'login', searchPath: '.'}).then(r => console.log(r.content[0].text)))"
|
|
788
|
+
```
|
|
789
|
+
|
|
790
|
+
### Memory Tools
|
|
791
|
+
|
|
792
|
+
| Tool | Purpose | Usage |
|
|
793
|
+
|------|---------|-------|
|
|
794
|
+
| `saveMemory` | Save important decisions | `{key: 'decision-name', value: 'content', category: 'project'}` |
|
|
795
|
+
| `recallMemory` | Recall saved memory | `{key: 'decision-name'}` |
|
|
796
|
+
| `listMemories` | List all memories | `{category: 'project'}` |
|
|
797
|
+
|
|
798
|
+
**Example - Save important decision:**
|
|
799
|
+
```bash
|
|
800
|
+
node -e "import('{{VIBE_PATH_URL}}/node_modules/@su-record/vibe/dist/tools/index.js').then(t => t.saveMemory({key: 'auth-pattern', value: 'Using JWT with refresh tokens', category: 'project'}).then(r => console.log(r.content[0].text)))"
|
|
801
|
+
```
|
|
802
|
+
|
|
803
|
+
### Session Management (Auto via Hooks)
|
|
804
|
+
|
|
805
|
+
- **Session start**: Hook auto-calls `startSession` to restore previous context
|
|
806
|
+
- **Context 80%+**: Hook auto-calls `autoSaveContext` to preserve state
|
|
807
|
+
|
|
808
|
+
## Process
|
|
809
|
+
|
|
810
|
+
### 1. Load SPEC + Feature
|
|
811
|
+
|
|
812
|
+
**Search order (check BOTH file AND folder):**
|
|
813
|
+
|
|
814
|
+
```
|
|
815
|
+
Step 1: Check if SPLIT structure exists (folder)
|
|
816
|
+
π .claude/vibe/specs/{feature-name}/ β Folder with _index.md + phase files
|
|
817
|
+
π .claude/vibe/features/{feature-name}/ β Folder with _index.feature + phase files
|
|
818
|
+
|
|
819
|
+
Step 2: If no folder, check single file
|
|
820
|
+
π .claude/vibe/specs/{feature-name}.md β Single SPEC file
|
|
821
|
+
π .claude/vibe/features/{feature-name}.feature β Single Feature file
|
|
822
|
+
|
|
823
|
+
Step 3: If neither exists β Error
|
|
824
|
+
```
|
|
825
|
+
|
|
826
|
+
**Split structure (folder) detected:**
|
|
827
|
+
```
|
|
828
|
+
π .claude/vibe/specs/{feature-name}/
|
|
829
|
+
βββ _index.md β Master SPEC (read first for overview)
|
|
830
|
+
βββ phase-1-{name}.md β Phase 1 SPEC
|
|
831
|
+
βββ phase-2-{name}.md β Phase 2 SPEC
|
|
832
|
+
βββ ...
|
|
833
|
+
|
|
834
|
+
π .claude/vibe/features/{feature-name}/
|
|
835
|
+
βββ _index.feature β Master Feature (read first for scenario overview)
|
|
836
|
+
βββ phase-1-{name}.feature β Phase 1 scenarios
|
|
837
|
+
βββ phase-2-{name}.feature β Phase 2 scenarios
|
|
838
|
+
βββ ...
|
|
839
|
+
|
|
840
|
+
β Load _index.md first, then load phase files in order
|
|
841
|
+
β Execute phases sequentially (or per --phase flag)
|
|
842
|
+
```
|
|
843
|
+
|
|
844
|
+
**Single file detected:**
|
|
845
|
+
```
|
|
846
|
+
π .claude/vibe/specs/{feature-name}.md β SPEC (structure, constraints, context)
|
|
847
|
+
π .claude/vibe/features/{feature-name}.feature β Feature (scenario = implementation unit)
|
|
848
|
+
```
|
|
849
|
+
|
|
850
|
+
**Error if NEITHER file NOR folder found:**
|
|
851
|
+
```
|
|
852
|
+
β SPEC not found. Searched:
|
|
853
|
+
- .claude/vibe/specs/{feature-name}/ (folder)
|
|
854
|
+
- .claude/vibe/specs/{feature-name}.md (file)
|
|
855
|
+
|
|
856
|
+
Run /vibe.spec "{feature-name}" first.
|
|
857
|
+
```
|
|
858
|
+
|
|
859
|
+
### 1-1. Phase Isolation Protocol (Large SPEC Guard)
|
|
860
|
+
|
|
861
|
+
> **Problem**: Large SPECs (3+ phases, 5+ scenarios) overflow context β agent drifts from SPEC by Phase 3.
|
|
862
|
+
> **Solution**: Load only the current phase's SPEC section. Re-anchor before each scenario.
|
|
863
|
+
|
|
864
|
+
**Phase Isolation Rules (MANDATORY for 3+ phases):**
|
|
865
|
+
|
|
866
|
+
```
|
|
867
|
+
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
|
|
868
|
+
β PHASE ISOLATION PROTOCOL β
|
|
869
|
+
β β
|
|
870
|
+
β β WRONG: Load entire SPEC β implement all phases β
|
|
871
|
+
β β
RIGHT: Load _index overview β per-phase load β implement β
|
|
872
|
+
β β
|
|
873
|
+
β Step A: Read _index.md (overview only β phase list, REQ IDs) β
|
|
874
|
+
β Step B: For each Phase N: β
|
|
875
|
+
β 1. RE-READ Phase N SPEC section (every time, no memory) β
|
|
876
|
+
β 2. RE-READ Phase N Feature scenarios β
|
|
877
|
+
β 3. Extract Phase N scope: files, scenarios, requirements β
|
|
878
|
+
β 4. Implement Phase N scenarios β
|
|
879
|
+
β 5. Verify Phase N β
|
|
880
|
+
β 6. Write Phase Checkpoint β .claude/vibe/checkpoints/ β
|
|
881
|
+
β 7. DISCARD Phase N details from working memory β
|
|
882
|
+
β Step C: Next Phase β go to Step B β
|
|
883
|
+
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
|
|
884
|
+
```
|
|
885
|
+
|
|
886
|
+
**Phase Checkpoint Format** (`.claude/vibe/checkpoints/{feature}-phase-{N}.md`):
|
|
887
|
+
|
|
888
|
+
```markdown
|
|
889
|
+
# Checkpoint: {feature} Phase {N}
|
|
890
|
+
|
|
891
|
+
## Completed
|
|
892
|
+
- Scenario 1: {name} β
|
|
893
|
+
- Scenario 2: {name} β
|
|
894
|
+
|
|
895
|
+
## Files Changed
|
|
896
|
+
- src/auth.service.ts (added login(), validateToken())
|
|
897
|
+
- src/auth.controller.ts (POST /login, POST /refresh)
|
|
898
|
+
|
|
899
|
+
## State for Next Phase
|
|
900
|
+
- Auth service exports: login(), logout(), validateToken(), refreshToken()
|
|
901
|
+
- JWT secret configured in .env (JWT_SECRET)
|
|
902
|
+
- Test baseline: 12 tests passing
|
|
903
|
+
|
|
904
|
+
## Remaining Phases
|
|
905
|
+
- Phase {N+1}: {name} β {scenario count} scenarios
|
|
906
|
+
- Phase {N+2}: {name} β {scenario count} scenarios
|
|
907
|
+
```
|
|
908
|
+
|
|
909
|
+
**SPEC Re-anchoring (Before EVERY scenario):**
|
|
910
|
+
|
|
911
|
+
```
|
|
912
|
+
Before implementing Scenario X:
|
|
913
|
+
1. Re-read the EXACT Given/When/Then from Feature file (not from memory!)
|
|
914
|
+
2. Compare: "Am I about to implement what the SPEC says, or what I think it says?"
|
|
915
|
+
3. If single-file SPEC: re-read only the current phase section (use line offsets)
|
|
916
|
+
4. If split SPEC: re-read only phase-N-{name}.md
|
|
917
|
+
```
|
|
918
|
+
|
|
919
|
+
**Scope Lock (Per Phase):**
|
|
920
|
+
|
|
921
|
+
```
|
|
922
|
+
At Phase start, declare:
|
|
923
|
+
MODIFY: [list of files this phase will touch]
|
|
924
|
+
CREATE: [list of files this phase will create]
|
|
925
|
+
DO NOT TOUCH: everything else
|
|
926
|
+
|
|
927
|
+
If implementation requires files outside scope:
|
|
928
|
+
β STOP. Re-read SPEC. Is this actually needed?
|
|
929
|
+
β If yes: add to scope with explicit justification
|
|
930
|
+
β If no: you're drifting. Return to SPEC.
|
|
931
|
+
```
|
|
932
|
+
|
|
933
|
+
**Context Pressure Handling:**
|
|
934
|
+
|
|
935
|
+
| Context Level | Action |
|
|
936
|
+
|---------------|--------|
|
|
937
|
+
| < 50% | Normal execution |
|
|
938
|
+
| 50-70% | Save checkpoint, trim exploration results |
|
|
939
|
+
| 70%+ | Save checkpoint β `/new` β resume from checkpoint |
|
|
940
|
+
| Phase boundary | Always save checkpoint regardless of context level |
|
|
941
|
+
|
|
942
|
+
### 1-2. SPEC-First Gate (Level 3: Spec = Source of Truth)
|
|
943
|
+
|
|
944
|
+
> **Principle**: SPEC is the source of truth for code. To modify code, update the SPEC first.
|
|
945
|
+
|
|
946
|
+
**When a change not in the SPEC is needed during implementation:**
|
|
947
|
+
|
|
948
|
+
```
|
|
949
|
+
Discovery during implementation: "An API endpoint not in SPEC is needed"
|
|
950
|
+
β
|
|
951
|
+
ββ Already in SPEC?
|
|
952
|
+
β YES β Implement as-is
|
|
953
|
+
β
|
|
954
|
+
ββ Not in SPEC but within SPEC scope?
|
|
955
|
+
β YES β Add to SPEC first (Edit tool β SPEC file)
|
|
956
|
+
β β Add corresponding scenario to Feature file
|
|
957
|
+
β β Then implement
|
|
958
|
+
β
|
|
959
|
+
ββ Outside SPEC scope?
|
|
960
|
+
YES β Record as TODO and exclude from current scope
|
|
961
|
+
.claude/vibe/todos/out-of-scope-{item}.md
|
|
962
|
+
```
|
|
963
|
+
|
|
964
|
+
**Required when changing SPEC:**
|
|
965
|
+
|
|
966
|
+
1. Update REQ-* IDs in SPEC file (add new requirements)
|
|
967
|
+
2. Add corresponding scenarios to Feature file
|
|
968
|
+
3. New REQ-* must be traceable in RTM after implementation
|
|
969
|
+
|
|
970
|
+
**Reverse direction also applies β when requirements change from code:**
|
|
971
|
+
|
|
972
|
+
```
|
|
973
|
+
Test failure β "Is this behavior correct?"
|
|
974
|
+
β
|
|
975
|
+
ββ Check SPEC β If SPEC is correct, fix the code
|
|
976
|
+
β
|
|
977
|
+
ββ If SPEC is wrong β Fix SPEC first β Then fix code
|
|
978
|
+
(Changing code without updating SPEC causes SPEC β code drift)
|
|
979
|
+
```
|
|
980
|
+
|
|
981
|
+
**Extended Git commit rules:**
|
|
982
|
+
|
|
983
|
+
- SPEC changes and code changes must be in the same commit
|
|
984
|
+
- Committing feature code without SPEC changes β warning (except intentional refactoring)
|
|
985
|
+
|
|
986
|
+
### 2. Extract Scenario List
|
|
987
|
+
|
|
988
|
+
Extract all Scenarios from Feature file:
|
|
989
|
+
|
|
990
|
+
```markdown
|
|
991
|
+
## Scenarios to Implement
|
|
992
|
+
|
|
993
|
+
| # | Scenario | Status |
|
|
994
|
+
|---|----------|--------|
|
|
995
|
+
| 1 | Valid login success | β¬ |
|
|
996
|
+
| 2 | Invalid password error | β¬ |
|
|
997
|
+
| 3 | Email format validation | β¬ |
|
|
998
|
+
| 4 | Password reset link | β¬ |
|
|
999
|
+
|
|
1000
|
+
Total: 4 scenarios
|
|
1001
|
+
```
|
|
1002
|
+
|
|
1003
|
+
### 3. Scenario-by-Scenario Implementation (Core)
|
|
1004
|
+
|
|
1005
|
+
**For each scenario**:
|
|
1006
|
+
|
|
1007
|
+
```
|
|
1008
|
+
ββββββββββββββββββββββββββββββββββββββββββββ
|
|
1009
|
+
π― Scenario 1/4: Valid login success
|
|
1010
|
+
ββββββββββββββββββββββββββββββββββββββββββββ
|
|
1011
|
+
|
|
1012
|
+
Given: User is registered
|
|
1013
|
+
When: Login with valid email and password
|
|
1014
|
+
Then: Login success + JWT token returned
|
|
1015
|
+
|
|
1016
|
+
[Step 1] Analyzing implementation...
|
|
1017
|
+
- Required files: auth.service.ts, login.controller.ts
|
|
1018
|
+
- Exploring related code...
|
|
1019
|
+
|
|
1020
|
+
[Step 2] Implementing...
|
|
1021
|
+
β
auth.service.ts - Added login() method
|
|
1022
|
+
β
login.controller.ts - POST /login endpoint
|
|
1023
|
+
|
|
1024
|
+
[Step 3] Verifying...
|
|
1025
|
+
β
Given: Test user creation possible
|
|
1026
|
+
β
When: Login API call succeeded
|
|
1027
|
+
β
Then: JWT token return confirmed
|
|
1028
|
+
|
|
1029
|
+
β
Scenario 1 passed!
|
|
1030
|
+
ββββββββββββββββββββββββββββββββββββββββββββ
|
|
1031
|
+
```
|
|
1032
|
+
|
|
1033
|
+
**On failure**:
|
|
1034
|
+
|
|
1035
|
+
```
|
|
1036
|
+
ββββββββββββββββββββββββββββββββββββββββββββ
|
|
1037
|
+
π― Scenario 2/4: Invalid password error
|
|
1038
|
+
ββββββββββββββββββββββββββββββββββββββββββββ
|
|
1039
|
+
|
|
1040
|
+
[Step 3] Verifying...
|
|
1041
|
+
β
Given: Test user exists
|
|
1042
|
+
β
When: Login attempt with wrong password
|
|
1043
|
+
β Then: "Invalid credentials" error message
|
|
1044
|
+
Actual: "Error occurred" returned
|
|
1045
|
+
|
|
1046
|
+
[Auto-fix 1/3]
|
|
1047
|
+
Cause: Error message not properly set
|
|
1048
|
+
Fix: auth.service.ts line 42
|
|
1049
|
+
|
|
1050
|
+
[Re-verify]
|
|
1051
|
+
β
Then: "Invalid credentials" error message
|
|
1052
|
+
|
|
1053
|
+
β
Scenario 2 passed! (1 fix)
|
|
1054
|
+
ββββββββββββββββββββββββββββββββββββββββββββ
|
|
1055
|
+
```
|
|
1056
|
+
|
|
1057
|
+
---
|
|
1058
|
+
|
|
1059
|
+
## **CRITICAL: Parallel Sub-Agent Execution**
|
|
1060
|
+
|
|
1061
|
+
> **MUST USE PARALLEL TASK CALLS** - This is REQUIRED, not optional.
|
|
1062
|
+
> Sequential execution when parallel is possible = VIOLATION of this workflow.
|
|
1063
|
+
|
|
1064
|
+
### Codex λ³λ ¬ ꡬν (Codex νλ¬κ·ΈμΈ νμ±ν μ)
|
|
1065
|
+
|
|
1066
|
+
> **νμ±ν 쑰건**: Codex νλ¬κ·ΈμΈ μ€μΉ + λ
립μ μΈ μλλ¦¬μ€ 2κ° μ΄μ
|
|
1067
|
+
> λ―Έμ€μΉ μ κΈ°μ‘΄ Claude μλΈμμ΄μ νΈ λ°©μμΌλ‘ λμ.
|
|
1068
|
+
|
|
1069
|
+
λ
립μ μΈ μλ리μ€(νμΌ μμ‘΄μ± μμ)λ₯Ό Codexμ μμνμ¬ Claudeμ **λ³λ ¬ ꡬν**:
|
|
1070
|
+
|
|
1071
|
+
```
|
|
1072
|
+
/codex:rescue "Implement scenario: {scenario-name}. Files: {file-list}. Requirements: {requirements-summary}" --background
|
|
1073
|
+
```
|
|
1074
|
+
|
|
1075
|
+
- Claudeλ λ€μ μλ리μ€λ₯Ό **λμμ** ꡬν
|
|
1076
|
+
- Codex μλ£ μ `/codex:result`λ‘ κ²°κ³Ό νμΈ
|
|
1077
|
+
- μΆ©λ λ°μ μ Claudeκ° merge νλ¨
|
|
1078
|
+
|
|
1079
|
+
**μμ κΈ°μ€**:
|
|
1080
|
+
- μλλ¦¬μ€ κ° νμΌ μμ‘΄μ± μμ (λ
립μ )
|
|
1081
|
+
- μλλ¦¬μ€ λ³΅μ‘λ μ€κ° μ΄ν
|
|
1082
|
+
- μμ‘΄μ± μλ μλ리μ€λ Claudeκ° μ§μ ꡬν
|
|
1083
|
+
|
|
1084
|
+
### Mandatory Parallel Exploration (Phase Start)
|
|
1085
|
+
|
|
1086
|
+
**BEFORE any implementation, you MUST launch these Task calls IN PARALLEL (single message, multiple tool calls):**
|
|
1087
|
+
|
|
1088
|
+
```
|
|
1089
|
+
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
|
|
1090
|
+
β STEP 1: PARALLEL EXPLORATION (REQUIRED) β
|
|
1091
|
+
β β
|
|
1092
|
+
β Launch ALL of these in ONE message: β
|
|
1093
|
+
β β
|
|
1094
|
+
β Task(haiku) ββ¬ββ "Analyze related files in <context>" β
|
|
1095
|
+
β β β
|
|
1096
|
+
β Task(haiku) ββΌββ "Check dependencies and imports" β
|
|
1097
|
+
β β β
|
|
1098
|
+
β Task(haiku) ββ΄ββ "Find existing patterns and conventions" β
|
|
1099
|
+
β β
|
|
1100
|
+
β [If GPT enabled] Bash: node "[LLM_SCRIPT]" gpt-codex orchestrate-json "[question]"
|
|
1101
|
+
β [If Gemini enabled] Bash: node "[LLM_SCRIPT]" gemini orchestrate-json "[question]"
|
|
1102
|
+
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
|
|
1103
|
+
β
|
|
1104
|
+
β (wait for all to complete)
|
|
1105
|
+
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
|
|
1106
|
+
β STEP 2: SYNTHESIZE (Opus) β
|
|
1107
|
+
β - Review all exploration results β
|
|
1108
|
+
β - Decide implementation approach β
|
|
1109
|
+
β - Identify files to modify/create β
|
|
1110
|
+
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
|
|
1111
|
+
β
|
|
1112
|
+
β
|
|
1113
|
+
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
|
|
1114
|
+
β STEP 3: IMPLEMENT + BACKGROUND AGENTS (PARALLEL) β
|
|
1115
|
+
β β
|
|
1116
|
+
β Main Agent (sonnet): β
|
|
1117
|
+
β βββ Execute current phase implementation β
|
|
1118
|
+
β β
|
|
1119
|
+
β Background Agents (haiku, run_in_background=true): β
|
|
1120
|
+
β βββ Task: "Prepare Phase N+1 - analyze required files" β
|
|
1121
|
+
β βββ Task: "Pre-generate test cases for current implementation" β
|
|
1122
|
+
β βββ Task: "Search for related types/interfaces needed" β
|
|
1123
|
+
β β
|
|
1124
|
+
β [ULTRAWORK] All 4 agents run simultaneously! β
|
|
1125
|
+
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
|
|
1126
|
+
β
|
|
1127
|
+
β (main completes, check backgrounds)
|
|
1128
|
+
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
|
|
1129
|
+
β STEP 4: TEST + PHASE PIPELINING β
|
|
1130
|
+
β β
|
|
1131
|
+
β Current Phase: β
|
|
1132
|
+
β βββ Task(haiku): Write tests using pre-generated cases β
|
|
1133
|
+
β β
|
|
1134
|
+
β Next Phase Prep (from background results): β
|
|
1135
|
+
β βββ Already have file analysis, ready to start immediately β
|
|
1136
|
+
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
|
|
1137
|
+
```
|
|
1138
|
+
|
|
1139
|
+
### Parallel Task Call Pattern (MUST FOLLOW)
|
|
1140
|
+
|
|
1141
|
+
**Correct - Single message with multiple parallel Tasks:**
|
|
1142
|
+
```
|
|
1143
|
+
<message>
|
|
1144
|
+
Task(haiku, "Analyze src/components/ for existing patterns")
|
|
1145
|
+
Task(haiku, "Check package.json dependencies")
|
|
1146
|
+
Task(haiku, "Find usage of similar features in codebase")
|
|
1147
|
+
</message>
|
|
1148
|
+
β All 3 run simultaneously, ~3x faster
|
|
1149
|
+
```
|
|
1150
|
+
|
|
1151
|
+
**WRONG - Sequential calls (DO NOT DO THIS):**
|
|
1152
|
+
```
|
|
1153
|
+
<message>Task(haiku, "Analyze...")</message>
|
|
1154
|
+
<message>Task(haiku, "Check...")</message>
|
|
1155
|
+
<message>Task(haiku, "Find...")</message>
|
|
1156
|
+
β 3x slower, wastes time
|
|
1157
|
+
```
|
|
1158
|
+
|
|
1159
|
+
### Background Agent Pattern (ULTRAWORK) via Orchestrator
|
|
1160
|
+
|
|
1161
|
+
**Launch background agents for next phase via Orchestrator:**
|
|
1162
|
+
```bash
|
|
1163
|
+
# Start background agent (doesn't block)
|
|
1164
|
+
node -e "import('{{VIBE_PATH_URL}}/node_modules/@su-record/vibe/dist/infra/orchestrator/index.js').then(o => o.runAgent('Phase 2 prep: Analyze auth API endpoints', 'phase2-prep').then(r => console.log(r.content[0].text)))"
|
|
1165
|
+
|
|
1166
|
+
# Multiple backgrounds in parallel
|
|
1167
|
+
node -e "import('{{VIBE_PATH_URL}}/node_modules/@su-record/vibe/dist/infra/orchestrator/index.js').then(async o => {
|
|
1168
|
+
await Promise.all([
|
|
1169
|
+
o.runAgent('Phase 2 prep: Analyze auth API endpoints', 'phase2-prep'),
|
|
1170
|
+
o.runAgent('Pre-generate test cases for login form', 'test-prep'),
|
|
1171
|
+
o.runAgent('Find existing validation patterns', 'pattern-finder')
|
|
1172
|
+
]);
|
|
1173
|
+
console.log('All background agents started');
|
|
1174
|
+
})"
|
|
1175
|
+
```
|
|
1176
|
+
|
|
1177
|
+
**Check background agent status:**
|
|
1178
|
+
```bash
|
|
1179
|
+
node -e "import('{{VIBE_PATH_URL}}/node_modules/@su-record/vibe/dist/infra/orchestrator/index.js').then(o => console.log(o.status().content[0].text))"
|
|
1180
|
+
```
|
|
1181
|
+
|
|
1182
|
+
**Get result when ready:**
|
|
1183
|
+
```bash
|
|
1184
|
+
node -e "import('{{VIBE_PATH_URL}}/node_modules/@su-record/vibe/dist/infra/orchestrator/index.js').then(o => o.getResult('SESSION_ID').then(r => console.log(r.content[0].text)))"
|
|
1185
|
+
```
|
|
1186
|
+
|
|
1187
|
+
**Why Background Agents Matter:**
|
|
1188
|
+
|
|
1189
|
+
| Without Background | With Background |
|
|
1190
|
+
|--------------------|-----------------|
|
|
1191
|
+
| Phase 1: 60s | Phase 1: 60s (+ backgrounds running) |
|
|
1192
|
+
| Phase 2 prep: 20s | Phase 2 prep: 0s (already done!) |
|
|
1193
|
+
| Phase 2: 60s | Phase 2: 60s |
|
|
1194
|
+
| **Total: 140s** | **Total: 120s** |
|
|
1195
|
+
|
|
1196
|
+
For 5 phases: 4 Γ 20s saved = **80s faster**
|
|
1197
|
+
|
|
1198
|
+
### Why Parallel Matters
|
|
1199
|
+
|
|
1200
|
+
| Approach | Time | Cache Benefit |
|
|
1201
|
+
|----------|------|---------------|
|
|
1202
|
+
| Sequential (3 Tasks) | ~30s | Cache cold on each |
|
|
1203
|
+
| **Parallel (3 Tasks)** | **~10s** | **Cache warmed once, shared** |
|
|
1204
|
+
|
|
1205
|
+
core ProjectCache (LRU) caches ts-morph parsing results. Parallel calls share the warmed cache.
|
|
1206
|
+
|
|
1207
|
+
### UI/UX Design Intelligence (Auto-triggered before Phase 1)
|
|
1208
|
+
|
|
1209
|
+
> **쑰건**: SPEC λλ Featureμ UI/UX ν€μλ ν¬ν¨ μ μλ μ€ν
|
|
1210
|
+
> **λΉνμ±ν**: `.claude/vibe/config.json`μ `"uiUxAnalysis": false` μ€μ
|
|
1211
|
+
|
|
1212
|
+
**Phase 1 μμ μ , 2κ° μμ΄μ νΈ μλ μ€ν:**
|
|
1213
|
+
|
|
1214
|
+
| Agent | Condition | Role |
|
|
1215
|
+
|-------|-----------|------|
|
|
1216
|
+
| β£ ui-stack-implementer | **νμ μ€ν** | νλ μμν¬λ³ μ»΄ν¬λνΈ κ°μ΄λλΌμΈ μ 곡 |
|
|
1217
|
+
| β€ ui-dataviz-advisor | **쑰건λΆ** (chart/dashboard/visualization ν€μλ) | μ°¨νΈ/μκ°ν λΌμ΄λΈλ¬λ¦¬ μΆμ² |
|
|
1218
|
+
|
|
1219
|
+
**μ€ν λ°©λ²:**
|
|
1220
|
+
|
|
1221
|
+
```text
|
|
1222
|
+
# β£ νμ μ€ν (Haiku)
|
|
1223
|
+
Task(subagent_type="ui-stack-implementer",
|
|
1224
|
+
prompt="Provide implementation guidelines for project '{project}' using {detected_stack}. Use core_ui_stack_search for framework-specific patterns.")
|
|
1225
|
+
|
|
1226
|
+
# β€ μ‘°κ±΄λΆ μ€ν (Haiku) β SPECμ μ°¨νΈ/λμ보λ/μκ°ν ν€μλ ν¬ν¨ μ
|
|
1227
|
+
Task(subagent_type="ui-dataviz-advisor",
|
|
1228
|
+
prompt="Recommend data visualization approach for project '{project}'. Use core_ui_search for chart types and react-performance patterns.")
|
|
1229
|
+
```
|
|
1230
|
+
|
|
1231
|
+
**λμμΈ μμ€ν
μλ μ°Έμ‘°:**
|
|
1232
|
+
- `.claude/vibe/design-system/{project}/MASTER.md` μ‘΄μ¬ μ μλ λ‘λ
|
|
1233
|
+
- ꡬν μμ΄μ νΈκ° CSS λ³μ, ν°νΈ, μμ νλ νΈλ₯Ό μ§μ μ°Έμ‘°
|
|
1234
|
+
- νμ΄μ§λ³ μ€λ²λΌμ΄λ `pages/{page}.md` μ‘΄μ¬ μ μ°μ μ μ©
|
|
1235
|
+
|
|
1236
|
+
### Phase Execution Flow (ULTRAWORK Pipeline)
|
|
1237
|
+
|
|
1238
|
+
```
|
|
1239
|
+
Phase N Start
|
|
1240
|
+
β
|
|
1241
|
+
βββ [PARALLEL] Task(haiku) Γ 3: Exploration
|
|
1242
|
+
β - Related code analysis
|
|
1243
|
+
β - Dependency check
|
|
1244
|
+
β - Pattern discovery
|
|
1245
|
+
β
|
|
1246
|
+
β (all complete)
|
|
1247
|
+
β
|
|
1248
|
+
βββ Opus: Synthesize and decide
|
|
1249
|
+
β
|
|
1250
|
+
βββ [PARALLEL PIPELINE] βββ KEY SPEED OPTIMIZATION
|
|
1251
|
+
β β
|
|
1252
|
+
β βββ Main: Task(sonnet) Implementation
|
|
1253
|
+
β β
|
|
1254
|
+
β βββ Background (run_in_background=true):
|
|
1255
|
+
β βββ Task(haiku): Phase N+1 file analysis
|
|
1256
|
+
β βββ Task(haiku): Test case preparation
|
|
1257
|
+
β βββ Task(haiku): Type/interface lookup
|
|
1258
|
+
β
|
|
1259
|
+
β (main completes)
|
|
1260
|
+
β
|
|
1261
|
+
βββ Task(haiku): Tests (uses pre-generated cases)
|
|
1262
|
+
β
|
|
1263
|
+
β
|
|
1264
|
+
Phase N Complete
|
|
1265
|
+
β
|
|
1266
|
+
β (Background results ready - NO WAIT for Phase N+1 exploration!)
|
|
1267
|
+
β
|
|
1268
|
+
Phase N+1 Start (IMMEDIATE - exploration already done!)
|
|
1269
|
+
```
|
|
1270
|
+
|
|
1271
|
+
**Speed Comparison:**
|
|
1272
|
+
|
|
1273
|
+
| Mode | Phase Time | 5 Phases Total |
|
|
1274
|
+
|------|------------|----------------|
|
|
1275
|
+
| Sequential | ~2min/phase | ~10min |
|
|
1276
|
+
| Parallel Exploration | ~1.5min/phase | ~7.5min |
|
|
1277
|
+
| **ULTRAWORK Pipeline** | **~1min/phase** | **~5min** |
|
|
1278
|
+
|
|
1279
|
+
**Why Pipeline is Faster:**
|
|
1280
|
+
- Background agents prepare next phase WHILE current phase implements
|
|
1281
|
+
- No idle time between phases
|
|
1282
|
+
- Test cases pre-generated during implementation
|
|
1283
|
+
- Cache stays warm across parallel tasks
|
|
1284
|
+
|
|
1285
|
+
---
|
|
1286
|
+
|
|
1287
|
+
### Agent Teams β Dev Team
|
|
1288
|
+
|
|
1289
|
+
> **Agent Teams**: μμ΄μ νΈλ€μ΄ νμ μ΄λ£¨μ΄ μλ‘ μν΅νλ©° ꡬνν©λλ€.
|
|
1290
|
+
> μ€μ : `CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS=1` + `teammateMode: in-process` (`~/.claude/settings.json` μ μ β postinstall μλ μ€μ )
|
|
1291
|
+
|
|
1292
|
+
**ν ꡬμ±:**
|
|
1293
|
+
|
|
1294
|
+
| νμ | μν |
|
|
1295
|
+
|------|------|
|
|
1296
|
+
| architect (리λ) | μ€κ³ κ²°μ , ꡬν λ°©ν₯ μ‘°μ¨, SPEC μ€μ κ²μ¦, ν ν©μ μ£Όλ |
|
|
1297
|
+
| implementer | ν΅μ¬ λΉμ¦λμ€ λ‘μ§ κ΅¬ν, architect μ€κ³λ₯Ό λ°λΌ μ½λ μμ± |
|
|
1298
|
+
| tester | ꡬν μλ£ μ¦μ ν
μ€νΈ μμ±, μ€ν¨ μ implementerμ νΌλλ°± |
|
|
1299
|
+
| security-reviewer | μ€μκ° λ³΄μ μ·¨μ½μ κ²μ¦, λΈλ‘νΉ μ΄μ μλ³ |
|
|
1300
|
+
|
|
1301
|
+
**μ€ν μμ:**
|
|
1302
|
+
|
|
1303
|
+
1. `TeamCreate(team_name="dev-{feature}")` β ν + 곡μ νμ€ν¬ 리μ€νΈ μμ±
|
|
1304
|
+
2. 4κ° νμ λ³λ ¬ μμ± β κ°κ° `Task(team_name=..., name=..., subagent_type=...)` μΌλ‘ spawn
|
|
1305
|
+
3. architectκ° SPEC Phaseλ₯Ό λΆμνμ¬ κ΅¬ν κ³ν μ립 β TaskListμ μμ
λ±λ‘
|
|
1306
|
+
4. νμλ€μ΄ TaskListμμ μμ
μ claimνκ³ , SendMessageλ‘ μ€μκ° νμ
|
|
1307
|
+
5. λͺ¨λ μλλ¦¬μ€ κ²μ¦ μλ£ β νμ shutdown_request β TeamDeleteλ‘ μ 리
|
|
1308
|
+
|
|
1309
|
+
**νμ spawn ν¨ν΄:**
|
|
1310
|
+
|
|
1311
|
+
```text
|
|
1312
|
+
TeamCreate(team_name="dev-{feature}", description="Implementation team for {feature} Phase {N}")
|
|
1313
|
+
|
|
1314
|
+
# 4κ° λ³λ ¬ spawn
|
|
1315
|
+
Task(team_name="dev-{feature}", name="architect", subagent_type="architect",
|
|
1316
|
+
prompt="ꡬν ν 리λ. Phase {N}μ SPECμ λΆμνκ³ κ΅¬ν κ³νμ μ립νμΈμ.
|
|
1317
|
+
SPEC: {spec_content}
|
|
1318
|
+
Feature Scenarios: {scenarios}
|
|
1319
|
+
μν : μ€κ³ κ²°μ , ꡬν λ°©ν₯ μ‘°μ¨, νμ κ° μΆ©λ ν΄κ²°, SPEC μ€μ κ²μ¦.
|
|
1320
|
+
TaskListμ ꡬν μμ
μ λ±λ‘νμΈμ. implementerμκ² μ€κ³λ₯Ό SendMessageλ‘ μ λ¬νμΈμ.
|
|
1321
|
+
λͺ¨λ μλ리μ€κ° ν΅κ³Όν λκΉμ§ νμ μ‘°μ¨νμΈμ.")
|
|
1322
|
+
|
|
1323
|
+
Task(team_name="dev-{feature}", name="implementer", subagent_type="implementer",
|
|
1324
|
+
mode="bypassPermissions",
|
|
1325
|
+
prompt="ꡬν ν μ½λ λ΄λΉ. SPEC: {spec_content}
|
|
1326
|
+
μν : architectμ μ€κ³λ₯Ό λ°λΌ νλ‘λμ
μ½λ μμ±.
|
|
1327
|
+
architectμκ²μ μ€κ³λ₯Ό λ°μΌλ©΄ ꡬνμ μμνμΈμ.
|
|
1328
|
+
μ»΄ν¬λνΈ κ΅¬ν μλ£ μ testerμκ² SendMessageλ‘ ν
μ€νΈ μμ²νμΈμ.
|
|
1329
|
+
security-reviewerμ λΈλ‘νΉ μ΄μλ μ¦μ μμ νμΈμ.
|
|
1330
|
+
TaskListμμ ꡬν μμ
μ claimνμΈμ.")
|
|
1331
|
+
|
|
1332
|
+
Task(team_name="dev-{feature}", name="tester", subagent_type="tester",
|
|
1333
|
+
mode="bypassPermissions",
|
|
1334
|
+
prompt="ꡬν ν ν
μ€νΈ λ΄λΉ. SPEC: {spec_content}
|
|
1335
|
+
μν : implementerκ° μλ£ν μ»΄ν¬λνΈλΆν° μ¦μ ν
μ€νΈ μμ±.
|
|
1336
|
+
ꡬν μ 체λ₯Ό κΈ°λ€λ¦¬μ§ λ§κ³ μ»΄ν¬λνΈ λ¨μλ‘ μ μ§μ ν
μ€νΈνμΈμ.
|
|
1337
|
+
ν
μ€νΈ μ€ν¨ μ implementerμκ² SendMessageλ‘ νΌλλ°±νμΈμ.
|
|
1338
|
+
edge case λ°κ²¬ μ architectμκ² μ€κ³ κ²ν λ₯Ό μμ²νμΈμ.
|
|
1339
|
+
TaskListμμ ν
μ€νΈ μμ
μ claimνμΈμ.")
|
|
1340
|
+
|
|
1341
|
+
Task(team_name="dev-{feature}", name="security-reviewer", subagent_type="security-reviewer",
|
|
1342
|
+
mode="bypassPermissions",
|
|
1343
|
+
prompt="ꡬν ν 보μ λ΄λΉ. SPEC: {spec_content}
|
|
1344
|
+
μν : ꡬν μ½λμ 보μ μ·¨μ½μ μ€μκ° κ²μ¦.
|
|
1345
|
+
보μ μ΄μλ BLOCKING β implementerμκ² SendMessageλ‘ μ¦μ μμ μμ²νμΈμ.
|
|
1346
|
+
μ¬κ°ν μ€κ³ κ²°ν¨ λ°κ²¬ μ architectμκ² SendMessageλ‘ μ리μΈμ.
|
|
1347
|
+
TaskListμμ 보μ κ²μ¦ μμ
μ claimνμΈμ.")
|
|
1348
|
+
```
|
|
1349
|
+
|
|
1350
|
+
**νμ κ° ν΅μ μμ:**
|
|
1351
|
+
|
|
1352
|
+
```text
|
|
1353
|
+
architect β implementer: "Repository ν¨ν΄μΌλ‘ λ°μ΄ν° μ κ·Ό κ³μΈ΅ λΆλ¦¬ν΄μ ꡬνν΄μ£ΌμΈμ. μΈν°νμ΄μ€λ TaskListμ λ±λ‘νμ΅λλ€"
|
|
1354
|
+
implementer β tester: "LoginService ꡬν μλ£. μ μ/μ€ν¨/μ κΈ μλλ¦¬μ€ ν
μ€νΈ μμ²ν©λλ€"
|
|
1355
|
+
security-reviewer β implementer: "SQL injection μν: raw query μ¬μ© κ°μ§. parameterized queryλ‘ μ¦μ μμ νμ"
|
|
1356
|
+
tester β architect: "edge case 3건 μ€ν¨ (λΉ μ
λ ₯, νΉμλ¬Έμ, λμ μμ²). μ€κ³ κ²ν μμ²ν©λλ€"
|
|
1357
|
+
architect β broadcast: "Phase {N} λͺ¨λ μλλ¦¬μ€ ν΅κ³Ό νμΈ. ꡬν μλ£ν©λλ€"
|
|
1358
|
+
```
|
|
1359
|
+
|
|
1360
|
+
**ν λͺ¨λ vs κΈ°μ‘΄ λ³λ ¬ λͺ¨λ λΉκ΅:**
|
|
1361
|
+
|
|
1362
|
+
| μΈ‘λ©΄ | κΈ°μ‘΄ λ³λ ¬ λͺ¨λ | Agent Teams |
|
|
1363
|
+
|------|---------------|-------------|
|
|
1364
|
+
| ν΅μ | κ²°κ³Όλ§ μμ§ | μ€μκ° μνΈ νΌλλ°± |
|
|
1365
|
+
| ν
μ€νΈ | ꡬν ν λ³λ λ¨κ³ | ꡬνκ³Ό λμ μ§ν |
|
|
1366
|
+
| 보μ | μ¬ν 리뷰 | μ€μκ° κ²μ¦ |
|
|
1367
|
+
| μ€κ³ λ³κ²½ | λ©μΈ μμ΄μ νΈλ§ κ²°μ | architect μ£Όλ ν ν©μ |
|
|
1368
|
+
| μ€λ₯ 볡ꡬ | μ¬μλ 루ν | ν λ΄ μ¦μ νΌλλ°± |
|
|
1369
|
+
|
|
1370
|
+
**νμ±ν 쑰건 (Dev Team Full β 4λͺ
):**
|
|
1371
|
+
- ULTRAWORK λͺ¨λ + 3κ° μ΄μ μλ리μ€
|
|
1372
|
+
- λλ 볡μ‘λ μ μ 20+ (High)
|
|
1373
|
+
|
|
1374
|
+
### Agent Teams β Lite Team (Normal Mode)
|
|
1375
|
+
|
|
1376
|
+
> **μΌλ° λͺ¨λμμλ ν νμ
**. Dev Teamμ μΆμ λ²μ μΌλ‘, 3κ° μ΄μ μλλ¦¬μ€ μ μλ νμ±ν.
|
|
1377
|
+
> security-reviewerλ₯Ό μ μΈν architect + implementer + tester 3λͺ
ꡬμ±.
|
|
1378
|
+
|
|
1379
|
+
**ν ꡬμ±:**
|
|
1380
|
+
|
|
1381
|
+
| νμ | μν |
|
|
1382
|
+
|------|------|
|
|
1383
|
+
| architect (리λ) | μ€κ³ κ²°μ , μλλ¦¬μ€ λΆμ, ꡬν λ°©ν₯ μ‘°μ¨ |
|
|
1384
|
+
| implementer | ν΅μ¬ λΉμ¦λμ€ λ‘μ§ κ΅¬ν |
|
|
1385
|
+
| tester | ꡬν μλ£ μ¦μ ν
μ€νΈ μμ±, μ€ν¨ μ νΌλλ°± |
|
|
1386
|
+
|
|
1387
|
+
**spawn ν¨ν΄:**
|
|
1388
|
+
|
|
1389
|
+
```text
|
|
1390
|
+
TeamCreate(team_name="lite-{feature}", description="Lite implementation team for {feature} Phase {N}")
|
|
1391
|
+
|
|
1392
|
+
Task(team_name="lite-{feature}", name="architect", subagent_type="architect",
|
|
1393
|
+
prompt="Lite ν 리λ. Phase {N}μ SPECμ λΆμνκ³ κ΅¬ν κ³νμ μ립νμΈμ.
|
|
1394
|
+
SPEC: {spec_content}
|
|
1395
|
+
Feature Scenarios: {scenarios}
|
|
1396
|
+
μν : μ€κ³ κ²°μ , ꡬν λ°©ν₯ μ‘°μ¨. TaskListμ μμ
μ λ±λ‘νμΈμ.
|
|
1397
|
+
implementerμκ² μ€κ³λ₯Ό SendMessageλ‘ μ λ¬νμΈμ.")
|
|
1398
|
+
|
|
1399
|
+
Task(team_name="lite-{feature}", name="implementer", subagent_type="implementer",
|
|
1400
|
+
mode="bypassPermissions",
|
|
1401
|
+
prompt="Lite ν μ½λ λ΄λΉ. SPEC: {spec_content}
|
|
1402
|
+
μν : architectμ μ€κ³λ₯Ό λ°λΌ νλ‘λμ
μ½λ μμ±.
|
|
1403
|
+
μλ£ μ testerμκ² SendMessageλ‘ ν
μ€νΈ μμ²νμΈμ.")
|
|
1404
|
+
|
|
1405
|
+
Task(team_name="lite-{feature}", name="tester", subagent_type="tester",
|
|
1406
|
+
mode="bypassPermissions",
|
|
1407
|
+
prompt="Lite ν ν
μ€νΈ λ΄λΉ. SPEC: {spec_content}
|
|
1408
|
+
μν : implementerκ° μλ£ν μ»΄ν¬λνΈλΆν° μ¦μ ν
μ€νΈ μμ±.
|
|
1409
|
+
ν
μ€νΈ μ€ν¨ μ implementerμκ² SendMessageλ‘ νΌλλ°±νμΈμ.")
|
|
1410
|
+
```
|
|
1411
|
+
|
|
1412
|
+
**νμ±ν 쑰건 (Lite Team β 3λͺ
):**
|
|
1413
|
+
- μΌλ° λͺ¨λ + 3κ° μ΄μ μλ리μ€
|
|
1414
|
+
- 볡μ‘λ μ μ 8-19 (Medium)
|
|
1415
|
+
- λ¨μ ꡬν(1-2 νμΌ, μλλ¦¬μ€ 2κ° μ΄ν)μμλ κΈ°μ‘΄ λ³λ ¬ λͺ¨λ μ μ§
|
|
1416
|
+
|
|
1417
|
+
**ν μ ν κΈ°μ€:**
|
|
1418
|
+
|
|
1419
|
+
| 쑰건 | ν |
|
|
1420
|
+
|------|-----|
|
|
1421
|
+
| μλλ¦¬μ€ 1-2κ°, νμΌ 1-2κ° | κΈ°μ‘΄ λ³λ ¬ λͺ¨λ (ν μμ) |
|
|
1422
|
+
| μλλ¦¬μ€ 3κ°+, μΌλ° λͺ¨λ | **Lite Team (3λͺ
)** |
|
|
1423
|
+
| ULTRAWORK λλ 볡μ‘λ 20+ | Dev Team Full (4λͺ
) |
|
|
1424
|
+
|
|
1425
|
+
### Agent Teams β Review Team
|
|
1426
|
+
|
|
1427
|
+
> P1/P2 μ΄μ κ΅μ°¨ κ²μ¦μ μν 보μ+μν€ν
μ²+μ±λ₯+λ¨μμ± μ λ¬Έ 리뷰 ν.
|
|
1428
|
+
> `/vibe.review` μ P1/P2 μ΄μκ° λ°κ²¬λλ©΄ μλ νμ±ν.
|
|
1429
|
+
|
|
1430
|
+
**ν ꡬμ±:**
|
|
1431
|
+
|
|
1432
|
+
| νμ | μν |
|
|
1433
|
+
|------|------|
|
|
1434
|
+
| security-reviewer (리λ) | 보μ μ΄μ μ°μ μμ κ²°μ , κ΅μ°¨ κ²μ¦ μ£Όλ, μ€ν μ κ±° |
|
|
1435
|
+
| architecture-reviewer | μν€ν
μ² μλ° κ²μ¦, μ€κ³ ν¨ν΄ νκ° |
|
|
1436
|
+
| performance-reviewer | μ±λ₯ λ³λͺ© κ²μ¦, N+1 쿼리/λ©λͺ¨λ¦¬ λμ νμΈ |
|
|
1437
|
+
| simplicity-reviewer | κ³Όλν 볡μ‘μ± κ²μ¦, λΆνμν μΆμν μλ³ |
|
|
1438
|
+
|
|
1439
|
+
**spawn ν¨ν΄:**
|
|
1440
|
+
|
|
1441
|
+
```text
|
|
1442
|
+
TeamCreate(team_name="review-{feature}", description="Cross-validation review team for {feature}")
|
|
1443
|
+
|
|
1444
|
+
Task(team_name="review-{feature}", name="security-reviewer", subagent_type="security-reviewer",
|
|
1445
|
+
mode="bypassPermissions",
|
|
1446
|
+
prompt="Review team leader. Cross-validate P1/P2 issues found in parallel review.
|
|
1447
|
+
Files: {changed_files}
|
|
1448
|
+
Found issues: {p1_p2_issues}
|
|
1449
|
+
Role: Verify each P1/P2 issue is genuine (not false positive). Prioritize by actual impact.
|
|
1450
|
+
Send disputed findings to relevant reviewer for confirmation via SendMessage.")
|
|
1451
|
+
|
|
1452
|
+
Task(team_name="review-{feature}", name="architecture-reviewer", subagent_type="architecture-reviewer",
|
|
1453
|
+
mode="bypassPermissions",
|
|
1454
|
+
prompt="Review team architecture expert. Validate architecture-related findings.
|
|
1455
|
+
Files: {changed_files}
|
|
1456
|
+
Role: Confirm or dispute architecture violations. Check SOLID principles and layer boundaries.")
|
|
1457
|
+
|
|
1458
|
+
Task(team_name="review-{feature}", name="performance-reviewer", subagent_type="performance-reviewer",
|
|
1459
|
+
mode="bypassPermissions",
|
|
1460
|
+
prompt="Review team performance expert. Validate performance-related findings.
|
|
1461
|
+
Files: {changed_files}
|
|
1462
|
+
Role: Confirm or dispute performance issues. Run complexity analysis on flagged code.")
|
|
1463
|
+
|
|
1464
|
+
Task(team_name="review-{feature}", name="simplicity-reviewer", subagent_type="simplicity-reviewer",
|
|
1465
|
+
mode="bypassPermissions",
|
|
1466
|
+
prompt="Review team simplicity advocate. Challenge over-engineering findings.
|
|
1467
|
+
Files: {changed_files}
|
|
1468
|
+
Role: Verify YAGNI violations. Confirm or dispute unnecessary abstraction flags.")
|
|
1469
|
+
```
|
|
1470
|
+
|
|
1471
|
+
**νμ κ° ν΅μ μμ:**
|
|
1472
|
+
|
|
1473
|
+
```text
|
|
1474
|
+
security-reviewer β architecture-reviewer: "SQL injection finding in users.py:42 β is this pattern used elsewhere?"
|
|
1475
|
+
architecture-reviewer β security-reviewer: "Confirmed. Same pattern in orders.py:78. Elevate to P1."
|
|
1476
|
+
performance-reviewer β security-reviewer: "N+1 query finding is false positive β already uses prefetch_related."
|
|
1477
|
+
security-reviewer β broadcast: "Review complete. 2 P1 confirmed, 1 P2 downgraded to P3."
|
|
1478
|
+
```
|
|
1479
|
+
|
|
1480
|
+
**νμ±ν 쑰건:**
|
|
1481
|
+
|
|
1482
|
+
- `/vibe.review` μ€ν ν P1 λλ P2 μ΄μ 2κ° μ΄μ λ°κ²¬ μ
|
|
1483
|
+
- Agent Teams νκ²½λ³μ νμ±ν μν
|
|
1484
|
+
|
|
1485
|
+
### Agent Teams β Debug Team
|
|
1486
|
+
|
|
1487
|
+
> λΉλ/ν
μ€νΈ μ€ν¨ μ μν€ν
νΈ μ§λ¨ β ꡬνμ μμ β ν
μ€ν° κ²μ¦ μ¬μ΄ν΄.
|
|
1488
|
+
> UltraQA 3ν μ€ν¨ μ§μ
μ λλ λΉλ μ€ν¨ 3ν+ μ μλ νμ±ν.
|
|
1489
|
+
|
|
1490
|
+
**ν ꡬμ±:**
|
|
1491
|
+
|
|
1492
|
+
| νμ | μν |
|
|
1493
|
+
|------|------|
|
|
1494
|
+
| architect (리λ) | κ·Όλ³Έ μμΈ μ§λ¨, μμ λ°©ν₯ μ€κ³, μν€ν
μ² λ 벨 λ¬Έμ μλ³ |
|
|
1495
|
+
| implementer | architect μ§λ¨μ λ°λΌ μ΅μ diff μμ μ μ© |
|
|
1496
|
+
| tester | μμ ν μ¦μ ν
μ€νΈ μ€ν, νκ· κ²μ¦ |
|
|
1497
|
+
|
|
1498
|
+
**spawn ν¨ν΄:**
|
|
1499
|
+
|
|
1500
|
+
```text
|
|
1501
|
+
TeamCreate(team_name="debug-{feature}", description="Debug team for {feature} build/test failure")
|
|
1502
|
+
|
|
1503
|
+
Task(team_name="debug-{feature}", name="architect", subagent_type="architect",
|
|
1504
|
+
prompt="Debug team leader. Diagnose root cause of build/test failure.
|
|
1505
|
+
Error: {error_output}
|
|
1506
|
+
Failed files: {failed_files}
|
|
1507
|
+
Previous attempts: {attempt_history}
|
|
1508
|
+
Role: Analyze error, identify root cause (not symptoms). Design minimal fix.
|
|
1509
|
+
Send diagnosis to implementer via SendMessage. If same failure 3x, escalate to user.")
|
|
1510
|
+
|
|
1511
|
+
Task(team_name="debug-{feature}", name="implementer", subagent_type="implementer",
|
|
1512
|
+
mode="bypassPermissions",
|
|
1513
|
+
prompt="Debug team fixer. Apply minimal-diff fixes based on architect diagnosis.
|
|
1514
|
+
Role: Wait for architect diagnosis. Apply ONLY the specific fix recommended.
|
|
1515
|
+
Do NOT refactor surrounding code. Notify tester when fix is applied.")
|
|
1516
|
+
|
|
1517
|
+
Task(team_name="debug-{feature}", name="tester", subagent_type="tester",
|
|
1518
|
+
mode="bypassPermissions",
|
|
1519
|
+
prompt="Debug team verifier. Run tests after each fix to verify resolution.
|
|
1520
|
+
Role: Wait for implementer fix notification. Run failing tests.
|
|
1521
|
+
Report results to architect. If still failing, provide detailed error output.")
|
|
1522
|
+
```
|
|
1523
|
+
|
|
1524
|
+
**νμ±ν 쑰건:**
|
|
1525
|
+
|
|
1526
|
+
- λμΌ λΉλ/ν
μ€νΈ μ€ν¨ 3ν μ΄μ
|
|
1527
|
+
- UltraQA `architecture_question` μν μ§μ
μ
|
|
1528
|
+
|
|
1529
|
+
### Agent Teams β Research Team
|
|
1530
|
+
|
|
1531
|
+
> `/vibe.spec` Step 3 리μμΉ λ¨κ³μμ 4κ° μ λ¬Έ 리μμΉ μμ΄μ νΈκ° νμΌλ‘ νμ
.
|
|
1532
|
+
> 리μμΉ κ²°κ³Ό κ΅μ°¨ κ²μ¦ λ° μΆ©λ ν΄κ²°.
|
|
1533
|
+
|
|
1534
|
+
**ν ꡬμ±:**
|
|
1535
|
+
|
|
1536
|
+
| νμ | μν |
|
|
1537
|
+
|------|------|
|
|
1538
|
+
| best-practices-agent (리λ) | λ² μ€νΈ νλν°μ€ μμ§, 리μμΉ ν΅ν©, μΆ©λ ν΄κ²° |
|
|
1539
|
+
| security-advisory-agent | 보μ μ·¨μ½μ μ‘°μ¬, CVE νμΈ, 보μ κΆμ₯μ¬ν |
|
|
1540
|
+
| codebase-patterns-agent | κΈ°μ‘΄ μ½λλ² μ΄μ€ ν¨ν΄ λΆμ, μ μ¬ κ΅¬ν μ°Έμ‘° |
|
|
1541
|
+
| framework-docs-agent | νλ μμν¬ μ΅μ λ¬Έμ νμΈ, API λ³κ²½μ¬ν μΆμ |
|
|
1542
|
+
|
|
1543
|
+
**spawn ν¨ν΄:**
|
|
1544
|
+
|
|
1545
|
+
```text
|
|
1546
|
+
TeamCreate(team_name="research-{feature}", description="Research team for {feature} SPEC")
|
|
1547
|
+
|
|
1548
|
+
Task(team_name="research-{feature}", name="best-practices-agent", subagent_type="best-practices-agent",
|
|
1549
|
+
prompt="Research team leader. Coordinate research for {feature} SPEC.
|
|
1550
|
+
Tech stack: {tech_stack}
|
|
1551
|
+
Requirements: {requirements}
|
|
1552
|
+
Role: Collect best practices. Integrate findings from all researchers.
|
|
1553
|
+
Resolve conflicting recommendations. Produce unified research summary.")
|
|
1554
|
+
|
|
1555
|
+
Task(team_name="research-{feature}", name="security-advisory-agent", subagent_type="security-advisory-agent",
|
|
1556
|
+
prompt="Research team security specialist. Check security advisories for {feature}.
|
|
1557
|
+
Tech stack: {tech_stack}
|
|
1558
|
+
Role: Check CVEs for dependencies. Identify security patterns to follow.
|
|
1559
|
+
Share findings with best-practices-agent for integration.")
|
|
1560
|
+
|
|
1561
|
+
Task(team_name="research-{feature}", name="codebase-patterns-agent", subagent_type="codebase-patterns-agent",
|
|
1562
|
+
prompt="Research team codebase analyst. Analyze existing patterns for {feature}.
|
|
1563
|
+
Project path: {project_path}
|
|
1564
|
+
Role: Find similar implementations in codebase. Extract conventions and patterns.
|
|
1565
|
+
Share findings with best-practices-agent.")
|
|
1566
|
+
|
|
1567
|
+
Task(team_name="research-{feature}", name="framework-docs-agent", subagent_type="framework-docs-agent",
|
|
1568
|
+
prompt="Research team docs specialist. Check latest framework docs for {feature}.
|
|
1569
|
+
Tech stack: {tech_stack}
|
|
1570
|
+
Role: Verify API usage against latest docs. Check for breaking changes.
|
|
1571
|
+
Share findings with best-practices-agent.")
|
|
1572
|
+
```
|
|
1573
|
+
|
|
1574
|
+
**νμ±ν 쑰건:**
|
|
1575
|
+
|
|
1576
|
+
- `/vibe.spec` Step 3 리μμΉ λ¨κ³
|
|
1577
|
+
- Agent Teams νκ²½λ³μ νμ±ν μν
|
|
1578
|
+
|
|
1579
|
+
### Agent Teams β Security Team
|
|
1580
|
+
|
|
1581
|
+
> 보μ λ―Όκ° μ½λ λ³κ²½ μ μ λ¬Έ 보μ κ²μ¦ ν.
|
|
1582
|
+
> μΈμ¦, κΆν, κ²°μ , κ°μΈμ 보 κ΄λ ¨ μ½λ λ³κ²½ κ°μ§ μ μλ νμ±ν.
|
|
1583
|
+
|
|
1584
|
+
**ν ꡬμ±:**
|
|
1585
|
+
|
|
1586
|
+
| νμ | μν |
|
|
1587
|
+
|------|------|
|
|
1588
|
+
| security-reviewer (리λ) | OWASP Top 10 κ²μ¦, 보μ μ΄μ μ°μ μμ κ²°μ |
|
|
1589
|
+
| data-integrity-reviewer | λ°μ΄ν° 무결μ±, νΈλμμ
κ΄λ¦¬, μ
λ ₯ κ²μ¦ |
|
|
1590
|
+
| security-advisory-agent | μ¬μ© λΌμ΄λΈλ¬λ¦¬ CVE νμΈ, 보μ ν¨μΉ νμΈ |
|
|
1591
|
+
| tester | 보μ ν
μ€νΈ μΌμ΄μ€ μμ±, μΉ¨ν¬ ν
μ€νΈ μλλ¦¬μ€ κ²μ¦ |
|
|
1592
|
+
|
|
1593
|
+
**spawn ν¨ν΄:**
|
|
1594
|
+
|
|
1595
|
+
```text
|
|
1596
|
+
TeamCreate(team_name="security-{feature}", description="Security audit team for {feature}")
|
|
1597
|
+
|
|
1598
|
+
Task(team_name="security-{feature}", name="security-reviewer", subagent_type="security-reviewer",
|
|
1599
|
+
mode="bypassPermissions",
|
|
1600
|
+
prompt="Security team leader. Comprehensive security audit for {feature}.
|
|
1601
|
+
Files: {changed_files}
|
|
1602
|
+
Role: OWASP Top 10 check. XSS, CSRF, SQL injection, auth bypass.
|
|
1603
|
+
Coordinate with data-integrity-reviewer for data flow analysis.
|
|
1604
|
+
Any P1 finding blocks merge β notify team immediately.")
|
|
1605
|
+
|
|
1606
|
+
Task(team_name="security-{feature}", name="data-integrity-reviewer", subagent_type="data-integrity-reviewer",
|
|
1607
|
+
mode="bypassPermissions",
|
|
1608
|
+
prompt="Security team data specialist. Verify data integrity for {feature}.
|
|
1609
|
+
Files: {changed_files}
|
|
1610
|
+
Role: Check transaction management, input validation, data sanitization.
|
|
1611
|
+
Report findings to security-reviewer.")
|
|
1612
|
+
|
|
1613
|
+
Task(team_name="security-{feature}", name="security-advisory-agent", subagent_type="security-advisory-agent",
|
|
1614
|
+
prompt="Security team advisory specialist. Check dependencies for {feature}.
|
|
1615
|
+
Role: Scan for known CVEs in project dependencies. Check security advisories.
|
|
1616
|
+
Report critical findings to security-reviewer.")
|
|
1617
|
+
|
|
1618
|
+
Task(team_name="security-{feature}", name="tester", subagent_type="tester",
|
|
1619
|
+
mode="bypassPermissions",
|
|
1620
|
+
prompt="Security team test specialist. Write security-focused tests for {feature}.
|
|
1621
|
+
Files: {changed_files}
|
|
1622
|
+
Role: Write tests for auth bypass, injection, permission escalation.
|
|
1623
|
+
Report test results to security-reviewer.")
|
|
1624
|
+
```
|
|
1625
|
+
|
|
1626
|
+
**νμ±ν 쑰건:**
|
|
1627
|
+
|
|
1628
|
+
- auth, payment, user-data, crypto κ΄λ ¨ νμΌ λ³κ²½ κ°μ§ μ
|
|
1629
|
+
- λλ μλμΌλ‘ `security` ν€μλ μ§μ μ
|
|
1630
|
+
|
|
1631
|
+
### Agent Teams β Migration Team
|
|
1632
|
+
|
|
1633
|
+
> νλ μμν¬/λΌμ΄λΈλ¬λ¦¬ λ§μ΄κ·Έλ μ΄μ
μ λ¬Έ ν.
|
|
1634
|
+
> λκ·λͺ¨ μμ‘΄μ± μ
κ·Έλ μ΄λ, νλ μμν¬ μ ν μ νμ±ν.
|
|
1635
|
+
|
|
1636
|
+
**ν ꡬμ±:**
|
|
1637
|
+
|
|
1638
|
+
| νμ | μν |
|
|
1639
|
+
|------|------|
|
|
1640
|
+
| architect (리λ) | λ§μ΄κ·Έλ μ΄μ
μ λ΅ μ€κ³, νΈνμ± λΆμ, λ¨κ³λ³ κ³ν |
|
|
1641
|
+
| implementer | μ½λ λ³ν μ€ν, API λ³κ²½ μ μ© |
|
|
1642
|
+
| tester | λ§μ΄κ·Έλ μ΄μ
ν νκ· ν
μ€νΈ, νΈνμ± κ²μ¦ |
|
|
1643
|
+
| build-error-resolver | λΉλ μλ¬ μ¦μ ν΄κ²°, νμ
μλ¬ μμ |
|
|
1644
|
+
|
|
1645
|
+
**spawn ν¨ν΄:**
|
|
1646
|
+
|
|
1647
|
+
```text
|
|
1648
|
+
TeamCreate(team_name="migration-{feature}", description="Migration team for {feature}")
|
|
1649
|
+
|
|
1650
|
+
Task(team_name="migration-{feature}", name="architect", subagent_type="architect",
|
|
1651
|
+
prompt="Migration team leader. Plan migration strategy for {feature}.
|
|
1652
|
+
From: {current_version}
|
|
1653
|
+
To: {target_version}
|
|
1654
|
+
Role: Analyze breaking changes. Create step-by-step migration plan.
|
|
1655
|
+
Assign file groups to implementer. Monitor build-error-resolver for blockers.")
|
|
1656
|
+
|
|
1657
|
+
Task(team_name="migration-{feature}", name="implementer", subagent_type="implementer",
|
|
1658
|
+
mode="bypassPermissions",
|
|
1659
|
+
prompt="Migration team implementer. Execute code migration for {feature}.
|
|
1660
|
+
Role: Apply migration changes per architect plan. Work file-by-file.
|
|
1661
|
+
Notify tester after each file group. Report blockers to architect.")
|
|
1662
|
+
|
|
1663
|
+
Task(team_name="migration-{feature}", name="tester", subagent_type="tester",
|
|
1664
|
+
mode="bypassPermissions",
|
|
1665
|
+
prompt="Migration team tester. Verify migration correctness for {feature}.
|
|
1666
|
+
Role: Run existing tests after each migration step. Add new tests for changed APIs.
|
|
1667
|
+
Report regressions to implementer and architect.")
|
|
1668
|
+
|
|
1669
|
+
Task(team_name="migration-{feature}", name="build-error-resolver", subagent_type="build-error-resolver",
|
|
1670
|
+
mode="bypassPermissions",
|
|
1671
|
+
prompt="Migration team build fixer. Resolve build errors during {feature} migration.
|
|
1672
|
+
Role: Monitor build output. Apply minimal-diff type fixes for migration errors.
|
|
1673
|
+
Notify implementer of patterns requiring broader changes.")
|
|
1674
|
+
```
|
|
1675
|
+
|
|
1676
|
+
**νμ±ν 쑰건:**
|
|
1677
|
+
|
|
1678
|
+
- package.json μ£Όμ μμ‘΄μ± λ²μ λ³κ²½ κ°μ§ μ
|
|
1679
|
+
- λλ μλμΌλ‘ `migration` ν€μλ μ§μ μ
|
|
1680
|
+
|
|
1681
|
+
### Agent Teams β Fullstack Team
|
|
1682
|
+
|
|
1683
|
+
> Frontend + Backend λμ λ³κ²½μ΄ νμν νμ€ν κΈ°λ₯ ꡬν ν.
|
|
1684
|
+
> API μλν¬μΈνΈ + UI μ»΄ν¬λνΈλ₯Ό λμμ κ°λ°.
|
|
1685
|
+
|
|
1686
|
+
**ν ꡬμ±:**
|
|
1687
|
+
|
|
1688
|
+
| νμ | μν |
|
|
1689
|
+
|------|------|
|
|
1690
|
+
| architect (리λ) | API μΈν°νμ΄μ€ μ€κ³, frontend/backend λΆμ
μ‘°μ¨ |
|
|
1691
|
+
| implementer-backend | Backend API, λ°μ΄ν°λ² μ΄μ€, μλΉμ€ λ‘μ§ κ΅¬ν |
|
|
1692
|
+
| implementer-frontend | Frontend UI, μν κ΄λ¦¬, API μ°λ ꡬν |
|
|
1693
|
+
| tester | E2E ν
μ€νΈ, API ν
μ€νΈ, ν΅ν© ν
μ€νΈ |
|
|
1694
|
+
|
|
1695
|
+
**spawn ν¨ν΄:**
|
|
1696
|
+
|
|
1697
|
+
```text
|
|
1698
|
+
TeamCreate(team_name="fullstack-{feature}", description="Fullstack team for {feature}")
|
|
1699
|
+
|
|
1700
|
+
Task(team_name="fullstack-{feature}", name="architect", subagent_type="architect",
|
|
1701
|
+
prompt="Fullstack team leader. Design API contract for {feature}.
|
|
1702
|
+
SPEC: {spec_content}
|
|
1703
|
+
Role: Define API endpoints (request/response schemas). Design data models.
|
|
1704
|
+
Share API contract with both implementers. Coordinate integration timing.")
|
|
1705
|
+
|
|
1706
|
+
Task(team_name="fullstack-{feature}", name="implementer-backend", subagent_type="implementer",
|
|
1707
|
+
mode="bypassPermissions",
|
|
1708
|
+
prompt="Fullstack team backend developer. Implement API for {feature}.
|
|
1709
|
+
SPEC: {spec_content}
|
|
1710
|
+
Role: Implement API endpoints per architect's contract. Create data models and services.
|
|
1711
|
+
Notify implementer-frontend when endpoints are ready for integration.
|
|
1712
|
+
Share API response samples with tester.")
|
|
1713
|
+
|
|
1714
|
+
Task(team_name="fullstack-{feature}", name="implementer-frontend", subagent_type="implementer",
|
|
1715
|
+
mode="bypassPermissions",
|
|
1716
|
+
prompt="Fullstack team frontend developer. Implement UI for {feature}.
|
|
1717
|
+
SPEC: {spec_content}
|
|
1718
|
+
Role: Build UI components and pages per SPEC. Use architect's API contract for types.
|
|
1719
|
+
Start with mock data, switch to real API when backend notifies readiness.
|
|
1720
|
+
Notify tester when UI is ready for E2E testing.")
|
|
1721
|
+
|
|
1722
|
+
Task(team_name="fullstack-{feature}", name="tester", subagent_type="tester",
|
|
1723
|
+
mode="bypassPermissions",
|
|
1724
|
+
prompt="Fullstack team tester. Write comprehensive tests for {feature}.
|
|
1725
|
+
SPEC: {spec_content}
|
|
1726
|
+
Role: Write API tests (after backend ready). Write E2E tests (after frontend ready).
|
|
1727
|
+
Test API contract conformance. Report integration issues to architect.")
|
|
1728
|
+
```
|
|
1729
|
+
|
|
1730
|
+
**νμ±ν 쑰건:**
|
|
1731
|
+
|
|
1732
|
+
- SPECμ frontend + backend νμΌμ΄ λͺ¨λ ν¬ν¨λ κ²½μ°
|
|
1733
|
+
- λλ μλμΌλ‘ `fullstack` ν€μλ μ§μ μ
|
|
1734
|
+
|
|
1735
|
+
---
|
|
1736
|
+
|
|
1737
|
+
1. **Related code analysis**: Task(haiku) explores `<context>` related code
|
|
1738
|
+
2. **File creation/modification**: Task(sonnet) implements per `<output_format>`
|
|
1739
|
+
3. **Constraint compliance**: Check `<constraints>`
|
|
1740
|
+
4. **Run verification**: Execute verification commands
|
|
1741
|
+
|
|
1742
|
+
### 4. Brand Assets Generation (Optional)
|
|
1743
|
+
|
|
1744
|
+
When starting a **new project** with brand context in SPEC, auto-generate app icons and favicons:
|
|
1745
|
+
|
|
1746
|
+
```
|
|
1747
|
+
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
|
|
1748
|
+
π¨ BRAND ASSETS GENERATION
|
|
1749
|
+
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
|
|
1750
|
+
|
|
1751
|
+
[Check] Brand assets exist? β Skip if favicon.ico exists
|
|
1752
|
+
[Check] Gemini API configured? β Required for image generation
|
|
1753
|
+
[Check] SPEC has brand context? β Extract app name, colors, style
|
|
1754
|
+
|
|
1755
|
+
[Generate] Creating app icon with Gemini Image API...
|
|
1756
|
+
- Prompt: "App icon for [AppName], [style], [color]..."
|
|
1757
|
+
- Generated: 512x512 master icon
|
|
1758
|
+
|
|
1759
|
+
[Resize] Creating platform variants...
|
|
1760
|
+
β
favicon.ico (16/32/48)
|
|
1761
|
+
β
favicon-16x16.png
|
|
1762
|
+
β
favicon-32x32.png
|
|
1763
|
+
β
apple-touch-icon.png (180x180)
|
|
1764
|
+
β
android-chrome-192x192.png
|
|
1765
|
+
β
android-chrome-512x512.png
|
|
1766
|
+
β
site.webmanifest
|
|
1767
|
+
|
|
1768
|
+
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
|
|
1769
|
+
β
Brand assets generated in public/
|
|
1770
|
+
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
|
|
1771
|
+
```
|
|
1772
|
+
|
|
1773
|
+
**SPEC Brand Context Example:**
|
|
1774
|
+
|
|
1775
|
+
```xml
|
|
1776
|
+
<context>
|
|
1777
|
+
Brand:
|
|
1778
|
+
- App Name: MyApp
|
|
1779
|
+
- Primary Color: #2F6BFF
|
|
1780
|
+
- Style: Modern, minimalist, flat design
|
|
1781
|
+
- Icon Concept: Abstract geometric shape
|
|
1782
|
+
</context>
|
|
1783
|
+
```
|
|
1784
|
+
|
|
1785
|
+
**Trigger Conditions:**
|
|
1786
|
+
- First `/vibe.run` execution (no existing icons)
|
|
1787
|
+
- SPEC contains brand/design context
|
|
1788
|
+
- Gemini API key configured (`vibe gemini key <key>`)
|
|
1789
|
+
|
|
1790
|
+
**Manual Generation:**
|
|
1791
|
+
```bash
|
|
1792
|
+
# [LLM_SCRIPT] = {{VIBE_PATH}}/hooks/scripts/llm-orchestrate.js
|
|
1793
|
+
node "[LLM_SCRIPT]" gemini image "App icon for MyApp, primary color #2F6BFF, square format 1:1, simple recognizable design, works well at small sizes, no text or letters, solid or gradient background, modern minimalist" --output "./public/app-icon.png"
|
|
1794
|
+
```
|
|
1795
|
+
|
|
1796
|
+
---
|
|
1797
|
+
|
|
1798
|
+
### 5. Race Code Review (GPT + Gemini) + Auto-Fix (v2.6.9)
|
|
1799
|
+
|
|
1800
|
+
After all scenarios are implemented, **GPT and Gemini review in parallel with cross-validation**:
|
|
1801
|
+
|
|
1802
|
+
> **ULTRAWORK Default**: In ULTRAWORK mode, race review is automatically enabled.
|
|
1803
|
+
|
|
1804
|
+
```
|
|
1805
|
+
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
|
|
1806
|
+
π RACE CODE REVIEW (GPT + Gemini)
|
|
1807
|
+
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
|
|
1808
|
+
|
|
1809
|
+
[Step 1] Parallel review execution...
|
|
1810
|
+
ββ GPT Codex: Reviewing...
|
|
1811
|
+
ββ Gemini: Reviewing...
|
|
1812
|
+
|
|
1813
|
+
[Step 2] Cross-validation results:
|
|
1814
|
+
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
|
|
1815
|
+
β Issue β GPT β Gemini β Codex β Confidenceβ
|
|
1816
|
+
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
|
|
1817
|
+
β Timing attack in password β β
β β
β β
β 100% β P1 β
|
|
1818
|
+
β Rate limiting missing β β
β β
β β
β 100% β P1 β
|
|
1819
|
+
β Magic number usage β β
β β β β β 50% β P2 β
|
|
1820
|
+
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
|
|
1821
|
+
|
|
1822
|
+
Summary: 3 issues (P1: 2, P2: 1)
|
|
1823
|
+
|
|
1824
|
+
[Step 3] Auto-fixing P1/P2 issues...
|
|
1825
|
+
β
auth.service.ts:24 - Applied timingSafeEqual (P1)
|
|
1826
|
+
β
auth.controller.ts:15 - Added rate limiter (P1)
|
|
1827
|
+
β
auth.service.ts:42 - Extracted constant (P2)
|
|
1828
|
+
|
|
1829
|
+
[Step 4] Re-verifying...
|
|
1830
|
+
β
Build succeeded
|
|
1831
|
+
β
Tests passed
|
|
1832
|
+
|
|
1833
|
+
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
|
|
1834
|
+
β
Race review complete! 3 improvements (2 P1, 1 P2)
|
|
1835
|
+
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
|
|
1836
|
+
```
|
|
1837
|
+
|
|
1838
|
+
**Race Review Invocation (GPT + Gemini in parallel via Bash):**
|
|
1839
|
+
|
|
1840
|
+
**π¨ Use --input file to avoid CLI argument length limits and Windows pipe issues.**
|
|
1841
|
+
|
|
1842
|
+
1. Save code to review into `[SCRATCHPAD]/review-code.txt` (using Write tool)
|
|
1843
|
+
2. Write JSON input file `[SCRATCHPAD]/review-input.json` (using Write tool):
|
|
1844
|
+
- `{"prompt": "Review this code for security, performance, and best practices. Return JSON: {issues: [{id, title, description, severity, suggestion}]}. Code: [CODE_CONTENT]"}`
|
|
1845
|
+
- Where `[CODE_CONTENT]` is the code text (properly JSON-escaped inside the prompt string)
|
|
1846
|
+
3. Script path: `[LLM_SCRIPT]` = `{{VIBE_PATH}}/hooks/scripts/llm-orchestrate.js`
|
|
1847
|
+
4. Run GPT + Gemini in PARALLEL (two Bash tool calls at once):
|
|
1848
|
+
|
|
1849
|
+
```bash
|
|
1850
|
+
# GPT review (Bash tool call 1)
|
|
1851
|
+
node "[LLM_SCRIPT]" gpt orchestrate-json --input "[SCRATCHPAD]/review-input.json"
|
|
1852
|
+
```
|
|
1853
|
+
|
|
1854
|
+
```bash
|
|
1855
|
+
# Gemini review (Bash tool call 2 - run in parallel)
|
|
1856
|
+
node "[LLM_SCRIPT]" gemini orchestrate-json --input "[SCRATCHPAD]/review-input.json"
|
|
1857
|
+
```
|
|
1858
|
+
|
|
1859
|
+
**Confidence-based Priority:**
|
|
1860
|
+
|
|
1861
|
+
| Confidence | Priority | Action |
|
|
1862
|
+
|------------|----------|--------|
|
|
1863
|
+
| 100% (3/3 or 2/2) | P1 | Auto-fix immediately |
|
|
1864
|
+
| 67% (2/3) | P1 | Auto-fix immediately |
|
|
1865
|
+
| 50% (1/2) or 33% (1/3) | P2 | Auto-fix with review |
|
|
1866
|
+
|
|
1867
|
+
**Fallback handling:**
|
|
1868
|
+
- If one LLM fails β Use remaining LLM results (reduced confidence)
|
|
1869
|
+
- If all fail β Skip and proceed (log warning)
|
|
1870
|
+
|
|
1871
|
+
**Review application rules:**
|
|
1872
|
+
|
|
1873
|
+
| Feedback Type | Action |
|
|
1874
|
+
|---------------|--------|
|
|
1875
|
+
| Security vulnerability (P1) | Auto-fix immediately |
|
|
1876
|
+
| Performance improvement (P1/P2) | Auto-fix immediately |
|
|
1877
|
+
| Best practices (P2) | Auto-fix |
|
|
1878
|
+
| Style/preference (P3) | Apply selectively |
|
|
1879
|
+
|
|
1880
|
+
**Conditions:**
|
|
1881
|
+
- **ULTRAWORK**: Race review enabled by default
|
|
1882
|
+
- **Normal mode**: Use `--race` flag to enable
|
|
1883
|
+
- Must re-verify build/tests after fixes
|
|
1884
|
+
|
|
1885
|
+
### Codex Code Review (Codex νλ¬κ·ΈμΈ νμ±ν μ)
|
|
1886
|
+
|
|
1887
|
+
GPT+Gemini raceμ **λμμ** Codex review μ€ν:
|
|
1888
|
+
|
|
1889
|
+
```
|
|
1890
|
+
/codex:review
|
|
1891
|
+
```
|
|
1892
|
+
|
|
1893
|
+
κ²°κ³Όλ₯Ό race review κ΅μ°¨ κ²μ¦μ ν¬ν¨ β 3μ€ λ¦¬λ·°:
|
|
1894
|
+
|
|
1895
|
+
```markdown
|
|
1896
|
+
| Issue | GPT | Gemini | Codex | Confidence |
|
|
1897
|
+
|-------|-----|--------|-------|------------|
|
|
1898
|
+
| {μ΄μ} | β
/β | β
/β | β
/β | {%} |
|
|
1899
|
+
```
|
|
1900
|
+
|
|
1901
|
+
### 6. Quality Report (Auto-generated)
|
|
1902
|
+
|
|
1903
|
+
After all scenarios complete + Gemini review, **quality report is auto-generated**:
|
|
1904
|
+
|
|
1905
|
+
```
|
|
1906
|
+
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
|
|
1907
|
+
β π QUALITY REPORT: login β
|
|
1908
|
+
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
|
|
1909
|
+
β β
|
|
1910
|
+
β β
Scenarios: 4/4 passed β
|
|
1911
|
+
β β
|
|
1912
|
+
β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
|
|
1913
|
+
β β # β Scenario β Status β Retries β β β
|
|
1914
|
+
β ββββββββββββββββββββββββββββββββββββββββββββββββββββ β β
|
|
1915
|
+
β β 1 β Valid login success β β
β 0 β β β
|
|
1916
|
+
β β 2 β Invalid password error β β
β 1 β β β
|
|
1917
|
+
β β 3 β Email format validation β β
β 0 β β β
|
|
1918
|
+
β β 4 β Password reset link β β
β 0 β β β
|
|
1919
|
+
β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
|
|
1920
|
+
β β
|
|
1921
|
+
β π Quality score: 94/100 β
|
|
1922
|
+
β β
|
|
1923
|
+
β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
|
|
1924
|
+
β β Item β Result β Notes β β
|
|
1925
|
+
β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
|
|
1926
|
+
β β Build β β
β npm run build succeeded β β
|
|
1927
|
+
β β Tests β β
β 12/12 passed β β
|
|
1928
|
+
β β Type check β β
β 0 errors β β
|
|
1929
|
+
β β Complexity β β
β All functions β€30 lines β β
|
|
1930
|
+
β β Security β β
β 0 vulnerabilities β β
|
|
1931
|
+
β β Race review β β
β 3 improvements applied β β
|
|
1932
|
+
β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
|
|
1933
|
+
β β
|
|
1934
|
+
β β±οΈ Started: {start_time} β
|
|
1935
|
+
β β±οΈ Completed: {getCurrentTime κ²°κ³Ό} β
|
|
1936
|
+
β β
|
|
1937
|
+
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
|
|
1938
|
+
```
|
|
1939
|
+
|
|
1940
|
+
**What users should check**:
|
|
1941
|
+
- Scenario pass rate (4/4 = 100%)
|
|
1942
|
+
- Quality score (94/100)
|
|
1943
|
+
- Build/test status
|
|
1944
|
+
|
|
1945
|
+
**This alone is enough to trust quality.**
|
|
1946
|
+
|
|
1947
|
+
### 7. Update Feature File
|
|
1948
|
+
|
|
1949
|
+
Auto-update scenario status:
|
|
1950
|
+
|
|
1951
|
+
```markdown
|
|
1952
|
+
## Coverage
|
|
1953
|
+
|
|
1954
|
+
| Scenario | SPEC AC | Status |
|
|
1955
|
+
|----------|---------|--------|
|
|
1956
|
+
| Valid login success | AC-1 | β
|
|
|
1957
|
+
| Invalid password error | AC-2 | β
|
|
|
1958
|
+
| Email format validation | AC-3 | β
|
|
|
1959
|
+
| Password reset link | AC-4 | β
|
|
|
1960
|
+
|
|
1961
|
+
**Last verified**: 2024-01-15 14:32
|
|
1962
|
+
**Quality score**: 94/100
|
|
1963
|
+
```
|
|
1964
|
+
|
|
1965
|
+
## TRUST 5 Principles
|
|
1966
|
+
|
|
1967
|
+
Follow during implementation:
|
|
1968
|
+
|
|
1969
|
+
| Principle | Description |
|
|
1970
|
+
|-----------|-------------|
|
|
1971
|
+
| **T**est-first | Write tests first |
|
|
1972
|
+
| **R**eadable | Clear code |
|
|
1973
|
+
| **U**nified | Consistent style |
|
|
1974
|
+
| **S**ecured | Consider security |
|
|
1975
|
+
| **T**rackable | Logging, monitoring |
|
|
1976
|
+
|
|
1977
|
+
## Input
|
|
1978
|
+
|
|
1979
|
+
- `.claude/vibe/specs/{feature-name}.md` (PTCF SPEC)
|
|
1980
|
+
- `.claude/vibe/features/{feature-name}.feature` (BDD)
|
|
1981
|
+
- `CLAUDE.md` (project context)
|
|
1982
|
+
|
|
1983
|
+
## Output
|
|
1984
|
+
|
|
1985
|
+
- Implemented code files
|
|
1986
|
+
- Test files
|
|
1987
|
+
- Updated SPEC document (checkmarks)
|
|
1988
|
+
|
|
1989
|
+
## Example
|
|
1990
|
+
|
|
1991
|
+
```
|
|
1992
|
+
User: /vibe.run "login"
|
|
1993
|
+
|
|
1994
|
+
Claude:
|
|
1995
|
+
π Loading SPEC: .claude/vibe/specs/login.md
|
|
1996
|
+
π Loading Feature: .claude/vibe/features/login.feature
|
|
1997
|
+
|
|
1998
|
+
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
|
|
1999
|
+
π Scenarios to Implement
|
|
2000
|
+
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
|
|
2001
|
+
|
|
2002
|
+
| # | Scenario | Status |
|
|
2003
|
+
|---|----------|--------|
|
|
2004
|
+
| 1 | Valid login success | β¬ |
|
|
2005
|
+
| 2 | Invalid password error | β¬ |
|
|
2006
|
+
| 3 | Email format validation | β¬ |
|
|
2007
|
+
| 4 | Password reset link | β¬ |
|
|
2008
|
+
|
|
2009
|
+
Total: 4 scenarios
|
|
2010
|
+
|
|
2011
|
+
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
|
|
2012
|
+
π― Scenario 1/4: Valid login success
|
|
2013
|
+
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
|
|
2014
|
+
|
|
2015
|
+
Given: User is registered
|
|
2016
|
+
When: Login with valid email and password
|
|
2017
|
+
Then: Login success + JWT token returned
|
|
2018
|
+
|
|
2019
|
+
β‘ [PARALLEL] Exploring...
|
|
2020
|
+
β
Exploration complete (2.1s)
|
|
2021
|
+
|
|
2022
|
+
π¨ Implementing...
|
|
2023
|
+
β
auth.service.ts - Added login()
|
|
2024
|
+
β
auth.controller.ts - POST /login
|
|
2025
|
+
|
|
2026
|
+
π Verifying...
|
|
2027
|
+
β
Given: OK
|
|
2028
|
+
β
When: OK
|
|
2029
|
+
β
Then: OK
|
|
2030
|
+
|
|
2031
|
+
β
Scenario 1 passed!
|
|
2032
|
+
|
|
2033
|
+
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
|
|
2034
|
+
π― Scenario 2/4: Invalid password error
|
|
2035
|
+
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
|
|
2036
|
+
|
|
2037
|
+
π¨ Implementing...
|
|
2038
|
+
β
auth.service.ts - Password validation logic
|
|
2039
|
+
|
|
2040
|
+
π Verifying...
|
|
2041
|
+
β
Given: OK
|
|
2042
|
+
β
When: OK
|
|
2043
|
+
β Then: "Invalid credentials" error message
|
|
2044
|
+
Actual: "Error" returned
|
|
2045
|
+
|
|
2046
|
+
π Auto-fix 1/3...
|
|
2047
|
+
Fix: auth.service.ts line 42
|
|
2048
|
+
|
|
2049
|
+
π Re-verifying...
|
|
2050
|
+
β
Then: OK
|
|
2051
|
+
|
|
2052
|
+
β
Scenario 2 passed! (1 fix)
|
|
2053
|
+
|
|
2054
|
+
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
|
|
2055
|
+
π― Scenario 3/4: Email format validation
|
|
2056
|
+
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
|
|
2057
|
+
|
|
2058
|
+
π¨ Implementing...
|
|
2059
|
+
π Verifying...
|
|
2060
|
+
β
Scenario 3 passed!
|
|
2061
|
+
|
|
2062
|
+
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
|
|
2063
|
+
π― Scenario 4/4: Password reset link
|
|
2064
|
+
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
|
|
2065
|
+
|
|
2066
|
+
π¨ Implementing...
|
|
2067
|
+
π Verifying...
|
|
2068
|
+
β
Scenario 4 passed!
|
|
2069
|
+
|
|
2070
|
+
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
|
|
2071
|
+
π GEMINI CODE REVIEW
|
|
2072
|
+
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
|
|
2073
|
+
|
|
2074
|
+
π€ Sending code to Gemini...
|
|
2075
|
+
π Gemini feedback:
|
|
2076
|
+
1. [Security] Need timing attack prevention β Fixing...
|
|
2077
|
+
2. [Performance] Unnecessary DB call β Fixing...
|
|
2078
|
+
|
|
2079
|
+
β
2 improvements auto-applied
|
|
2080
|
+
π Re-verifying... β
Passed
|
|
2081
|
+
|
|
2082
|
+
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
|
|
2083
|
+
β π QUALITY REPORT: login β
|
|
2084
|
+
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
|
|
2085
|
+
β β
|
|
2086
|
+
β β
Scenarios: 4/4 passed β
|
|
2087
|
+
β β
|
|
2088
|
+
β | # | Scenario | Status | Retries | β
|
|
2089
|
+
β |---|βββββββββββββββββββββββ|βββββββ|βββββββββ| β
|
|
2090
|
+
β | 1 | Valid login success | β
| 0 | β
|
|
2091
|
+
β | 2 | Invalid password error| β
| 1 | β
|
|
2092
|
+
β | 3 | Email format validation| β
| 0 | β
|
|
2093
|
+
β | 4 | Password reset link | β
| 0 | β
|
|
2094
|
+
β β
|
|
2095
|
+
β π Quality score: 94/100 β
|
|
2096
|
+
β Build: β
| Tests: β
| Types: β
| Gemini: β
(2 applied) β
|
|
2097
|
+
β β
|
|
2098
|
+
β β±οΈ Started: {start_time} β
|
|
2099
|
+
β β±οΈ Completed: {getCurrentTime κ²°κ³Ό} β
|
|
2100
|
+
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
|
|
2101
|
+
|
|
2102
|
+
π Implementation complete! All scenarios passed + Gemini review applied.
|
|
2103
|
+
|
|
2104
|
+
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
|
|
2105
|
+
π AUTO REVIEW (13+ Agents)
|
|
2106
|
+
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
|
|
2107
|
+
|
|
2108
|
+
β‘ [PARALLEL] 13 expert agents reviewing...
|
|
2109
|
+
- security-reviewer β
|
|
2110
|
+
- performance-reviewer β
|
|
2111
|
+
- architecture-reviewer β
|
|
2112
|
+
- ...
|
|
2113
|
+
|
|
2114
|
+
π Review results:
|
|
2115
|
+
- P1 Critical: 0
|
|
2116
|
+
- P2 Important: 2
|
|
2117
|
+
- P3 Nice-to-have: 1
|
|
2118
|
+
|
|
2119
|
+
π§ Auto-fixing P2 issues...
|
|
2120
|
+
1. [PERF] N+1 query β Fixed
|
|
2121
|
+
2. [ARCH] Circular dependency β Fixed
|
|
2122
|
+
|
|
2123
|
+
β
Auto Review complete! 2 issues auto-resolved.
|
|
2124
|
+
```
|
|
2125
|
+
|
|
2126
|
+
### Phase-specific Execution
|
|
2127
|
+
|
|
2128
|
+
```
|
|
2129
|
+
User: /vibe.run "brick-game" --phase 2
|
|
2130
|
+
|
|
2131
|
+
Claude:
|
|
2132
|
+
π Reading SPEC: .claude/vibe/specs/brick-game.md
|
|
2133
|
+
π― Executing Phase 2 only.
|
|
2134
|
+
|
|
2135
|
+
Phase 2: Game Logic
|
|
2136
|
+
1. [ ] Paddle movement implementation
|
|
2137
|
+
2. [ ] Ball physics engine
|
|
2138
|
+
3. [ ] Brick collision handling
|
|
2139
|
+
4. [ ] Score system
|
|
2140
|
+
5. [ ] Game over conditions
|
|
2141
|
+
|
|
2142
|
+
β‘ Launching parallel exploration...
|
|
2143
|
+
[Task(haiku) Γ 3 launched in parallel]
|
|
2144
|
+
|
|
2145
|
+
π Starting implementation...
|
|
2146
|
+
```
|
|
2147
|
+
|
|
2148
|
+
## Error Handling
|
|
2149
|
+
|
|
2150
|
+
On failure:
|
|
2151
|
+
1. Check error message
|
|
2152
|
+
2. Review `<constraints>`
|
|
2153
|
+
3. Fix code and retry
|
|
2154
|
+
4. If continues to fail, report to user
|
|
2155
|
+
|
|
2156
|
+
---
|
|
2157
|
+
|
|
2158
|
+
## Quality Gate (Mandatory)
|
|
2159
|
+
|
|
2160
|
+
### Implementation Quality Checklist
|
|
2161
|
+
|
|
2162
|
+
Before marking any scenario as complete, ALL items must pass:
|
|
2163
|
+
|
|
2164
|
+
| Category | Check Item | Weight |
|
|
2165
|
+
|----------|------------|--------|
|
|
2166
|
+
| **Functionality** | All Given/When/Then conditions verified | 20% |
|
|
2167
|
+
| **Functionality** | Edge cases handled per scenario | 10% |
|
|
2168
|
+
| **Code Quality** | No `any` types in TypeScript | 10% |
|
|
2169
|
+
| **Code Quality** | Functions β€30 lines, nesting β€3 levels | 10% |
|
|
2170
|
+
| **Code Quality** | No hardcoded values (use constants) | 5% |
|
|
2171
|
+
| **Security** | Input validation implemented | 10% |
|
|
2172
|
+
| **Security** | Authentication/authorization checked | 5% |
|
|
2173
|
+
| **Error Handling** | Try-catch or error states present | 10% |
|
|
2174
|
+
| **Error Handling** | User-friendly error messages | 5% |
|
|
2175
|
+
| **Testing** | Unit tests exist for core logic | 10% |
|
|
2176
|
+
| **Performance** | No N+1 queries or unnecessary loops | 5% |
|
|
2177
|
+
|
|
2178
|
+
### Quality Score Calculation
|
|
2179
|
+
|
|
2180
|
+
```
|
|
2181
|
+
Score = Ξ£(checked items Γ weight) / 100
|
|
2182
|
+
|
|
2183
|
+
Grades:
|
|
2184
|
+
- 95-100: β
EXCELLENT - Ready to merge
|
|
2185
|
+
- 90-94: β οΈ GOOD - Minor improvements required before merge
|
|
2186
|
+
- 80-89: β οΈ FAIR - Significant improvements required
|
|
2187
|
+
- 0-79: β POOR - Major fixes needed
|
|
2188
|
+
```
|
|
2189
|
+
|
|
2190
|
+
### Quality Gate Thresholds
|
|
2191
|
+
|
|
2192
|
+
| Gate | Minimum Score | Condition |
|
|
2193
|
+
|------|---------------|-----------|
|
|
2194
|
+
| **Scenario Complete** | 95 | Each scenario must score β₯95 |
|
|
2195
|
+
| **Phase Complete** | 95 | Average of all scenarios β₯95 |
|
|
2196
|
+
| **Feature Complete** | 95 | All phases complete + Gemini review |
|
|
2197
|
+
|
|
2198
|
+
### Auto-Fix Triggers
|
|
2199
|
+
|
|
2200
|
+
| Issue Type | Auto-Fix Action |
|
|
2201
|
+
|------------|-----------------|
|
|
2202
|
+
| Missing error handling | Add try-catch wrapper |
|
|
2203
|
+
| Hardcoded values | Extract to constants file |
|
|
2204
|
+
| Missing input validation | Add validation schema |
|
|
2205
|
+
| Function too long | Suggest split points |
|
|
2206
|
+
| N+1 query detected | Add eager loading |
|
|
2207
|
+
|
|
2208
|
+
### Auto-Fix μ€ν¨ μ Codex Rescue (Codex νλ¬κ·ΈμΈ νμ±ν μ)
|
|
2209
|
+
|
|
2210
|
+
P1 auto-fixκ° **3ν μ€ν¨** μ, Codexμ μμ:
|
|
2211
|
+
|
|
2212
|
+
```
|
|
2213
|
+
/codex:rescue "Fix P1 issue: {issue-description}. File: {file-path}. Error: {error-message}"
|
|
2214
|
+
```
|
|
2215
|
+
|
|
2216
|
+
Codex μμ μλ£ ν μ¬κ²μ¦. Codexλ μ€ν¨ μ TODO νμΌμ κΈ°λ‘.
|
|
2217
|
+
|
|
2218
|
+
### Forbidden Patterns (Block Merge)
|
|
2219
|
+
|
|
2220
|
+
| Pattern | Why Forbidden | Detection |
|
|
2221
|
+
|---------|---------------|-----------|
|
|
2222
|
+
| `console.log` | Debug code in production | Regex scan |
|
|
2223
|
+
| `// TODO` without issue | Untracked work | Comment scan |
|
|
2224
|
+
| `any` type | Type safety bypass | TypeScript check |
|
|
2225
|
+
| `@ts-ignore` | Type error suppression | TypeScript check |
|
|
2226
|
+
| Empty catch blocks | Silent error swallowing | AST analysis |
|
|
2227
|
+
| Commented-out code | Dead code | Comment scan |
|
|
2228
|
+
|
|
2229
|
+
---
|
|
2230
|
+
|
|
2231
|
+
## Auto-Retrospective (Post-Implementation)
|
|
2232
|
+
|
|
2233
|
+
After ALL phases complete successfully, **automatically** perform a brief retrospective:
|
|
2234
|
+
|
|
2235
|
+
### Retrospective Template
|
|
2236
|
+
|
|
2237
|
+
```
|
|
2238
|
+
## Retrospective: {feature-name}
|
|
2239
|
+
|
|
2240
|
+
### What Worked
|
|
2241
|
+
- [List effective patterns, tools, approaches used]
|
|
2242
|
+
|
|
2243
|
+
### What Didn't
|
|
2244
|
+
- [List issues, failures, unexpected blockers]
|
|
2245
|
+
|
|
2246
|
+
### Key Decisions
|
|
2247
|
+
- [Important architectural or implementation decisions made during this run]
|
|
2248
|
+
|
|
2249
|
+
### Lessons Learned
|
|
2250
|
+
- [Principle format: "When X, do Y because Z"]
|
|
2251
|
+
```
|
|
2252
|
+
|
|
2253
|
+
### Execution Steps
|
|
2254
|
+
|
|
2255
|
+
1. Generate retrospective based on the implementation session
|
|
2256
|
+
2. Save to `.claude/vibe/retros/{feature-name}.md`
|
|
2257
|
+
3. Save key lessons via `core_save_memory` (for cross-session recall)
|
|
2258
|
+
4. Update `claude-progress.txt` with final status
|
|
2259
|
+
|
|
2260
|
+
**Important:**
|
|
2261
|
+
|
|
2262
|
+
- Keep it concise (under 20 lines)
|
|
2263
|
+
- Focus on **project-specific** insights, not generic knowledge
|
|
2264
|
+
- Only save to memory if the lesson is actionable and non-obvious
|
|
2265
|
+
|
|
2266
|
+
---
|
|
2267
|
+
|
|
2268
|
+
## Next Step
|
|
2269
|
+
|
|
2270
|
+
```
|
|
2271
|
+
/vibe.verify "brick-game"
|
|
2272
|
+
```
|
|
2273
|
+
|
|
2274
|
+
---
|
|
2275
|
+
|
|
2276
|
+
ARGUMENTS: $ARGUMENTS
|