@su-record/vibe 2.8.52 → 2.8.53
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.env.example +37 -37
- package/CLAUDE.md +169 -169
- package/LICENSE +21 -21
- package/agents/architect-low.md +41 -41
- package/agents/architect-medium.md +59 -59
- package/agents/architect.md +80 -80
- package/agents/build-error-resolver.md +115 -115
- package/agents/compounder.md +261 -261
- package/agents/diagrammer.md +178 -178
- package/agents/docs/api-documenter.md +99 -99
- package/agents/docs/changelog-writer.md +93 -93
- package/agents/e2e-tester.md +294 -294
- package/agents/event/event-comms.md +78 -78
- package/agents/event/event-content.md +68 -68
- package/agents/event/event-image.md +95 -95
- package/agents/event/event-ops.md +84 -84
- package/agents/event/event-scheduler.md +69 -69
- package/agents/event/event-speaker.md +86 -86
- package/agents/explorer-low.md +42 -42
- package/agents/explorer-medium.md +59 -59
- package/agents/explorer.md +48 -48
- package/agents/implementer-low.md +43 -43
- package/agents/implementer-medium.md +52 -52
- package/agents/implementer.md +54 -54
- package/agents/junior-mentor.md +141 -141
- package/agents/planning/requirements-analyst.md +84 -84
- package/agents/planning/ux-advisor.md +83 -83
- package/agents/qa/acceptance-tester.md +86 -86
- package/agents/qa/edge-case-finder.md +93 -93
- package/agents/qa/qa-coordinator.md +131 -131
- package/agents/refactor-cleaner.md +143 -143
- package/agents/research/best-practices-agent.md +199 -199
- package/agents/research/codebase-patterns-agent.md +157 -157
- package/agents/research/framework-docs-agent.md +188 -188
- package/agents/research/security-advisory-agent.md +213 -213
- package/agents/review/architecture-reviewer.md +107 -107
- package/agents/review/complexity-reviewer.md +116 -116
- package/agents/review/data-integrity-reviewer.md +88 -88
- package/agents/review/git-history-reviewer.md +103 -103
- package/agents/review/performance-reviewer.md +86 -86
- package/agents/review/python-reviewer.md +150 -150
- package/agents/review/rails-reviewer.md +139 -139
- package/agents/review/react-reviewer.md +144 -144
- package/agents/review/security-reviewer.md +80 -80
- package/agents/review/simplicity-reviewer.md +140 -140
- package/agents/review/test-coverage-reviewer.md +116 -116
- package/agents/review/typescript-reviewer.md +127 -127
- package/agents/searcher.md +54 -54
- package/agents/simplifier.md +120 -120
- package/agents/tester.md +49 -49
- package/agents/ui/ui-a11y-auditor.md +93 -93
- package/agents/ui/ui-antipattern-detector.md +102 -102
- package/agents/ui/ui-dataviz-advisor.md +69 -69
- package/agents/ui/ui-design-system-gen.md +57 -57
- package/agents/ui/ui-industry-analyzer.md +49 -49
- package/agents/ui/ui-layout-architect.md +65 -65
- package/agents/ui/ui-stack-implementer.md +68 -68
- package/agents/ui/ux-compliance-reviewer.md +81 -81
- package/agents/ui-previewer.md +258 -258
- package/commands/vibe.analyze.md +379 -379
- package/commands/vibe.docs.md +32 -32
- package/commands/vibe.event.md +163 -163
- package/commands/vibe.figma.md +69 -69
- package/commands/vibe.review.md +686 -686
- package/commands/vibe.run.md +2276 -2276
- package/commands/vibe.spec.md +1195 -1195
- package/commands/vibe.spec.review.md +609 -609
- package/commands/vibe.trace.md +259 -259
- package/commands/vibe.utils.md +413 -413
- package/commands/vibe.verify.md +510 -510
- package/dist/cli/collaborator.js +52 -52
- package/dist/cli/commands/config.js +9 -9
- package/dist/cli/commands/evolution.js +12 -12
- package/dist/cli/commands/figma.js +20 -20
- package/dist/cli/commands/info.js +53 -53
- package/dist/cli/commands/init.js +5 -5
- package/dist/cli/commands/remove.js +14 -14
- package/dist/cli/commands/sentinel.js +27 -27
- package/dist/cli/commands/skills.js +5 -5
- package/dist/cli/commands/slack.js +10 -10
- package/dist/cli/commands/stats.js +6 -6
- package/dist/cli/commands/telegram.js +12 -12
- package/dist/cli/detect.js +32 -32
- package/dist/cli/index.js +51 -51
- package/dist/cli/llm/claude-commands.js +16 -16
- package/dist/cli/llm/config.js +18 -18
- package/dist/cli/llm/gemini-commands.js +16 -16
- package/dist/cli/llm/gpt-commands.js +19 -19
- package/dist/cli/llm/help.js +21 -21
- package/dist/cli/postinstall/cursor-agents.js +32 -32
- package/dist/cli/postinstall/cursor-rules.js +83 -83
- package/dist/cli/postinstall/cursor-skills.js +743 -743
- package/dist/cli/setup/Provisioner.js +42 -42
- package/dist/infra/lib/DeepInit.js +24 -24
- package/dist/infra/lib/IterationTracker.js +11 -11
- package/dist/infra/lib/PythonParser.js +108 -108
- package/dist/infra/lib/ReviewRace.js +96 -96
- package/dist/infra/lib/SkillFrontmatter.js +28 -28
- package/dist/infra/lib/SkillQualityGate.js +9 -9
- package/dist/infra/lib/SkillRepository.js +159 -159
- package/dist/infra/lib/TokenBudgetTracker.d.ts +13 -0
- package/dist/infra/lib/TokenBudgetTracker.d.ts.map +1 -1
- package/dist/infra/lib/TokenBudgetTracker.js +44 -3
- package/dist/infra/lib/TokenBudgetTracker.js.map +1 -1
- package/dist/infra/lib/UltraQA.js +99 -99
- package/dist/infra/lib/autonomy/AuditStore.js +41 -41
- package/dist/infra/lib/autonomy/ConfirmationStore.js +30 -30
- package/dist/infra/lib/autonomy/EventOutbox.js +38 -38
- package/dist/infra/lib/autonomy/PolicyEngine.d.ts +3 -3
- package/dist/infra/lib/autonomy/PolicyEngine.js +18 -18
- package/dist/infra/lib/autonomy/SecuritySentinel.js +1 -1
- package/dist/infra/lib/autonomy/SuggestionStore.js +33 -33
- package/dist/infra/lib/embedding/VectorStore.js +22 -22
- package/dist/infra/lib/evolution/AgentAnalyzer.js +10 -10
- package/dist/infra/lib/evolution/DescriptionOptimizer.js +21 -21
- package/dist/infra/lib/evolution/GenerationRegistry.js +36 -36
- package/dist/infra/lib/evolution/InsightStore.js +90 -90
- package/dist/infra/lib/evolution/ParityTester.js +57 -57
- package/dist/infra/lib/evolution/RollbackManager.js +5 -5
- package/dist/infra/lib/evolution/SkillBenchmark.js +23 -23
- package/dist/infra/lib/evolution/SkillEvalRunner.js +50 -50
- package/dist/infra/lib/evolution/SkillGapDetector.js +10 -10
- package/dist/infra/lib/evolution/UsageTracker.js +28 -28
- package/dist/infra/lib/gemini/orchestration.js +5 -5
- package/dist/infra/lib/gpt/orchestration.js +4 -4
- package/dist/infra/lib/memory/KnowledgeGraph.js +4 -4
- package/dist/infra/lib/memory/MemorySearch.js +57 -57
- package/dist/infra/lib/memory/MemoryStorage.js +181 -181
- package/dist/infra/lib/memory/ObservationStore.js +28 -28
- package/dist/infra/lib/memory/ReflectionStore.js +30 -30
- package/dist/infra/lib/memory/SessionRAGRetriever.js +7 -7
- package/dist/infra/lib/memory/SessionRAGStore.js +225 -225
- package/dist/infra/lib/memory/SessionSummarizer.js +9 -9
- package/dist/infra/orchestrator/AgentManager.js +12 -12
- package/dist/infra/orchestrator/AgentRegistry.js +65 -65
- package/dist/infra/orchestrator/MultiLlmResearch.js +8 -8
- package/dist/infra/orchestrator/SwarmOrchestrator.test.js +16 -16
- package/dist/infra/orchestrator/parallelResearch.js +24 -24
- package/dist/tools/convention/analyzeComplexity.test.js +115 -115
- package/dist/tools/convention/validateCodeQuality.test.js +104 -104
- package/dist/tools/memory/createMemoryTimeline.js +10 -10
- package/dist/tools/memory/getMemoryGraph.js +12 -12
- package/dist/tools/memory/getSessionContext.js +9 -9
- package/dist/tools/memory/linkMemories.js +14 -14
- package/dist/tools/memory/listMemories.js +4 -4
- package/dist/tools/memory/recallMemory.js +4 -4
- package/dist/tools/memory/saveMemory.js +4 -4
- package/dist/tools/memory/searchMemoriesAdvanced.js +23 -23
- package/dist/tools/semantic/analyzeDependencyGraph.js +12 -12
- package/dist/tools/semantic/astGrep.test.js +6 -6
- package/dist/tools/spec/prdParser.test.js +171 -171
- package/dist/tools/spec/specGenerator.js +169 -169
- package/dist/tools/spec/traceabilityMatrix.js +64 -64
- package/dist/tools/spec/traceabilityMatrix.test.js +28 -28
- package/hooks/gemini-hooks.json +73 -73
- package/hooks/hooks.json +174 -174
- package/hooks/scripts/__tests__/keyword-detector.test.js +199 -199
- package/hooks/scripts/__tests__/pre-tool-guard.test.js +286 -286
- package/hooks/scripts/__tests__/sentinel-guard.test.js +210 -210
- package/hooks/scripts/auto-commit.js +97 -97
- package/hooks/scripts/auto-format.js +64 -64
- package/hooks/scripts/auto-test.js +81 -81
- package/hooks/scripts/code-check.js +268 -268
- package/hooks/scripts/codex-detect.js +46 -46
- package/hooks/scripts/codex-review-gate.js +80 -80
- package/hooks/scripts/command-log.js +32 -32
- package/hooks/scripts/context-save.js +353 -353
- package/hooks/scripts/evolution-engine.js +91 -91
- package/hooks/scripts/figma-extract.js +635 -477
- package/hooks/scripts/hud-status.js +321 -321
- package/hooks/scripts/keyword-detector.js +214 -214
- package/hooks/scripts/llm-orchestrate.js +572 -572
- package/hooks/scripts/post-edit.js +32 -32
- package/hooks/scripts/pr-test-gate.js +52 -52
- package/hooks/scripts/pre-tool-guard.js +214 -159
- package/hooks/scripts/prompt-dispatcher.js +185 -185
- package/hooks/scripts/sentinel-guard.js +131 -131
- package/hooks/scripts/session-start.js +177 -177
- package/hooks/scripts/skill-injector.js +83 -83
- package/hooks/scripts/stop-notify.js +209 -209
- package/hooks/scripts/utils.js +243 -243
- package/languages/csharp-unity.md +515 -515
- package/languages/gdscript-godot.md +470 -470
- package/languages/ruby-rails.md +489 -489
- package/languages/typescript-angular.md +433 -433
- package/languages/typescript-astro.md +416 -416
- package/languages/typescript-electron.md +406 -406
- package/languages/typescript-nestjs.md +524 -524
- package/languages/typescript-svelte.md +407 -407
- package/languages/typescript-tauri.md +365 -365
- package/package.json +101 -101
- package/skills/agents-md/SKILL.md +121 -121
- package/skills/agents-md/rubrics/what-to-keep.md +49 -49
- package/skills/agents-md/templates/agents-md.md +36 -36
- package/skills/arch-guard/SKILL.md +181 -181
- package/skills/arch-guard/agents/detector.md +48 -48
- package/skills/arch-guard/agents/reporter.md +48 -48
- package/skills/arch-guard/agents/rule-generator.md +49 -49
- package/skills/arch-guard/agents/violation-checker.md +51 -51
- package/skills/arch-guard/frameworks/clean-architecture.md +108 -108
- package/skills/arch-guard/frameworks/solid.md +102 -102
- package/skills/arch-guard/scripts/check-boundaries.js +90 -90
- package/skills/arch-guard/templates/arch-rules.json +47 -47
- package/skills/arch-guard/templates/violation-report.md +53 -53
- package/skills/brand-assets/SKILL.md +147 -147
- package/skills/brand-assets/rubrics/asset-checklist.md +98 -98
- package/skills/brand-assets/templates/brand-guide.md +161 -161
- package/skills/capability-loop/SKILL.md +168 -168
- package/skills/capability-loop/agents/capability-designer.md +61 -61
- package/skills/capability-loop/agents/failure-analyst.md +55 -55
- package/skills/capability-loop/agents/implementer.md +50 -50
- package/skills/capability-loop/agents/tester.md +53 -53
- package/skills/capability-loop/templates/capability-spec.md +118 -118
- package/skills/capability-loop/templates/failure-analysis.md +118 -118
- package/skills/characterization-test/SKILL.md +207 -207
- package/skills/characterization-test/agents/behavior-capturer.md +50 -50
- package/skills/characterization-test/agents/coverage-checker.md +54 -54
- package/skills/characterization-test/agents/reporter.md +50 -50
- package/skills/characterization-test/agents/test-writer.md +49 -49
- package/skills/characterization-test/rubrics/coverage-criteria.md +53 -53
- package/skills/characterization-test/templates/test-template.ts +101 -101
- package/skills/chub-usage/SKILL.md +139 -139
- package/skills/claude-md-guide/SKILL.md +351 -351
- package/skills/claude-md-guide/rubrics/anti-patterns.md +88 -88
- package/skills/claude-md-guide/templates/claude-md.md +54 -54
- package/skills/commerce-patterns/SKILL.md +64 -64
- package/skills/commerce-patterns/rubrics/checkout-flow.md +48 -48
- package/skills/commerce-patterns/templates/product-schema.md +85 -85
- package/skills/commit-push-pr/SKILL.md +77 -77
- package/skills/commit-push-pr/agents/change-analyzer.md +55 -55
- package/skills/commit-push-pr/agents/message-writer.md +50 -50
- package/skills/commit-push-pr/agents/pr-writer.md +58 -58
- package/skills/commit-push-pr/agents/reviewer.md +52 -52
- package/skills/commit-push-pr/rubrics/commit-message.md +73 -73
- package/skills/commit-push-pr/templates/pr-body.md +63 -63
- package/skills/context7-usage/SKILL.md +106 -106
- package/skills/context7-usage/rubrics/when-to-use.md +50 -50
- package/skills/create-prd/SKILL.md +90 -90
- package/skills/create-prd/agents/edge-case-finder.md +48 -48
- package/skills/create-prd/agents/prioritizer.md +60 -60
- package/skills/create-prd/agents/requirements-writer.md +48 -48
- package/skills/create-prd/agents/researcher.md +55 -55
- package/skills/create-prd/agents/reviewer.md +54 -54
- package/skills/create-prd/frameworks/jobs-to-be-done.md +96 -96
- package/skills/create-prd/frameworks/rice-scoring.md +97 -97
- package/skills/create-prd/orchestrator.md +70 -70
- package/skills/create-prd/rubrics/completeness.md +58 -58
- package/skills/create-prd/templates/prd.md +139 -139
- package/skills/design-audit/SKILL.md +152 -152
- package/skills/design-audit/agents/a11y-auditor.md +43 -43
- package/skills/design-audit/agents/performance-auditor.md +46 -46
- package/skills/design-audit/agents/responsive-auditor.md +46 -46
- package/skills/design-audit/agents/scorer.md +47 -47
- package/skills/design-audit/agents/slop-detector.md +47 -47
- package/skills/design-audit/frameworks/core-web-vitals.md +107 -107
- package/skills/design-audit/frameworks/wcag-checklist.md +64 -64
- package/skills/design-audit/orchestrator.md +64 -64
- package/skills/design-audit/rubrics/ai-slop-patterns.md +83 -83
- package/skills/design-audit/rubrics/scoring.md +63 -63
- package/skills/design-audit/templates/report.md +88 -88
- package/skills/design-critique/SKILL.md +139 -139
- package/skills/design-critique/rubrics/ux-heuristics.md +143 -143
- package/skills/design-critique/templates/critique-report.md +86 -86
- package/skills/design-distill/SKILL.md +130 -130
- package/skills/design-distill/templates/design-system.md +132 -132
- package/skills/design-normalize/SKILL.md +133 -133
- package/skills/design-normalize/rubrics/token-naming.md +117 -117
- package/skills/design-normalize/templates/token-audit.md +89 -89
- package/skills/design-polish/SKILL.md +131 -131
- package/skills/design-polish/rubrics/polish-checklist.md +68 -68
- package/skills/design-polish/templates/polish-report.md +64 -64
- package/skills/design-teach/SKILL.md +182 -182
- package/skills/design-teach/rubrics/brand-personality.md +73 -73
- package/skills/design-teach/templates/design-context.json +36 -36
- package/skills/e2e-commerce/SKILL.md +62 -62
- package/skills/e2e-commerce/templates/test-scenarios.md +170 -170
- package/skills/event-comms/SKILL.md +162 -162
- package/skills/event-comms/templates/email-invite.md +99 -99
- package/skills/event-comms/templates/sns-post.md +133 -133
- package/skills/event-ops/SKILL.md +198 -198
- package/skills/event-ops/rubrics/contingency.md +85 -85
- package/skills/event-ops/templates/d-day-checklist.md +65 -65
- package/skills/event-planning/SKILL.md +132 -132
- package/skills/event-planning/rubrics/timeline.md +70 -70
- package/skills/event-planning/templates/event-plan.md +91 -91
- package/skills/exec-plan/SKILL.md +149 -149
- package/skills/exec-plan/agents/decomposer.md +47 -47
- package/skills/exec-plan/agents/dependency-mapper.md +44 -44
- package/skills/exec-plan/agents/estimator.md +43 -43
- package/skills/exec-plan/agents/validator.md +55 -55
- package/skills/exec-plan/orchestrator.md +70 -70
- package/skills/exec-plan/rubrics/complexity-scoring.md +75 -75
- package/skills/exec-plan/templates/plan.md +147 -147
- package/skills/git-worktree/SKILL.md +73 -73
- package/skills/git-worktree/rubrics/when-to-use.md +55 -55
- package/skills/handoff/SKILL.md +110 -110
- package/skills/handoff/agents/context-summarizer.md +51 -51
- package/skills/handoff/agents/document-writer.md +63 -63
- package/skills/handoff/agents/state-collector.md +53 -53
- package/skills/handoff/agents/verifier.md +48 -48
- package/skills/handoff/rubrics/completeness.md +62 -62
- package/skills/handoff/templates/handoff.md +107 -107
- package/skills/parallel-research/SKILL.md +89 -89
- package/skills/parallel-research/agents/best-practices.md +43 -43
- package/skills/parallel-research/agents/codebase-patterns.md +46 -46
- package/skills/parallel-research/agents/framework-docs.md +45 -45
- package/skills/parallel-research/agents/security-advisory.md +46 -46
- package/skills/parallel-research/agents/synthesizer.md +52 -52
- package/skills/parallel-research/experts/best-practices.md +50 -50
- package/skills/parallel-research/experts/codebase-patterns.md +70 -70
- package/skills/parallel-research/experts/framework-docs.md +65 -65
- package/skills/parallel-research/experts/security-advisory.md +69 -69
- package/skills/parallel-research/orchestrator.md +65 -65
- package/skills/parallel-research/templates/synthesis.md +101 -101
- package/skills/prioritization-frameworks/SKILL.md +87 -87
- package/skills/prioritization-frameworks/rubrics/frameworks.md +79 -79
- package/skills/prioritization-frameworks/templates/scoring-matrix.md +69 -69
- package/skills/priority-todos/SKILL.md +64 -64
- package/skills/priority-todos/rubrics/prioritization.md +70 -70
- package/skills/priority-todos/templates/todo-board.md +59 -59
- package/skills/seo-checklist/SKILL.md +58 -58
- package/skills/seo-checklist/frameworks/structured-data.md +153 -153
- package/skills/seo-checklist/rubrics/content-seo.md +42 -42
- package/skills/seo-checklist/rubrics/technical-seo.md +48 -48
- package/skills/techdebt/SKILL.md +124 -124
- package/skills/techdebt/agents/analyzer.md +50 -50
- package/skills/techdebt/agents/fixer.md +41 -41
- package/skills/techdebt/agents/reviewer.md +47 -47
- package/skills/techdebt/agents/scanner.md +44 -44
- package/skills/techdebt/orchestrator.md +70 -70
- package/skills/techdebt/rubrics/severity.md +51 -51
- package/skills/techdebt/scripts/scan.js +90 -90
- package/skills/techdebt/templates/report.md +86 -86
- package/skills/tool-fallback/SKILL.md +104 -104
- package/skills/tool-fallback/rubrics/fallback-chain.md +58 -58
- package/skills/typescript-advanced-types/SKILL.md +67 -67
- package/skills/typescript-advanced-types/rubrics/type-patterns.md +109 -109
- package/skills/ui-ux-pro-max/SKILL.md +236 -236
- package/skills/ui-ux-pro-max/reference/color-and-contrast.md +517 -517
- package/skills/ui-ux-pro-max/reference/interaction-design.md +544 -544
- package/skills/ui-ux-pro-max/reference/motion-design.md +591 -591
- package/skills/ui-ux-pro-max/reference/responsive-design.md +463 -463
- package/skills/ui-ux-pro-max/reference/spatial-design.md +390 -390
- package/skills/ui-ux-pro-max/reference/typography.md +455 -455
- package/skills/ui-ux-pro-max/reference/ux-writing.md +469 -469
- package/skills/ui-ux-pro-max/rubrics/interaction-states.md +83 -83
- package/skills/ui-ux-pro-max/rubrics/responsive-breakpoints.md +99 -99
- package/skills/user-personas/SKILL.md +75 -75
- package/skills/user-personas/rubrics/research-methods.md +56 -56
- package/skills/user-personas/templates/persona.md +89 -89
- package/skills/vercel-react-best-practices/SKILL.md +60 -60
- package/skills/vercel-react-best-practices/rubrics/performance.md +82 -82
- package/skills/vercel-react-best-practices/rubrics/server-components.md +86 -86
- package/skills/vibe.docs/SKILL.md +171 -171
- package/skills/vibe.docs/templates/architecture.md +80 -80
- package/skills/vibe.docs/templates/readme.md +84 -84
- package/skills/vibe.docs/templates/release-notes.md +74 -74
- package/skills/vibe.figma/SKILL.md +215 -982
- package/skills/vibe.figma/rubrics/extraction-checklist.md +51 -51
- package/skills/vibe.figma/templates/component-index.md +126 -126
- package/skills/vibe.figma/templates/figma-handoff.md +100 -100
- package/skills/vibe.figma/templates/remapped-tree.md +277 -277
- package/skills/vibe.figma.convert/SKILL.md +188 -511
- package/skills/vibe.figma.convert/rubrics/conversion-rules.md +129 -113
- package/skills/vibe.figma.convert/templates/component.md +140 -140
- package/skills/vibe.figma.extract/SKILL.md +179 -300
- package/skills/vibe.figma.extract/rubrics/image-rules.md +145 -137
- package/skills/video-production/SKILL.md +52 -52
- package/skills/video-production/rubrics/quality-checklist.md +58 -58
- package/skills/video-production/templates/production-plan.md +104 -104
- package/vibe/config.json +29 -29
- package/vibe/constitution.md +227 -227
- package/vibe/rules/principles/communication-guide.md +98 -98
- package/vibe/rules/principles/development-philosophy.md +52 -52
- package/vibe/rules/principles/quick-start.md +102 -102
- package/vibe/rules/quality/bdd-contract-testing.md +393 -393
- package/vibe/rules/quality/checklist.md +276 -276
- package/vibe/rules/quality/performance.md +236 -236
- package/vibe/rules/quality/testing-strategy.md +440 -440
- package/vibe/rules/standards/anti-patterns.md +541 -541
- package/vibe/rules/standards/code-structure.md +291 -291
- package/vibe/rules/standards/complexity-metrics.md +313 -313
- package/vibe/rules/standards/git-workflow.md +237 -237
- package/vibe/rules/standards/naming-conventions.md +198 -198
- package/vibe/rules/standards/security.md +305 -305
- package/vibe/rules/writing/document-style.md +74 -74
- package/vibe/setup.sh +31 -31
- package/vibe/templates/constitution-template.md +252 -252
- package/vibe/templates/contract-backend-template.md +526 -526
- package/vibe/templates/contract-frontend-template.md +599 -599
- package/vibe/templates/feature-template.md +96 -96
- package/vibe/templates/spec-template.md +221 -221
- package/vibe/ui-ux-data/charts.csv +26 -26
- package/vibe/ui-ux-data/colors.csv +97 -97
- package/vibe/ui-ux-data/icons.csv +101 -101
- package/vibe/ui-ux-data/landing.csv +31 -31
- package/vibe/ui-ux-data/products.csv +96 -96
- package/vibe/ui-ux-data/react-performance.csv +45 -45
- package/vibe/ui-ux-data/stacks/astro.csv +54 -54
- package/vibe/ui-ux-data/stacks/flutter.csv +53 -53
- package/vibe/ui-ux-data/stacks/html-tailwind.csv +56 -56
- package/vibe/ui-ux-data/stacks/jetpack-compose.csv +53 -53
- package/vibe/ui-ux-data/stacks/nextjs.csv +53 -53
- package/vibe/ui-ux-data/stacks/nuxt-ui.csv +51 -51
- package/vibe/ui-ux-data/stacks/nuxtjs.csv +59 -59
- package/vibe/ui-ux-data/stacks/react-native.csv +52 -52
- package/vibe/ui-ux-data/stacks/react.csv +54 -54
- package/vibe/ui-ux-data/stacks/shadcn.csv +61 -61
- package/vibe/ui-ux-data/stacks/svelte.csv +54 -54
- package/vibe/ui-ux-data/stacks/swiftui.csv +51 -51
- package/vibe/ui-ux-data/stacks/vue.csv +50 -50
- package/vibe/ui-ux-data/styles.csv +68 -68
- package/vibe/ui-ux-data/typography.csv +57 -57
- package/vibe/ui-ux-data/ui-reasoning.csv +101 -101
- package/vibe/ui-ux-data/ux-guidelines.csv +99 -99
- package/vibe/ui-ux-data/version.json +31 -31
- package/vibe/ui-ux-data/web-interface.csv +31 -31
|
@@ -1,199 +1,199 @@
|
|
|
1
|
-
import { describe, it, expect } from 'vitest';
|
|
2
|
-
import { execFileSync } from 'child_process';
|
|
3
|
-
import path from 'path';
|
|
4
|
-
import { fileURLToPath } from 'url';
|
|
5
|
-
|
|
6
|
-
const __dirname = path.dirname(fileURLToPath(import.meta.url));
|
|
7
|
-
const SCRIPT = path.resolve(__dirname, '..', 'keyword-detector.js');
|
|
8
|
-
|
|
9
|
-
/**
|
|
10
|
-
* Run keyword-detector.js with given text as argv.
|
|
11
|
-
* Returns { stdout, exitCode }.
|
|
12
|
-
*/
|
|
13
|
-
function runDetector(text) {
|
|
14
|
-
try {
|
|
15
|
-
const stdout = execFileSync('node', [SCRIPT, text], {
|
|
16
|
-
encoding: 'utf-8',
|
|
17
|
-
timeout: 5000,
|
|
18
|
-
});
|
|
19
|
-
return { stdout: stdout.trim(), exitCode: 0 };
|
|
20
|
-
} catch (err) {
|
|
21
|
-
return { stdout: (err.stdout || '').trim(), exitCode: err.status };
|
|
22
|
-
}
|
|
23
|
-
}
|
|
24
|
-
|
|
25
|
-
// ══════════════════════════════════════════════════
|
|
26
|
-
// Individual keyword detection
|
|
27
|
-
// ══════════════════════════════════════════════════
|
|
28
|
-
describe('keyword-detector', () => {
|
|
29
|
-
describe('ralph keyword', () => {
|
|
30
|
-
it('should detect ralph keyword', () => {
|
|
31
|
-
const result = runDetector('implement the login feature ralph');
|
|
32
|
-
expect(result.stdout).toContain('[RALPH MODE]');
|
|
33
|
-
expect(result.stdout).toContain('persistence');
|
|
34
|
-
});
|
|
35
|
-
|
|
36
|
-
it('should detect ralph case-insensitively', () => {
|
|
37
|
-
const result = runDetector('RALPH fix all the bugs');
|
|
38
|
-
expect(result.stdout).toContain('[RALPH MODE]');
|
|
39
|
-
});
|
|
40
|
-
});
|
|
41
|
-
|
|
42
|
-
describe('ultrawork keyword', () => {
|
|
43
|
-
it('should detect ultrawork keyword', () => {
|
|
44
|
-
const result = runDetector('ultrawork build the entire app');
|
|
45
|
-
expect(result.stdout).toContain('[ULTRAWORK MODE]');
|
|
46
|
-
expect(result.stdout).toContain('parallel');
|
|
47
|
-
});
|
|
48
|
-
|
|
49
|
-
it('should detect ulw alias', () => {
|
|
50
|
-
const result = runDetector('ulw refactor the codebase');
|
|
51
|
-
expect(result.stdout).toContain('[ULTRAWORK MODE]');
|
|
52
|
-
});
|
|
53
|
-
|
|
54
|
-
it('should detect Korean alias when word boundary matches', () => {
|
|
55
|
-
// Note: \\b word boundary may not match Korean characters reliably
|
|
56
|
-
// because \\b is designed for ASCII word boundaries.
|
|
57
|
-
// This test documents the current behavior.
|
|
58
|
-
const result = runDetector('울트라워크');
|
|
59
|
-
// Korean chars lack ASCII word boundaries, so regex may not match
|
|
60
|
-
// If it does match, great; if not, this documents the limitation
|
|
61
|
-
expect(typeof result.stdout).toBe('string');
|
|
62
|
-
});
|
|
63
|
-
});
|
|
64
|
-
|
|
65
|
-
describe('ralplan keyword', () => {
|
|
66
|
-
it('should detect ralplan keyword', () => {
|
|
67
|
-
const result = runDetector('ralplan design the architecture');
|
|
68
|
-
expect(result.stdout).toContain('[RALPLAN MODE]');
|
|
69
|
-
expect(result.stdout).toContain('persistence');
|
|
70
|
-
expect(result.stdout).toContain('planning');
|
|
71
|
-
});
|
|
72
|
-
});
|
|
73
|
-
|
|
74
|
-
describe('verify keyword', () => {
|
|
75
|
-
it('should detect verify keyword', () => {
|
|
76
|
-
const result = runDetector('verify the implementation is correct');
|
|
77
|
-
expect(result.stdout).toContain('[VERIFY MODE]');
|
|
78
|
-
expect(result.stdout).toContain('verification');
|
|
79
|
-
});
|
|
80
|
-
});
|
|
81
|
-
|
|
82
|
-
describe('quick keyword', () => {
|
|
83
|
-
it('should detect quick keyword', () => {
|
|
84
|
-
const result = runDetector('quick fix this typo');
|
|
85
|
-
expect(result.stdout).toContain('[QUICK MODE]');
|
|
86
|
-
expect(result.stdout).toContain('fast');
|
|
87
|
-
});
|
|
88
|
-
});
|
|
89
|
-
|
|
90
|
-
describe('explore keyword', () => {
|
|
91
|
-
it('should detect explore keyword', () => {
|
|
92
|
-
const result = runDetector('explore the codebase structure');
|
|
93
|
-
expect(result.stdout).toContain('[EXPLORE MODE]');
|
|
94
|
-
expect(result.stdout).toContain('exploration');
|
|
95
|
-
});
|
|
96
|
-
});
|
|
97
|
-
|
|
98
|
-
describe('plan keyword', () => {
|
|
99
|
-
it('should detect plan keyword', () => {
|
|
100
|
-
const result = runDetector('plan the new feature');
|
|
101
|
-
expect(result.stdout).toContain('[PLAN MODE]');
|
|
102
|
-
expect(result.stdout).toContain('planning');
|
|
103
|
-
});
|
|
104
|
-
});
|
|
105
|
-
|
|
106
|
-
// ══════════════════════════════════════════════════
|
|
107
|
-
// Keyword combinations / synergies
|
|
108
|
-
// ══════════════════════════════════════════════════
|
|
109
|
-
describe('keyword combinations', () => {
|
|
110
|
-
it('should detect ralph+ultrawork synergy', () => {
|
|
111
|
-
const result = runDetector('ralph ultrawork build everything from scratch');
|
|
112
|
-
expect(result.stdout).toContain('[RALPH+ULTRAWORK]');
|
|
113
|
-
expect(result.stdout).toContain('persistence');
|
|
114
|
-
expect(result.stdout).toContain('parallel');
|
|
115
|
-
});
|
|
116
|
-
|
|
117
|
-
it('should detect ralph+verify synergy', () => {
|
|
118
|
-
const result = runDetector('ralph verify each step carefully');
|
|
119
|
-
expect(result.stdout).toContain('[RALPH+VERIFY]');
|
|
120
|
-
});
|
|
121
|
-
|
|
122
|
-
it('should output both keywords when no synergy key matches sorted order', () => {
|
|
123
|
-
// KEYWORD_SYNERGIES defines 'ultrawork+explore' but processCombinations
|
|
124
|
-
// sorts keywords alphabetically → tries 'explore+ultrawork' which has no match.
|
|
125
|
-
// So individual outputs are emitted instead.
|
|
126
|
-
const result = runDetector('ultrawork explore the entire project');
|
|
127
|
-
expect(result.stdout).toContain('[ULTRAWORK MODE]');
|
|
128
|
-
expect(result.stdout).toContain('[EXPLORE MODE]');
|
|
129
|
-
expect(result.stdout).toContain('[FLAGS]');
|
|
130
|
-
});
|
|
131
|
-
});
|
|
132
|
-
|
|
133
|
-
// ══════════════════════════════════════════════════
|
|
134
|
-
// No keywords
|
|
135
|
-
// ══════════════════════════════════════════════════
|
|
136
|
-
describe('no keywords detected', () => {
|
|
137
|
-
it('should output nothing when no keywords present', () => {
|
|
138
|
-
const result = runDetector('just a normal prompt with no magic words');
|
|
139
|
-
expect(result.stdout).toBe('');
|
|
140
|
-
});
|
|
141
|
-
|
|
142
|
-
it('should not match partial words', () => {
|
|
143
|
-
// "verify" inside "verifying" — depends on word boundary regex
|
|
144
|
-
// The regex uses \b so "verifying" would NOT match "verify" as a whole word
|
|
145
|
-
// Actually \bverify\b would match "verify" in "verifying"? No — "verifying" has
|
|
146
|
-
// chars after "verify" that are word chars, so \bverify\b won't match.
|
|
147
|
-
const result = runDetector('verifying the output looks good');
|
|
148
|
-
expect(result.stdout).toBe('');
|
|
149
|
-
});
|
|
150
|
-
|
|
151
|
-
it('should not match keywords embedded in other words', () => {
|
|
152
|
-
const result = runDetector('exploration of quickly planning');
|
|
153
|
-
// "explore" should NOT match "exploration" (word boundary)
|
|
154
|
-
// "quick" should NOT match "quickly"
|
|
155
|
-
// "plan" should NOT match "planning"
|
|
156
|
-
expect(result.stdout).toBe('');
|
|
157
|
-
});
|
|
158
|
-
});
|
|
159
|
-
|
|
160
|
-
// ══════════════════════════════════════════════════
|
|
161
|
-
// Empty input — shows help
|
|
162
|
-
// ══════════════════════════════════════════════════
|
|
163
|
-
describe('help output', () => {
|
|
164
|
-
it('should show usage info with no input', () => {
|
|
165
|
-
const result = runDetector('');
|
|
166
|
-
// Empty string arg is still truthy, pass no args instead
|
|
167
|
-
try {
|
|
168
|
-
const stdout = execFileSync('node', [SCRIPT], {
|
|
169
|
-
encoding: 'utf-8',
|
|
170
|
-
timeout: 5000,
|
|
171
|
-
});
|
|
172
|
-
expect(stdout).toContain('Available magic keywords');
|
|
173
|
-
expect(stdout).toContain('Keyword combinations');
|
|
174
|
-
} catch (err) {
|
|
175
|
-
// Should exit 0, but just in case
|
|
176
|
-
expect(err.stdout || '').toContain('Available magic keywords');
|
|
177
|
-
}
|
|
178
|
-
});
|
|
179
|
-
});
|
|
180
|
-
|
|
181
|
-
// ══════════════════════════════════════════════════
|
|
182
|
-
// Flags collection
|
|
183
|
-
// ══════════════════════════════════════════════════
|
|
184
|
-
describe('flags output', () => {
|
|
185
|
-
it('should output collected flags for single keyword', () => {
|
|
186
|
-
const result = runDetector('ralph do the thing');
|
|
187
|
-
expect(result.stdout).toContain('[FLAGS]');
|
|
188
|
-
expect(result.stdout).toContain('persistence');
|
|
189
|
-
expect(result.stdout).toContain('verification');
|
|
190
|
-
});
|
|
191
|
-
|
|
192
|
-
it('should merge flags from multiple keywords', () => {
|
|
193
|
-
const result = runDetector('ralph quick finish this');
|
|
194
|
-
expect(result.stdout).toContain('[FLAGS]');
|
|
195
|
-
expect(result.stdout).toContain('persistence');
|
|
196
|
-
expect(result.stdout).toContain('fast');
|
|
197
|
-
});
|
|
198
|
-
});
|
|
199
|
-
});
|
|
1
|
+
import { describe, it, expect } from 'vitest';
|
|
2
|
+
import { execFileSync } from 'child_process';
|
|
3
|
+
import path from 'path';
|
|
4
|
+
import { fileURLToPath } from 'url';
|
|
5
|
+
|
|
6
|
+
const __dirname = path.dirname(fileURLToPath(import.meta.url));
|
|
7
|
+
const SCRIPT = path.resolve(__dirname, '..', 'keyword-detector.js');
|
|
8
|
+
|
|
9
|
+
/**
|
|
10
|
+
* Run keyword-detector.js with given text as argv.
|
|
11
|
+
* Returns { stdout, exitCode }.
|
|
12
|
+
*/
|
|
13
|
+
function runDetector(text) {
|
|
14
|
+
try {
|
|
15
|
+
const stdout = execFileSync('node', [SCRIPT, text], {
|
|
16
|
+
encoding: 'utf-8',
|
|
17
|
+
timeout: 5000,
|
|
18
|
+
});
|
|
19
|
+
return { stdout: stdout.trim(), exitCode: 0 };
|
|
20
|
+
} catch (err) {
|
|
21
|
+
return { stdout: (err.stdout || '').trim(), exitCode: err.status };
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
// ══════════════════════════════════════════════════
|
|
26
|
+
// Individual keyword detection
|
|
27
|
+
// ══════════════════════════════════════════════════
|
|
28
|
+
describe('keyword-detector', () => {
|
|
29
|
+
describe('ralph keyword', () => {
|
|
30
|
+
it('should detect ralph keyword', () => {
|
|
31
|
+
const result = runDetector('implement the login feature ralph');
|
|
32
|
+
expect(result.stdout).toContain('[RALPH MODE]');
|
|
33
|
+
expect(result.stdout).toContain('persistence');
|
|
34
|
+
});
|
|
35
|
+
|
|
36
|
+
it('should detect ralph case-insensitively', () => {
|
|
37
|
+
const result = runDetector('RALPH fix all the bugs');
|
|
38
|
+
expect(result.stdout).toContain('[RALPH MODE]');
|
|
39
|
+
});
|
|
40
|
+
});
|
|
41
|
+
|
|
42
|
+
describe('ultrawork keyword', () => {
|
|
43
|
+
it('should detect ultrawork keyword', () => {
|
|
44
|
+
const result = runDetector('ultrawork build the entire app');
|
|
45
|
+
expect(result.stdout).toContain('[ULTRAWORK MODE]');
|
|
46
|
+
expect(result.stdout).toContain('parallel');
|
|
47
|
+
});
|
|
48
|
+
|
|
49
|
+
it('should detect ulw alias', () => {
|
|
50
|
+
const result = runDetector('ulw refactor the codebase');
|
|
51
|
+
expect(result.stdout).toContain('[ULTRAWORK MODE]');
|
|
52
|
+
});
|
|
53
|
+
|
|
54
|
+
it('should detect Korean alias when word boundary matches', () => {
|
|
55
|
+
// Note: \\b word boundary may not match Korean characters reliably
|
|
56
|
+
// because \\b is designed for ASCII word boundaries.
|
|
57
|
+
// This test documents the current behavior.
|
|
58
|
+
const result = runDetector('울트라워크');
|
|
59
|
+
// Korean chars lack ASCII word boundaries, so regex may not match
|
|
60
|
+
// If it does match, great; if not, this documents the limitation
|
|
61
|
+
expect(typeof result.stdout).toBe('string');
|
|
62
|
+
});
|
|
63
|
+
});
|
|
64
|
+
|
|
65
|
+
describe('ralplan keyword', () => {
|
|
66
|
+
it('should detect ralplan keyword', () => {
|
|
67
|
+
const result = runDetector('ralplan design the architecture');
|
|
68
|
+
expect(result.stdout).toContain('[RALPLAN MODE]');
|
|
69
|
+
expect(result.stdout).toContain('persistence');
|
|
70
|
+
expect(result.stdout).toContain('planning');
|
|
71
|
+
});
|
|
72
|
+
});
|
|
73
|
+
|
|
74
|
+
describe('verify keyword', () => {
|
|
75
|
+
it('should detect verify keyword', () => {
|
|
76
|
+
const result = runDetector('verify the implementation is correct');
|
|
77
|
+
expect(result.stdout).toContain('[VERIFY MODE]');
|
|
78
|
+
expect(result.stdout).toContain('verification');
|
|
79
|
+
});
|
|
80
|
+
});
|
|
81
|
+
|
|
82
|
+
describe('quick keyword', () => {
|
|
83
|
+
it('should detect quick keyword', () => {
|
|
84
|
+
const result = runDetector('quick fix this typo');
|
|
85
|
+
expect(result.stdout).toContain('[QUICK MODE]');
|
|
86
|
+
expect(result.stdout).toContain('fast');
|
|
87
|
+
});
|
|
88
|
+
});
|
|
89
|
+
|
|
90
|
+
describe('explore keyword', () => {
|
|
91
|
+
it('should detect explore keyword', () => {
|
|
92
|
+
const result = runDetector('explore the codebase structure');
|
|
93
|
+
expect(result.stdout).toContain('[EXPLORE MODE]');
|
|
94
|
+
expect(result.stdout).toContain('exploration');
|
|
95
|
+
});
|
|
96
|
+
});
|
|
97
|
+
|
|
98
|
+
describe('plan keyword', () => {
|
|
99
|
+
it('should detect plan keyword', () => {
|
|
100
|
+
const result = runDetector('plan the new feature');
|
|
101
|
+
expect(result.stdout).toContain('[PLAN MODE]');
|
|
102
|
+
expect(result.stdout).toContain('planning');
|
|
103
|
+
});
|
|
104
|
+
});
|
|
105
|
+
|
|
106
|
+
// ══════════════════════════════════════════════════
|
|
107
|
+
// Keyword combinations / synergies
|
|
108
|
+
// ══════════════════════════════════════════════════
|
|
109
|
+
describe('keyword combinations', () => {
|
|
110
|
+
it('should detect ralph+ultrawork synergy', () => {
|
|
111
|
+
const result = runDetector('ralph ultrawork build everything from scratch');
|
|
112
|
+
expect(result.stdout).toContain('[RALPH+ULTRAWORK]');
|
|
113
|
+
expect(result.stdout).toContain('persistence');
|
|
114
|
+
expect(result.stdout).toContain('parallel');
|
|
115
|
+
});
|
|
116
|
+
|
|
117
|
+
it('should detect ralph+verify synergy', () => {
|
|
118
|
+
const result = runDetector('ralph verify each step carefully');
|
|
119
|
+
expect(result.stdout).toContain('[RALPH+VERIFY]');
|
|
120
|
+
});
|
|
121
|
+
|
|
122
|
+
it('should output both keywords when no synergy key matches sorted order', () => {
|
|
123
|
+
// KEYWORD_SYNERGIES defines 'ultrawork+explore' but processCombinations
|
|
124
|
+
// sorts keywords alphabetically → tries 'explore+ultrawork' which has no match.
|
|
125
|
+
// So individual outputs are emitted instead.
|
|
126
|
+
const result = runDetector('ultrawork explore the entire project');
|
|
127
|
+
expect(result.stdout).toContain('[ULTRAWORK MODE]');
|
|
128
|
+
expect(result.stdout).toContain('[EXPLORE MODE]');
|
|
129
|
+
expect(result.stdout).toContain('[FLAGS]');
|
|
130
|
+
});
|
|
131
|
+
});
|
|
132
|
+
|
|
133
|
+
// ══════════════════════════════════════════════════
|
|
134
|
+
// No keywords
|
|
135
|
+
// ══════════════════════════════════════════════════
|
|
136
|
+
describe('no keywords detected', () => {
|
|
137
|
+
it('should output nothing when no keywords present', () => {
|
|
138
|
+
const result = runDetector('just a normal prompt with no magic words');
|
|
139
|
+
expect(result.stdout).toBe('');
|
|
140
|
+
});
|
|
141
|
+
|
|
142
|
+
it('should not match partial words', () => {
|
|
143
|
+
// "verify" inside "verifying" — depends on word boundary regex
|
|
144
|
+
// The regex uses \b so "verifying" would NOT match "verify" as a whole word
|
|
145
|
+
// Actually \bverify\b would match "verify" in "verifying"? No — "verifying" has
|
|
146
|
+
// chars after "verify" that are word chars, so \bverify\b won't match.
|
|
147
|
+
const result = runDetector('verifying the output looks good');
|
|
148
|
+
expect(result.stdout).toBe('');
|
|
149
|
+
});
|
|
150
|
+
|
|
151
|
+
it('should not match keywords embedded in other words', () => {
|
|
152
|
+
const result = runDetector('exploration of quickly planning');
|
|
153
|
+
// "explore" should NOT match "exploration" (word boundary)
|
|
154
|
+
// "quick" should NOT match "quickly"
|
|
155
|
+
// "plan" should NOT match "planning"
|
|
156
|
+
expect(result.stdout).toBe('');
|
|
157
|
+
});
|
|
158
|
+
});
|
|
159
|
+
|
|
160
|
+
// ══════════════════════════════════════════════════
|
|
161
|
+
// Empty input — shows help
|
|
162
|
+
// ══════════════════════════════════════════════════
|
|
163
|
+
describe('help output', () => {
|
|
164
|
+
it('should show usage info with no input', () => {
|
|
165
|
+
const result = runDetector('');
|
|
166
|
+
// Empty string arg is still truthy, pass no args instead
|
|
167
|
+
try {
|
|
168
|
+
const stdout = execFileSync('node', [SCRIPT], {
|
|
169
|
+
encoding: 'utf-8',
|
|
170
|
+
timeout: 5000,
|
|
171
|
+
});
|
|
172
|
+
expect(stdout).toContain('Available magic keywords');
|
|
173
|
+
expect(stdout).toContain('Keyword combinations');
|
|
174
|
+
} catch (err) {
|
|
175
|
+
// Should exit 0, but just in case
|
|
176
|
+
expect(err.stdout || '').toContain('Available magic keywords');
|
|
177
|
+
}
|
|
178
|
+
});
|
|
179
|
+
});
|
|
180
|
+
|
|
181
|
+
// ══════════════════════════════════════════════════
|
|
182
|
+
// Flags collection
|
|
183
|
+
// ══════════════════════════════════════════════════
|
|
184
|
+
describe('flags output', () => {
|
|
185
|
+
it('should output collected flags for single keyword', () => {
|
|
186
|
+
const result = runDetector('ralph do the thing');
|
|
187
|
+
expect(result.stdout).toContain('[FLAGS]');
|
|
188
|
+
expect(result.stdout).toContain('persistence');
|
|
189
|
+
expect(result.stdout).toContain('verification');
|
|
190
|
+
});
|
|
191
|
+
|
|
192
|
+
it('should merge flags from multiple keywords', () => {
|
|
193
|
+
const result = runDetector('ralph quick finish this');
|
|
194
|
+
expect(result.stdout).toContain('[FLAGS]');
|
|
195
|
+
expect(result.stdout).toContain('persistence');
|
|
196
|
+
expect(result.stdout).toContain('fast');
|
|
197
|
+
});
|
|
198
|
+
});
|
|
199
|
+
});
|