@su-record/vibe 2.7.12 → 2.7.13
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 +126 -126
- package/LICENSE +21 -21
- package/README.md +449 -580
- 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 -266
- 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/refactor-cleaner.md +143 -143
- package/agents/research/best-practices-agent.md +199 -199
- package/agents/research/codebase-patterns-agent.md +157 -157
- package/agents/research/framework-docs-agent.md +188 -188
- package/agents/research/security-advisory-agent.md +213 -213
- package/agents/review/architecture-reviewer.md +107 -107
- package/agents/review/complexity-reviewer.md +116 -116
- package/agents/review/data-integrity-reviewer.md +88 -88
- package/agents/review/git-history-reviewer.md +103 -103
- package/agents/review/performance-reviewer.md +86 -86
- package/agents/review/python-reviewer.md +150 -150
- package/agents/review/rails-reviewer.md +139 -139
- package/agents/review/react-reviewer.md +144 -144
- package/agents/review/security-reviewer.md +80 -80
- package/agents/review/simplicity-reviewer.md +140 -140
- package/agents/review/test-coverage-reviewer.md +116 -116
- package/agents/review/typescript-reviewer.md +127 -127
- package/agents/searcher.md +54 -54
- package/agents/simplifier.md +120 -120
- package/agents/tester.md +49 -49
- package/agents/ui/ui-a11y-auditor.md +93 -93
- package/agents/ui/ui-antipattern-detector.md +94 -94
- 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 +260 -260
- package/commands/vibe.analyze.md +8 -0
- package/commands/vibe.review.md +10 -3
- package/commands/vibe.run.md +2078 -2022
- package/commands/vibe.spec.md +10 -10
- package/commands/vibe.spec.review.md +565 -558
- package/commands/vibe.utils.md +413 -413
- package/commands/vibe.verify.md +45 -0
- package/dist/cli/auth.d.ts.map +1 -1
- package/dist/cli/auth.js +1 -7
- package/dist/cli/auth.js.map +1 -1
- package/dist/cli/collaborator.js +52 -52
- package/dist/cli/commands/evolution.js +12 -12
- package/dist/cli/commands/info.d.ts.map +1 -1
- package/dist/cli/commands/info.js +55 -70
- package/dist/cli/commands/info.js.map +1 -1
- package/dist/cli/commands/init.d.ts.map +1 -1
- package/dist/cli/commands/init.js +6 -7
- package/dist/cli/commands/init.js.map +1 -1
- package/dist/cli/commands/remove.js +14 -14
- package/dist/cli/commands/sentinel.js +27 -27
- package/dist/cli/commands/setup.js +1 -1
- package/dist/cli/commands/setup.js.map +1 -1
- package/dist/cli/commands/skills.js +5 -5
- package/dist/cli/commands/slack.js +10 -10
- package/dist/cli/commands/telegram.js +12 -12
- package/dist/cli/commands/update.d.ts.map +1 -1
- package/dist/cli/commands/update.js +3 -4
- package/dist/cli/commands/update.js.map +1 -1
- package/dist/cli/detect.js +32 -32
- package/dist/cli/index.js +51 -55
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/llm/claude-commands.js +16 -16
- package/dist/cli/llm/config.js +19 -19
- package/dist/cli/llm/config.js.map +1 -1
- package/dist/cli/llm/gemini-commands.d.ts +4 -6
- package/dist/cli/llm/gemini-commands.d.ts.map +1 -1
- package/dist/cli/llm/gemini-commands.js +52 -322
- package/dist/cli/llm/gemini-commands.js.map +1 -1
- package/dist/cli/llm/gpt-commands.js +21 -21
- package/dist/cli/llm/gpt-commands.js.map +1 -1
- package/dist/cli/llm/help.js +21 -21
- package/dist/cli/postinstall/constants.js +1 -1
- package/dist/cli/postinstall/constants.js.map +1 -1
- 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/postinstall/inline-skills.js +1 -1
- package/dist/cli/postinstall/inline-skills.js.map +1 -1
- package/dist/cli/setup/Provisioner.js +42 -42
- package/dist/cli/types.d.ts +2 -16
- package/dist/cli/types.d.ts.map +1 -1
- package/dist/cli/utils.d.ts +0 -9
- package/dist/cli/utils.d.ts.map +1 -1
- package/dist/cli/utils.js +0 -28
- package/dist/cli/utils.js.map +1 -1
- 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.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/config/GlobalConfigManager.d.ts +0 -2
- package/dist/infra/lib/config/GlobalConfigManager.d.ts.map +1 -1
- package/dist/infra/lib/config/GlobalConfigManager.js +0 -27
- package/dist/infra/lib/config/GlobalConfigManager.js.map +1 -1
- 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/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/auth.d.ts +4 -16
- package/dist/infra/lib/gemini/auth.d.ts.map +1 -1
- package/dist/infra/lib/gemini/auth.js +10 -405
- package/dist/infra/lib/gemini/auth.js.map +1 -1
- package/dist/infra/lib/gemini/capabilities.d.ts +4 -8
- package/dist/infra/lib/gemini/capabilities.d.ts.map +1 -1
- package/dist/infra/lib/gemini/capabilities.js +8 -166
- package/dist/infra/lib/gemini/capabilities.js.map +1 -1
- package/dist/infra/lib/gemini/chat.d.ts +4 -13
- package/dist/infra/lib/gemini/chat.d.ts.map +1 -1
- package/dist/infra/lib/gemini/chat.js +10 -323
- package/dist/infra/lib/gemini/chat.js.map +1 -1
- package/dist/infra/lib/gemini/completion.d.ts +5 -15
- package/dist/infra/lib/gemini/completion.d.ts.map +1 -1
- package/dist/infra/lib/gemini/completion.js +6 -97
- package/dist/infra/lib/gemini/completion.js.map +1 -1
- package/dist/infra/lib/gemini/constants.d.ts +2 -31
- package/dist/infra/lib/gemini/constants.d.ts.map +1 -1
- package/dist/infra/lib/gemini/constants.js +2 -77
- package/dist/infra/lib/gemini/constants.js.map +1 -1
- package/dist/infra/lib/gemini/index.d.ts +5 -8
- package/dist/infra/lib/gemini/index.d.ts.map +1 -1
- package/dist/infra/lib/gemini/index.js +4 -7
- package/dist/infra/lib/gemini/index.js.map +1 -1
- package/dist/infra/lib/gemini/models.d.ts +3 -4
- package/dist/infra/lib/gemini/models.d.ts.map +1 -1
- package/dist/infra/lib/gemini/models.js +8 -84
- package/dist/infra/lib/gemini/models.js.map +1 -1
- package/dist/infra/lib/gemini/orchestration.js +5 -5
- package/dist/infra/lib/gemini/types.d.ts +16 -44
- package/dist/infra/lib/gemini/types.d.ts.map +1 -1
- package/dist/infra/lib/gemini/types.js +1 -1
- package/dist/infra/lib/gpt/auth.d.ts +2 -5
- package/dist/infra/lib/gpt/auth.d.ts.map +1 -1
- package/dist/infra/lib/gpt/auth.js +8 -38
- package/dist/infra/lib/gpt/auth.js.map +1 -1
- package/dist/infra/lib/gpt/chat.d.ts +3 -3
- package/dist/infra/lib/gpt/chat.d.ts.map +1 -1
- package/dist/infra/lib/gpt/chat.js +37 -53
- package/dist/infra/lib/gpt/chat.js.map +1 -1
- package/dist/infra/lib/gpt/constants.d.ts +2 -5
- package/dist/infra/lib/gpt/constants.d.ts.map +1 -1
- package/dist/infra/lib/gpt/constants.js +4 -9
- package/dist/infra/lib/gpt/constants.js.map +1 -1
- package/dist/infra/lib/gpt/embedding.d.ts +1 -1
- package/dist/infra/lib/gpt/embedding.js +3 -3
- package/dist/infra/lib/gpt/embedding.js.map +1 -1
- package/dist/infra/lib/gpt/oauth.d.ts +6 -39
- package/dist/infra/lib/gpt/oauth.d.ts.map +1 -1
- package/dist/infra/lib/gpt/oauth.js +8 -340
- package/dist/infra/lib/gpt/oauth.js.map +1 -1
- package/dist/infra/lib/gpt/orchestration.js +5 -5
- package/dist/infra/lib/gpt/orchestration.js.map +1 -1
- package/dist/infra/lib/gpt/specializations.d.ts +2 -2
- package/dist/infra/lib/gpt/specializations.js +3 -3
- package/dist/infra/lib/gpt/specializations.js.map +1 -1
- package/dist/infra/lib/gpt/types.d.ts +1 -1
- package/dist/infra/lib/gpt/types.d.ts.map +1 -1
- package/dist/infra/lib/llm/auth/AuthProfileManager.d.ts +2 -2
- package/dist/infra/lib/llm/auth/AuthProfileManager.d.ts.map +1 -1
- package/dist/infra/lib/llm/auth/AuthProfileManager.js.map +1 -1
- package/dist/infra/lib/llm/auth/AuthProfileManager.test.js +1 -1
- package/dist/infra/lib/llm/auth/AuthProfileManager.test.js.map +1 -1
- package/dist/infra/lib/llm/auth/TokenRefresher.d.ts +1 -1
- package/dist/infra/lib/llm/auth/TokenRefresher.js +1 -1
- package/dist/infra/lib/llm/auth/index.d.ts +2 -12
- package/dist/infra/lib/llm/auth/index.d.ts.map +1 -1
- package/dist/infra/lib/llm/auth/index.js +5 -63
- package/dist/infra/lib/llm/auth/index.js.map +1 -1
- package/dist/infra/lib/llm/types.d.ts +1 -1
- package/dist/infra/lib/llm/types.d.ts.map +1 -1
- 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 +137 -137
- package/hooks/scripts/code-check.js +70 -70
- package/hooks/scripts/context-save.js +212 -212
- package/hooks/scripts/hud-status.js +291 -291
- package/hooks/scripts/keyword-detector.js +214 -214
- package/hooks/scripts/llm-orchestrate.js +475 -646
- package/hooks/scripts/post-edit.js +32 -32
- package/hooks/scripts/pre-tool-guard.js +125 -125
- package/hooks/scripts/prompt-dispatcher.js +185 -185
- package/hooks/scripts/sentinel-guard.js +104 -104
- package/hooks/scripts/session-start.js +106 -106
- package/hooks/scripts/stop-notify.js +209 -209
- package/hooks/scripts/utils.js +100 -100
- 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 +121 -121
- package/skills/agents-md/SKILL.md +120 -120
- package/skills/arch-guard/SKILL.md +180 -180
- package/skills/brand-assets/SKILL.md +146 -146
- package/skills/capability-loop/SKILL.md +167 -167
- package/skills/characterization-test/SKILL.md +206 -206
- package/skills/commerce-patterns/SKILL.md +59 -59
- package/skills/commit-push-pr/SKILL.md +75 -75
- package/skills/context7-usage/SKILL.md +105 -105
- package/skills/core-capabilities/SKILL.md +48 -48
- package/skills/e2e-commerce/SKILL.md +57 -57
- package/skills/exec-plan/SKILL.md +147 -147
- package/skills/frontend-design/SKILL.md +73 -73
- package/skills/git-worktree/SKILL.md +72 -72
- package/skills/handoff/SKILL.md +109 -109
- package/skills/parallel-research/SKILL.md +87 -87
- package/skills/priority-todos/SKILL.md +63 -63
- package/skills/seo-checklist/SKILL.md +57 -57
- package/skills/techdebt/SKILL.md +122 -122
- package/skills/tool-fallback/SKILL.md +103 -103
- package/skills/typescript-advanced-types/SKILL.md +65 -65
- package/skills/ui-ux-pro-max/SKILL.md +206 -206
- package/skills/vercel-react-best-practices/SKILL.md +59 -59
- package/skills/video-production/SKILL.md +51 -51
- package/vibe/config.json +29 -29
- package/vibe/constitution.md +227 -227
- package/vibe/rules/principles/communication-guide.md +98 -98
- package/vibe/rules/principles/development-philosophy.md +52 -52
- package/vibe/rules/principles/quick-start.md +102 -102
- package/vibe/rules/quality/bdd-contract-testing.md +393 -393
- package/vibe/rules/quality/checklist.md +276 -276
- package/vibe/rules/quality/performance.md +236 -236
- package/vibe/rules/quality/testing-strategy.md +440 -440
- package/vibe/rules/standards/anti-patterns.md +541 -541
- package/vibe/rules/standards/code-structure.md +291 -291
- package/vibe/rules/standards/complexity-metrics.md +313 -313
- package/vibe/rules/standards/git-workflow.md +237 -237
- package/vibe/rules/standards/naming-conventions.md +198 -198
- package/vibe/rules/standards/security.md +305 -305
- package/vibe/rules/writing/document-style.md +74 -74
- package/vibe/setup.sh +31 -31
- package/vibe/templates/constitution-template.md +252 -252
- package/vibe/templates/contract-backend-template.md +526 -526
- package/vibe/templates/contract-frontend-template.md +599 -599
- package/vibe/templates/feature-template.md +96 -96
- package/vibe/templates/spec-template.md +221 -221
- package/vibe/ui-ux-data/charts.csv +26 -26
- package/vibe/ui-ux-data/colors.csv +97 -97
- package/vibe/ui-ux-data/icons.csv +101 -101
- package/vibe/ui-ux-data/landing.csv +31 -31
- package/vibe/ui-ux-data/products.csv +96 -96
- package/vibe/ui-ux-data/react-performance.csv +45 -45
- package/vibe/ui-ux-data/stacks/astro.csv +54 -54
- package/vibe/ui-ux-data/stacks/flutter.csv +53 -53
- package/vibe/ui-ux-data/stacks/html-tailwind.csv +56 -56
- package/vibe/ui-ux-data/stacks/jetpack-compose.csv +53 -53
- package/vibe/ui-ux-data/stacks/nextjs.csv +53 -53
- package/vibe/ui-ux-data/stacks/nuxt-ui.csv +51 -51
- package/vibe/ui-ux-data/stacks/nuxtjs.csv +59 -59
- package/vibe/ui-ux-data/stacks/react-native.csv +52 -52
- package/vibe/ui-ux-data/stacks/react.csv +54 -54
- package/vibe/ui-ux-data/stacks/shadcn.csv +61 -61
- package/vibe/ui-ux-data/stacks/svelte.csv +54 -54
- package/vibe/ui-ux-data/stacks/swiftui.csv +51 -51
- package/vibe/ui-ux-data/stacks/vue.csv +50 -50
- package/vibe/ui-ux-data/styles.csv +68 -68
- package/vibe/ui-ux-data/typography.csv +57 -57
- package/vibe/ui-ux-data/ui-reasoning.csv +101 -101
- package/vibe/ui-ux-data/ux-guidelines.csv +99 -99
- package/vibe/ui-ux-data/version.json +31 -31
- package/vibe/ui-ux-data/web-interface.csv +31 -31
- package/commands/vibe.voice.md +0 -79
package/agents/e2e-tester.md
CHANGED
|
@@ -1,266 +1,294 @@
|
|
|
1
|
-
---
|
|
2
|
-
description: End-to-end testing with
|
|
3
|
-
argument-hint: "test scenario or URL"
|
|
4
|
-
---
|
|
5
|
-
|
|
6
|
-
# /vibe.e2e
|
|
7
|
-
|
|
8
|
-
**E2E
|
|
9
|
-
|
|
10
|
-
##
|
|
11
|
-
|
|
12
|
-
```
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
```
|
|
19
|
-
|
|
20
|
-
##
|
|
21
|
-
|
|
22
|
-
```
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
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
|
-
|
|
1
|
+
---
|
|
2
|
+
description: End-to-end testing with Closed Loop automation
|
|
3
|
+
argument-hint: "test scenario or URL"
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# /vibe.e2e
|
|
7
|
+
|
|
8
|
+
**Closed Loop E2E Testing** - AI가 직접 브라우저를 조작하여 검증하고, 실패 시 자동 수정을 반복
|
|
9
|
+
|
|
10
|
+
## Philosophy: Closed Loop
|
|
11
|
+
|
|
12
|
+
```
|
|
13
|
+
구현 → 검증 → 실패 → 수정 → 재검증 → ... → 통과
|
|
14
|
+
↑_________________________________↓
|
|
15
|
+
|
|
16
|
+
사람 개입 없이 AI가 루프를 완주한다.
|
|
17
|
+
검증이 가벼울수록 루프는 더 많이 돈다.
|
|
18
|
+
```
|
|
19
|
+
|
|
20
|
+
## Usage
|
|
21
|
+
|
|
22
|
+
```
|
|
23
|
+
/vibe.e2e # Run all E2E tests
|
|
24
|
+
/vibe.e2e "login flow" # Test specific scenario
|
|
25
|
+
/vibe.e2e http://localhost:3000/login # Test specific URL
|
|
26
|
+
/vibe.e2e --visual # Visual regression testing
|
|
27
|
+
/vibe.e2e --record # Record test video
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
## Browser Tool Selection (Token Efficiency)
|
|
31
|
+
|
|
32
|
+
**검증 비용이 비싸면 루프가 돌지 않는다.**
|
|
33
|
+
|
|
34
|
+
| Tool | 클릭 1회 토큰 | 방식 | Closed Loop 적합성 |
|
|
35
|
+
|------|-------------|------|-------------------|
|
|
36
|
+
| Playwright MCP | ~12,000+ chars | DOM 트리 전체 전달 | Bad - 2~3회 만에 컨텍스트 소진 |
|
|
37
|
+
| Agent Browser | ~6 chars | 접근성 트리 (의미만 추출) | Good - 수십 회 루프 가능 |
|
|
38
|
+
| Playwright Test Runner | N/A (코드 실행) | 테스트 코드 결과만 반환 | Good - pass/fail만 반환 |
|
|
39
|
+
|
|
40
|
+
### Tool Priority
|
|
41
|
+
|
|
42
|
+
```
|
|
43
|
+
1. Agent Browser (MCP) — AI가 직접 브라우저 조작, 접근성 트리 기반 (최소 토큰)
|
|
44
|
+
2. Playwright Test Runner — 테스트 코드 작성 후 실행, 결과만 수신 (pass/fail)
|
|
45
|
+
3. Playwright MCP — DOM 기반 직접 조작 (토큰 비효율, 최후 수단)
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
### Why Accessibility Tree?
|
|
49
|
+
|
|
50
|
+
```
|
|
51
|
+
DOM (Playwright MCP):
|
|
52
|
+
div class="nav-wrapper mx-4 flex items-center justify-between..." → 200+ chars
|
|
53
|
+
|
|
54
|
+
Accessibility Tree (Agent Browser):
|
|
55
|
+
button "Sign In" → 15 chars
|
|
56
|
+
|
|
57
|
+
AI에게 필요한 건 후자다.
|
|
58
|
+
시각장애인용 스크린 리더가 쓰는 트리가, AI 에이전트에게도 최적의 웹 표현이다.
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
## Core Features
|
|
62
|
+
|
|
63
|
+
- Screenshot Capture - Record UI state
|
|
64
|
+
- Console Error Collection - Detect JS errors
|
|
65
|
+
- Network Monitoring - Detect API failures
|
|
66
|
+
- Visual Regression - Compare screenshots
|
|
67
|
+
- Video Recording - Bug reproduction evidence
|
|
68
|
+
- Accessibility Check - Detect a11y violations
|
|
69
|
+
|
|
70
|
+
## Process
|
|
71
|
+
|
|
72
|
+
### Phase 1: Environment Detection
|
|
73
|
+
|
|
74
|
+
```
|
|
75
|
+
1. Agent Browser MCP 사용 가능? → 사용 (최우선)
|
|
76
|
+
2. Playwright 설치됨? → npx playwright --version
|
|
77
|
+
3. 없으면 → npx playwright install chromium
|
|
78
|
+
```
|
|
79
|
+
|
|
80
|
+
### Phase 2: Test Scenario Analysis
|
|
81
|
+
|
|
82
|
+
```
|
|
83
|
+
Scenario Detection
|
|
84
|
+
├── .claude/vibe/features/{feature}.feature → Extract BDD scenarios
|
|
85
|
+
├── .claude/vibe/specs/{feature}.md → Check acceptance criteria
|
|
86
|
+
└── Analyze existing e2e/*.spec.ts
|
|
87
|
+
```
|
|
88
|
+
|
|
89
|
+
**File Reading Policy**: Feature/SPEC 파일은 반드시 Read 도구로 전체 읽을 것.
|
|
90
|
+
|
|
91
|
+
### Phase 3: Closed Loop Execution
|
|
92
|
+
|
|
93
|
+
```
|
|
94
|
+
┌─────────────────────────────────────────────────────────────────┐
|
|
95
|
+
│ CLOSED LOOP E2E VERIFICATION │
|
|
96
|
+
│ │
|
|
97
|
+
│ For each scenario in Feature file: │
|
|
98
|
+
│ │
|
|
99
|
+
│ ┌──────────────────────────────────────────────────────────┐ │
|
|
100
|
+
│ │ Scenario: "User submits notification form" │ │
|
|
101
|
+
│ │ │ │
|
|
102
|
+
│ │ [Browser] Navigate to URL │ │
|
|
103
|
+
│ │ [Browser] Find form (accessibility tree) │ │
|
|
104
|
+
│ │ [Browser] Fill inputs │ │
|
|
105
|
+
│ │ [Browser] Click submit │ │
|
|
106
|
+
│ │ [Browser] Check success message │ │
|
|
107
|
+
│ │ │ │ │
|
|
108
|
+
│ │ ├─ PASS → Next scenario │ │
|
|
109
|
+
│ │ └─ FAIL → Root cause analysis │ │
|
|
110
|
+
│ │ → Fix code │ │
|
|
111
|
+
│ │ → Re-run scenario (max 3 retries) │ │
|
|
112
|
+
│ └──────────────────────────────────────────────────────────┘ │
|
|
113
|
+
│ │
|
|
114
|
+
│ All scenarios pass → DONE │
|
|
115
|
+
│ Max retries exceeded → Report failures │
|
|
116
|
+
└─────────────────────────────────────────────────────────────────┘
|
|
117
|
+
```
|
|
118
|
+
|
|
119
|
+
**Agent Browser approach (preferred):**
|
|
120
|
+
|
|
121
|
+
```
|
|
122
|
+
AI directly controls browser:
|
|
123
|
+
1. navigate("http://localhost:3000/login")
|
|
124
|
+
2. type("email field", "test@example.com")
|
|
125
|
+
3. type("password field", "password123")
|
|
126
|
+
4. click("Sign In")
|
|
127
|
+
5. assert: page contains "Dashboard"
|
|
128
|
+
|
|
129
|
+
Each action: ~6-20 chars of context (accessibility tree)
|
|
130
|
+
Total scenario: ~100-200 chars
|
|
131
|
+
→ Can run 50+ scenarios in one session
|
|
132
|
+
```
|
|
133
|
+
|
|
134
|
+
**Playwright Test Runner approach (fallback):**
|
|
135
|
+
|
|
136
|
+
```typescript
|
|
137
|
+
// Auto-generated lightweight test
|
|
138
|
+
import { test, expect } from '@playwright/test';
|
|
139
|
+
|
|
140
|
+
test('login flow', async ({ page }) => {
|
|
141
|
+
await page.goto('http://localhost:3000/login');
|
|
142
|
+
await page.fill('[data-testid="email"]', 'test@example.com');
|
|
143
|
+
await page.fill('[data-testid="password"]', 'password123');
|
|
144
|
+
await page.click('[data-testid="submit"]');
|
|
145
|
+
await page.waitForURL('**/dashboard');
|
|
146
|
+
await expect(page.locator('h1')).toContainText('Dashboard');
|
|
147
|
+
});
|
|
148
|
+
```
|
|
149
|
+
|
|
150
|
+
```bash
|
|
151
|
+
# Run and get pass/fail only (minimal token usage)
|
|
152
|
+
npx playwright test --reporter=line 2>&1 | tail -5
|
|
153
|
+
```
|
|
154
|
+
|
|
155
|
+
### Phase 4: Auto-Fix Loop (Closed Loop Core)
|
|
156
|
+
|
|
157
|
+
```
|
|
158
|
+
E2E scenario FAILED
|
|
159
|
+
│
|
|
160
|
+
↓
|
|
161
|
+
[Collect evidence]
|
|
162
|
+
- Screenshot of failure state
|
|
163
|
+
- Console errors
|
|
164
|
+
- Network failures
|
|
165
|
+
- Accessibility tree snapshot (lightweight)
|
|
166
|
+
│
|
|
167
|
+
↓
|
|
168
|
+
[Root cause analysis]
|
|
169
|
+
- Which step failed? (Given/When/Then)
|
|
170
|
+
- Error type? (element not found / assertion failed / network error)
|
|
171
|
+
│
|
|
172
|
+
↓
|
|
173
|
+
[Fix implementation]
|
|
174
|
+
- Read target source file (FULL, not Grep)
|
|
175
|
+
- Apply minimal fix
|
|
176
|
+
│
|
|
177
|
+
↓
|
|
178
|
+
[Re-run ONLY failed scenario]
|
|
179
|
+
- Don't re-run passed scenarios (save tokens)
|
|
180
|
+
│
|
|
181
|
+
↓
|
|
182
|
+
PASS → Continue to next scenario
|
|
183
|
+
FAIL → Retry (max 3)
|
|
184
|
+
3x FAIL → Report as manual fix needed
|
|
185
|
+
```
|
|
186
|
+
|
|
187
|
+
### Phase 5: Visual Regression (--visual)
|
|
188
|
+
|
|
189
|
+
```
|
|
190
|
+
Comparing screenshots:
|
|
191
|
+
├── login-page.png
|
|
192
|
+
│ ├── Baseline: .claude/vibe/e2e/baseline/login-page.png
|
|
193
|
+
│ ├── Current: .claude/vibe/e2e/current/login-page.png
|
|
194
|
+
│ └── Diff: 0.02% (threshold: 1%) → PASS
|
|
195
|
+
├── dashboard.png
|
|
196
|
+
│ └── Diff: 5.3% (threshold: 1%) → FAIL → auto-fix loop
|
|
197
|
+
```
|
|
198
|
+
|
|
199
|
+
### Phase 6: Accessibility Check
|
|
200
|
+
|
|
201
|
+
```typescript
|
|
202
|
+
import { injectAxe, checkA11y } from 'axe-playwright';
|
|
203
|
+
|
|
204
|
+
test('accessibility check', async ({ page }) => {
|
|
205
|
+
await page.goto('/login');
|
|
206
|
+
await injectAxe(page);
|
|
207
|
+
await checkA11y(page, null, {
|
|
208
|
+
detailedReport: true,
|
|
209
|
+
detailedReportOptions: { html: true }
|
|
210
|
+
});
|
|
211
|
+
});
|
|
212
|
+
```
|
|
213
|
+
|
|
214
|
+
## Output
|
|
215
|
+
|
|
216
|
+
```
|
|
217
|
+
E2E CLOSED LOOP RESULTS
|
|
218
|
+
|
|
219
|
+
Test Suite: Login Flow
|
|
220
|
+
Duration: 12.3s
|
|
221
|
+
Browser Tool: Agent Browser (accessibility tree)
|
|
222
|
+
Loop Iterations: 2 (1 auto-fix applied)
|
|
223
|
+
|
|
224
|
+
Results:
|
|
225
|
+
Passed: 8 (1 after auto-fix)
|
|
226
|
+
Failed: 0
|
|
227
|
+
Skipped: 0
|
|
228
|
+
|
|
229
|
+
Auto-Fixes Applied:
|
|
230
|
+
1. Scenario "invalid password error"
|
|
231
|
+
Root cause: Missing error message element
|
|
232
|
+
Fix: Added error toast in LoginForm.tsx:42
|
|
233
|
+
Re-test: PASSED
|
|
234
|
+
|
|
235
|
+
Console Errors: 0
|
|
236
|
+
Accessibility Issues: 0
|
|
237
|
+
|
|
238
|
+
Token Usage: ~2,400 chars (vs ~96,000 with DOM-based approach)
|
|
239
|
+
```
|
|
240
|
+
|
|
241
|
+
## Configuration
|
|
242
|
+
|
|
243
|
+
`.claude/vibe/e2e/config.json`:
|
|
244
|
+
|
|
245
|
+
```json
|
|
246
|
+
{
|
|
247
|
+
"baseURL": "http://localhost:3000",
|
|
248
|
+
"browsers": ["chromium"],
|
|
249
|
+
"viewport": { "width": 1280, "height": 720 },
|
|
250
|
+
"browserTool": "auto",
|
|
251
|
+
"closedLoop": {
|
|
252
|
+
"enabled": true,
|
|
253
|
+
"maxRetries": 3,
|
|
254
|
+
"autoFix": true,
|
|
255
|
+
"rerunFailedOnly": true
|
|
256
|
+
},
|
|
257
|
+
"video": "retain-on-failure",
|
|
258
|
+
"screenshot": "only-on-failure",
|
|
259
|
+
"trace": "retain-on-failure",
|
|
260
|
+
"visualRegression": {
|
|
261
|
+
"enabled": true,
|
|
262
|
+
"threshold": 0.01
|
|
263
|
+
},
|
|
264
|
+
"accessibility": {
|
|
265
|
+
"enabled": true,
|
|
266
|
+
"rules": ["wcag2aa"]
|
|
267
|
+
}
|
|
268
|
+
}
|
|
269
|
+
```
|
|
270
|
+
|
|
271
|
+
## Integration with /vibe.run
|
|
272
|
+
|
|
273
|
+
`/vibe.run` 에서 UI 시나리오 구현 후 자동으로 Closed Loop E2E 검증 트리거:
|
|
274
|
+
|
|
275
|
+
```
|
|
276
|
+
/vibe.run "login" ultrawork
|
|
277
|
+
├── Phase 1: Implement login form
|
|
278
|
+
├── Phase 2: Implement validation
|
|
279
|
+
├── [AUTO] E2E Closed Loop verification
|
|
280
|
+
│ ├── Scenario 1: valid login → PASS
|
|
281
|
+
│ ├── Scenario 2: invalid password → FAIL → auto-fix → PASS
|
|
282
|
+
│ └── Scenario 3: email validation → PASS
|
|
283
|
+
└── All scenarios verified → Complete
|
|
284
|
+
```
|
|
285
|
+
|
|
286
|
+
## Related Commands
|
|
287
|
+
|
|
288
|
+
- `/vibe.review` - Code review
|
|
289
|
+
- `/vibe.verify` - SPEC verification
|
|
290
|
+
- `/vibe.run` - Implementation with auto-verification
|
|
291
|
+
|
|
292
|
+
---
|
|
293
|
+
|
|
294
|
+
ARGUMENTS: $ARGUMENTS
|
package/agents/explorer-low.md
CHANGED
|
@@ -1,42 +1,42 @@
|
|
|
1
|
-
# Explorer Agent - Low Tier (Haiku)
|
|
2
|
-
|
|
3
|
-
Fast codebase exploration for simple searches.
|
|
4
|
-
|
|
5
|
-
## Role
|
|
6
|
-
|
|
7
|
-
- Quick file/pattern search
|
|
8
|
-
- Basic structure analysis
|
|
9
|
-
- Simple dependency checking
|
|
10
|
-
|
|
11
|
-
## Model
|
|
12
|
-
|
|
13
|
-
**Haiku** - Optimized for fast, simple searches
|
|
14
|
-
|
|
15
|
-
## When to Use
|
|
16
|
-
|
|
17
|
-
- Single file lookups
|
|
18
|
-
- Simple pattern matching
|
|
19
|
-
- Quick structure overview
|
|
20
|
-
- Cost-sensitive operations
|
|
21
|
-
|
|
22
|
-
## Usage
|
|
23
|
-
|
|
24
|
-
```
|
|
25
|
-
Task(model: "haiku", subagent_type: "Explore", prompt: "Find files matching *.ts in src/")
|
|
26
|
-
```
|
|
27
|
-
|
|
28
|
-
## Process
|
|
29
|
-
|
|
30
|
-
1. Quick pattern match (Glob)
|
|
31
|
-
2. Basic content scan (Grep)
|
|
32
|
-
3. Return file list
|
|
33
|
-
|
|
34
|
-
## Output
|
|
35
|
-
|
|
36
|
-
```markdown
|
|
37
|
-
## Quick Search Results
|
|
38
|
-
|
|
39
|
-
### Files Found
|
|
40
|
-
- src/index.ts
|
|
41
|
-
- src/utils/helper.ts
|
|
42
|
-
```
|
|
1
|
+
# Explorer Agent - Low Tier (Haiku)
|
|
2
|
+
|
|
3
|
+
Fast codebase exploration for simple searches.
|
|
4
|
+
|
|
5
|
+
## Role
|
|
6
|
+
|
|
7
|
+
- Quick file/pattern search
|
|
8
|
+
- Basic structure analysis
|
|
9
|
+
- Simple dependency checking
|
|
10
|
+
|
|
11
|
+
## Model
|
|
12
|
+
|
|
13
|
+
**Haiku** - Optimized for fast, simple searches
|
|
14
|
+
|
|
15
|
+
## When to Use
|
|
16
|
+
|
|
17
|
+
- Single file lookups
|
|
18
|
+
- Simple pattern matching
|
|
19
|
+
- Quick structure overview
|
|
20
|
+
- Cost-sensitive operations
|
|
21
|
+
|
|
22
|
+
## Usage
|
|
23
|
+
|
|
24
|
+
```
|
|
25
|
+
Task(model: "haiku", subagent_type: "Explore", prompt: "Find files matching *.ts in src/")
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
## Process
|
|
29
|
+
|
|
30
|
+
1. Quick pattern match (Glob)
|
|
31
|
+
2. Basic content scan (Grep)
|
|
32
|
+
3. Return file list
|
|
33
|
+
|
|
34
|
+
## Output
|
|
35
|
+
|
|
36
|
+
```markdown
|
|
37
|
+
## Quick Search Results
|
|
38
|
+
|
|
39
|
+
### Files Found
|
|
40
|
+
- src/index.ts
|
|
41
|
+
- src/utils/helper.ts
|
|
42
|
+
```
|