@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
|
@@ -1,75 +1,75 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: commit-push-pr
|
|
3
|
-
description: "Commit, push, and create PR in one go. Auto-activates on commit, PR, push keywords."
|
|
4
|
-
triggers: [commit, push, PR, pull request, merge]
|
|
5
|
-
priority: 70
|
|
6
|
-
---
|
|
7
|
-
|
|
8
|
-
# Commit-Push-PR
|
|
9
|
-
|
|
10
|
-
## Pre-checks
|
|
11
|
-
|
|
12
|
-
```bash
|
|
13
|
-
git status # What's changed
|
|
14
|
-
git diff --stat # Review changes
|
|
15
|
-
git log --oneline -5 # Recent commits for style
|
|
16
|
-
```
|
|
17
|
-
|
|
18
|
-
## Workflow
|
|
19
|
-
|
|
20
|
-
1. Review and stage changed files
|
|
21
|
-
2. Write commit message (Conventional Commits)
|
|
22
|
-
3. Push to remote branch
|
|
23
|
-
4. Create PR with `gh pr create`
|
|
24
|
-
|
|
25
|
-
## Commit Message Format
|
|
26
|
-
|
|
27
|
-
```
|
|
28
|
-
[type] title (under 50 chars)
|
|
29
|
-
|
|
30
|
-
body (optional, 72 char wrap)
|
|
31
|
-
|
|
32
|
-
Co-Authored-By: Claude <noreply@anthropic.com>
|
|
33
|
-
```
|
|
34
|
-
|
|
35
|
-
Types: `feat` | `fix` | `docs` | `style` | `refactor` | `test` | `chore` | `perf`
|
|
36
|
-
|
|
37
|
-
## Security Checks (CRITICAL)
|
|
38
|
-
|
|
39
|
-
```bash
|
|
40
|
-
# Before committing — detect sensitive files
|
|
41
|
-
git diff --cached --name-only | grep -E '\.(env|pem|key)$|credentials|secret'
|
|
42
|
-
```
|
|
43
|
-
|
|
44
|
-
**Never commit:** `.env`, `.env.local`, `*.pem`, `*.key`, `credentials.json`, `service-account.json`
|
|
45
|
-
|
|
46
|
-
> If sensitive files are staged, **immediately warn and abort**.
|
|
47
|
-
|
|
48
|
-
## Branch Protection
|
|
49
|
-
|
|
50
|
-
- **No direct commits/pushes to main/master**
|
|
51
|
-
- If on main: create a new branch first
|
|
52
|
-
- **Never** `--force` push to main/master
|
|
53
|
-
|
|
54
|
-
## PR Format
|
|
55
|
-
|
|
56
|
-
```bash
|
|
57
|
-
gh pr create \
|
|
58
|
-
--title "[type] title" \
|
|
59
|
-
--body "## Changes
|
|
60
|
-
- Key changes
|
|
61
|
-
|
|
62
|
-
## Related Issues
|
|
63
|
-
- Closes #issue-number
|
|
64
|
-
|
|
65
|
-
## Testing
|
|
66
|
-
- Test methods and results"
|
|
67
|
-
```
|
|
68
|
-
|
|
69
|
-
## Done Criteria (K4)
|
|
70
|
-
|
|
71
|
-
- [ ] No sensitive files in commit
|
|
72
|
-
- [ ] Commit message follows Conventional Commits
|
|
73
|
-
- [ ] Co-Authored-By line included
|
|
74
|
-
- [ ] Not pushing directly to main/master
|
|
75
|
-
- [ ] PR created with clear description
|
|
1
|
+
---
|
|
2
|
+
name: commit-push-pr
|
|
3
|
+
description: "Commit, push, and create PR in one go. Auto-activates on commit, PR, push keywords."
|
|
4
|
+
triggers: [commit, push, PR, pull request, merge]
|
|
5
|
+
priority: 70
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# Commit-Push-PR
|
|
9
|
+
|
|
10
|
+
## Pre-checks
|
|
11
|
+
|
|
12
|
+
```bash
|
|
13
|
+
git status # What's changed
|
|
14
|
+
git diff --stat # Review changes
|
|
15
|
+
git log --oneline -5 # Recent commits for style
|
|
16
|
+
```
|
|
17
|
+
|
|
18
|
+
## Workflow
|
|
19
|
+
|
|
20
|
+
1. Review and stage changed files
|
|
21
|
+
2. Write commit message (Conventional Commits)
|
|
22
|
+
3. Push to remote branch
|
|
23
|
+
4. Create PR with `gh pr create`
|
|
24
|
+
|
|
25
|
+
## Commit Message Format
|
|
26
|
+
|
|
27
|
+
```
|
|
28
|
+
[type] title (under 50 chars)
|
|
29
|
+
|
|
30
|
+
body (optional, 72 char wrap)
|
|
31
|
+
|
|
32
|
+
Co-Authored-By: Claude <noreply@anthropic.com>
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
Types: `feat` | `fix` | `docs` | `style` | `refactor` | `test` | `chore` | `perf`
|
|
36
|
+
|
|
37
|
+
## Security Checks (CRITICAL)
|
|
38
|
+
|
|
39
|
+
```bash
|
|
40
|
+
# Before committing — detect sensitive files
|
|
41
|
+
git diff --cached --name-only | grep -E '\.(env|pem|key)$|credentials|secret'
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
**Never commit:** `.env`, `.env.local`, `*.pem`, `*.key`, `credentials.json`, `service-account.json`
|
|
45
|
+
|
|
46
|
+
> If sensitive files are staged, **immediately warn and abort**.
|
|
47
|
+
|
|
48
|
+
## Branch Protection
|
|
49
|
+
|
|
50
|
+
- **No direct commits/pushes to main/master**
|
|
51
|
+
- If on main: create a new branch first
|
|
52
|
+
- **Never** `--force` push to main/master
|
|
53
|
+
|
|
54
|
+
## PR Format
|
|
55
|
+
|
|
56
|
+
```bash
|
|
57
|
+
gh pr create \
|
|
58
|
+
--title "[type] title" \
|
|
59
|
+
--body "## Changes
|
|
60
|
+
- Key changes
|
|
61
|
+
|
|
62
|
+
## Related Issues
|
|
63
|
+
- Closes #issue-number
|
|
64
|
+
|
|
65
|
+
## Testing
|
|
66
|
+
- Test methods and results"
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
## Done Criteria (K4)
|
|
70
|
+
|
|
71
|
+
- [ ] No sensitive files in commit
|
|
72
|
+
- [ ] Commit message follows Conventional Commits
|
|
73
|
+
- [ ] Co-Authored-By line included
|
|
74
|
+
- [ ] Not pushing directly to main/master
|
|
75
|
+
- [ ] PR created with clear description
|
|
@@ -1,105 +1,105 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: context7-usage
|
|
3
|
-
description: "Context7 plugin for latest library documentation. Auto-activates when docs, documentation, latest version, official docs, API reference, or library help is needed."
|
|
4
|
-
triggers: [docs, documentation, latest version, official docs, API reference, library help, context7]
|
|
5
|
-
priority: 60
|
|
6
|
-
---
|
|
7
|
-
|
|
8
|
-
# Context7 Usage
|
|
9
|
-
|
|
10
|
-
Guide for searching latest library/framework documentation using Context7 plugin with subagent isolation.
|
|
11
|
-
|
|
12
|
-
## Why Subagent Approach?
|
|
13
|
-
|
|
14
|
-
| Approach | Problem |
|
|
15
|
-
|----------|---------|
|
|
16
|
-
| Direct plugin call | Docs content fills main context, causing bloat |
|
|
17
|
-
| Subagent isolation | Docs queried in separate context, only results returned |
|
|
18
|
-
|
|
19
|
-
**Benefits:**
|
|
20
|
-
|
|
21
|
-
- Prevents context bloat during long coding sessions
|
|
22
|
-
- Solves knowledge cutoff problem with latest docs
|
|
23
|
-
- Main context stays focused on implementation
|
|
24
|
-
|
|
25
|
-
## When to Use
|
|
26
|
-
|
|
27
|
-
| Situation | Example |
|
|
28
|
-
|-----------|---------|
|
|
29
|
-
| Latest API check | "React 19 use() hook usage" |
|
|
30
|
-
| Version differences | "Next.js 15 changes" |
|
|
31
|
-
| Official docs needed | "Prisma schema syntax" |
|
|
32
|
-
| Migration guide | "Vue 2 → Vue 3 migration" |
|
|
33
|
-
|
|
34
|
-
## How It Works
|
|
35
|
-
|
|
36
|
-
```
|
|
37
|
-
User asks library question
|
|
38
|
-
↓
|
|
39
|
-
Skill detects docs need
|
|
40
|
-
↓
|
|
41
|
-
Spawn docs-researcher subagent (haiku)
|
|
42
|
-
↓
|
|
43
|
-
Subagent calls context7 in isolated context
|
|
44
|
-
↓
|
|
45
|
-
Returns only relevant info to main context
|
|
46
|
-
```
|
|
47
|
-
|
|
48
|
-
## Usage
|
|
49
|
-
|
|
50
|
-
### Automatic (Recommended)
|
|
51
|
-
|
|
52
|
-
Just ask library/API questions naturally:
|
|
53
|
-
|
|
54
|
-
```
|
|
55
|
-
"How do I use React 19 use() hook?"
|
|
56
|
-
"What's new in Next.js 15?"
|
|
57
|
-
"Prisma many-to-many relation syntax"
|
|
58
|
-
```
|
|
59
|
-
|
|
60
|
-
The skill auto-detects and spawns a docs-researcher subagent.
|
|
61
|
-
|
|
62
|
-
### Manual Command
|
|
63
|
-
|
|
64
|
-
```
|
|
65
|
-
/context7:docs <library> [query]
|
|
66
|
-
```
|
|
67
|
-
|
|
68
|
-
Examples:
|
|
69
|
-
|
|
70
|
-
```
|
|
71
|
-
/context7:docs react hooks
|
|
72
|
-
/context7:docs next.js app router
|
|
73
|
-
/context7:docs prisma relations
|
|
74
|
-
```
|
|
75
|
-
|
|
76
|
-
## Implementation Pattern
|
|
77
|
-
|
|
78
|
-
When you detect a library/API documentation need, spawn a subagent:
|
|
79
|
-
|
|
80
|
-
```
|
|
81
|
-
Task tool call:
|
|
82
|
-
- subagent_type: Explore
|
|
83
|
-
- model: haiku
|
|
84
|
-
- prompt: "Use context7 to find [library] documentation about [topic]. Return only the relevant API usage examples and key points."
|
|
85
|
-
```
|
|
86
|
-
|
|
87
|
-
The subagent handles the context7 calls and returns a summary, keeping main context clean.
|
|
88
|
-
|
|
89
|
-
## Fallback Chain
|
|
90
|
-
|
|
91
|
-
```
|
|
92
|
-
context7 plugin not installed
|
|
93
|
-
↓
|
|
94
|
-
Prompt user: /plugin install context7
|
|
95
|
-
↓
|
|
96
|
-
If still unavailable: Web Search for official docs
|
|
97
|
-
```
|
|
98
|
-
|
|
99
|
-
## Installation
|
|
100
|
-
|
|
101
|
-
If context7 is not installed, guide user:
|
|
102
|
-
|
|
103
|
-
```bash
|
|
104
|
-
/plugin install context7
|
|
105
|
-
```
|
|
1
|
+
---
|
|
2
|
+
name: context7-usage
|
|
3
|
+
description: "Context7 plugin for latest library documentation. Auto-activates when docs, documentation, latest version, official docs, API reference, or library help is needed."
|
|
4
|
+
triggers: [docs, documentation, latest version, official docs, API reference, library help, context7]
|
|
5
|
+
priority: 60
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# Context7 Usage
|
|
9
|
+
|
|
10
|
+
Guide for searching latest library/framework documentation using Context7 plugin with subagent isolation.
|
|
11
|
+
|
|
12
|
+
## Why Subagent Approach?
|
|
13
|
+
|
|
14
|
+
| Approach | Problem |
|
|
15
|
+
|----------|---------|
|
|
16
|
+
| Direct plugin call | Docs content fills main context, causing bloat |
|
|
17
|
+
| Subagent isolation | Docs queried in separate context, only results returned |
|
|
18
|
+
|
|
19
|
+
**Benefits:**
|
|
20
|
+
|
|
21
|
+
- Prevents context bloat during long coding sessions
|
|
22
|
+
- Solves knowledge cutoff problem with latest docs
|
|
23
|
+
- Main context stays focused on implementation
|
|
24
|
+
|
|
25
|
+
## When to Use
|
|
26
|
+
|
|
27
|
+
| Situation | Example |
|
|
28
|
+
|-----------|---------|
|
|
29
|
+
| Latest API check | "React 19 use() hook usage" |
|
|
30
|
+
| Version differences | "Next.js 15 changes" |
|
|
31
|
+
| Official docs needed | "Prisma schema syntax" |
|
|
32
|
+
| Migration guide | "Vue 2 → Vue 3 migration" |
|
|
33
|
+
|
|
34
|
+
## How It Works
|
|
35
|
+
|
|
36
|
+
```
|
|
37
|
+
User asks library question
|
|
38
|
+
↓
|
|
39
|
+
Skill detects docs need
|
|
40
|
+
↓
|
|
41
|
+
Spawn docs-researcher subagent (haiku)
|
|
42
|
+
↓
|
|
43
|
+
Subagent calls context7 in isolated context
|
|
44
|
+
↓
|
|
45
|
+
Returns only relevant info to main context
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
## Usage
|
|
49
|
+
|
|
50
|
+
### Automatic (Recommended)
|
|
51
|
+
|
|
52
|
+
Just ask library/API questions naturally:
|
|
53
|
+
|
|
54
|
+
```
|
|
55
|
+
"How do I use React 19 use() hook?"
|
|
56
|
+
"What's new in Next.js 15?"
|
|
57
|
+
"Prisma many-to-many relation syntax"
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
The skill auto-detects and spawns a docs-researcher subagent.
|
|
61
|
+
|
|
62
|
+
### Manual Command
|
|
63
|
+
|
|
64
|
+
```
|
|
65
|
+
/context7:docs <library> [query]
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
Examples:
|
|
69
|
+
|
|
70
|
+
```
|
|
71
|
+
/context7:docs react hooks
|
|
72
|
+
/context7:docs next.js app router
|
|
73
|
+
/context7:docs prisma relations
|
|
74
|
+
```
|
|
75
|
+
|
|
76
|
+
## Implementation Pattern
|
|
77
|
+
|
|
78
|
+
When you detect a library/API documentation need, spawn a subagent:
|
|
79
|
+
|
|
80
|
+
```
|
|
81
|
+
Task tool call:
|
|
82
|
+
- subagent_type: Explore
|
|
83
|
+
- model: haiku
|
|
84
|
+
- prompt: "Use context7 to find [library] documentation about [topic]. Return only the relevant API usage examples and key points."
|
|
85
|
+
```
|
|
86
|
+
|
|
87
|
+
The subagent handles the context7 calls and returns a summary, keeping main context clean.
|
|
88
|
+
|
|
89
|
+
## Fallback Chain
|
|
90
|
+
|
|
91
|
+
```
|
|
92
|
+
context7 plugin not installed
|
|
93
|
+
↓
|
|
94
|
+
Prompt user: /plugin install context7
|
|
95
|
+
↓
|
|
96
|
+
If still unavailable: Web Search for official docs
|
|
97
|
+
```
|
|
98
|
+
|
|
99
|
+
## Installation
|
|
100
|
+
|
|
101
|
+
If context7 is not installed, guide user:
|
|
102
|
+
|
|
103
|
+
```bash
|
|
104
|
+
/plugin install context7
|
|
105
|
+
```
|
|
@@ -1,48 +1,48 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: core-capabilities
|
|
3
|
-
description: "Core framework capabilities overview. Auto-activates when working on core projects, asking about available features, or needing workflow guidance."
|
|
4
|
-
triggers: [core, capabilities, features, workflow, framework guide]
|
|
5
|
-
priority: 50
|
|
6
|
-
---
|
|
7
|
-
|
|
8
|
-
# Core Capabilities
|
|
9
|
-
|
|
10
|
-
## Pre-check (K1)
|
|
11
|
-
|
|
12
|
-
> Need to call VIBE tools directly or understand orchestrator patterns? For slash commands and workflow, check CLAUDE.md first — it covers `/vibe.spec`, `/vibe.run`, `/vibe.review`, etc.
|
|
13
|
-
|
|
14
|
-
## Direct Tool Invocation (Not in CLAUDE.md)
|
|
15
|
-
|
|
16
|
-
Call built-in tools without slash commands:
|
|
17
|
-
|
|
18
|
-
```bash
|
|
19
|
-
# Semantic code analysis
|
|
20
|
-
node -e "import('{{VIBE_PATH_URL}}/node_modules/@su-record/vibe/dist/tools/index.js').then(t => t.findSymbol({symbol: 'UserService'}))"
|
|
21
|
-
node -e "import('{{VIBE_PATH_URL}}/node_modules/@su-record/vibe/dist/tools/index.js').then(t => t.analyzeComplexity({filePath: 'src/service.ts'}))"
|
|
22
|
-
|
|
23
|
-
# Background agent via orchestrator
|
|
24
|
-
node -e "import('{{VIBE_PATH_URL}}/node_modules/@su-record/vibe/dist/infra/orchestrator/index.js').then(o => o.launchBackgroundAgent({prompt: '...', agentName: '...'}))"
|
|
25
|
-
|
|
26
|
-
# Parallel research
|
|
27
|
-
node -e "import('{{VIBE_PATH_URL}}/node_modules/@su-record/vibe/dist/infra/orchestrator/index.js').then(o => o.research('topic', ['React']).then(r => console.log(r.content[0].text)))"
|
|
28
|
-
```
|
|
29
|
-
|
|
30
|
-
## Available Tools
|
|
31
|
-
|
|
32
|
-
| Category | Tools |
|
|
33
|
-
|----------|-------|
|
|
34
|
-
| Code Analysis | `findSymbol`, `findReferences`, `analyzeComplexity`, `validateCodeQuality` |
|
|
35
|
-
| Memory | `startSession`, `autoSaveContext`, `saveMemory`, `recallMemory`, `listMemories` |
|
|
36
|
-
|
|
37
|
-
## Context Thresholds
|
|
38
|
-
|
|
39
|
-
| Threshold | Action |
|
|
40
|
-
|-----------|--------|
|
|
41
|
-
| 70% | `autoSaveContext` checkpoint |
|
|
42
|
-
| 80% | Warning + save |
|
|
43
|
-
| 90% | Critical — `saveMemory` → `/new` → `/vibe.utils --continue` |
|
|
44
|
-
|
|
45
|
-
## Done Criteria (K4)
|
|
46
|
-
|
|
47
|
-
- [ ] Tool call executed successfully (non-empty result)
|
|
48
|
-
- [ ] Context saved before reaching 90% threshold
|
|
1
|
+
---
|
|
2
|
+
name: core-capabilities
|
|
3
|
+
description: "Core framework capabilities overview. Auto-activates when working on core projects, asking about available features, or needing workflow guidance."
|
|
4
|
+
triggers: [core, capabilities, features, workflow, framework guide]
|
|
5
|
+
priority: 50
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# Core Capabilities
|
|
9
|
+
|
|
10
|
+
## Pre-check (K1)
|
|
11
|
+
|
|
12
|
+
> Need to call VIBE tools directly or understand orchestrator patterns? For slash commands and workflow, check CLAUDE.md first — it covers `/vibe.spec`, `/vibe.run`, `/vibe.review`, etc.
|
|
13
|
+
|
|
14
|
+
## Direct Tool Invocation (Not in CLAUDE.md)
|
|
15
|
+
|
|
16
|
+
Call built-in tools without slash commands:
|
|
17
|
+
|
|
18
|
+
```bash
|
|
19
|
+
# Semantic code analysis
|
|
20
|
+
node -e "import('{{VIBE_PATH_URL}}/node_modules/@su-record/vibe/dist/tools/index.js').then(t => t.findSymbol({symbol: 'UserService'}))"
|
|
21
|
+
node -e "import('{{VIBE_PATH_URL}}/node_modules/@su-record/vibe/dist/tools/index.js').then(t => t.analyzeComplexity({filePath: 'src/service.ts'}))"
|
|
22
|
+
|
|
23
|
+
# Background agent via orchestrator
|
|
24
|
+
node -e "import('{{VIBE_PATH_URL}}/node_modules/@su-record/vibe/dist/infra/orchestrator/index.js').then(o => o.launchBackgroundAgent({prompt: '...', agentName: '...'}))"
|
|
25
|
+
|
|
26
|
+
# Parallel research
|
|
27
|
+
node -e "import('{{VIBE_PATH_URL}}/node_modules/@su-record/vibe/dist/infra/orchestrator/index.js').then(o => o.research('topic', ['React']).then(r => console.log(r.content[0].text)))"
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
## Available Tools
|
|
31
|
+
|
|
32
|
+
| Category | Tools |
|
|
33
|
+
|----------|-------|
|
|
34
|
+
| Code Analysis | `findSymbol`, `findReferences`, `analyzeComplexity`, `validateCodeQuality` |
|
|
35
|
+
| Memory | `startSession`, `autoSaveContext`, `saveMemory`, `recallMemory`, `listMemories` |
|
|
36
|
+
|
|
37
|
+
## Context Thresholds
|
|
38
|
+
|
|
39
|
+
| Threshold | Action |
|
|
40
|
+
|-----------|--------|
|
|
41
|
+
| 70% | `autoSaveContext` checkpoint |
|
|
42
|
+
| 80% | Warning + save |
|
|
43
|
+
| 90% | Critical — `saveMemory` → `/new` → `/vibe.utils --continue` |
|
|
44
|
+
|
|
45
|
+
## Done Criteria (K4)
|
|
46
|
+
|
|
47
|
+
- [ ] Tool call executed successfully (non-empty result)
|
|
48
|
+
- [ ] Context saved before reaching 90% threshold
|
|
@@ -1,57 +1,57 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: e2e-commerce
|
|
3
|
-
description: "E2E test scenarios for commerce checkout and payment flows"
|
|
4
|
-
triggers: [e2e commerce, checkout test, payment test, order flow test]
|
|
5
|
-
priority: 65
|
|
6
|
-
---
|
|
7
|
-
|
|
8
|
-
# E2E Commerce Test Scenarios
|
|
9
|
-
|
|
10
|
-
## Pre-check (K1)
|
|
11
|
-
|
|
12
|
-
> Are you testing a checkout/payment/order flow? If testing simple CRUD or non-transactional features, standard E2E patterns suffice — this skill is not needed.
|
|
13
|
-
|
|
14
|
-
## Must-Test Scenarios
|
|
15
|
-
|
|
16
|
-
### P0 — Blocks Deployment
|
|
17
|
-
|
|
18
|
-
| Scenario | What to Verify | Gotcha |
|
|
19
|
-
|----------|---------------|--------|
|
|
20
|
-
| **Happy path checkout** | Cart → Shipping → Payment → Order confirmation | Verify order status text, not just URL change |
|
|
21
|
-
| **Payment failure** | Error message shown, stock released | Check stock is RELEASED after failure, not just error displayed |
|
|
22
|
-
| **Duplicate payment** | Only 1 order created on double-click | `Promise.all([click(), click()])` then verify order count via API |
|
|
23
|
-
| **Out of stock** | Blocks checkout with clear message | Simulate stock depletion mid-checkout via test API |
|
|
24
|
-
|
|
25
|
-
### P1 — Should Pass
|
|
26
|
-
|
|
27
|
-
| Scenario | What to Verify | Gotcha |
|
|
28
|
-
|----------|---------------|--------|
|
|
29
|
-
| **Coupon calculation** | Discount amount and total correct | Test percentage AND fixed amount coupons separately |
|
|
30
|
-
| **Webhook resilience** | Order completes even with delayed webhook | Configure 5s delay, verify processing→complete transition |
|
|
31
|
-
| **Cart merge on login** | Guest cart merged into user cart | User cart takes priority for duplicate items |
|
|
32
|
-
| **Partial refund** | Refunded amount correct, order updated | Verify remaining amount, not just refund event |
|
|
33
|
-
|
|
34
|
-
### P2 — Nice to Have
|
|
35
|
-
|
|
36
|
-
| Scenario | What to Verify |
|
|
37
|
-
|----------|---------------|
|
|
38
|
-
| Multiple payment methods | Each method completes checkout |
|
|
39
|
-
| Guest checkout | Full flow without login |
|
|
40
|
-
| Order cancellation | Refund triggered, stock restored |
|
|
41
|
-
|
|
42
|
-
## Test Environment Gotchas
|
|
43
|
-
|
|
44
|
-
| Gotcha | Fix |
|
|
45
|
-
|--------|-----|
|
|
46
|
-
| Using real PG sandbox in CI | Use MSW (`setupServer`) for mock PG responses |
|
|
47
|
-
| Flaky tests from timing | Use `waitForSelector`/`waitForURL`, never `sleep` |
|
|
48
|
-
| Test data leaks between tests | Seed in `beforeAll`, clean in `afterAll` |
|
|
49
|
-
| Hardcoded test card numbers | Document: `4000000000000002` = decline |
|
|
50
|
-
|
|
51
|
-
## Done Criteria (K4)
|
|
52
|
-
|
|
53
|
-
- [ ] All P0 scenarios pass in CI
|
|
54
|
-
- [ ] P1 scenarios written and tracked
|
|
55
|
-
- [ ] Test data seeded/cleaned per suite
|
|
56
|
-
- [ ] No flaky tests (no arbitrary waits)
|
|
57
|
-
- [ ] Mock PG server configured for CI
|
|
1
|
+
---
|
|
2
|
+
name: e2e-commerce
|
|
3
|
+
description: "E2E test scenarios for commerce checkout and payment flows"
|
|
4
|
+
triggers: [e2e commerce, checkout test, payment test, order flow test]
|
|
5
|
+
priority: 65
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# E2E Commerce Test Scenarios
|
|
9
|
+
|
|
10
|
+
## Pre-check (K1)
|
|
11
|
+
|
|
12
|
+
> Are you testing a checkout/payment/order flow? If testing simple CRUD or non-transactional features, standard E2E patterns suffice — this skill is not needed.
|
|
13
|
+
|
|
14
|
+
## Must-Test Scenarios
|
|
15
|
+
|
|
16
|
+
### P0 — Blocks Deployment
|
|
17
|
+
|
|
18
|
+
| Scenario | What to Verify | Gotcha |
|
|
19
|
+
|----------|---------------|--------|
|
|
20
|
+
| **Happy path checkout** | Cart → Shipping → Payment → Order confirmation | Verify order status text, not just URL change |
|
|
21
|
+
| **Payment failure** | Error message shown, stock released | Check stock is RELEASED after failure, not just error displayed |
|
|
22
|
+
| **Duplicate payment** | Only 1 order created on double-click | `Promise.all([click(), click()])` then verify order count via API |
|
|
23
|
+
| **Out of stock** | Blocks checkout with clear message | Simulate stock depletion mid-checkout via test API |
|
|
24
|
+
|
|
25
|
+
### P1 — Should Pass
|
|
26
|
+
|
|
27
|
+
| Scenario | What to Verify | Gotcha |
|
|
28
|
+
|----------|---------------|--------|
|
|
29
|
+
| **Coupon calculation** | Discount amount and total correct | Test percentage AND fixed amount coupons separately |
|
|
30
|
+
| **Webhook resilience** | Order completes even with delayed webhook | Configure 5s delay, verify processing→complete transition |
|
|
31
|
+
| **Cart merge on login** | Guest cart merged into user cart | User cart takes priority for duplicate items |
|
|
32
|
+
| **Partial refund** | Refunded amount correct, order updated | Verify remaining amount, not just refund event |
|
|
33
|
+
|
|
34
|
+
### P2 — Nice to Have
|
|
35
|
+
|
|
36
|
+
| Scenario | What to Verify |
|
|
37
|
+
|----------|---------------|
|
|
38
|
+
| Multiple payment methods | Each method completes checkout |
|
|
39
|
+
| Guest checkout | Full flow without login |
|
|
40
|
+
| Order cancellation | Refund triggered, stock restored |
|
|
41
|
+
|
|
42
|
+
## Test Environment Gotchas
|
|
43
|
+
|
|
44
|
+
| Gotcha | Fix |
|
|
45
|
+
|--------|-----|
|
|
46
|
+
| Using real PG sandbox in CI | Use MSW (`setupServer`) for mock PG responses |
|
|
47
|
+
| Flaky tests from timing | Use `waitForSelector`/`waitForURL`, never `sleep` |
|
|
48
|
+
| Test data leaks between tests | Seed in `beforeAll`, clean in `afterAll` |
|
|
49
|
+
| Hardcoded test card numbers | Document: `4000000000000002` = decline |
|
|
50
|
+
|
|
51
|
+
## Done Criteria (K4)
|
|
52
|
+
|
|
53
|
+
- [ ] All P0 scenarios pass in CI
|
|
54
|
+
- [ ] P1 scenarios written and tracked
|
|
55
|
+
- [ ] Test data seeded/cleaned per suite
|
|
56
|
+
- [ ] No flaky tests (no arbitrary waits)
|
|
57
|
+
- [ ] Mock PG server configured for CI
|