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