@su-record/vibe 2.9.21 → 2.9.23
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 +105 -104
- package/LICENSE +21 -21
- package/agents/architect-low.md +41 -41
- package/agents/architect-medium.md +59 -59
- package/agents/architect.md +80 -80
- package/agents/build-error-resolver.md +115 -115
- package/agents/compounder.md +261 -261
- package/agents/diagrammer.md +178 -178
- package/agents/docs/api-documenter.md +99 -99
- package/agents/docs/changelog-writer.md +93 -93
- package/agents/e2e-tester.md +294 -294
- package/agents/event/event-comms.md +78 -78
- package/agents/event/event-content.md +68 -68
- package/agents/event/event-image.md +95 -95
- package/agents/event/event-ops.md +84 -84
- package/agents/event/event-scheduler.md +69 -69
- package/agents/event/event-speaker.md +86 -86
- package/agents/explorer-low.md +42 -42
- package/agents/explorer-medium.md +59 -59
- package/agents/explorer.md +48 -48
- package/agents/implementer-low.md +43 -43
- package/agents/implementer-medium.md +52 -52
- package/agents/implementer.md +54 -54
- package/agents/junior-mentor.md +141 -141
- package/agents/planning/requirements-analyst.md +84 -84
- package/agents/planning/ux-advisor.md +83 -83
- package/agents/qa/acceptance-tester.md +86 -86
- package/agents/qa/edge-case-finder.md +93 -93
- package/agents/qa/qa-coordinator.md +131 -131
- package/agents/refactor-cleaner.md +143 -143
- package/agents/research/best-practices-agent.md +199 -199
- package/agents/research/codebase-patterns-agent.md +157 -157
- package/agents/research/framework-docs-agent.md +188 -188
- package/agents/research/security-advisory-agent.md +213 -213
- package/agents/review/architecture-reviewer.md +107 -107
- package/agents/review/complexity-reviewer.md +116 -116
- package/agents/review/data-integrity-reviewer.md +88 -88
- package/agents/review/git-history-reviewer.md +103 -103
- package/agents/review/performance-reviewer.md +86 -86
- package/agents/review/python-reviewer.md +150 -150
- package/agents/review/rails-reviewer.md +139 -139
- package/agents/review/react-reviewer.md +144 -144
- package/agents/review/security-reviewer.md +80 -80
- package/agents/review/simplicity-reviewer.md +140 -140
- package/agents/review/test-coverage-reviewer.md +116 -116
- package/agents/review/typescript-reviewer.md +127 -127
- package/agents/searcher.md +54 -54
- package/agents/simplifier.md +120 -120
- package/agents/teams/debug-team.md +70 -70
- package/agents/teams/dev-team.md +88 -88
- package/agents/teams/docs-team.md +80 -80
- package/agents/teams/figma/figma-analyst.md +52 -52
- package/agents/teams/figma/figma-architect.md +112 -112
- package/agents/teams/figma/figma-auditor.md +82 -82
- package/agents/teams/figma/figma-builder.md +100 -100
- package/agents/teams/figma-team.md +85 -85
- package/agents/teams/fullstack-team.md +83 -83
- package/agents/teams/lite-team.md +69 -69
- package/agents/teams/migration-team.md +78 -78
- package/agents/teams/refactor-team.md +94 -94
- package/agents/teams/research-team.md +86 -86
- package/agents/teams/review-debate-team.md +125 -125
- package/agents/teams/security-team.md +81 -81
- package/agents/tester.md +49 -49
- package/agents/ui/ui-a11y-auditor.md +93 -93
- package/agents/ui/ui-antipattern-detector.md +102 -102
- package/agents/ui/ui-dataviz-advisor.md +69 -69
- package/agents/ui/ui-design-system-gen.md +57 -57
- package/agents/ui/ui-industry-analyzer.md +49 -49
- package/agents/ui/ui-layout-architect.md +65 -65
- package/agents/ui/ui-stack-implementer.md +68 -68
- package/agents/ui/ux-compliance-reviewer.md +81 -81
- package/agents/ui-previewer.md +258 -258
- package/commands/vibe.analyze.md +533 -533
- package/commands/vibe.contract.md +105 -105
- package/commands/vibe.docs.md +33 -33
- package/commands/vibe.event.md +163 -163
- package/commands/vibe.figma.md +584 -584
- package/commands/vibe.harness.md +177 -177
- package/commands/vibe.regress.md +73 -73
- package/commands/vibe.review.md +624 -624
- package/commands/vibe.run.md +1940 -1940
- package/commands/vibe.scaffold.md +195 -195
- package/commands/vibe.spec.md +577 -577
- package/commands/vibe.test.md +96 -0
- package/commands/vibe.trace.md +276 -276
- package/commands/vibe.utils.md +413 -413
- package/commands/vibe.verify.md +550 -550
- package/dist/cli/collaborator.js +52 -52
- package/dist/cli/commands/codex-proxy.js +15 -15
- package/dist/cli/commands/config.js +9 -9
- package/dist/cli/commands/evolution.js +12 -12
- package/dist/cli/commands/figma.js +20 -20
- package/dist/cli/commands/info.js +52 -52
- package/dist/cli/commands/init.d.ts.map +1 -1
- package/dist/cli/commands/init.js +16 -5
- 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/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/commands/update.d.ts.map +1 -1
- package/dist/cli/commands/update.js +16 -0
- package/dist/cli/commands/update.js.map +1 -1
- package/dist/cli/detect.js +32 -32
- package/dist/cli/index.js +33 -33
- package/dist/cli/llm/claude-commands.js +16 -16
- package/dist/cli/llm/config.js +18 -18
- package/dist/cli/llm/gemini-commands.js +16 -16
- package/dist/cli/llm/gpt-commands.js +19 -19
- package/dist/cli/llm/help.js +21 -21
- package/dist/cli/postinstall/cursor-agents.js +32 -32
- package/dist/cli/postinstall/cursor-rules.js +83 -83
- package/dist/cli/postinstall/cursor-skills.js +743 -743
- package/dist/cli/setup/Provisioner.js +42 -42
- package/dist/infra/lib/DeepInit.js +24 -24
- package/dist/infra/lib/IterationTracker.js +11 -11
- package/dist/infra/lib/PythonParser.js +108 -108
- package/dist/infra/lib/ReviewRace.js +96 -96
- package/dist/infra/lib/SkillFrontmatter.js +28 -28
- package/dist/infra/lib/SkillQualityGate.js +9 -9
- package/dist/infra/lib/SkillRepository.js +159 -159
- package/dist/infra/lib/UltraQA.js +99 -99
- package/dist/infra/lib/autonomy/AuditStore.js +41 -41
- package/dist/infra/lib/autonomy/ConfirmationStore.js +30 -30
- package/dist/infra/lib/autonomy/EventOutbox.js +38 -38
- package/dist/infra/lib/autonomy/PolicyEngine.d.ts +3 -3
- package/dist/infra/lib/autonomy/PolicyEngine.js +18 -18
- package/dist/infra/lib/autonomy/SecuritySentinel.js +1 -1
- package/dist/infra/lib/autonomy/SuggestionStore.js +33 -33
- package/dist/infra/lib/embedding/VectorStore.js +22 -22
- package/dist/infra/lib/evolution/AgentAnalyzer.js +10 -10
- package/dist/infra/lib/evolution/DescriptionOptimizer.js +21 -21
- package/dist/infra/lib/evolution/GenerationRegistry.js +36 -36
- package/dist/infra/lib/evolution/InsightStore.js +90 -90
- package/dist/infra/lib/evolution/ParityTester.js +57 -57
- package/dist/infra/lib/evolution/RollbackManager.js +5 -5
- package/dist/infra/lib/evolution/SkillBenchmark.js +23 -23
- package/dist/infra/lib/evolution/SkillEvalRunner.js +50 -50
- package/dist/infra/lib/evolution/SkillGapDetector.js +10 -10
- package/dist/infra/lib/evolution/UsageTracker.js +28 -28
- package/dist/infra/lib/gemini/orchestration.js +5 -5
- package/dist/infra/lib/gpt/orchestration.js +4 -4
- package/dist/infra/lib/memory/KnowledgeGraph.js +4 -4
- package/dist/infra/lib/memory/MemorySearch.js +57 -57
- package/dist/infra/lib/memory/MemoryStorage.js +181 -181
- package/dist/infra/lib/memory/ObservationStore.js +28 -28
- package/dist/infra/lib/memory/ReflectionStore.js +30 -30
- package/dist/infra/lib/memory/SessionRAGRetriever.js +7 -7
- package/dist/infra/lib/memory/SessionRAGStore.js +225 -225
- package/dist/infra/lib/memory/SessionSummarizer.js +9 -9
- package/dist/infra/orchestrator/AgentManager.js +12 -12
- package/dist/infra/orchestrator/AgentRegistry.js +65 -65
- package/dist/infra/orchestrator/MultiLlmResearch.js +8 -8
- package/dist/infra/orchestrator/SwarmOrchestrator.test.js +16 -16
- package/dist/infra/orchestrator/parallelResearch.js +24 -24
- package/dist/tools/convention/analyzeComplexity.test.js +115 -115
- package/dist/tools/convention/validateCodeQuality.test.js +104 -104
- package/dist/tools/memory/createMemoryTimeline.js +10 -10
- package/dist/tools/memory/getMemoryGraph.js +12 -12
- package/dist/tools/memory/getSessionContext.js +9 -9
- package/dist/tools/memory/linkMemories.js +14 -14
- package/dist/tools/memory/listMemories.js +4 -4
- package/dist/tools/memory/recallMemory.js +4 -4
- package/dist/tools/memory/saveMemory.js +4 -4
- package/dist/tools/memory/searchMemoriesAdvanced.js +23 -23
- package/dist/tools/semantic/analyzeDependencyGraph.js +12 -12
- package/dist/tools/semantic/astGrep.test.js +6 -6
- package/dist/tools/spec/prdParser.test.js +171 -171
- package/dist/tools/spec/specGenerator.js +169 -169
- package/dist/tools/spec/traceabilityMatrix.js +64 -64
- package/dist/tools/spec/traceabilityMatrix.test.js +28 -28
- package/hooks/gemini-hooks.json +73 -73
- package/hooks/hooks.json +126 -126
- package/hooks/scripts/__tests__/keyword-detector.test.js +199 -199
- package/hooks/scripts/__tests__/pre-tool-guard.test.js +368 -368
- package/hooks/scripts/__tests__/sentinel-guard.test.js +208 -208
- package/hooks/scripts/auto-commit.js +97 -97
- package/hooks/scripts/auto-format.js +64 -64
- package/hooks/scripts/auto-test.js +81 -81
- package/hooks/scripts/code-check.js +268 -268
- package/hooks/scripts/codex-detect.js +46 -46
- package/hooks/scripts/codex-review-gate.js +80 -80
- package/hooks/scripts/command-log.js +32 -32
- package/hooks/scripts/context-save.js +353 -353
- package/hooks/scripts/evolution-engine.js +91 -91
- package/hooks/scripts/figma-extract.js +635 -635
- package/hooks/scripts/figma-guard.js +219 -219
- package/hooks/scripts/figma-refine.js +315 -315
- package/hooks/scripts/figma-to-scss.js +394 -394
- package/hooks/scripts/figma-validate.js +353 -353
- package/hooks/scripts/hud-status.js +321 -321
- package/hooks/scripts/keyword-detector.js +214 -214
- package/hooks/scripts/lib/scope-from-spec.js +261 -0
- package/hooks/scripts/llm-orchestrate.js +645 -645
- package/hooks/scripts/post-edit.js +32 -32
- package/hooks/scripts/pr-test-gate.js +52 -52
- package/hooks/scripts/pre-tool-dispatcher.js +5 -0
- package/hooks/scripts/pre-tool-guard.js +254 -254
- package/hooks/scripts/prompt-dispatcher.js +190 -190
- package/hooks/scripts/scope-guard.js +145 -0
- package/hooks/scripts/sentinel-guard.js +130 -130
- package/hooks/scripts/session-start.js +186 -177
- package/hooks/scripts/skill-injector.js +83 -83
- package/hooks/scripts/stop-notify.js +209 -209
- package/hooks/scripts/utils.js +257 -257
- 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 +10 -5
- package/skills/agents-md/SKILL.md +121 -121
- package/skills/agents-md/rubrics/what-to-keep.md +49 -49
- package/skills/agents-md/templates/agents-md.md +36 -36
- package/skills/arch-guard/SKILL.md +181 -181
- package/skills/arch-guard/agents/detector.md +48 -48
- package/skills/arch-guard/agents/reporter.md +48 -48
- package/skills/arch-guard/agents/rule-generator.md +49 -49
- package/skills/arch-guard/agents/violation-checker.md +51 -51
- package/skills/arch-guard/frameworks/clean-architecture.md +108 -108
- package/skills/arch-guard/frameworks/solid.md +102 -102
- package/skills/arch-guard/scripts/check-boundaries.js +90 -90
- package/skills/arch-guard/templates/arch-rules.json +47 -47
- package/skills/arch-guard/templates/violation-report.md +53 -53
- package/skills/brand-assets/SKILL.md +147 -147
- package/skills/brand-assets/rubrics/asset-checklist.md +98 -98
- package/skills/brand-assets/templates/brand-guide.md +161 -161
- package/skills/capability-loop/SKILL.md +272 -272
- package/skills/capability-loop/agents/capability-designer.md +61 -61
- package/skills/capability-loop/agents/failure-analyst.md +55 -55
- package/skills/capability-loop/agents/implementer.md +50 -50
- package/skills/capability-loop/agents/tester.md +53 -53
- package/skills/capability-loop/templates/capability-spec.md +118 -118
- package/skills/capability-loop/templates/failure-analysis.md +118 -118
- package/skills/characterization-test/SKILL.md +207 -207
- package/skills/characterization-test/agents/behavior-capturer.md +50 -50
- package/skills/characterization-test/agents/coverage-checker.md +54 -54
- package/skills/characterization-test/agents/reporter.md +50 -50
- package/skills/characterization-test/agents/test-writer.md +49 -49
- package/skills/characterization-test/rubrics/coverage-criteria.md +53 -53
- package/skills/characterization-test/templates/test-template.ts +101 -101
- package/skills/chub-usage/SKILL.md +139 -139
- package/skills/claude-md-guide/SKILL.md +351 -351
- package/skills/claude-md-guide/rubrics/anti-patterns.md +88 -88
- package/skills/claude-md-guide/templates/claude-md.md +54 -54
- package/skills/commerce-patterns/SKILL.md +64 -64
- package/skills/commerce-patterns/rubrics/checkout-flow.md +48 -48
- package/skills/commerce-patterns/templates/product-schema.md +85 -85
- package/skills/commit-push-pr/SKILL.md +77 -77
- package/skills/commit-push-pr/agents/change-analyzer.md +55 -55
- package/skills/commit-push-pr/agents/message-writer.md +50 -50
- package/skills/commit-push-pr/agents/pr-writer.md +58 -58
- package/skills/commit-push-pr/agents/reviewer.md +52 -52
- package/skills/commit-push-pr/rubrics/commit-message.md +73 -73
- package/skills/commit-push-pr/templates/pr-body.md +63 -63
- package/skills/context7-usage/SKILL.md +106 -106
- package/skills/context7-usage/rubrics/when-to-use.md +50 -50
- package/skills/create-prd/SKILL.md +90 -90
- package/skills/create-prd/agents/edge-case-finder.md +48 -48
- package/skills/create-prd/agents/prioritizer.md +60 -60
- package/skills/create-prd/agents/requirements-writer.md +48 -48
- package/skills/create-prd/agents/researcher.md +55 -55
- package/skills/create-prd/agents/reviewer.md +54 -54
- package/skills/create-prd/frameworks/jobs-to-be-done.md +96 -96
- package/skills/create-prd/frameworks/rice-scoring.md +97 -97
- package/skills/create-prd/orchestrator.md +70 -70
- package/skills/create-prd/rubrics/completeness.md +58 -58
- package/skills/create-prd/templates/prd.md +139 -139
- package/skills/design-audit/SKILL.md +152 -152
- package/skills/design-audit/agents/a11y-auditor.md +43 -43
- package/skills/design-audit/agents/performance-auditor.md +46 -46
- package/skills/design-audit/agents/responsive-auditor.md +46 -46
- package/skills/design-audit/agents/scorer.md +47 -47
- package/skills/design-audit/agents/slop-detector.md +47 -47
- package/skills/design-audit/frameworks/core-web-vitals.md +107 -107
- package/skills/design-audit/frameworks/wcag-checklist.md +64 -64
- package/skills/design-audit/orchestrator.md +64 -64
- package/skills/design-audit/rubrics/ai-slop-patterns.md +83 -83
- package/skills/design-audit/rubrics/scoring.md +63 -63
- package/skills/design-audit/templates/report.md +88 -88
- package/skills/design-critique/SKILL.md +139 -139
- package/skills/design-critique/rubrics/ux-heuristics.md +143 -143
- package/skills/design-critique/templates/critique-report.md +86 -86
- package/skills/design-distill/SKILL.md +130 -130
- package/skills/design-distill/templates/design-system.md +132 -132
- package/skills/design-normalize/SKILL.md +133 -133
- package/skills/design-normalize/rubrics/token-naming.md +117 -117
- package/skills/design-normalize/templates/token-audit.md +89 -89
- package/skills/design-polish/SKILL.md +131 -131
- package/skills/design-polish/rubrics/polish-checklist.md +68 -68
- package/skills/design-polish/templates/polish-report.md +64 -64
- package/skills/design-teach/SKILL.md +182 -182
- package/skills/design-teach/rubrics/brand-personality.md +73 -73
- package/skills/design-teach/templates/design-context.json +36 -36
- package/skills/devlog/SKILL.md +143 -143
- package/skills/e2e-commerce/SKILL.md +62 -62
- package/skills/e2e-commerce/templates/test-scenarios.md +170 -170
- package/skills/event-comms/SKILL.md +172 -172
- package/skills/event-comms/templates/email-invite.md +99 -99
- package/skills/event-comms/templates/sns-post.md +133 -133
- package/skills/event-ops/SKILL.md +207 -207
- package/skills/event-ops/rubrics/contingency.md +85 -85
- package/skills/event-ops/templates/d-day-checklist.md +65 -65
- package/skills/event-planning/SKILL.md +144 -144
- package/skills/event-planning/rubrics/timeline.md +70 -70
- package/skills/event-planning/templates/event-plan.md +91 -91
- package/skills/exec-plan/SKILL.md +149 -149
- package/skills/exec-plan/agents/decomposer.md +47 -47
- package/skills/exec-plan/agents/dependency-mapper.md +44 -44
- package/skills/exec-plan/agents/estimator.md +43 -43
- package/skills/exec-plan/agents/validator.md +55 -55
- package/skills/exec-plan/orchestrator.md +70 -70
- package/skills/exec-plan/rubrics/complexity-scoring.md +75 -75
- package/skills/exec-plan/templates/plan.md +147 -147
- package/skills/git-worktree/SKILL.md +73 -73
- package/skills/git-worktree/rubrics/when-to-use.md +55 -55
- package/skills/handoff/SKILL.md +110 -110
- package/skills/handoff/agents/context-summarizer.md +51 -51
- package/skills/handoff/agents/document-writer.md +63 -63
- package/skills/handoff/agents/state-collector.md +53 -53
- package/skills/handoff/agents/verifier.md +48 -48
- package/skills/handoff/rubrics/completeness.md +62 -62
- package/skills/handoff/templates/handoff.md +107 -107
- package/skills/parallel-research/SKILL.md +104 -104
- package/skills/parallel-research/agents/best-practices.md +43 -43
- package/skills/parallel-research/agents/codebase-patterns.md +46 -46
- package/skills/parallel-research/agents/framework-docs.md +45 -45
- package/skills/parallel-research/agents/security-advisory.md +46 -46
- package/skills/parallel-research/agents/synthesizer.md +57 -57
- package/skills/parallel-research/experts/best-practices.md +50 -50
- package/skills/parallel-research/experts/codebase-patterns.md +70 -70
- package/skills/parallel-research/experts/framework-docs.md +65 -65
- package/skills/parallel-research/experts/security-advisory.md +69 -69
- package/skills/parallel-research/orchestrator.md +79 -79
- package/skills/parallel-research/templates/awesome-list.md +32 -32
- package/skills/parallel-research/templates/paper.md +88 -88
- package/skills/parallel-research/templates/synthesis.md +101 -101
- package/skills/prioritization-frameworks/SKILL.md +87 -87
- package/skills/prioritization-frameworks/rubrics/frameworks.md +79 -79
- package/skills/prioritization-frameworks/templates/scoring-matrix.md +69 -69
- package/skills/priority-todos/SKILL.md +64 -64
- package/skills/priority-todos/rubrics/prioritization.md +70 -70
- package/skills/priority-todos/templates/todo-board.md +59 -59
- package/skills/seo-checklist/SKILL.md +58 -58
- package/skills/seo-checklist/frameworks/structured-data.md +153 -153
- package/skills/seo-checklist/rubrics/content-seo.md +42 -42
- package/skills/seo-checklist/rubrics/technical-seo.md +48 -48
- package/skills/techdebt/SKILL.md +124 -124
- package/skills/techdebt/agents/analyzer.md +50 -50
- package/skills/techdebt/agents/fixer.md +41 -41
- package/skills/techdebt/agents/reviewer.md +47 -47
- package/skills/techdebt/agents/scanner.md +44 -44
- package/skills/techdebt/orchestrator.md +70 -70
- package/skills/techdebt/rubrics/severity.md +51 -51
- package/skills/techdebt/scripts/scan.js +90 -90
- package/skills/techdebt/templates/report.md +86 -86
- package/skills/tool-fallback/SKILL.md +104 -104
- package/skills/tool-fallback/rubrics/fallback-chain.md +58 -58
- package/skills/typescript-advanced-types/SKILL.md +67 -67
- package/skills/typescript-advanced-types/rubrics/type-patterns.md +109 -109
- package/skills/ui-ux-pro-max/SKILL.md +236 -236
- package/skills/ui-ux-pro-max/reference/color-and-contrast.md +517 -517
- package/skills/ui-ux-pro-max/reference/interaction-design.md +544 -544
- package/skills/ui-ux-pro-max/reference/motion-design.md +591 -591
- package/skills/ui-ux-pro-max/reference/responsive-design.md +463 -463
- package/skills/ui-ux-pro-max/reference/spatial-design.md +390 -390
- package/skills/ui-ux-pro-max/reference/typography.md +455 -455
- package/skills/ui-ux-pro-max/reference/ux-writing.md +469 -469
- package/skills/ui-ux-pro-max/rubrics/interaction-states.md +83 -83
- package/skills/ui-ux-pro-max/rubrics/responsive-breakpoints.md +99 -99
- package/skills/user-personas/SKILL.md +75 -75
- package/skills/user-personas/rubrics/research-methods.md +56 -56
- package/skills/user-personas/templates/persona.md +89 -89
- package/skills/vercel-react-best-practices/SKILL.md +60 -60
- package/skills/vercel-react-best-practices/rubrics/performance.md +82 -82
- package/skills/vercel-react-best-practices/rubrics/server-components.md +86 -86
- package/skills/vibe-contract/SKILL.md +166 -166
- package/skills/vibe-docs/templates/architecture.md +80 -80
- package/skills/vibe-docs/templates/readme.md +84 -84
- package/skills/vibe-docs/templates/release-notes.md +74 -74
- package/skills/vibe-figma/SKILL.md +363 -363
- package/skills/vibe-figma/rubrics/extraction-checklist.md +51 -51
- package/skills/vibe-figma/templates/component-index.md +126 -126
- package/skills/vibe-figma/templates/component-spec.md +168 -168
- package/skills/vibe-figma/templates/figma-handoff.md +100 -100
- package/skills/vibe-figma/templates/remapped-tree.md +277 -277
- package/skills/vibe-figma-convert/SKILL.md +235 -235
- package/skills/vibe-figma-convert/rubrics/conversion-rules.md +141 -141
- package/skills/vibe-figma-convert/templates/component.md +140 -140
- package/skills/vibe-figma-extract/SKILL.md +219 -219
- package/skills/vibe-figma-extract/rubrics/image-rules.md +157 -157
- package/skills/vibe-interview/SKILL.md +358 -358
- package/skills/vibe-interview/checklists/api.md +101 -101
- package/skills/vibe-interview/checklists/feature.md +88 -88
- package/skills/vibe-interview/checklists/library.md +95 -95
- package/skills/vibe-interview/checklists/mobile.md +89 -89
- package/skills/vibe-interview/checklists/webapp.md +97 -97
- package/skills/vibe-interview/checklists/website.md +99 -99
- package/skills/vibe-plan/SKILL.md +254 -254
- package/skills/vibe-regress/SKILL.md +174 -174
- package/skills/vibe-regress/templates/bug.md +44 -44
- package/skills/vibe-regress/templates/test-jest.md +29 -29
- package/skills/vibe-regress/templates/test-vitest.md +30 -30
- package/skills/vibe-spec/SKILL.md +1195 -1195
- package/skills/vibe-spec-review/SKILL.md +726 -726
- package/skills/vibe-test/SKILL.md +247 -0
- package/skills/video-production/SKILL.md +52 -52
- package/skills/video-production/rubrics/quality-checklist.md +58 -58
- package/skills/video-production/templates/production-plan.md +104 -104
- package/vibe/config.json +29 -29
- package/vibe/constitution.md +227 -227
- package/vibe/rules/principles/communication-guide.md +98 -98
- package/vibe/rules/principles/development-philosophy.md +52 -52
- package/vibe/rules/principles/quick-start.md +102 -102
- package/vibe/rules/quality/bdd-contract-testing.md +393 -393
- package/vibe/rules/quality/checklist.md +276 -276
- package/vibe/rules/quality/performance.md +236 -236
- package/vibe/rules/quality/testing-strategy.md +440 -440
- package/vibe/rules/standards/anti-patterns.md +541 -541
- package/vibe/rules/standards/code-structure.md +291 -291
- package/vibe/rules/standards/complexity-metrics.md +313 -313
- package/vibe/rules/standards/git-workflow.md +237 -237
- package/vibe/rules/standards/naming-conventions.md +198 -198
- package/vibe/rules/standards/security.md +305 -305
- package/vibe/rules/writing/document-style.md +74 -74
- package/vibe/setup.sh +31 -31
- package/vibe/templates/claudemd-template.md +74 -74
- package/vibe/templates/constitution-template.md +267 -267
- package/vibe/templates/contract-backend-template.md +526 -526
- package/vibe/templates/contract-frontend-template.md +599 -599
- package/vibe/templates/feature-template.md +96 -96
- package/vibe/templates/plan-template.md +194 -194
- package/vibe/templates/spec-template.md +221 -221
- package/vibe/ui-ux-data/charts.csv +26 -26
- package/vibe/ui-ux-data/colors.csv +97 -97
- package/vibe/ui-ux-data/icons.csv +101 -101
- package/vibe/ui-ux-data/landing.csv +31 -31
- package/vibe/ui-ux-data/products.csv +96 -96
- package/vibe/ui-ux-data/react-performance.csv +45 -45
- package/vibe/ui-ux-data/stacks/astro.csv +54 -54
- package/vibe/ui-ux-data/stacks/flutter.csv +53 -53
- package/vibe/ui-ux-data/stacks/html-tailwind.csv +56 -56
- package/vibe/ui-ux-data/stacks/jetpack-compose.csv +53 -53
- package/vibe/ui-ux-data/stacks/nextjs.csv +53 -53
- package/vibe/ui-ux-data/stacks/nuxt-ui.csv +51 -51
- package/vibe/ui-ux-data/stacks/nuxtjs.csv +59 -59
- package/vibe/ui-ux-data/stacks/react-native.csv +52 -52
- package/vibe/ui-ux-data/stacks/react.csv +54 -54
- package/vibe/ui-ux-data/stacks/shadcn.csv +61 -61
- package/vibe/ui-ux-data/stacks/svelte.csv +54 -54
- package/vibe/ui-ux-data/stacks/swiftui.csv +51 -51
- package/vibe/ui-ux-data/stacks/vue.csv +50 -50
- package/vibe/ui-ux-data/styles.csv +68 -68
- package/vibe/ui-ux-data/typography.csv +57 -57
- package/vibe/ui-ux-data/ui-reasoning.csv +101 -101
- package/vibe/ui-ux-data/ux-guidelines.csv +99 -99
- package/vibe/ui-ux-data/version.json +31 -31
- package/vibe/ui-ux-data/web-interface.csv +31 -31
|
@@ -0,0 +1,247 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: vibe-test
|
|
3
|
+
tier: core
|
|
4
|
+
description: "Self-test vibe across CC and coco. Subcommands: parity (static file/content comparison between ~/.claude and ~/.coco install dirs), report (runtime invocation of every command/skill/hook/agent/tool in the current harness), compare (diff two JSON reports). P1 drift (one-side missing) auto-registers via vibe-regress. Must use this skill when user runs /vibe.test, when verifying multi-harness compatibility before release, or when the user says 'parity', 'self-test', 'CC vs coco', 'both harnesses'."
|
|
5
|
+
triggers: [test, parity, self-test, "양쪽", "CC vs coco", "harness 동일"]
|
|
6
|
+
priority: 70
|
|
7
|
+
chain-next: []
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
# vibe-test — Multi-Harness Self-Test
|
|
11
|
+
|
|
12
|
+
**Purpose**: mechanically verify vibe presents the same surface in Claude Code and coco. Catch features broken on one harness before users do.
|
|
13
|
+
|
|
14
|
+
## Why this exists
|
|
15
|
+
|
|
16
|
+
Vibe explicitly supports two harnesses (CC, coco). When new commands are added, only one side might get updated, or `AGENTS.md` ↔ `CLAUDE.md` may drift, and there is no automated check until a user reports it. This skill closes that gap.
|
|
17
|
+
|
|
18
|
+
## Storage Contract
|
|
19
|
+
|
|
20
|
+
```
|
|
21
|
+
.claude/vibe/test-reports/ # CC side artifacts
|
|
22
|
+
.coco/vibe/test-reports/ # coco side artifacts (when run from coco)
|
|
23
|
+
|
|
24
|
+
<YYYYMMDD-HHmm>-cc.json # machine-comparable
|
|
25
|
+
<YYYYMMDD-HHmm>-cc.md # human summary
|
|
26
|
+
<YYYYMMDD-HHmm>-coco.json
|
|
27
|
+
<YYYYMMDD-HHmm>-coco.md
|
|
28
|
+
<YYYYMMDD-HHmm>-parity.json # output of `parity` subcommand
|
|
29
|
+
<YYYYMMDD-HHmm>-compare.md # output of `compare` subcommand
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
### Report schema (JSON)
|
|
33
|
+
|
|
34
|
+
```json
|
|
35
|
+
{
|
|
36
|
+
"harness": "cc | coco",
|
|
37
|
+
"version": "2.9.21",
|
|
38
|
+
"timestamp": "2026-04-14T18:30:00+09:00",
|
|
39
|
+
"vibe-version": "from package.json",
|
|
40
|
+
"commands": [
|
|
41
|
+
{ "name": "vibe.spec", "loaded": true, "first-response-ok": true, "error": null }
|
|
42
|
+
],
|
|
43
|
+
"skills": [
|
|
44
|
+
{ "name": "vibe-spec", "trigger-recognized": true, "context-injected": true, "error": null }
|
|
45
|
+
],
|
|
46
|
+
"hooks": [
|
|
47
|
+
{ "name": "pre-tool-guard", "test-suite": "passed | failed", "tests": "32/32" }
|
|
48
|
+
],
|
|
49
|
+
"agents": [],
|
|
50
|
+
"tools": []
|
|
51
|
+
}
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
## Subcommand: `parity` — static comparison (stage 1, in-scope target)
|
|
55
|
+
|
|
56
|
+
No harness execution. Only file system + body inspection. Fast and deterministic.
|
|
57
|
+
|
|
58
|
+
### Steps
|
|
59
|
+
|
|
60
|
+
1. **Confirm both install dirs exist**:
|
|
61
|
+
- CC: `~/.claude/{commands,skills,agents}/`
|
|
62
|
+
- coco: `~/.coco/{commands,skills,agents}/` (`COCO_HOME` env takes precedence)
|
|
63
|
+
- If either side is missing, exit cleanly with guidance (not an error)
|
|
64
|
+
|
|
65
|
+
2. **Install set diff**:
|
|
66
|
+
```bash
|
|
67
|
+
find ~/.claude/commands -type f -name '*.md' -exec basename {} \; | sort > /tmp/cc-cmds
|
|
68
|
+
find ~/.coco/commands -type f -name '*.md' -exec basename {} \; | sort > /tmp/coco-cmds
|
|
69
|
+
diff /tmp/cc-cmds /tmp/coco-cmds
|
|
70
|
+
```
|
|
71
|
+
Repeat for skills/agents. Persist diff entries to `parity.json` field `install-set-diff`.
|
|
72
|
+
|
|
73
|
+
3. **Content sync (CLAUDE.md ↔ AGENTS.md)**:
|
|
74
|
+
- Read both files; strip header block (leading `> ` lines plus filename mentions)
|
|
75
|
+
- Normalize body: map `.claude` ↔ `.coco`, `Claude Code` ↔ `coco`, `CLAUDE.md` ↔ `AGENTS.md`
|
|
76
|
+
- Lines that still differ after normalization go into `content-drift`
|
|
77
|
+
|
|
78
|
+
4. **Path reference validation**:
|
|
79
|
+
- Extract `~/.claude/`, `.claude/vibe/` patterns from CLAUDE.md → confirm each resolves under the actual install dir
|
|
80
|
+
- Extract `~/.coco/`, `.coco/vibe/` patterns from AGENTS.md → same check
|
|
81
|
+
- Wrong paths (e.g. AGENTS.md referencing `.codex/` after a rename) classified as `path-error`
|
|
82
|
+
|
|
83
|
+
5. **Console output**:
|
|
84
|
+
```
|
|
85
|
+
📊 PARITY REPORT
|
|
86
|
+
|
|
87
|
+
Install set:
|
|
88
|
+
✅ commands: 14/14 matched
|
|
89
|
+
❌ skills: 1 missing in coco (vibe-test)
|
|
90
|
+
|
|
91
|
+
Content sync:
|
|
92
|
+
✅ CLAUDE.md ↔ AGENTS.md normalized diff: clean
|
|
93
|
+
|
|
94
|
+
Path references:
|
|
95
|
+
✅ all paths resolve to existing dirs
|
|
96
|
+
|
|
97
|
+
📈 Parity Score: 95/100
|
|
98
|
+
📁 Saved: .claude/vibe/test-reports/20260414-1830-parity.json
|
|
99
|
+
```
|
|
100
|
+
|
|
101
|
+
6. **Auto-register P1 drift**:
|
|
102
|
+
- On `install-set-diff` finding → call `/vibe.regress register --from-test`
|
|
103
|
+
- symptom: `"Parity drift: <category> missing in <harness>"`
|
|
104
|
+
- root-cause-tag: `integration`
|
|
105
|
+
|
|
106
|
+
## Subcommand: `report` — runtime invocation
|
|
107
|
+
|
|
108
|
+
Inspect every shipped feature in the current harness, capture pass/fail, and emit the JSON+MD report defined above.
|
|
109
|
+
|
|
110
|
+
### Probe philosophy
|
|
111
|
+
|
|
112
|
+
- **No external LLM calls.** The probe is structural + execution-based, not generative. Cost ≈ a few file reads plus running `vitest`.
|
|
113
|
+
- **Interactive commands are NOT actually invoked.** Calling `/vibe.spec` would block on the interview loop. Probe checks structural validity only and records `invocable: true` if the file is well-formed.
|
|
114
|
+
- **Hooks and tools have real unit tests** in the repo — run them, do not simulate.
|
|
115
|
+
- A probe failure never stops the run. Each entry's `error` field captures the cause; the report keeps going.
|
|
116
|
+
|
|
117
|
+
### Steps
|
|
118
|
+
|
|
119
|
+
1. **Resolve install dir for current harness**:
|
|
120
|
+
- CC: `~/.claude/`
|
|
121
|
+
- coco: `~/.coco/` (`COCO_HOME` overrides)
|
|
122
|
+
- Detect via `process.env.COCO_HOME` first, then which one is currently being read from. If both present, use the harness this skill was invoked from.
|
|
123
|
+
|
|
124
|
+
2. **Probe `commands`** — for each `<install>/commands/*.md`:
|
|
125
|
+
- `loaded`: file exists and is non-empty
|
|
126
|
+
- `frontmatter-valid`: YAML frontmatter parses; required keys present (`description`)
|
|
127
|
+
- `argument-hint-present`: optional but recorded
|
|
128
|
+
- `body-references-skill`: body contains `Load skill ` or `## Process` (signal that the command delegates correctly)
|
|
129
|
+
- Result: `{ name, loaded, frontmatter-valid, body-references-skill, error }`
|
|
130
|
+
|
|
131
|
+
3. **Probe `skills`** — for each `<install>/skills/*/SKILL.md`:
|
|
132
|
+
- `loaded`: file exists
|
|
133
|
+
- `frontmatter-valid`: YAML parses with required keys: `name`, `tier`, `description`, `triggers`
|
|
134
|
+
- `triggers-non-empty`: triggers array has ≥1 entry
|
|
135
|
+
- `description-mentions-trigger-conditions`: heuristic — description contains `Must use this skill when` or equivalent (vibe convention)
|
|
136
|
+
- Result: `{ name, loaded, frontmatter-valid, triggers-count, error }`
|
|
137
|
+
|
|
138
|
+
4. **Probe `hooks`** — for each `<install>/hooks/scripts/*.js` (or repo `hooks/scripts/` if testing the source):
|
|
139
|
+
- If a matching `__tests__/<hook-name>.test.js` exists → run `npx vitest run hooks/scripts/__tests__/<hook>.test.js --reporter=json` and parse the result
|
|
140
|
+
- If no test exists → mark `test-suite: "no-tests"` (warn, not fail)
|
|
141
|
+
- Result: `{ name, test-suite: "passed" | "failed" | "no-tests", tests: "<passed>/<total>", error }`
|
|
142
|
+
|
|
143
|
+
5. **Probe `agents`** — for each `<install>/agents/*.md`:
|
|
144
|
+
- `loaded`, `frontmatter-valid` (required: `name`, `description`, `tools`)
|
|
145
|
+
- `tools-list-valid`: every tool in the `tools` array matches a known harness tool (Read, Glob, Grep, Bash, Edit, Write, WebSearch, WebFetch, Task, plus the agent-specific Skill etc.)
|
|
146
|
+
- Result: `{ name, loaded, frontmatter-valid, tools-list-valid, error }`
|
|
147
|
+
|
|
148
|
+
6. **Probe `tools`** — for each tool exported from `dist/tools/index.js`:
|
|
149
|
+
- If a matching test file exists in `src/tools/__tests__/` → run vitest and capture pass/fail
|
|
150
|
+
- If no test → call the tool with a minimal known-safe input (e.g. `validateCodeQuality` against a tiny fixture) and verify the response is well-shaped JSON
|
|
151
|
+
- Result: `{ name, test-suite | smoke-call, status, error }`
|
|
152
|
+
|
|
153
|
+
7. **Compile JSON + Markdown reports** to `<project-vibe-dir>/test-reports/<YYYYMMDD-HHmm>-<harness>.{json,md}` per the schema above.
|
|
154
|
+
|
|
155
|
+
8. **Print summary**:
|
|
156
|
+
```
|
|
157
|
+
📊 RUNTIME REPORT (cc)
|
|
158
|
+
commands: 14/14 loaded, 14/14 frontmatter-valid
|
|
159
|
+
skills: 28/28 loaded, 1 missing description-mentions-trigger-conditions
|
|
160
|
+
hooks: 7/7 test suites passed (118/118 tests)
|
|
161
|
+
agents: 42/42 loaded, 0 with invalid tools
|
|
162
|
+
tools: 9/9 passing
|
|
163
|
+
📈 Score: 99/100
|
|
164
|
+
📁 .claude/vibe/test-reports/20260414-1845-cc.json
|
|
165
|
+
```
|
|
166
|
+
|
|
167
|
+
### Failure handling
|
|
168
|
+
|
|
169
|
+
| Probe failure | Action |
|
|
170
|
+
|---|---|
|
|
171
|
+
| frontmatter parse error | record + continue |
|
|
172
|
+
| missing required key | record + continue |
|
|
173
|
+
| vitest run failure | capture stderr summary into `error` field, continue |
|
|
174
|
+
| tool smoke-call exception | record exception type + continue |
|
|
175
|
+
| install dir not found | abort with clear message — cannot probe what is not installed |
|
|
176
|
+
|
|
177
|
+
### What this catches
|
|
178
|
+
|
|
179
|
+
- A new command added in source but missed by `postinstall` (file present in repo, absent from `~/.claude/commands/`)
|
|
180
|
+
- Skill with malformed frontmatter (would fail to register at runtime)
|
|
181
|
+
- Agent listing a tool that does not exist in the harness
|
|
182
|
+
- Hook unit test regression (matches existing CI guard but locally observable)
|
|
183
|
+
- Tool that broke between the test fixture and the shipped build
|
|
184
|
+
|
|
185
|
+
### What this does NOT catch
|
|
186
|
+
|
|
187
|
+
- LLM behavioral drift (interactive command actually behaving differently)
|
|
188
|
+
- Race conditions in agent orchestration
|
|
189
|
+
- Real-world failures that depend on user input
|
|
190
|
+
|
|
191
|
+
These belong to higher-effort future work (functional e2e, currently not in scope).
|
|
192
|
+
|
|
193
|
+
## Subcommand: `compare` — diff two reports
|
|
194
|
+
|
|
195
|
+
```
|
|
196
|
+
/vibe.test compare <cc-report.json> <coco-report.json>
|
|
197
|
+
```
|
|
198
|
+
|
|
199
|
+
### Steps
|
|
200
|
+
|
|
201
|
+
1. Load both JSON files. Compare timestamps; warn if delta > ±1 minute ("report timing skew detected, confidence low")
|
|
202
|
+
2. Match entries per category by `name`
|
|
203
|
+
3. Classify:
|
|
204
|
+
- **P1**: present on only one side → missing
|
|
205
|
+
- **P2**: present both sides but mismatched booleans (`loaded`, `first-response-ok`, `trigger-recognized`) → behavioral drift
|
|
206
|
+
- **P3**: only error wording differs, behavior identical → informational
|
|
207
|
+
4. Persist result as `<ts>-compare.md`
|
|
208
|
+
5. P1 findings auto-register via `/vibe.regress`
|
|
209
|
+
|
|
210
|
+
## Integration Points
|
|
211
|
+
|
|
212
|
+
### Release flow
|
|
213
|
+
|
|
214
|
+
Recommended pre-release ritual:
|
|
215
|
+
```
|
|
216
|
+
1. From CC: /vibe.test parity → must pass
|
|
217
|
+
2. From coco: /vibe.test parity → must pass (when feasible)
|
|
218
|
+
3. Both green → pnpm release
|
|
219
|
+
```
|
|
220
|
+
|
|
221
|
+
### To /vibe.regress
|
|
222
|
+
|
|
223
|
+
On P1 drift:
|
|
224
|
+
```
|
|
225
|
+
Load skill `vibe-regress` with:
|
|
226
|
+
subcommand: register --from-test
|
|
227
|
+
symptom: "<category> drift: <name> missing in <harness>"
|
|
228
|
+
root-cause-tag: integration
|
|
229
|
+
```
|
|
230
|
+
|
|
231
|
+
## Done Criteria
|
|
232
|
+
|
|
233
|
+
### Subcommand: parity
|
|
234
|
+
- [ ] Works without any external calls
|
|
235
|
+
- [ ] Missing one install dir → clean exit with guidance (not an error)
|
|
236
|
+
- [ ] `install-set-diff`, `content-drift`, `path-error` reported as separate categories
|
|
237
|
+
- [ ] P1 findings invoke `/vibe.regress` automatically
|
|
238
|
+
- [ ] `compare` handles timing-skew warning correctly
|
|
239
|
+
|
|
240
|
+
### Subcommand: report
|
|
241
|
+
- [ ] No external LLM calls (cost = file reads + vitest runs only)
|
|
242
|
+
- [ ] Interactive commands probed structurally, never actually invoked
|
|
243
|
+
- [ ] Hook and tool tests run via real vitest, not simulated
|
|
244
|
+
- [ ] A probe failure on one entry never stops the run
|
|
245
|
+
- [ ] JSON report matches the schema in "Storage Contract"
|
|
246
|
+
- [ ] Markdown summary printed to console after run completes
|
|
247
|
+
- [ ] Install dir absent → abort with clear message (not silent)
|
|
@@ -1,52 +1,52 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: video-production
|
|
3
|
-
tier: standard
|
|
4
|
-
description: "Video processing gotchas — FFmpeg commands, transcoding pipelines, HLS/DASH streaming setup, subtitle embedding (SRT/VTT), and thumbnail extraction. Use when the project involves any video manipulation, media processing, or streaming infrastructure. Covers codec selection, bitrate optimization, and common FFmpeg pitfalls. Must use this skill when user works with video files, mentions FFmpeg, or needs media processing — even for simple tasks like 'generate a thumbnail'."
|
|
5
|
-
triggers: [video, ffmpeg, transcode, encode, stream, media, subtitle, thumbnail, hls, dash]
|
|
6
|
-
priority: 60
|
|
7
|
-
---
|
|
8
|
-
|
|
9
|
-
# Video Production
|
|
10
|
-
|
|
11
|
-
## Pre-check (K1)
|
|
12
|
-
|
|
13
|
-
> Are you processing video files programmatically? If just embedding a YouTube/Vimeo player, this skill is not needed.
|
|
14
|
-
|
|
15
|
-
## Gotchas
|
|
16
|
-
|
|
17
|
-
| Gotcha | Consequence | Prevention |
|
|
18
|
-
|--------|-------------|------------|
|
|
19
|
-
| Direct CLI string concatenation | Command injection risk | Always use wrapper library (fluent-ffmpeg for TS, ffmpeg-python for Python) |
|
|
20
|
-
| No input validation | Crash on corrupted files | Always `ffprobe` input before processing — check codec, resolution, duration |
|
|
21
|
-
| No temp file cleanup | Disk fills up silently | `try/finally` or cleanup handler — never leave partial outputs |
|
|
22
|
-
| No progress callback | Long encoding appears frozen | Implement progress events for any operation >10s |
|
|
23
|
-
| Memory loading large files | OOM on 4K+ video | Use streaming I/O, never read entire file into memory |
|
|
24
|
-
| Assuming codec availability | Fails on different FFmpeg builds | Check `ffmpeg -codecs` at runtime before encoding |
|
|
25
|
-
| Fixed bitrate encoding | Inconsistent quality | Use CRF-based quality (18-28 for H.264) instead |
|
|
26
|
-
| No timeout | Encoding hangs forever | Set timeout + kill process on expiry |
|
|
27
|
-
|
|
28
|
-
## Codec Quick Reference
|
|
29
|
-
|
|
30
|
-
| Use Case | Codec | Note |
|
|
31
|
-
|----------|-------|------|
|
|
32
|
-
| Maximum compatibility | H.264 (libx264) | CRF 23 default |
|
|
33
|
-
| Smaller files | H.265 (libx265) | 50% smaller, slower, licensing issues |
|
|
34
|
-
| Open source | VP9 (libvpx-vp9) | Good for WebM |
|
|
35
|
-
| Best compression | AV1 (libaom-av1) | Very slow encoding |
|
|
36
|
-
|
|
37
|
-
## Resolution Presets
|
|
38
|
-
|
|
39
|
-
| Preset | Resolution | Bitrate (H.264) |
|
|
40
|
-
|--------|-----------|-----------------|
|
|
41
|
-
| 360p | 640x360 | 800 kbps |
|
|
42
|
-
| 720p | 1280x720 | 3 Mbps |
|
|
43
|
-
| 1080p | 1920x1080 | 6 Mbps |
|
|
44
|
-
| 4K | 3840x2160 | 15 Mbps |
|
|
45
|
-
|
|
46
|
-
## Done Criteria (K4)
|
|
47
|
-
|
|
48
|
-
- [ ] All FFmpeg calls go through wrapper library (no raw CLI strings)
|
|
49
|
-
- [ ] Input files validated with ffprobe before processing
|
|
50
|
-
- [ ] Temp files cleaned up in all paths (success + error)
|
|
51
|
-
- [ ] Progress reporting for long operations
|
|
52
|
-
- [ ] Codec availability checked at runtime
|
|
1
|
+
---
|
|
2
|
+
name: video-production
|
|
3
|
+
tier: standard
|
|
4
|
+
description: "Video processing gotchas — FFmpeg commands, transcoding pipelines, HLS/DASH streaming setup, subtitle embedding (SRT/VTT), and thumbnail extraction. Use when the project involves any video manipulation, media processing, or streaming infrastructure. Covers codec selection, bitrate optimization, and common FFmpeg pitfalls. Must use this skill when user works with video files, mentions FFmpeg, or needs media processing — even for simple tasks like 'generate a thumbnail'."
|
|
5
|
+
triggers: [video, ffmpeg, transcode, encode, stream, media, subtitle, thumbnail, hls, dash]
|
|
6
|
+
priority: 60
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
# Video Production
|
|
10
|
+
|
|
11
|
+
## Pre-check (K1)
|
|
12
|
+
|
|
13
|
+
> Are you processing video files programmatically? If just embedding a YouTube/Vimeo player, this skill is not needed.
|
|
14
|
+
|
|
15
|
+
## Gotchas
|
|
16
|
+
|
|
17
|
+
| Gotcha | Consequence | Prevention |
|
|
18
|
+
|--------|-------------|------------|
|
|
19
|
+
| Direct CLI string concatenation | Command injection risk | Always use wrapper library (fluent-ffmpeg for TS, ffmpeg-python for Python) |
|
|
20
|
+
| No input validation | Crash on corrupted files | Always `ffprobe` input before processing — check codec, resolution, duration |
|
|
21
|
+
| No temp file cleanup | Disk fills up silently | `try/finally` or cleanup handler — never leave partial outputs |
|
|
22
|
+
| No progress callback | Long encoding appears frozen | Implement progress events for any operation >10s |
|
|
23
|
+
| Memory loading large files | OOM on 4K+ video | Use streaming I/O, never read entire file into memory |
|
|
24
|
+
| Assuming codec availability | Fails on different FFmpeg builds | Check `ffmpeg -codecs` at runtime before encoding |
|
|
25
|
+
| Fixed bitrate encoding | Inconsistent quality | Use CRF-based quality (18-28 for H.264) instead |
|
|
26
|
+
| No timeout | Encoding hangs forever | Set timeout + kill process on expiry |
|
|
27
|
+
|
|
28
|
+
## Codec Quick Reference
|
|
29
|
+
|
|
30
|
+
| Use Case | Codec | Note |
|
|
31
|
+
|----------|-------|------|
|
|
32
|
+
| Maximum compatibility | H.264 (libx264) | CRF 23 default |
|
|
33
|
+
| Smaller files | H.265 (libx265) | 50% smaller, slower, licensing issues |
|
|
34
|
+
| Open source | VP9 (libvpx-vp9) | Good for WebM |
|
|
35
|
+
| Best compression | AV1 (libaom-av1) | Very slow encoding |
|
|
36
|
+
|
|
37
|
+
## Resolution Presets
|
|
38
|
+
|
|
39
|
+
| Preset | Resolution | Bitrate (H.264) |
|
|
40
|
+
|--------|-----------|-----------------|
|
|
41
|
+
| 360p | 640x360 | 800 kbps |
|
|
42
|
+
| 720p | 1280x720 | 3 Mbps |
|
|
43
|
+
| 1080p | 1920x1080 | 6 Mbps |
|
|
44
|
+
| 4K | 3840x2160 | 15 Mbps |
|
|
45
|
+
|
|
46
|
+
## Done Criteria (K4)
|
|
47
|
+
|
|
48
|
+
- [ ] All FFmpeg calls go through wrapper library (no raw CLI strings)
|
|
49
|
+
- [ ] Input files validated with ffprobe before processing
|
|
50
|
+
- [ ] Temp files cleaned up in all paths (success + error)
|
|
51
|
+
- [ ] Progress reporting for long operations
|
|
52
|
+
- [ ] Codec availability checked at runtime
|
|
@@ -1,58 +1,58 @@
|
|
|
1
|
-
# Video Quality Checklist
|
|
2
|
-
|
|
3
|
-
## Pre-Processing
|
|
4
|
-
|
|
5
|
-
- [ ] Input file exists and is readable before pipeline starts
|
|
6
|
-
- [ ] `ffprobe` run on input — codec, resolution, duration, bitrate logged
|
|
7
|
-
- [ ] Corrupted/truncated files rejected with clear error (not crash)
|
|
8
|
-
- [ ] Input resolution within supported range (min 360p, max 4K)
|
|
9
|
-
- [ ] Audio stream present — handle gracefully if missing
|
|
10
|
-
|
|
11
|
-
## Encoding
|
|
12
|
-
|
|
13
|
-
- [ ] CRF-based encoding used (not fixed bitrate) for consistent visual quality
|
|
14
|
-
- [ ] Target codec available in current FFmpeg build (`ffmpeg -codecs` check)
|
|
15
|
-
- [ ] Encoding runs through wrapper library — no raw CLI string concatenation
|
|
16
|
-
- [ ] `-movflags +faststart` set for MP4 (enables streaming before full download)
|
|
17
|
-
- [ ] Audio normalized: loudness target -16 LUFS (streaming standard)
|
|
18
|
-
- [ ] Aspect ratio preserved — no unintended stretching
|
|
19
|
-
|
|
20
|
-
## Progress & Monitoring
|
|
21
|
-
|
|
22
|
-
- [ ] Progress events emitted for any operation exceeding 10 seconds
|
|
23
|
-
- [ ] Encoding timeout configured — process killed on expiry
|
|
24
|
-
- [ ] Estimated time remaining shown in progress (based on bitrate processed)
|
|
25
|
-
|
|
26
|
-
## Output Validation
|
|
27
|
-
|
|
28
|
-
- [ ] Output file exists after encoding completes
|
|
29
|
-
- [ ] Output duration verified: within ±2 seconds of input
|
|
30
|
-
- [ ] Output codec matches requested codec (re-run ffprobe on output)
|
|
31
|
-
- [ ] Output file size within acceptable range (flag if >3x input size)
|
|
32
|
-
- [ ] Thumbnail: correct dimensions, not blank/corrupted
|
|
33
|
-
|
|
34
|
-
## Subtitles (if applicable)
|
|
35
|
-
|
|
36
|
-
- [ ] Subtitle file encoding is UTF-8 (convert if needed)
|
|
37
|
-
- [ ] Subtitle timing verified — first/last cue in range of video duration
|
|
38
|
-
- [ ] Burn-in subtitles visually tested on dark and light scenes
|
|
39
|
-
|
|
40
|
-
## HLS / DASH Streaming (if applicable)
|
|
41
|
-
|
|
42
|
-
- [ ] `.m3u8` manifest references correct segment file names
|
|
43
|
-
- [ ] All segment files present in output directory
|
|
44
|
-
- [ ] Segment duration consistent (target ±1 second of configured value)
|
|
45
|
-
- [ ] CORS headers configured on media server
|
|
46
|
-
|
|
47
|
-
## Storage & Cleanup
|
|
48
|
-
|
|
49
|
-
- [ ] Temp directory cleaned in `finally` block — both success and error paths
|
|
50
|
-
- [ ] No partial output files left on disk after failure
|
|
51
|
-
- [ ] Output written to separate directory from temp files
|
|
52
|
-
- [ ] Disk space checked before processing large files (minimum 3x input size free)
|
|
53
|
-
|
|
54
|
-
## Security
|
|
55
|
-
|
|
56
|
-
- [ ] Input file path sanitized — no directory traversal (`../`)
|
|
57
|
-
- [ ] FFmpeg invoked via array arguments (not shell string) to prevent injection
|
|
58
|
-
- [ ] Max file size limit enforced before processing begins
|
|
1
|
+
# Video Quality Checklist
|
|
2
|
+
|
|
3
|
+
## Pre-Processing
|
|
4
|
+
|
|
5
|
+
- [ ] Input file exists and is readable before pipeline starts
|
|
6
|
+
- [ ] `ffprobe` run on input — codec, resolution, duration, bitrate logged
|
|
7
|
+
- [ ] Corrupted/truncated files rejected with clear error (not crash)
|
|
8
|
+
- [ ] Input resolution within supported range (min 360p, max 4K)
|
|
9
|
+
- [ ] Audio stream present — handle gracefully if missing
|
|
10
|
+
|
|
11
|
+
## Encoding
|
|
12
|
+
|
|
13
|
+
- [ ] CRF-based encoding used (not fixed bitrate) for consistent visual quality
|
|
14
|
+
- [ ] Target codec available in current FFmpeg build (`ffmpeg -codecs` check)
|
|
15
|
+
- [ ] Encoding runs through wrapper library — no raw CLI string concatenation
|
|
16
|
+
- [ ] `-movflags +faststart` set for MP4 (enables streaming before full download)
|
|
17
|
+
- [ ] Audio normalized: loudness target -16 LUFS (streaming standard)
|
|
18
|
+
- [ ] Aspect ratio preserved — no unintended stretching
|
|
19
|
+
|
|
20
|
+
## Progress & Monitoring
|
|
21
|
+
|
|
22
|
+
- [ ] Progress events emitted for any operation exceeding 10 seconds
|
|
23
|
+
- [ ] Encoding timeout configured — process killed on expiry
|
|
24
|
+
- [ ] Estimated time remaining shown in progress (based on bitrate processed)
|
|
25
|
+
|
|
26
|
+
## Output Validation
|
|
27
|
+
|
|
28
|
+
- [ ] Output file exists after encoding completes
|
|
29
|
+
- [ ] Output duration verified: within ±2 seconds of input
|
|
30
|
+
- [ ] Output codec matches requested codec (re-run ffprobe on output)
|
|
31
|
+
- [ ] Output file size within acceptable range (flag if >3x input size)
|
|
32
|
+
- [ ] Thumbnail: correct dimensions, not blank/corrupted
|
|
33
|
+
|
|
34
|
+
## Subtitles (if applicable)
|
|
35
|
+
|
|
36
|
+
- [ ] Subtitle file encoding is UTF-8 (convert if needed)
|
|
37
|
+
- [ ] Subtitle timing verified — first/last cue in range of video duration
|
|
38
|
+
- [ ] Burn-in subtitles visually tested on dark and light scenes
|
|
39
|
+
|
|
40
|
+
## HLS / DASH Streaming (if applicable)
|
|
41
|
+
|
|
42
|
+
- [ ] `.m3u8` manifest references correct segment file names
|
|
43
|
+
- [ ] All segment files present in output directory
|
|
44
|
+
- [ ] Segment duration consistent (target ±1 second of configured value)
|
|
45
|
+
- [ ] CORS headers configured on media server
|
|
46
|
+
|
|
47
|
+
## Storage & Cleanup
|
|
48
|
+
|
|
49
|
+
- [ ] Temp directory cleaned in `finally` block — both success and error paths
|
|
50
|
+
- [ ] No partial output files left on disk after failure
|
|
51
|
+
- [ ] Output written to separate directory from temp files
|
|
52
|
+
- [ ] Disk space checked before processing large files (minimum 3x input size free)
|
|
53
|
+
|
|
54
|
+
## Security
|
|
55
|
+
|
|
56
|
+
- [ ] Input file path sanitized — no directory traversal (`../`)
|
|
57
|
+
- [ ] FFmpeg invoked via array arguments (not shell string) to prevent injection
|
|
58
|
+
- [ ] Max file size limit enforced before processing begins
|