@su-record/vibe 2.8.49 → 2.8.51
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.env.example +37 -37
- package/CLAUDE.md +169 -169
- package/LICENSE +21 -21
- package/README.ko.md +190 -0
- package/README.md +97 -461
- package/agents/architect-low.md +41 -41
- package/agents/architect-medium.md +59 -59
- package/agents/architect.md +80 -80
- package/agents/build-error-resolver.md +115 -115
- package/agents/compounder.md +261 -261
- package/agents/diagrammer.md +178 -178
- package/agents/docs/api-documenter.md +99 -99
- package/agents/docs/changelog-writer.md +93 -93
- package/agents/e2e-tester.md +294 -294
- package/agents/event/event-comms.md +78 -78
- package/agents/event/event-content.md +68 -68
- package/agents/event/event-image.md +95 -95
- package/agents/event/event-ops.md +84 -84
- package/agents/event/event-scheduler.md +69 -69
- package/agents/event/event-speaker.md +86 -86
- package/agents/explorer-low.md +42 -42
- package/agents/explorer-medium.md +59 -59
- package/agents/explorer.md +48 -48
- package/agents/implementer-low.md +43 -43
- package/agents/implementer-medium.md +52 -52
- package/agents/implementer.md +54 -54
- package/agents/junior-mentor.md +141 -141
- package/agents/planning/requirements-analyst.md +84 -84
- package/agents/planning/ux-advisor.md +83 -83
- package/agents/qa/acceptance-tester.md +86 -86
- package/agents/qa/edge-case-finder.md +93 -93
- package/agents/qa/qa-coordinator.md +131 -131
- package/agents/refactor-cleaner.md +143 -143
- package/agents/research/best-practices-agent.md +199 -199
- package/agents/research/codebase-patterns-agent.md +157 -157
- package/agents/research/framework-docs-agent.md +188 -188
- package/agents/research/security-advisory-agent.md +213 -213
- package/agents/review/architecture-reviewer.md +107 -107
- package/agents/review/complexity-reviewer.md +116 -116
- package/agents/review/data-integrity-reviewer.md +88 -88
- package/agents/review/git-history-reviewer.md +103 -103
- package/agents/review/performance-reviewer.md +86 -86
- package/agents/review/python-reviewer.md +150 -150
- package/agents/review/rails-reviewer.md +139 -139
- package/agents/review/react-reviewer.md +144 -144
- package/agents/review/security-reviewer.md +80 -80
- package/agents/review/simplicity-reviewer.md +140 -140
- package/agents/review/test-coverage-reviewer.md +116 -116
- package/agents/review/typescript-reviewer.md +127 -127
- package/agents/searcher.md +54 -54
- package/agents/simplifier.md +120 -120
- package/agents/tester.md +49 -49
- package/agents/ui/ui-a11y-auditor.md +93 -93
- package/agents/ui/ui-antipattern-detector.md +102 -102
- package/agents/ui/ui-dataviz-advisor.md +69 -69
- package/agents/ui/ui-design-system-gen.md +57 -57
- package/agents/ui/ui-industry-analyzer.md +49 -49
- package/agents/ui/ui-layout-architect.md +65 -65
- package/agents/ui/ui-stack-implementer.md +68 -68
- package/agents/ui/ux-compliance-reviewer.md +81 -81
- package/agents/ui-previewer.md +258 -258
- package/commands/vibe.analyze.md +379 -379
- package/commands/vibe.docs.md +32 -32
- package/commands/vibe.event.md +163 -163
- package/commands/vibe.figma.md +69 -69
- package/commands/vibe.review.md +686 -686
- package/commands/vibe.run.md +2276 -2276
- package/commands/vibe.spec.md +1195 -1195
- package/commands/vibe.spec.review.md +609 -609
- package/commands/vibe.trace.md +259 -259
- package/commands/vibe.utils.md +413 -413
- package/commands/vibe.verify.md +510 -510
- package/dist/cli/collaborator.js +52 -52
- package/dist/cli/commands/config.js +9 -9
- package/dist/cli/commands/evolution.js +12 -12
- package/dist/cli/commands/figma.js +20 -20
- package/dist/cli/commands/info.js +53 -53
- package/dist/cli/commands/init.js +5 -5
- package/dist/cli/commands/remove.js +14 -14
- package/dist/cli/commands/sentinel.js +27 -27
- package/dist/cli/commands/skills.js +5 -5
- package/dist/cli/commands/slack.js +10 -10
- package/dist/cli/commands/stats.js +6 -6
- package/dist/cli/commands/telegram.js +12 -12
- package/dist/cli/detect.js +32 -32
- package/dist/cli/index.d.ts.map +1 -1
- package/dist/cli/index.js +52 -57
- package/dist/cli/index.js.map +1 -1
- 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/postinstall/inline-skills.js +2 -2
- package/dist/cli/postinstall/inline-skills.js.map +1 -1
- package/dist/cli/postinstall/main.js +1 -1
- package/dist/cli/postinstall/main.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 +170 -170
- package/hooks/scripts/__tests__/keyword-detector.test.js +199 -199
- package/hooks/scripts/__tests__/pre-tool-guard.test.js +286 -286
- package/hooks/scripts/__tests__/sentinel-guard.test.js +210 -210
- package/hooks/scripts/auto-commit.js +97 -65
- package/hooks/scripts/auto-format.js +64 -64
- package/hooks/scripts/auto-test.js +81 -81
- package/hooks/scripts/code-check.js +268 -216
- 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 +477 -602
- package/hooks/scripts/hud-status.js +321 -321
- package/hooks/scripts/keyword-detector.js +214 -214
- package/hooks/scripts/llm-orchestrate.js +572 -555
- package/hooks/scripts/post-edit.js +32 -32
- package/hooks/scripts/pr-test-gate.js +52 -52
- package/hooks/scripts/pre-tool-guard.js +159 -159
- package/hooks/scripts/prompt-dispatcher.js +185 -185
- package/hooks/scripts/sentinel-guard.js +131 -131
- package/hooks/scripts/session-start.js +177 -106
- package/hooks/scripts/skill-injector.js +83 -83
- package/hooks/scripts/stop-notify.js +209 -209
- package/hooks/scripts/utils.js +243 -186
- 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 -100
- package/skills/agents-md/SKILL.md +121 -121
- package/skills/agents-md/rubrics/what-to-keep.md +49 -49
- package/skills/agents-md/templates/agents-md.md +36 -36
- package/skills/arch-guard/SKILL.md +181 -181
- package/skills/arch-guard/agents/detector.md +48 -48
- package/skills/arch-guard/agents/reporter.md +48 -48
- package/skills/arch-guard/agents/rule-generator.md +49 -49
- package/skills/arch-guard/agents/violation-checker.md +51 -51
- package/skills/arch-guard/frameworks/clean-architecture.md +108 -108
- package/skills/arch-guard/frameworks/solid.md +102 -102
- package/skills/arch-guard/scripts/check-boundaries.js +90 -90
- package/skills/arch-guard/templates/arch-rules.json +47 -47
- package/skills/arch-guard/templates/violation-report.md +53 -53
- package/skills/brand-assets/SKILL.md +147 -147
- package/skills/brand-assets/rubrics/asset-checklist.md +98 -98
- package/skills/brand-assets/templates/brand-guide.md +161 -161
- package/skills/capability-loop/SKILL.md +168 -168
- package/skills/capability-loop/agents/capability-designer.md +61 -61
- package/skills/capability-loop/agents/failure-analyst.md +55 -55
- package/skills/capability-loop/agents/implementer.md +50 -50
- package/skills/capability-loop/agents/tester.md +53 -53
- package/skills/capability-loop/templates/capability-spec.md +118 -118
- package/skills/capability-loop/templates/failure-analysis.md +118 -118
- package/skills/characterization-test/SKILL.md +207 -207
- package/skills/characterization-test/agents/behavior-capturer.md +50 -50
- package/skills/characterization-test/agents/coverage-checker.md +54 -54
- package/skills/characterization-test/agents/reporter.md +50 -50
- package/skills/characterization-test/agents/test-writer.md +49 -49
- package/skills/characterization-test/rubrics/coverage-criteria.md +53 -53
- package/skills/characterization-test/templates/test-template.ts +101 -101
- package/skills/chub-usage/SKILL.md +139 -115
- package/skills/claude-md-guide/SKILL.md +351 -351
- package/skills/claude-md-guide/rubrics/anti-patterns.md +88 -88
- package/skills/claude-md-guide/templates/claude-md.md +54 -54
- package/skills/commerce-patterns/SKILL.md +64 -64
- package/skills/commerce-patterns/rubrics/checkout-flow.md +48 -48
- package/skills/commerce-patterns/templates/product-schema.md +85 -85
- package/skills/commit-push-pr/SKILL.md +77 -77
- package/skills/commit-push-pr/agents/change-analyzer.md +55 -55
- package/skills/commit-push-pr/agents/message-writer.md +50 -50
- package/skills/commit-push-pr/agents/pr-writer.md +58 -58
- package/skills/commit-push-pr/agents/reviewer.md +52 -52
- package/skills/commit-push-pr/rubrics/commit-message.md +73 -73
- package/skills/commit-push-pr/templates/pr-body.md +63 -63
- package/skills/context7-usage/SKILL.md +106 -106
- package/skills/context7-usage/rubrics/when-to-use.md +50 -50
- package/skills/create-prd/SKILL.md +90 -90
- package/skills/create-prd/agents/edge-case-finder.md +48 -48
- package/skills/create-prd/agents/prioritizer.md +60 -60
- package/skills/create-prd/agents/requirements-writer.md +48 -48
- package/skills/create-prd/agents/researcher.md +55 -55
- package/skills/create-prd/agents/reviewer.md +54 -54
- package/skills/create-prd/frameworks/jobs-to-be-done.md +96 -96
- package/skills/create-prd/frameworks/rice-scoring.md +97 -97
- package/skills/create-prd/orchestrator.md +70 -70
- package/skills/create-prd/rubrics/completeness.md +58 -58
- package/skills/create-prd/templates/prd.md +139 -139
- package/skills/design-audit/SKILL.md +152 -152
- package/skills/design-audit/agents/a11y-auditor.md +43 -43
- package/skills/design-audit/agents/performance-auditor.md +46 -46
- package/skills/design-audit/agents/responsive-auditor.md +46 -46
- package/skills/design-audit/agents/scorer.md +47 -47
- package/skills/design-audit/agents/slop-detector.md +47 -47
- package/skills/design-audit/frameworks/core-web-vitals.md +107 -107
- package/skills/design-audit/frameworks/wcag-checklist.md +64 -64
- package/skills/design-audit/orchestrator.md +64 -64
- package/skills/design-audit/rubrics/ai-slop-patterns.md +83 -83
- package/skills/design-audit/rubrics/scoring.md +63 -63
- package/skills/design-audit/templates/report.md +88 -88
- package/skills/design-critique/SKILL.md +139 -139
- package/skills/design-critique/rubrics/ux-heuristics.md +143 -143
- package/skills/design-critique/templates/critique-report.md +86 -86
- package/skills/design-distill/SKILL.md +130 -130
- package/skills/design-distill/templates/design-system.md +132 -132
- package/skills/design-normalize/SKILL.md +133 -133
- package/skills/design-normalize/rubrics/token-naming.md +117 -117
- package/skills/design-normalize/templates/token-audit.md +89 -89
- package/skills/design-polish/SKILL.md +131 -131
- package/skills/design-polish/rubrics/polish-checklist.md +68 -68
- package/skills/design-polish/templates/polish-report.md +64 -64
- package/skills/design-teach/SKILL.md +182 -182
- package/skills/design-teach/rubrics/brand-personality.md +73 -73
- package/skills/design-teach/templates/design-context.json +36 -36
- package/skills/e2e-commerce/SKILL.md +62 -62
- package/skills/e2e-commerce/templates/test-scenarios.md +170 -170
- package/skills/event-comms/SKILL.md +162 -162
- package/skills/event-comms/templates/email-invite.md +99 -99
- package/skills/event-comms/templates/sns-post.md +133 -133
- package/skills/event-ops/SKILL.md +198 -198
- package/skills/event-ops/rubrics/contingency.md +85 -85
- package/skills/event-ops/templates/d-day-checklist.md +65 -65
- package/skills/event-planning/SKILL.md +132 -132
- package/skills/event-planning/rubrics/timeline.md +70 -70
- package/skills/event-planning/templates/event-plan.md +91 -91
- package/skills/exec-plan/SKILL.md +149 -149
- package/skills/exec-plan/agents/decomposer.md +47 -47
- package/skills/exec-plan/agents/dependency-mapper.md +44 -44
- package/skills/exec-plan/agents/estimator.md +43 -43
- package/skills/exec-plan/agents/validator.md +55 -55
- package/skills/exec-plan/orchestrator.md +70 -70
- package/skills/exec-plan/rubrics/complexity-scoring.md +75 -75
- package/skills/exec-plan/templates/plan.md +147 -147
- package/skills/git-worktree/SKILL.md +73 -73
- package/skills/git-worktree/rubrics/when-to-use.md +55 -55
- package/skills/handoff/SKILL.md +110 -110
- package/skills/handoff/agents/context-summarizer.md +51 -51
- package/skills/handoff/agents/document-writer.md +63 -63
- package/skills/handoff/agents/state-collector.md +53 -53
- package/skills/handoff/agents/verifier.md +48 -48
- package/skills/handoff/rubrics/completeness.md +62 -62
- package/skills/handoff/templates/handoff.md +107 -107
- package/skills/parallel-research/SKILL.md +89 -89
- package/skills/parallel-research/agents/best-practices.md +43 -43
- package/skills/parallel-research/agents/codebase-patterns.md +46 -46
- package/skills/parallel-research/agents/framework-docs.md +45 -45
- package/skills/parallel-research/agents/security-advisory.md +46 -46
- package/skills/parallel-research/agents/synthesizer.md +52 -52
- package/skills/parallel-research/experts/best-practices.md +50 -50
- package/skills/parallel-research/experts/codebase-patterns.md +70 -70
- package/skills/parallel-research/experts/framework-docs.md +65 -65
- package/skills/parallel-research/experts/security-advisory.md +69 -69
- package/skills/parallel-research/orchestrator.md +65 -65
- package/skills/parallel-research/templates/synthesis.md +101 -101
- package/skills/prioritization-frameworks/SKILL.md +87 -87
- package/skills/prioritization-frameworks/rubrics/frameworks.md +79 -79
- package/skills/prioritization-frameworks/templates/scoring-matrix.md +69 -69
- package/skills/priority-todos/SKILL.md +64 -64
- package/skills/priority-todos/rubrics/prioritization.md +70 -70
- package/skills/priority-todos/templates/todo-board.md +59 -59
- package/skills/seo-checklist/SKILL.md +58 -58
- package/skills/seo-checklist/frameworks/structured-data.md +153 -153
- package/skills/seo-checklist/rubrics/content-seo.md +42 -42
- package/skills/seo-checklist/rubrics/technical-seo.md +48 -48
- package/skills/techdebt/SKILL.md +124 -124
- package/skills/techdebt/agents/analyzer.md +50 -50
- package/skills/techdebt/agents/fixer.md +41 -41
- package/skills/techdebt/agents/reviewer.md +47 -47
- package/skills/techdebt/agents/scanner.md +44 -44
- package/skills/techdebt/orchestrator.md +70 -70
- package/skills/techdebt/rubrics/severity.md +51 -51
- package/skills/techdebt/scripts/scan.js +90 -90
- package/skills/techdebt/templates/report.md +86 -86
- package/skills/tool-fallback/SKILL.md +104 -104
- package/skills/tool-fallback/rubrics/fallback-chain.md +58 -58
- package/skills/typescript-advanced-types/SKILL.md +67 -67
- package/skills/typescript-advanced-types/rubrics/type-patterns.md +109 -109
- package/skills/ui-ux-pro-max/SKILL.md +236 -236
- package/skills/ui-ux-pro-max/reference/color-and-contrast.md +517 -517
- package/skills/ui-ux-pro-max/reference/interaction-design.md +544 -544
- package/skills/ui-ux-pro-max/reference/motion-design.md +591 -591
- package/skills/ui-ux-pro-max/reference/responsive-design.md +463 -463
- package/skills/ui-ux-pro-max/reference/spatial-design.md +390 -390
- package/skills/ui-ux-pro-max/reference/typography.md +455 -455
- package/skills/ui-ux-pro-max/reference/ux-writing.md +469 -469
- package/skills/ui-ux-pro-max/rubrics/interaction-states.md +83 -83
- package/skills/ui-ux-pro-max/rubrics/responsive-breakpoints.md +99 -99
- package/skills/user-personas/SKILL.md +75 -75
- package/skills/user-personas/rubrics/research-methods.md +56 -56
- package/skills/user-personas/templates/persona.md +89 -89
- package/skills/vercel-react-best-practices/SKILL.md +60 -60
- package/skills/vercel-react-best-practices/rubrics/performance.md +82 -82
- package/skills/vercel-react-best-practices/rubrics/server-components.md +86 -86
- package/skills/vibe.docs/SKILL.md +171 -171
- package/skills/vibe.docs/templates/architecture.md +80 -80
- package/skills/vibe.docs/templates/readme.md +84 -84
- package/skills/vibe.docs/templates/release-notes.md +74 -74
- package/skills/vibe.figma/SKILL.md +982 -209
- package/skills/vibe.figma/rubrics/extraction-checklist.md +51 -51
- package/skills/vibe.figma/templates/component-index.md +126 -126
- package/skills/vibe.figma/templates/figma-handoff.md +100 -100
- package/skills/vibe.figma/templates/remapped-tree.md +277 -277
- package/skills/vibe.figma.convert/SKILL.md +511 -630
- package/skills/vibe.figma.convert/rubrics/conversion-rules.md +113 -129
- package/skills/vibe.figma.convert/templates/component.md +140 -140
- package/skills/vibe.figma.extract/SKILL.md +300 -349
- package/skills/vibe.figma.extract/rubrics/image-rules.md +137 -145
- package/skills/video-production/SKILL.md +52 -52
- package/skills/video-production/rubrics/quality-checklist.md +58 -58
- package/skills/video-production/templates/production-plan.md +104 -104
- package/vibe/config.json +29 -29
- package/vibe/constitution.md +227 -227
- package/vibe/rules/principles/communication-guide.md +98 -98
- package/vibe/rules/principles/development-philosophy.md +52 -52
- package/vibe/rules/principles/quick-start.md +102 -102
- package/vibe/rules/quality/bdd-contract-testing.md +393 -393
- package/vibe/rules/quality/checklist.md +276 -276
- package/vibe/rules/quality/performance.md +236 -236
- package/vibe/rules/quality/testing-strategy.md +440 -440
- package/vibe/rules/standards/anti-patterns.md +541 -541
- package/vibe/rules/standards/code-structure.md +291 -291
- package/vibe/rules/standards/complexity-metrics.md +313 -313
- package/vibe/rules/standards/git-workflow.md +237 -237
- package/vibe/rules/standards/naming-conventions.md +198 -198
- package/vibe/rules/standards/security.md +305 -305
- package/vibe/rules/writing/document-style.md +74 -74
- package/vibe/setup.sh +31 -31
- package/vibe/templates/constitution-template.md +252 -252
- package/vibe/templates/contract-backend-template.md +526 -526
- package/vibe/templates/contract-frontend-template.md +599 -599
- package/vibe/templates/feature-template.md +96 -96
- package/vibe/templates/spec-template.md +221 -221
- package/vibe/ui-ux-data/charts.csv +26 -26
- package/vibe/ui-ux-data/colors.csv +97 -97
- package/vibe/ui-ux-data/icons.csv +101 -101
- package/vibe/ui-ux-data/landing.csv +31 -31
- package/vibe/ui-ux-data/products.csv +96 -96
- package/vibe/ui-ux-data/react-performance.csv +45 -45
- package/vibe/ui-ux-data/stacks/astro.csv +54 -54
- package/vibe/ui-ux-data/stacks/flutter.csv +53 -53
- package/vibe/ui-ux-data/stacks/html-tailwind.csv +56 -56
- package/vibe/ui-ux-data/stacks/jetpack-compose.csv +53 -53
- package/vibe/ui-ux-data/stacks/nextjs.csv +53 -53
- package/vibe/ui-ux-data/stacks/nuxt-ui.csv +51 -51
- package/vibe/ui-ux-data/stacks/nuxtjs.csv +59 -59
- package/vibe/ui-ux-data/stacks/react-native.csv +52 -52
- package/vibe/ui-ux-data/stacks/react.csv +54 -54
- package/vibe/ui-ux-data/stacks/shadcn.csv +61 -61
- package/vibe/ui-ux-data/stacks/svelte.csv +54 -54
- package/vibe/ui-ux-data/stacks/swiftui.csv +51 -51
- package/vibe/ui-ux-data/stacks/vue.csv +50 -50
- package/vibe/ui-ux-data/styles.csv +68 -68
- package/vibe/ui-ux-data/typography.csv +57 -57
- package/vibe/ui-ux-data/ui-reasoning.csv +101 -101
- package/vibe/ui-ux-data/ux-guidelines.csv +99 -99
- package/vibe/ui-ux-data/version.json +31 -31
- package/vibe/ui-ux-data/web-interface.csv +31 -31
|
@@ -1,50 +1,50 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: reporter
|
|
3
|
-
role: Summarizes what behavior is locked and confirms the codebase is safe to refactor
|
|
4
|
-
tools: [Read, Bash]
|
|
5
|
-
---
|
|
6
|
-
|
|
7
|
-
# Reporter
|
|
8
|
-
|
|
9
|
-
## Role
|
|
10
|
-
Produces the final summary after all characterization tests pass. Communicates to the developer exactly what is now locked, what is not covered, and what the safe refactoring boundaries are.
|
|
11
|
-
|
|
12
|
-
## Responsibilities
|
|
13
|
-
- Summarize total test count and what behaviors each test locks
|
|
14
|
-
- List any intentionally excluded behaviors and the rationale
|
|
15
|
-
- State explicit refactor safety boundaries (what can change vs. what must stay)
|
|
16
|
-
- Provide the single command to run before and after any code change
|
|
17
|
-
- Archive the behavior manifest alongside the test file
|
|
18
|
-
|
|
19
|
-
## Input
|
|
20
|
-
- Coverage audit report from coverage-checker
|
|
21
|
-
- Final test run results
|
|
22
|
-
- Original behavior manifest
|
|
23
|
-
|
|
24
|
-
## Output
|
|
25
|
-
A handoff summary printed to the user:
|
|
26
|
-
|
|
27
|
-
```markdown
|
|
28
|
-
## Characterization Test Report: {ModuleName}
|
|
29
|
-
|
|
30
|
-
### Locked Behaviors (safe to refactor)
|
|
31
|
-
- functionA: 3 cases locked (happy path, null, empty array)
|
|
32
|
-
- functionB: 2 cases locked (returns string, throws on invalid)
|
|
33
|
-
|
|
34
|
-
### Not Covered (refactor with caution)
|
|
35
|
-
- functionC: no tests — side effects unclear, manual review required
|
|
36
|
-
|
|
37
|
-
### Refactor Safety Command
|
|
38
|
-
Run this before AND after changes:
|
|
39
|
-
npx vitest run src/__tests__/{module}.characterization.test.ts
|
|
40
|
-
|
|
41
|
-
### Verdict
|
|
42
|
-
SAFE TO REFACTOR — all public API surface locked.
|
|
43
|
-
```
|
|
44
|
-
|
|
45
|
-
## Communication
|
|
46
|
-
- Reports findings to: user / orchestrator
|
|
47
|
-
- Receives instructions from: orchestrator
|
|
48
|
-
|
|
49
|
-
## Domain Knowledge
|
|
50
|
-
A green characterization suite is a contract. Any failure after refactor means behavior changed — intentional or not. Distinguish between "expected failures" (intended changes) and "unexpected failures" (regressions).
|
|
1
|
+
---
|
|
2
|
+
name: reporter
|
|
3
|
+
role: Summarizes what behavior is locked and confirms the codebase is safe to refactor
|
|
4
|
+
tools: [Read, Bash]
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# Reporter
|
|
8
|
+
|
|
9
|
+
## Role
|
|
10
|
+
Produces the final summary after all characterization tests pass. Communicates to the developer exactly what is now locked, what is not covered, and what the safe refactoring boundaries are.
|
|
11
|
+
|
|
12
|
+
## Responsibilities
|
|
13
|
+
- Summarize total test count and what behaviors each test locks
|
|
14
|
+
- List any intentionally excluded behaviors and the rationale
|
|
15
|
+
- State explicit refactor safety boundaries (what can change vs. what must stay)
|
|
16
|
+
- Provide the single command to run before and after any code change
|
|
17
|
+
- Archive the behavior manifest alongside the test file
|
|
18
|
+
|
|
19
|
+
## Input
|
|
20
|
+
- Coverage audit report from coverage-checker
|
|
21
|
+
- Final test run results
|
|
22
|
+
- Original behavior manifest
|
|
23
|
+
|
|
24
|
+
## Output
|
|
25
|
+
A handoff summary printed to the user:
|
|
26
|
+
|
|
27
|
+
```markdown
|
|
28
|
+
## Characterization Test Report: {ModuleName}
|
|
29
|
+
|
|
30
|
+
### Locked Behaviors (safe to refactor)
|
|
31
|
+
- functionA: 3 cases locked (happy path, null, empty array)
|
|
32
|
+
- functionB: 2 cases locked (returns string, throws on invalid)
|
|
33
|
+
|
|
34
|
+
### Not Covered (refactor with caution)
|
|
35
|
+
- functionC: no tests — side effects unclear, manual review required
|
|
36
|
+
|
|
37
|
+
### Refactor Safety Command
|
|
38
|
+
Run this before AND after changes:
|
|
39
|
+
npx vitest run src/__tests__/{module}.characterization.test.ts
|
|
40
|
+
|
|
41
|
+
### Verdict
|
|
42
|
+
SAFE TO REFACTOR — all public API surface locked.
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
## Communication
|
|
46
|
+
- Reports findings to: user / orchestrator
|
|
47
|
+
- Receives instructions from: orchestrator
|
|
48
|
+
|
|
49
|
+
## Domain Knowledge
|
|
50
|
+
A green characterization suite is a contract. Any failure after refactor means behavior changed — intentional or not. Distinguish between "expected failures" (intended changes) and "unexpected failures" (regressions).
|
|
@@ -1,49 +1,49 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: test-writer
|
|
3
|
-
role: Generates vitest characterization tests that lock captured behavior
|
|
4
|
-
tools: [Read, Write, Edit, Bash]
|
|
5
|
-
---
|
|
6
|
-
|
|
7
|
-
# Test Writer
|
|
8
|
-
|
|
9
|
-
## Role
|
|
10
|
-
Takes the behavior manifest from behavior-capturer and produces a complete vitest test file that locks the current behavior as-is. Tests capture actual output — not expected behavior — using snapshot assertions.
|
|
11
|
-
|
|
12
|
-
## Responsibilities
|
|
13
|
-
- Write one `describe` block per module with clearly labeled test cases
|
|
14
|
-
- Cover every branching path identified in the behavior manifest
|
|
15
|
-
- Use `toMatchSnapshot()` for complex return shapes, `toBe`/`toEqual` for primitives
|
|
16
|
-
- Include error path tests with `toThrowErrorMatchingSnapshot()`
|
|
17
|
-
- Never fix bugs — lock current behavior exactly as it is
|
|
18
|
-
|
|
19
|
-
## Input
|
|
20
|
-
- Behavior manifest from behavior-capturer
|
|
21
|
-
- Target file path(s) and their import shapes
|
|
22
|
-
- Project test config (vitest.config.ts location)
|
|
23
|
-
|
|
24
|
-
## Output
|
|
25
|
-
A complete test file written to `src/__tests__/{module}.characterization.test.ts`:
|
|
26
|
-
|
|
27
|
-
```typescript
|
|
28
|
-
import { describe, it, expect } from 'vitest';
|
|
29
|
-
import { targetFn } from '../path/to/module.js';
|
|
30
|
-
|
|
31
|
-
describe('{ModuleName} characterization tests', () => {
|
|
32
|
-
it('should handle normal input', () => {
|
|
33
|
-
expect(targetFn(normalInput)).toMatchSnapshot();
|
|
34
|
-
});
|
|
35
|
-
|
|
36
|
-
it('should handle null input', () => {
|
|
37
|
-
expect(() => targetFn(null)).toThrowErrorMatchingSnapshot();
|
|
38
|
-
});
|
|
39
|
-
});
|
|
40
|
-
```
|
|
41
|
-
|
|
42
|
-
Reports: path to generated test file and count of test cases written.
|
|
43
|
-
|
|
44
|
-
## Communication
|
|
45
|
-
- Reports findings to: orchestrator (characterization-test skill)
|
|
46
|
-
- Receives instructions from: orchestrator
|
|
47
|
-
|
|
48
|
-
## Domain Knowledge
|
|
49
|
-
Characterization test rule: if the current code returns a wrong value for an input, the test must lock THAT wrong value. The goal is regression detection, not correctness. Use `vitest --run -u` to initialize snapshots on first run.
|
|
1
|
+
---
|
|
2
|
+
name: test-writer
|
|
3
|
+
role: Generates vitest characterization tests that lock captured behavior
|
|
4
|
+
tools: [Read, Write, Edit, Bash]
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# Test Writer
|
|
8
|
+
|
|
9
|
+
## Role
|
|
10
|
+
Takes the behavior manifest from behavior-capturer and produces a complete vitest test file that locks the current behavior as-is. Tests capture actual output — not expected behavior — using snapshot assertions.
|
|
11
|
+
|
|
12
|
+
## Responsibilities
|
|
13
|
+
- Write one `describe` block per module with clearly labeled test cases
|
|
14
|
+
- Cover every branching path identified in the behavior manifest
|
|
15
|
+
- Use `toMatchSnapshot()` for complex return shapes, `toBe`/`toEqual` for primitives
|
|
16
|
+
- Include error path tests with `toThrowErrorMatchingSnapshot()`
|
|
17
|
+
- Never fix bugs — lock current behavior exactly as it is
|
|
18
|
+
|
|
19
|
+
## Input
|
|
20
|
+
- Behavior manifest from behavior-capturer
|
|
21
|
+
- Target file path(s) and their import shapes
|
|
22
|
+
- Project test config (vitest.config.ts location)
|
|
23
|
+
|
|
24
|
+
## Output
|
|
25
|
+
A complete test file written to `src/__tests__/{module}.characterization.test.ts`:
|
|
26
|
+
|
|
27
|
+
```typescript
|
|
28
|
+
import { describe, it, expect } from 'vitest';
|
|
29
|
+
import { targetFn } from '../path/to/module.js';
|
|
30
|
+
|
|
31
|
+
describe('{ModuleName} characterization tests', () => {
|
|
32
|
+
it('should handle normal input', () => {
|
|
33
|
+
expect(targetFn(normalInput)).toMatchSnapshot();
|
|
34
|
+
});
|
|
35
|
+
|
|
36
|
+
it('should handle null input', () => {
|
|
37
|
+
expect(() => targetFn(null)).toThrowErrorMatchingSnapshot();
|
|
38
|
+
});
|
|
39
|
+
});
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
Reports: path to generated test file and count of test cases written.
|
|
43
|
+
|
|
44
|
+
## Communication
|
|
45
|
+
- Reports findings to: orchestrator (characterization-test skill)
|
|
46
|
+
- Receives instructions from: orchestrator
|
|
47
|
+
|
|
48
|
+
## Domain Knowledge
|
|
49
|
+
Characterization test rule: if the current code returns a wrong value for an input, the test must lock THAT wrong value. The goal is regression detection, not correctness. Use `vitest --run -u` to initialize snapshots on first run.
|
|
@@ -1,53 +1,53 @@
|
|
|
1
|
-
# Characterization Test Coverage Criteria
|
|
2
|
-
|
|
3
|
-
Coverage that MUST exist before any refactoring begins.
|
|
4
|
-
|
|
5
|
-
## Mandatory Coverage (all must pass before changing code)
|
|
6
|
-
|
|
7
|
-
### Public API Surface
|
|
8
|
-
- [ ] Every exported function has at least one characterization test
|
|
9
|
-
- [ ] Every exported class method (public) has at least one test
|
|
10
|
-
- [ ] Every exported type's runtime behavior is tested where applicable
|
|
11
|
-
|
|
12
|
-
### Input Coverage
|
|
13
|
-
- [ ] Typical / happy-path input
|
|
14
|
-
- [ ] Minimum valid input (empty string, 0, `[]`, `{}`)
|
|
15
|
-
- [ ] Maximum or large input (long strings, large arrays)
|
|
16
|
-
- [ ] Boundary values (off-by-one, limits)
|
|
17
|
-
|
|
18
|
-
### Branch Coverage
|
|
19
|
-
- [ ] Each top-level `if` branch has a dedicated test
|
|
20
|
-
- [ ] Each `switch` case has a dedicated test
|
|
21
|
-
- [ ] `try/catch` — both success and error paths tested
|
|
22
|
-
- [ ] Short-circuit conditions (`&&`, `||`) exercised
|
|
23
|
-
|
|
24
|
-
### Error Paths
|
|
25
|
-
- [ ] `null` input behavior captured
|
|
26
|
-
- [ ] `undefined` input behavior captured
|
|
27
|
-
- [ ] Invalid type input behavior captured
|
|
28
|
-
- [ ] Thrown errors match snapshot (message, type)
|
|
29
|
-
|
|
30
|
-
### Side Effects
|
|
31
|
-
- [ ] External calls (DB, network, filesystem) are mocked and call args verified
|
|
32
|
-
- [ ] Return values from mocks are representative of real responses
|
|
33
|
-
- [ ] State mutations are verified before and after
|
|
34
|
-
|
|
35
|
-
## Sufficient vs. Insufficient Coverage
|
|
36
|
-
|
|
37
|
-
| Situation | Sufficient? |
|
|
38
|
-
|-----------|-------------|
|
|
39
|
-
| 1 happy-path snapshot only | No — missing edge cases and error paths |
|
|
40
|
-
| All branches covered, no error paths | No — error behavior must be locked |
|
|
41
|
-
| All public exports tested | Minimum viable — add side-effect tests if any exist |
|
|
42
|
-
| Snapshot exists but test not run | No — must run and pass before refactoring |
|
|
43
|
-
| Test passes after code change | Confirm intentional; update snapshot with reason |
|
|
44
|
-
|
|
45
|
-
## Definition of Done
|
|
46
|
-
|
|
47
|
-
The characterization suite is complete when:
|
|
48
|
-
|
|
49
|
-
1. All tests pass on current code without modification
|
|
50
|
-
2. Every public export is exercised
|
|
51
|
-
3. At least one error-path test exists per function
|
|
52
|
-
4. Snapshots are committed alongside tests
|
|
53
|
-
5. `npx vitest run <test-file>` exits with code 0
|
|
1
|
+
# Characterization Test Coverage Criteria
|
|
2
|
+
|
|
3
|
+
Coverage that MUST exist before any refactoring begins.
|
|
4
|
+
|
|
5
|
+
## Mandatory Coverage (all must pass before changing code)
|
|
6
|
+
|
|
7
|
+
### Public API Surface
|
|
8
|
+
- [ ] Every exported function has at least one characterization test
|
|
9
|
+
- [ ] Every exported class method (public) has at least one test
|
|
10
|
+
- [ ] Every exported type's runtime behavior is tested where applicable
|
|
11
|
+
|
|
12
|
+
### Input Coverage
|
|
13
|
+
- [ ] Typical / happy-path input
|
|
14
|
+
- [ ] Minimum valid input (empty string, 0, `[]`, `{}`)
|
|
15
|
+
- [ ] Maximum or large input (long strings, large arrays)
|
|
16
|
+
- [ ] Boundary values (off-by-one, limits)
|
|
17
|
+
|
|
18
|
+
### Branch Coverage
|
|
19
|
+
- [ ] Each top-level `if` branch has a dedicated test
|
|
20
|
+
- [ ] Each `switch` case has a dedicated test
|
|
21
|
+
- [ ] `try/catch` — both success and error paths tested
|
|
22
|
+
- [ ] Short-circuit conditions (`&&`, `||`) exercised
|
|
23
|
+
|
|
24
|
+
### Error Paths
|
|
25
|
+
- [ ] `null` input behavior captured
|
|
26
|
+
- [ ] `undefined` input behavior captured
|
|
27
|
+
- [ ] Invalid type input behavior captured
|
|
28
|
+
- [ ] Thrown errors match snapshot (message, type)
|
|
29
|
+
|
|
30
|
+
### Side Effects
|
|
31
|
+
- [ ] External calls (DB, network, filesystem) are mocked and call args verified
|
|
32
|
+
- [ ] Return values from mocks are representative of real responses
|
|
33
|
+
- [ ] State mutations are verified before and after
|
|
34
|
+
|
|
35
|
+
## Sufficient vs. Insufficient Coverage
|
|
36
|
+
|
|
37
|
+
| Situation | Sufficient? |
|
|
38
|
+
|-----------|-------------|
|
|
39
|
+
| 1 happy-path snapshot only | No — missing edge cases and error paths |
|
|
40
|
+
| All branches covered, no error paths | No — error behavior must be locked |
|
|
41
|
+
| All public exports tested | Minimum viable — add side-effect tests if any exist |
|
|
42
|
+
| Snapshot exists but test not run | No — must run and pass before refactoring |
|
|
43
|
+
| Test passes after code change | Confirm intentional; update snapshot with reason |
|
|
44
|
+
|
|
45
|
+
## Definition of Done
|
|
46
|
+
|
|
47
|
+
The characterization suite is complete when:
|
|
48
|
+
|
|
49
|
+
1. All tests pass on current code without modification
|
|
50
|
+
2. Every public export is exercised
|
|
51
|
+
3. At least one error-path test exists per function
|
|
52
|
+
4. Snapshots are committed alongside tests
|
|
53
|
+
5. `npx vitest run <test-file>` exits with code 0
|
|
@@ -1,101 +1,101 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Characterization test template — lock existing behavior before refactoring.
|
|
3
|
-
*
|
|
4
|
-
* Instructions:
|
|
5
|
-
* 1. Replace {{MODULE_NAME}} with the module under test.
|
|
6
|
-
* 2. Replace {{IMPORT_PATH}} with the relative import path.
|
|
7
|
-
* 3. Replace {{FUNCTION_NAME}} with each public export to characterize.
|
|
8
|
-
* 4. Run once to generate snapshots: npx vitest run --update {{TEST_FILE}}
|
|
9
|
-
* 5. Verify all tests pass BEFORE making any changes to the source.
|
|
10
|
-
*
|
|
11
|
-
* IMPORTANT: Capture ACTUAL behavior, not expected/ideal behavior.
|
|
12
|
-
* If the current code has a bug, capture the buggy output — fix it separately.
|
|
13
|
-
*/
|
|
14
|
-
|
|
15
|
-
import { describe, it, expect, vi, beforeEach } from 'vitest';
|
|
16
|
-
// import { {{FUNCTION_NAME}} } from '{{IMPORT_PATH}}';
|
|
17
|
-
|
|
18
|
-
describe('{{MODULE_NAME}} — characterization tests', () => {
|
|
19
|
-
beforeEach(() => {
|
|
20
|
-
vi.clearAllMocks();
|
|
21
|
-
});
|
|
22
|
-
|
|
23
|
-
// -------------------------------------------------------------------------
|
|
24
|
-
// Happy path — normal inputs
|
|
25
|
-
// -------------------------------------------------------------------------
|
|
26
|
-
|
|
27
|
-
it('should handle typical input', () => {
|
|
28
|
-
// const result = {{FUNCTION_NAME}}({{TYPICAL_INPUT}});
|
|
29
|
-
// expect(result).toMatchSnapshot();
|
|
30
|
-
});
|
|
31
|
-
|
|
32
|
-
it('should handle minimum valid input', () => {
|
|
33
|
-
// const result = {{FUNCTION_NAME}}({{MIN_INPUT}});
|
|
34
|
-
// expect(result).toMatchSnapshot();
|
|
35
|
-
});
|
|
36
|
-
|
|
37
|
-
it('should handle maximum valid input', () => {
|
|
38
|
-
// const result = {{FUNCTION_NAME}}({{MAX_INPUT}});
|
|
39
|
-
// expect(result).toMatchSnapshot();
|
|
40
|
-
});
|
|
41
|
-
|
|
42
|
-
// -------------------------------------------------------------------------
|
|
43
|
-
// Edge cases — boundary values
|
|
44
|
-
// -------------------------------------------------------------------------
|
|
45
|
-
|
|
46
|
-
it('should handle empty string input', () => {
|
|
47
|
-
// const result = {{FUNCTION_NAME}}('');
|
|
48
|
-
// expect(result).toMatchSnapshot();
|
|
49
|
-
});
|
|
50
|
-
|
|
51
|
-
it('should handle empty array input', () => {
|
|
52
|
-
// const result = {{FUNCTION_NAME}}([]);
|
|
53
|
-
// expect(result).toMatchSnapshot();
|
|
54
|
-
});
|
|
55
|
-
|
|
56
|
-
it('should handle zero / false / null-like values', () => {
|
|
57
|
-
// const result = {{FUNCTION_NAME}}(0);
|
|
58
|
-
// expect(result).toMatchSnapshot();
|
|
59
|
-
});
|
|
60
|
-
|
|
61
|
-
// -------------------------------------------------------------------------
|
|
62
|
-
// Error paths — failure modes
|
|
63
|
-
// -------------------------------------------------------------------------
|
|
64
|
-
|
|
65
|
-
it('should handle null input', () => {
|
|
66
|
-
// expect(() => {{FUNCTION_NAME}}(null)).toThrowErrorMatchingSnapshot();
|
|
67
|
-
});
|
|
68
|
-
|
|
69
|
-
it('should handle undefined input', () => {
|
|
70
|
-
// expect(() => {{FUNCTION_NAME}}(undefined)).toThrowErrorMatchingSnapshot();
|
|
71
|
-
});
|
|
72
|
-
|
|
73
|
-
it('should handle invalid type input', () => {
|
|
74
|
-
// expect(() => {{FUNCTION_NAME}}({{INVALID_INPUT}})).toThrowErrorMatchingSnapshot();
|
|
75
|
-
});
|
|
76
|
-
|
|
77
|
-
// -------------------------------------------------------------------------
|
|
78
|
-
// Side effects — external interactions
|
|
79
|
-
// -------------------------------------------------------------------------
|
|
80
|
-
|
|
81
|
-
it('should call external dependency with correct arguments', () => {
|
|
82
|
-
// const spy = vi.spyOn({{DEPENDENCY}}, '{{METHOD}}');
|
|
83
|
-
// {{FUNCTION_NAME}}({{TYPICAL_INPUT}});
|
|
84
|
-
// expect(spy).toHaveBeenCalledWith({{EXPECTED_ARGS}});
|
|
85
|
-
// expect(spy).toHaveBeenCalledTimes(1);
|
|
86
|
-
});
|
|
87
|
-
|
|
88
|
-
// -------------------------------------------------------------------------
|
|
89
|
-
// Branching paths — one test per major branch
|
|
90
|
-
// -------------------------------------------------------------------------
|
|
91
|
-
|
|
92
|
-
it('should take branch A when condition is true', () => {
|
|
93
|
-
// const result = {{FUNCTION_NAME}}({{BRANCH_A_INPUT}});
|
|
94
|
-
// expect(result).toMatchSnapshot();
|
|
95
|
-
});
|
|
96
|
-
|
|
97
|
-
it('should take branch B when condition is false', () => {
|
|
98
|
-
// const result = {{FUNCTION_NAME}}({{BRANCH_B_INPUT}});
|
|
99
|
-
// expect(result).toMatchSnapshot();
|
|
100
|
-
});
|
|
101
|
-
});
|
|
1
|
+
/**
|
|
2
|
+
* Characterization test template — lock existing behavior before refactoring.
|
|
3
|
+
*
|
|
4
|
+
* Instructions:
|
|
5
|
+
* 1. Replace {{MODULE_NAME}} with the module under test.
|
|
6
|
+
* 2. Replace {{IMPORT_PATH}} with the relative import path.
|
|
7
|
+
* 3. Replace {{FUNCTION_NAME}} with each public export to characterize.
|
|
8
|
+
* 4. Run once to generate snapshots: npx vitest run --update {{TEST_FILE}}
|
|
9
|
+
* 5. Verify all tests pass BEFORE making any changes to the source.
|
|
10
|
+
*
|
|
11
|
+
* IMPORTANT: Capture ACTUAL behavior, not expected/ideal behavior.
|
|
12
|
+
* If the current code has a bug, capture the buggy output — fix it separately.
|
|
13
|
+
*/
|
|
14
|
+
|
|
15
|
+
import { describe, it, expect, vi, beforeEach } from 'vitest';
|
|
16
|
+
// import { {{FUNCTION_NAME}} } from '{{IMPORT_PATH}}';
|
|
17
|
+
|
|
18
|
+
describe('{{MODULE_NAME}} — characterization tests', () => {
|
|
19
|
+
beforeEach(() => {
|
|
20
|
+
vi.clearAllMocks();
|
|
21
|
+
});
|
|
22
|
+
|
|
23
|
+
// -------------------------------------------------------------------------
|
|
24
|
+
// Happy path — normal inputs
|
|
25
|
+
// -------------------------------------------------------------------------
|
|
26
|
+
|
|
27
|
+
it('should handle typical input', () => {
|
|
28
|
+
// const result = {{FUNCTION_NAME}}({{TYPICAL_INPUT}});
|
|
29
|
+
// expect(result).toMatchSnapshot();
|
|
30
|
+
});
|
|
31
|
+
|
|
32
|
+
it('should handle minimum valid input', () => {
|
|
33
|
+
// const result = {{FUNCTION_NAME}}({{MIN_INPUT}});
|
|
34
|
+
// expect(result).toMatchSnapshot();
|
|
35
|
+
});
|
|
36
|
+
|
|
37
|
+
it('should handle maximum valid input', () => {
|
|
38
|
+
// const result = {{FUNCTION_NAME}}({{MAX_INPUT}});
|
|
39
|
+
// expect(result).toMatchSnapshot();
|
|
40
|
+
});
|
|
41
|
+
|
|
42
|
+
// -------------------------------------------------------------------------
|
|
43
|
+
// Edge cases — boundary values
|
|
44
|
+
// -------------------------------------------------------------------------
|
|
45
|
+
|
|
46
|
+
it('should handle empty string input', () => {
|
|
47
|
+
// const result = {{FUNCTION_NAME}}('');
|
|
48
|
+
// expect(result).toMatchSnapshot();
|
|
49
|
+
});
|
|
50
|
+
|
|
51
|
+
it('should handle empty array input', () => {
|
|
52
|
+
// const result = {{FUNCTION_NAME}}([]);
|
|
53
|
+
// expect(result).toMatchSnapshot();
|
|
54
|
+
});
|
|
55
|
+
|
|
56
|
+
it('should handle zero / false / null-like values', () => {
|
|
57
|
+
// const result = {{FUNCTION_NAME}}(0);
|
|
58
|
+
// expect(result).toMatchSnapshot();
|
|
59
|
+
});
|
|
60
|
+
|
|
61
|
+
// -------------------------------------------------------------------------
|
|
62
|
+
// Error paths — failure modes
|
|
63
|
+
// -------------------------------------------------------------------------
|
|
64
|
+
|
|
65
|
+
it('should handle null input', () => {
|
|
66
|
+
// expect(() => {{FUNCTION_NAME}}(null)).toThrowErrorMatchingSnapshot();
|
|
67
|
+
});
|
|
68
|
+
|
|
69
|
+
it('should handle undefined input', () => {
|
|
70
|
+
// expect(() => {{FUNCTION_NAME}}(undefined)).toThrowErrorMatchingSnapshot();
|
|
71
|
+
});
|
|
72
|
+
|
|
73
|
+
it('should handle invalid type input', () => {
|
|
74
|
+
// expect(() => {{FUNCTION_NAME}}({{INVALID_INPUT}})).toThrowErrorMatchingSnapshot();
|
|
75
|
+
});
|
|
76
|
+
|
|
77
|
+
// -------------------------------------------------------------------------
|
|
78
|
+
// Side effects — external interactions
|
|
79
|
+
// -------------------------------------------------------------------------
|
|
80
|
+
|
|
81
|
+
it('should call external dependency with correct arguments', () => {
|
|
82
|
+
// const spy = vi.spyOn({{DEPENDENCY}}, '{{METHOD}}');
|
|
83
|
+
// {{FUNCTION_NAME}}({{TYPICAL_INPUT}});
|
|
84
|
+
// expect(spy).toHaveBeenCalledWith({{EXPECTED_ARGS}});
|
|
85
|
+
// expect(spy).toHaveBeenCalledTimes(1);
|
|
86
|
+
});
|
|
87
|
+
|
|
88
|
+
// -------------------------------------------------------------------------
|
|
89
|
+
// Branching paths — one test per major branch
|
|
90
|
+
// -------------------------------------------------------------------------
|
|
91
|
+
|
|
92
|
+
it('should take branch A when condition is true', () => {
|
|
93
|
+
// const result = {{FUNCTION_NAME}}({{BRANCH_A_INPUT}});
|
|
94
|
+
// expect(result).toMatchSnapshot();
|
|
95
|
+
});
|
|
96
|
+
|
|
97
|
+
it('should take branch B when condition is false', () => {
|
|
98
|
+
// const result = {{FUNCTION_NAME}}({{BRANCH_B_INPUT}});
|
|
99
|
+
// expect(result).toMatchSnapshot();
|
|
100
|
+
});
|
|
101
|
+
});
|