@nerdev/skillset 0.2.1
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/LICENSE +21 -0
- package/README.md +351 -0
- package/bin/skillset.mjs +205 -0
- package/curations/README.md +53 -0
- package/curations/TEMPLATE/WHY.md +23 -0
- package/curations/TEMPLATE/overlay/SKILL.md +6 -0
- package/curations/impeccable/WHY.md +34 -0
- package/curations/impeccable/overlay/SKILL.md +116 -0
- package/package.json +43 -0
- package/scripts/ste-gate.mjs +39 -0
- package/scripts/ste-lint.py +201 -0
- package/scripts/sync.mjs +174 -0
- package/skills/ai-agent/agent-docs-writer/SKILL.md +105 -0
- package/skills/ai-agent/agent-docs-writer/references/principles.md +73 -0
- package/skills/ai-agent/agent-docs-writer/templates/AGENTS.template.md +44 -0
- package/skills/ai-agent/agent-docs-writer/templates/README.template.md +19 -0
- package/skills/ai-agent/ultra-context-engine/SKILL.md +941 -0
- package/skills/architecture/blueprint/SKILL.md +191 -0
- package/skills/architecture/code-tour/SKILL.md +204 -0
- package/skills/architecture/progress-guard/SKILL.md +148 -0
- package/skills/architecture/search-first/SKILL.md +97 -0
- package/skills/backend/api-design/SKILL.md +456 -0
- package/skills/backend/auth/SKILL.md +596 -0
- package/skills/backend/database/SKILL.md +431 -0
- package/skills/backend/realtime/SKILL.md +670 -0
- package/skills/backend/security/SKILL.md +590 -0
- package/skills/business/brag/SKILL.md +177 -0
- package/skills/business/brag/assets/music/README.md +20 -0
- package/skills/business/brag/assets/music/cues/happy-beats-business-moves-vol-1-by-ende-dot-app.music-cues.json +3846 -0
- package/skills/business/brag/assets/music/cues/happy-beats-business-moves-vol-1-by-ende-dot-app.music-cues.md +35 -0
- package/skills/business/brag/assets/music/cues/happy-beats-business-moves-vol-10-by-ende-dot-app.music-cues.json +1826 -0
- package/skills/business/brag/assets/music/cues/happy-beats-business-moves-vol-10-by-ende-dot-app.music-cues.md +35 -0
- package/skills/business/brag/assets/music/cues/happy-beats-business-moves-vol-11-by-ende-dot-app.music-cues.json +2266 -0
- package/skills/business/brag/assets/music/cues/happy-beats-business-moves-vol-11-by-ende-dot-app.music-cues.md +35 -0
- package/skills/business/brag/assets/music/cues/happy-beats-business-moves-vol-12-by-ende-dot-app.music-cues.json +2806 -0
- package/skills/business/brag/assets/music/cues/happy-beats-business-moves-vol-12-by-ende-dot-app.music-cues.md +35 -0
- package/skills/business/brag/assets/music/cues/happy-beats-business-moves-vol-9-by-ende-dot-app.music-cues.json +2796 -0
- package/skills/business/brag/assets/music/cues/happy-beats-business-moves-vol-9-by-ende-dot-app.music-cues.md +35 -0
- package/skills/business/brag/assets/music/happy-beats-business-moves-vol-1-by-ende-dot-app.mp3 +0 -0
- package/skills/business/brag/assets/music/happy-beats-business-moves-vol-10-by-ende-dot-app.mp3 +0 -0
- package/skills/business/brag/assets/music/happy-beats-business-moves-vol-11-by-ende-dot-app.mp3 +0 -0
- package/skills/business/brag/assets/music/happy-beats-business-moves-vol-12-by-ende-dot-app.mp3 +0 -0
- package/skills/business/brag/assets/music/happy-beats-business-moves-vol-9-by-ende-dot-app.mp3 +0 -0
- package/skills/business/brag/assets/sfx/casino/card-fan-1.ogg +0 -0
- package/skills/business/brag/assets/sfx/casino/card-fan-2.ogg +0 -0
- package/skills/business/brag/assets/sfx/casino/card-place-1.ogg +0 -0
- package/skills/business/brag/assets/sfx/casino/card-place-2.ogg +0 -0
- package/skills/business/brag/assets/sfx/casino/card-place-3.ogg +0 -0
- package/skills/business/brag/assets/sfx/casino/card-place-4.ogg +0 -0
- package/skills/business/brag/assets/sfx/casino/card-shove-1.ogg +0 -0
- package/skills/business/brag/assets/sfx/casino/card-shove-2.ogg +0 -0
- package/skills/business/brag/assets/sfx/casino/card-shove-3.ogg +0 -0
- package/skills/business/brag/assets/sfx/casino/card-shove-4.ogg +0 -0
- package/skills/business/brag/assets/sfx/casino/card-shuffle.ogg +0 -0
- package/skills/business/brag/assets/sfx/casino/card-slide-1.ogg +0 -0
- package/skills/business/brag/assets/sfx/casino/card-slide-2.ogg +0 -0
- package/skills/business/brag/assets/sfx/casino/card-slide-3.ogg +0 -0
- package/skills/business/brag/assets/sfx/casino/card-slide-4.ogg +0 -0
- package/skills/business/brag/assets/sfx/casino/card-slide-5.ogg +0 -0
- package/skills/business/brag/assets/sfx/casino/card-slide-6.ogg +0 -0
- package/skills/business/brag/assets/sfx/casino/card-slide-7.ogg +0 -0
- package/skills/business/brag/assets/sfx/casino/card-slide-8.ogg +0 -0
- package/skills/business/brag/assets/sfx/casino/cards-pack-open-1.ogg +0 -0
- package/skills/business/brag/assets/sfx/casino/cards-pack-open-2.ogg +0 -0
- package/skills/business/brag/assets/sfx/casino/chip-lay-1.ogg +0 -0
- package/skills/business/brag/assets/sfx/casino/chip-lay-2.ogg +0 -0
- package/skills/business/brag/assets/sfx/casino/chip-lay-3.ogg +0 -0
- package/skills/business/brag/assets/sfx/casino/chips-collide-1.ogg +0 -0
- package/skills/business/brag/assets/sfx/casino/chips-collide-2.ogg +0 -0
- package/skills/business/brag/assets/sfx/casino/chips-collide-3.ogg +0 -0
- package/skills/business/brag/assets/sfx/casino/chips-collide-4.ogg +0 -0
- package/skills/business/brag/assets/sfx/casino/chips-handle-1.ogg +0 -0
- package/skills/business/brag/assets/sfx/casino/chips-handle-2.ogg +0 -0
- package/skills/business/brag/assets/sfx/casino/chips-handle-3.ogg +0 -0
- package/skills/business/brag/assets/sfx/casino/chips-handle-4.ogg +0 -0
- package/skills/business/brag/assets/sfx/casino/chips-handle-6.ogg +0 -0
- package/skills/business/brag/assets/sfx/casino/chips-stack-1.ogg +0 -0
- package/skills/business/brag/assets/sfx/casino/chips-stack-2.ogg +0 -0
- package/skills/business/brag/assets/sfx/casino/chips-stack-3.ogg +0 -0
- package/skills/business/brag/assets/sfx/casino/chips-stack-4.ogg +0 -0
- package/skills/business/brag/assets/sfx/casino/chips-stack-5.ogg +0 -0
- package/skills/business/brag/assets/sfx/casino/chips-stack-6.ogg +0 -0
- package/skills/business/brag/assets/sfx/casino/dice-grab-1.ogg +0 -0
- package/skills/business/brag/assets/sfx/casino/dice-grab-2.ogg +0 -0
- package/skills/business/brag/assets/sfx/casino/dice-shake-1.ogg +0 -0
- package/skills/business/brag/assets/sfx/casino/dice-shake-2.ogg +0 -0
- package/skills/business/brag/assets/sfx/casino/dice-shake-3.ogg +0 -0
- package/skills/business/brag/assets/sfx/casino/dice-throw-1.ogg +0 -0
- package/skills/business/brag/assets/sfx/casino/dice-throw-2.ogg +0 -0
- package/skills/business/brag/assets/sfx/casino/dice-throw-3.ogg +0 -0
- package/skills/business/brag/assets/sfx/casino/die-throw-1.ogg +0 -0
- package/skills/business/brag/assets/sfx/casino/die-throw-2.ogg +0 -0
- package/skills/business/brag/assets/sfx/casino/die-throw-3.ogg +0 -0
- package/skills/business/brag/assets/sfx/casino/die-throw-4.ogg +0 -0
- package/skills/business/brag/assets/sfx/impact/footstep_carpet_000.ogg +0 -0
- package/skills/business/brag/assets/sfx/impact/footstep_carpet_003.ogg +0 -0
- package/skills/business/brag/assets/sfx/impact/footstep_carpet_004.ogg +0 -0
- package/skills/business/brag/assets/sfx/impact/footstep_concrete_000.ogg +0 -0
- package/skills/business/brag/assets/sfx/impact/footstep_concrete_001.ogg +0 -0
- package/skills/business/brag/assets/sfx/impact/footstep_concrete_002.ogg +0 -0
- package/skills/business/brag/assets/sfx/impact/footstep_concrete_003.ogg +0 -0
- package/skills/business/brag/assets/sfx/impact/footstep_concrete_004.ogg +0 -0
- package/skills/business/brag/assets/sfx/impact/footstep_grass_000.ogg +0 -0
- package/skills/business/brag/assets/sfx/impact/footstep_grass_001.ogg +0 -0
- package/skills/business/brag/assets/sfx/impact/footstep_grass_002.ogg +0 -0
- package/skills/business/brag/assets/sfx/impact/footstep_grass_003.ogg +0 -0
- package/skills/business/brag/assets/sfx/impact/footstep_grass_004.ogg +0 -0
- package/skills/business/brag/assets/sfx/impact/footstep_snow_000.ogg +0 -0
- package/skills/business/brag/assets/sfx/impact/footstep_snow_001.ogg +0 -0
- package/skills/business/brag/assets/sfx/impact/footstep_snow_002.ogg +0 -0
- package/skills/business/brag/assets/sfx/impact/footstep_snow_003.ogg +0 -0
- package/skills/business/brag/assets/sfx/impact/footstep_snow_004.ogg +0 -0
- package/skills/business/brag/assets/sfx/impact/footstep_wood_000.ogg +0 -0
- package/skills/business/brag/assets/sfx/impact/footstep_wood_001.ogg +0 -0
- package/skills/business/brag/assets/sfx/impact/footstep_wood_002.ogg +0 -0
- package/skills/business/brag/assets/sfx/impact/footstep_wood_003.ogg +0 -0
- package/skills/business/brag/assets/sfx/impact/footstep_wood_004.ogg +0 -0
- package/skills/business/brag/assets/sfx/impact/impactBell_heavy_000.ogg +0 -0
- package/skills/business/brag/assets/sfx/impact/impactBell_heavy_003.ogg +0 -0
- package/skills/business/brag/assets/sfx/impact/impactBell_heavy_004.ogg +0 -0
- package/skills/business/brag/assets/sfx/impact/impactGeneric_light_000.ogg +0 -0
- package/skills/business/brag/assets/sfx/impact/impactGeneric_light_001.ogg +0 -0
- package/skills/business/brag/assets/sfx/impact/impactGeneric_light_002.ogg +0 -0
- package/skills/business/brag/assets/sfx/impact/impactGeneric_light_003.ogg +0 -0
- package/skills/business/brag/assets/sfx/impact/impactGeneric_light_004.ogg +0 -0
- package/skills/business/brag/assets/sfx/impact/impactGlass_heavy_002.ogg +0 -0
- package/skills/business/brag/assets/sfx/impact/impactGlass_light_001.ogg +0 -0
- package/skills/business/brag/assets/sfx/impact/impactGlass_light_002.ogg +0 -0
- package/skills/business/brag/assets/sfx/impact/impactGlass_light_003.ogg +0 -0
- package/skills/business/brag/assets/sfx/impact/impactGlass_medium_000.ogg +0 -0
- package/skills/business/brag/assets/sfx/impact/impactGlass_medium_002.ogg +0 -0
- package/skills/business/brag/assets/sfx/impact/impactGlass_medium_004.ogg +0 -0
- package/skills/business/brag/assets/sfx/impact/impactMetal_heavy_000.ogg +0 -0
- package/skills/business/brag/assets/sfx/impact/impactMetal_heavy_002.ogg +0 -0
- package/skills/business/brag/assets/sfx/impact/impactMetal_heavy_004.ogg +0 -0
- package/skills/business/brag/assets/sfx/impact/impactMetal_light_002.ogg +0 -0
- package/skills/business/brag/assets/sfx/impact/impactMetal_light_003.ogg +0 -0
- package/skills/business/brag/assets/sfx/impact/impactMetal_medium_000.ogg +0 -0
- package/skills/business/brag/assets/sfx/impact/impactMetal_medium_001.ogg +0 -0
- package/skills/business/brag/assets/sfx/impact/impactMetal_medium_002.ogg +0 -0
- package/skills/business/brag/assets/sfx/impact/impactMetal_medium_003.ogg +0 -0
- package/skills/business/brag/assets/sfx/impact/impactMetal_medium_004.ogg +0 -0
- package/skills/business/brag/assets/sfx/impact/impactMining_001.ogg +0 -0
- package/skills/business/brag/assets/sfx/impact/impactPlank_medium_000.ogg +0 -0
- package/skills/business/brag/assets/sfx/impact/impactPlank_medium_001.ogg +0 -0
- package/skills/business/brag/assets/sfx/impact/impactPlank_medium_002.ogg +0 -0
- package/skills/business/brag/assets/sfx/impact/impactPlank_medium_003.ogg +0 -0
- package/skills/business/brag/assets/sfx/impact/impactPlank_medium_004.ogg +0 -0
- package/skills/business/brag/assets/sfx/impact/impactPlate_heavy_000.ogg +0 -0
- package/skills/business/brag/assets/sfx/impact/impactPlate_heavy_001.ogg +0 -0
- package/skills/business/brag/assets/sfx/impact/impactPlate_heavy_002.ogg +0 -0
- package/skills/business/brag/assets/sfx/impact/impactPlate_heavy_003.ogg +0 -0
- package/skills/business/brag/assets/sfx/impact/impactPlate_heavy_004.ogg +0 -0
- package/skills/business/brag/assets/sfx/impact/impactPlate_light_000.ogg +0 -0
- package/skills/business/brag/assets/sfx/impact/impactPlate_light_001.ogg +0 -0
- package/skills/business/brag/assets/sfx/impact/impactPlate_light_002.ogg +0 -0
- package/skills/business/brag/assets/sfx/impact/impactPlate_light_003.ogg +0 -0
- package/skills/business/brag/assets/sfx/impact/impactPlate_light_004.ogg +0 -0
- package/skills/business/brag/assets/sfx/impact/impactPlate_medium_000.ogg +0 -0
- package/skills/business/brag/assets/sfx/impact/impactPlate_medium_001.ogg +0 -0
- package/skills/business/brag/assets/sfx/impact/impactPlate_medium_002.ogg +0 -0
- package/skills/business/brag/assets/sfx/impact/impactPlate_medium_003.ogg +0 -0
- package/skills/business/brag/assets/sfx/impact/impactPlate_medium_004.ogg +0 -0
- package/skills/business/brag/assets/sfx/impact/impactPunch_heavy_000.ogg +0 -0
- package/skills/business/brag/assets/sfx/impact/impactPunch_heavy_001.ogg +0 -0
- package/skills/business/brag/assets/sfx/impact/impactPunch_heavy_002.ogg +0 -0
- package/skills/business/brag/assets/sfx/impact/impactPunch_heavy_003.ogg +0 -0
- package/skills/business/brag/assets/sfx/impact/impactPunch_heavy_004.ogg +0 -0
- package/skills/business/brag/assets/sfx/impact/impactPunch_medium_000.ogg +0 -0
- package/skills/business/brag/assets/sfx/impact/impactPunch_medium_001.ogg +0 -0
- package/skills/business/brag/assets/sfx/impact/impactPunch_medium_002.ogg +0 -0
- package/skills/business/brag/assets/sfx/impact/impactPunch_medium_003.ogg +0 -0
- package/skills/business/brag/assets/sfx/impact/impactPunch_medium_004.ogg +0 -0
- package/skills/business/brag/assets/sfx/impact/impactSoft_heavy_000.ogg +0 -0
- package/skills/business/brag/assets/sfx/impact/impactSoft_heavy_001.ogg +0 -0
- package/skills/business/brag/assets/sfx/impact/impactSoft_heavy_002.ogg +0 -0
- package/skills/business/brag/assets/sfx/impact/impactSoft_heavy_003.ogg +0 -0
- package/skills/business/brag/assets/sfx/impact/impactSoft_heavy_004.ogg +0 -0
- package/skills/business/brag/assets/sfx/impact/impactSoft_medium_000.ogg +0 -0
- package/skills/business/brag/assets/sfx/impact/impactSoft_medium_001.ogg +0 -0
- package/skills/business/brag/assets/sfx/impact/impactSoft_medium_002.ogg +0 -0
- package/skills/business/brag/assets/sfx/impact/impactSoft_medium_003.ogg +0 -0
- package/skills/business/brag/assets/sfx/impact/impactSoft_medium_004.ogg +0 -0
- package/skills/business/brag/assets/sfx/impact/impactTin_medium_000.ogg +0 -0
- package/skills/business/brag/assets/sfx/impact/impactTin_medium_001.ogg +0 -0
- package/skills/business/brag/assets/sfx/impact/impactTin_medium_002.ogg +0 -0
- package/skills/business/brag/assets/sfx/impact/impactTin_medium_003.ogg +0 -0
- package/skills/business/brag/assets/sfx/impact/impactTin_medium_004.ogg +0 -0
- package/skills/business/brag/assets/sfx/impact/impactWood_heavy_000.ogg +0 -0
- package/skills/business/brag/assets/sfx/impact/impactWood_heavy_001.ogg +0 -0
- package/skills/business/brag/assets/sfx/impact/impactWood_heavy_002.ogg +0 -0
- package/skills/business/brag/assets/sfx/impact/impactWood_heavy_003.ogg +0 -0
- package/skills/business/brag/assets/sfx/impact/impactWood_heavy_004.ogg +0 -0
- package/skills/business/brag/assets/sfx/impact/impactWood_light_000.ogg +0 -0
- package/skills/business/brag/assets/sfx/impact/impactWood_light_001.ogg +0 -0
- package/skills/business/brag/assets/sfx/impact/impactWood_light_002.ogg +0 -0
- package/skills/business/brag/assets/sfx/impact/impactWood_light_003.ogg +0 -0
- package/skills/business/brag/assets/sfx/impact/impactWood_light_004.ogg +0 -0
- package/skills/business/brag/assets/sfx/impact/impactWood_medium_000.ogg +0 -0
- package/skills/business/brag/assets/sfx/impact/impactWood_medium_001.ogg +0 -0
- package/skills/business/brag/assets/sfx/impact/impactWood_medium_002.ogg +0 -0
- package/skills/business/brag/assets/sfx/impact/impactWood_medium_003.ogg +0 -0
- package/skills/business/brag/assets/sfx/impact/impactWood_medium_004.ogg +0 -0
- package/skills/business/brag/assets/sfx/interface/bong_001.ogg +0 -0
- package/skills/business/brag/assets/sfx/interface/click_001.ogg +0 -0
- package/skills/business/brag/assets/sfx/interface/click_002.ogg +0 -0
- package/skills/business/brag/assets/sfx/interface/click_003.ogg +0 -0
- package/skills/business/brag/assets/sfx/interface/click_004.ogg +0 -0
- package/skills/business/brag/assets/sfx/interface/click_005.ogg +0 -0
- package/skills/business/brag/assets/sfx/interface/drop_001.ogg +0 -0
- package/skills/business/brag/assets/sfx/interface/drop_002.ogg +0 -0
- package/skills/business/brag/assets/sfx/interface/drop_003.ogg +0 -0
- package/skills/business/brag/assets/sfx/interface/error_005.ogg +0 -0
- package/skills/business/brag/assets/sfx/interface/error_006.ogg +0 -0
- package/skills/business/brag/assets/sfx/interface/glitch_002.ogg +0 -0
- package/skills/business/brag/assets/sfx/interface/glitch_004.ogg +0 -0
- package/skills/business/brag/assets/sfx/interface/select_008.ogg +0 -0
- package/skills/business/brag/assets/sfx/interface/switch_001.ogg +0 -0
- package/skills/business/brag/assets/sfx/interface/switch_002.ogg +0 -0
- package/skills/business/brag/assets/sfx/interface/switch_004.ogg +0 -0
- package/skills/business/brag/assets/sfx/interface/switch_005.ogg +0 -0
- package/skills/business/brag/assets/sfx/interface/switch_006.ogg +0 -0
- package/skills/business/brag/assets/sfx/interface/switch_007.ogg +0 -0
- package/skills/business/brag/assets/sfx/keyboard/keypress-001.wav +0 -0
- package/skills/business/brag/assets/sfx/keyboard/keypress-002.wav +0 -0
- package/skills/business/brag/assets/sfx/keyboard/keypress-003.wav +0 -0
- package/skills/business/brag/assets/sfx/keyboard/keypress-004.wav +0 -0
- package/skills/business/brag/assets/sfx/keyboard/keypress-005.wav +0 -0
- package/skills/business/brag/assets/sfx/keyboard/keypress-006.wav +0 -0
- package/skills/business/brag/assets/sfx/keyboard/keypress-007.wav +0 -0
- package/skills/business/brag/assets/sfx/keyboard/keypress-008.wav +0 -0
- package/skills/business/brag/assets/sfx/keyboard/keypress-009.wav +0 -0
- package/skills/business/brag/assets/sfx/keyboard/keypress-010.wav +0 -0
- package/skills/business/brag/assets/sfx/keyboard/keypress-011.wav +0 -0
- package/skills/business/brag/assets/sfx/keyboard/keypress-012.wav +0 -0
- package/skills/business/brag/assets/sfx/keyboard/keypress-013.wav +0 -0
- package/skills/business/brag/assets/sfx/keyboard/keypress-014.wav +0 -0
- package/skills/business/brag/assets/sfx/keyboard/keypress-015.wav +0 -0
- package/skills/business/brag/assets/sfx/keyboard/keypress-016.wav +0 -0
- package/skills/business/brag/assets/sfx/keyboard/keypress-017.wav +0 -0
- package/skills/business/brag/assets/sfx/keyboard/keypress-018.wav +0 -0
- package/skills/business/brag/assets/sfx/keyboard/keypress-019.wav +0 -0
- package/skills/business/brag/assets/sfx/keyboard/keypress-020.wav +0 -0
- package/skills/business/brag/assets/sfx/keyboard/keypress-021.wav +0 -0
- package/skills/business/brag/assets/sfx/keyboard/keypress-022.wav +0 -0
- package/skills/business/brag/assets/sfx/keyboard/keypress-023.wav +0 -0
- package/skills/business/brag/assets/sfx/keyboard/keypress-024.wav +0 -0
- package/skills/business/brag/assets/sfx/keyboard/keypress-025.wav +0 -0
- package/skills/business/brag/assets/sfx/keyboard/keypress-026.wav +0 -0
- package/skills/business/brag/assets/sfx/keyboard/keypress-027.wav +0 -0
- package/skills/business/brag/assets/sfx/keyboard/keypress-028.wav +0 -0
- package/skills/business/brag/assets/sfx/keyboard/keypress-029.wav +0 -0
- package/skills/business/brag/assets/sfx/keyboard/keypress-030.wav +0 -0
- package/skills/business/brag/assets/sfx/keyboard/keypress-031.wav +0 -0
- package/skills/business/brag/assets/sfx/keyboard/keypress-032.wav +0 -0
- package/skills/business/brag/assets/sfx/sfx-analysis.json +15584 -0
- package/skills/business/brag/assets/sfx/sfx-analysis.md +75 -0
- package/skills/business/brag/assets/sfx/ui/click1.ogg +0 -0
- package/skills/business/brag/assets/sfx/ui/click2.ogg +0 -0
- package/skills/business/brag/assets/sfx/ui/click3.ogg +0 -0
- package/skills/business/brag/assets/sfx/ui/click4.ogg +0 -0
- package/skills/business/brag/assets/sfx/ui/click5.ogg +0 -0
- package/skills/business/brag/assets/sfx/ui/mouseclick1.ogg +0 -0
- package/skills/business/brag/assets/sfx/ui/rollover1.ogg +0 -0
- package/skills/business/brag/assets/sfx/ui/rollover2.ogg +0 -0
- package/skills/business/brag/assets/sfx/ui/rollover4.ogg +0 -0
- package/skills/business/brag/assets/sfx/ui/rollover5.ogg +0 -0
- package/skills/business/brag/assets/sfx/ui/switch1.ogg +0 -0
- package/skills/business/brag/assets/sfx/ui/switch10.ogg +0 -0
- package/skills/business/brag/assets/sfx/ui/switch11.ogg +0 -0
- package/skills/business/brag/assets/sfx/ui/switch12.ogg +0 -0
- package/skills/business/brag/assets/sfx/ui/switch13.ogg +0 -0
- package/skills/business/brag/assets/sfx/ui/switch14.ogg +0 -0
- package/skills/business/brag/assets/sfx/ui/switch15.ogg +0 -0
- package/skills/business/brag/assets/sfx/ui/switch16.ogg +0 -0
- package/skills/business/brag/assets/sfx/ui/switch17.ogg +0 -0
- package/skills/business/brag/assets/sfx/ui/switch18.ogg +0 -0
- package/skills/business/brag/assets/sfx/ui/switch19.ogg +0 -0
- package/skills/business/brag/assets/sfx/ui/switch2.ogg +0 -0
- package/skills/business/brag/assets/sfx/ui/switch20.ogg +0 -0
- package/skills/business/brag/assets/sfx/ui/switch21.ogg +0 -0
- package/skills/business/brag/assets/sfx/ui/switch22.ogg +0 -0
- package/skills/business/brag/assets/sfx/ui/switch23.ogg +0 -0
- package/skills/business/brag/assets/sfx/ui/switch24.ogg +0 -0
- package/skills/business/brag/assets/sfx/ui/switch25.ogg +0 -0
- package/skills/business/brag/assets/sfx/ui/switch26.ogg +0 -0
- package/skills/business/brag/assets/sfx/ui/switch27.ogg +0 -0
- package/skills/business/brag/assets/sfx/ui/switch28.ogg +0 -0
- package/skills/business/brag/assets/sfx/ui/switch29.ogg +0 -0
- package/skills/business/brag/assets/sfx/ui/switch3.ogg +0 -0
- package/skills/business/brag/assets/sfx/ui/switch30.ogg +0 -0
- package/skills/business/brag/assets/sfx/ui/switch31.ogg +0 -0
- package/skills/business/brag/assets/sfx/ui/switch32.ogg +0 -0
- package/skills/business/brag/assets/sfx/ui/switch33.ogg +0 -0
- package/skills/business/brag/assets/sfx/ui/switch34.ogg +0 -0
- package/skills/business/brag/assets/sfx/ui/switch35.ogg +0 -0
- package/skills/business/brag/assets/sfx/ui/switch36.ogg +0 -0
- package/skills/business/brag/assets/sfx/ui/switch37.ogg +0 -0
- package/skills/business/brag/assets/sfx/ui/switch38.ogg +0 -0
- package/skills/business/brag/assets/sfx/ui/switch4.ogg +0 -0
- package/skills/business/brag/assets/sfx/ui/switch5.ogg +0 -0
- package/skills/business/brag/assets/sfx/ui/switch6.ogg +0 -0
- package/skills/business/brag/assets/sfx/ui/switch7.ogg +0 -0
- package/skills/business/brag/assets/sfx/ui/switch8.ogg +0 -0
- package/skills/business/brag/assets/sfx/ui/switch9.ogg +0 -0
- package/skills/business/brag/references/audio.md +307 -0
- package/skills/business/brag/references/step-1-inspect.md +133 -0
- package/skills/business/brag/references/step-2-plan.md +234 -0
- package/skills/business/brag/references/step-3-compose.md +210 -0
- package/skills/business/brag/references/step-4-deliver.md +168 -0
- package/skills/business/brag/references/tones.md +231 -0
- package/skills/business/brag/scripts/analyze_music_cues.py +309 -0
- package/skills/business/brag/scripts/pyproject.toml +14 -0
- package/skills/business/brag/scripts/uv.lock +819 -0
- package/skills/business/copywriting/SKILL.md +178 -0
- package/skills/business/customer-research/SKILL.md +259 -0
- package/skills/business/freelancing/SKILL.md +679 -0
- package/skills/business/launch/SKILL.md +273 -0
- package/skills/business/marketing-psychology/SKILL.md +364 -0
- package/skills/business/pricing/SKILL.md +233 -0
- package/skills/business/resume-revamp-jake-ats/SKILL.md +64 -0
- package/skills/business/startup-founder/SKILL.md +400 -0
- package/skills/business/startup-founder/references/funding.md +48 -0
- package/skills/business/startup-founder/references/further-reading.md +132 -0
- package/skills/business/startup-founder/references/gtm-tools.md +57 -0
- package/skills/business/startup-founder/references/legal-india.md +36 -0
- package/skills/business/startup-founder/references/marketing/README.md +16 -0
- package/skills/business/startup-founder/references/marketing/cold-email.md +172 -0
- package/skills/business/startup-founder/references/marketing/competitors.md +245 -0
- package/skills/business/startup-founder/references/marketing/customer-research.md +276 -0
- package/skills/business/startup-founder/references/marketing/free-tools.md +168 -0
- package/skills/business/startup-founder/references/marketing/launch.md +343 -0
- package/skills/business/startup-founder/references/marketing/marketing-plan.md +270 -0
- package/skills/business/startup-founder/references/marketing/pricing.md +237 -0
- package/skills/business/startup-founder/references/marketing/product-marketing.md +250 -0
- package/skills/business/startup-founder/references/validation.md +267 -0
- package/skills/devops/deployments/SKILL.md +339 -0
- package/skills/devops/git-ci/SKILL.md +372 -0
- package/skills/devops/performance/SKILL.md +523 -0
- package/skills/devops/testing/SKILL.md +558 -0
- package/skills/engineering/code-review/SKILL.md +149 -0
- package/skills/engineering/coding-standards/SKILL.md +229 -0
- package/skills/engineering/product-engineering/SKILL.md +219 -0
- package/skills/engineering/senior-engineer-prompts/SKILL.md +145 -0
- package/skills/engineering/tdd-workflow/SKILL.md +178 -0
- package/skills/engineering/verification-loop/SKILL.md +199 -0
- package/skills/nerdev/nerdev-abstraction/SKILL.md +412 -0
- package/skills/nerdev/nerdev-docs/SKILL.md +527 -0
- package/skills/nerdev/nerdev-docs/templates/adr-template.md +39 -0
- package/skills/nerdev/nerdev-docs/templates/contributing-template.md +140 -0
- package/skills/nerdev/nerdev-docs/templates/deploy-template.md +426 -0
- package/skills/nerdev/nerdev-docs/templates/design-template.md +105 -0
- package/skills/nerdev/nerdev-docs/templates/incident-template.md +66 -0
- package/skills/nerdev/nerdev-monorepo/SKILL.md +522 -0
- package/skills/quality/output-skill/SKILL.md +49 -0
- package/skills/quality/unslop/SKILL.md +67 -0
- package/skills/ui/animaxxing/SKILL.md +58 -0
- package/skills/ui/animaxxing/agents/openai.yaml +7 -0
- package/skills/ui/animaxxing/references/effect-restoration.md +26 -0
- package/skills/ui/animaxxing/references/motion-vocabulary.md +142 -0
- package/skills/ui/animaxxing/references/recipes/blast-off.md +119 -0
- package/skills/ui/animaxxing/references/recipes/particle-effects.md +718 -0
- package/skills/ui/animaxxing/references/recipes/particle-field.md +428 -0
- package/skills/ui/animaxxing/references/recipes/route-letters.md +205 -0
- package/skills/ui/animaxxing/references/recipes/speak-in.md +181 -0
- package/skills/ui/animaxxing/references/recipes/split-entrances.md +345 -0
- package/skills/ui/animaxxing/references/recipes/wave.md +144 -0
- package/skills/ui/animaxxing/references/text-stability.md +68 -0
- package/skills/ui/animaxxing/references/verification.md +44 -0
- package/skills/ui/ask-animation/SKILL.md +178 -0
- package/skills/ui/ask-base-ui/SKILL.md +400 -0
- package/skills/ui/ask-cmdk/SKILL.md +315 -0
- package/skills/ui/ask-command-menu/SKILL.md +262 -0
- package/skills/ui/ask-drawer/SKILL.md +235 -0
- package/skills/ui/ask-form/SKILL.md +229 -0
- package/skills/ui/ask-gsap/SKILL.md +435 -0
- package/skills/ui/ask-modal/SKILL.md +145 -0
- package/skills/ui/ask-motion/SKILL.md +339 -0
- package/skills/ui/ask-rhf/SKILL.md +388 -0
- package/skills/ui/ask-sonner/API.md +64 -0
- package/skills/ui/ask-sonner/SKILL.md +88 -0
- package/skills/ui/ask-table/SKILL.md +253 -0
- package/skills/ui/ask-tanstack-table/SKILL.md +490 -0
- package/skills/ui/ask-toast/SKILL.md +163 -0
- package/skills/ui/ask-vaul/SKILL.md +291 -0
- package/skills/ui/ask-virtual-list/SKILL.md +304 -0
- package/skills/ui/ask-virtuoso/SKILL.md +332 -0
- package/skills/ui/email-craft/SKILL.md +258 -0
- package/skills/ui/frontend-craftsmanship/SKILL.md +462 -0
- package/skills/ui/gsap-astro/SKILL.md +56 -0
- package/skills/ui/gsap-astro/agents/openai.yaml +7 -0
- package/skills/ui/gsap-astro/references/client-router-navigation.md +139 -0
- package/skills/ui/gsap-astro/references/initialization.md +87 -0
- package/skills/ui/gsap-astro/references/motion-system.md +152 -0
- package/skills/ui/gsap-astro/references/scripts-and-islands.md +65 -0
- package/skills/ui/gsap-astro/references/verification.md +44 -0
- package/skills/ui/gsap-core/SKILL.md +254 -0
- package/skills/ui/gsap-frameworks/SKILL.md +266 -0
- package/skills/ui/gsap-nextjs/SKILL.md +51 -0
- package/skills/ui/gsap-nextjs/agents/openai.yaml +7 -0
- package/skills/ui/gsap-nextjs/references/app-router-navigation.md +189 -0
- package/skills/ui/gsap-nextjs/references/initialization.md +87 -0
- package/skills/ui/gsap-nextjs/references/motion-system.md +158 -0
- package/skills/ui/gsap-nextjs/references/verification.md +40 -0
- package/skills/ui/gsap-nuxt/SKILL.md +56 -0
- package/skills/ui/gsap-nuxt/agents/openai.yaml +7 -0
- package/skills/ui/gsap-nuxt/references/initialization.md +87 -0
- package/skills/ui/gsap-nuxt/references/motion-system.md +161 -0
- package/skills/ui/gsap-nuxt/references/navigation.md +145 -0
- package/skills/ui/gsap-nuxt/references/page-transitions.md +107 -0
- package/skills/ui/gsap-nuxt/references/verification.md +42 -0
- package/skills/ui/gsap-performance/SKILL.md +79 -0
- package/skills/ui/gsap-plugins/SKILL.md +433 -0
- package/skills/ui/gsap-react/SKILL.md +136 -0
- package/skills/ui/gsap-react-router/SKILL.md +55 -0
- package/skills/ui/gsap-react-router/agents/openai.yaml +7 -0
- package/skills/ui/gsap-react-router/references/initialization.md +87 -0
- package/skills/ui/gsap-react-router/references/motion-system.md +158 -0
- package/skills/ui/gsap-react-router/references/react-router-navigation.md +165 -0
- package/skills/ui/gsap-react-router/references/route-lifetime.md +74 -0
- package/skills/ui/gsap-react-router/references/verification.md +42 -0
- package/skills/ui/gsap-scrolltrigger/SKILL.md +296 -0
- package/skills/ui/gsap-sveltekit/SKILL.md +54 -0
- package/skills/ui/gsap-sveltekit/agents/openai.yaml +7 -0
- package/skills/ui/gsap-sveltekit/references/initialization.md +87 -0
- package/skills/ui/gsap-sveltekit/references/motion-system.md +156 -0
- package/skills/ui/gsap-sveltekit/references/page-lifetime.md +63 -0
- package/skills/ui/gsap-sveltekit/references/sveltekit-navigation.md +160 -0
- package/skills/ui/gsap-sveltekit/references/verification.md +41 -0
- package/skills/ui/gsap-tanstack-router/SKILL.md +56 -0
- package/skills/ui/gsap-tanstack-router/agents/openai.yaml +7 -0
- package/skills/ui/gsap-tanstack-router/references/initialization.md +87 -0
- package/skills/ui/gsap-tanstack-router/references/motion-system.md +160 -0
- package/skills/ui/gsap-tanstack-router/references/route-lifetime.md +66 -0
- package/skills/ui/gsap-tanstack-router/references/tanstack-navigation.md +156 -0
- package/skills/ui/gsap-tanstack-router/references/verification.md +41 -0
- package/skills/ui/gsap-timeline/SKILL.md +107 -0
- package/skills/ui/gsap-utils/SKILL.md +284 -0
- package/skills/ui/gsap-vanilla/SKILL.md +63 -0
- package/skills/ui/gsap-vanilla/agents/openai.yaml +7 -0
- package/skills/ui/gsap-vanilla/references/cross-document-navigation.md +54 -0
- package/skills/ui/gsap-vanilla/references/initialization.md +87 -0
- package/skills/ui/gsap-vanilla/references/motion-system.md +150 -0
- package/skills/ui/gsap-vanilla/references/page-load.md +96 -0
- package/skills/ui/gsap-vanilla/references/spa-navigation.md +70 -0
- package/skills/ui/gsap-vanilla/references/verification.md +41 -0
- package/skills/ui/house-style/SKILL.md +366 -0
- package/skills/ui/imagegen/SKILL.md +49 -0
- package/skills/ui/imagegen/references/brandkit.md +48 -0
- package/skills/ui/imagegen/references/image-to-code.md +56 -0
- package/skills/ui/imagegen/references/mobile.md +58 -0
- package/skills/ui/imagegen/references/web.md +63 -0
- package/skills/ui/impeccable/SKILL.md +116 -0
- package/skills/ui/impeccable/reference/adapt.md +318 -0
- package/skills/ui/impeccable/reference/adapt.native.md +58 -0
- package/skills/ui/impeccable/reference/android.md +46 -0
- package/skills/ui/impeccable/reference/animate.md +89 -0
- package/skills/ui/impeccable/reference/audit.md +137 -0
- package/skills/ui/impeccable/reference/audit.native.md +139 -0
- package/skills/ui/impeccable/reference/bolder.md +33 -0
- package/skills/ui/impeccable/reference/clarify.md +94 -0
- package/skills/ui/impeccable/reference/colorize.md +86 -0
- package/skills/ui/impeccable/reference/craft-floor.md +44 -0
- package/skills/ui/impeccable/reference/craft.md +5 -0
- package/skills/ui/impeccable/reference/critique.md +806 -0
- package/skills/ui/impeccable/reference/degraded/asset-producer.md +37 -0
- package/skills/ui/impeccable/reference/degraded/documenter.md +24 -0
- package/skills/ui/impeccable/reference/degraded/finish-reviewer.md +38 -0
- package/skills/ui/impeccable/reference/degraded/manual-edit-applier.md +92 -0
- package/skills/ui/impeccable/reference/delight.md +70 -0
- package/skills/ui/impeccable/reference/distill.md +111 -0
- package/skills/ui/impeccable/reference/doctor.md +54 -0
- package/skills/ui/impeccable/reference/document.md +416 -0
- package/skills/ui/impeccable/reference/extract.md +69 -0
- package/skills/ui/impeccable/reference/generate.md +101 -0
- package/skills/ui/impeccable/reference/harden.md +345 -0
- package/skills/ui/impeccable/reference/hooks.md +111 -0
- package/skills/ui/impeccable/reference/init.md +131 -0
- package/skills/ui/impeccable/reference/ios.md +51 -0
- package/skills/ui/impeccable/reference/layout.md +84 -0
- package/skills/ui/impeccable/reference/live-setup.md +104 -0
- package/skills/ui/impeccable/reference/live.md +325 -0
- package/skills/ui/impeccable/reference/new-work.md +145 -0
- package/skills/ui/impeccable/reference/onboard.md +234 -0
- package/skills/ui/impeccable/reference/operate.md +61 -0
- package/skills/ui/impeccable/reference/optimize.md +258 -0
- package/skills/ui/impeccable/reference/overdrive.md +127 -0
- package/skills/ui/impeccable/reference/polish.md +105 -0
- package/skills/ui/impeccable/reference/quieter.md +99 -0
- package/skills/ui/impeccable/reference/routing.md +24 -0
- package/skills/ui/impeccable/reference/shape.md +59 -0
- package/skills/ui/impeccable/reference/typeset.md +80 -0
- package/skills/ui/impeccable/reference/visualize.md +46 -0
- package/skills/ui/impeccable/scripts/VERSION +1 -0
- package/skills/ui/impeccable/scripts/command-metadata.json +98 -0
- package/skills/ui/impeccable/scripts/data/font-index-failures.json +121 -0
- package/skills/ui/impeccable/scripts/data/font-index.json +1 -0
- package/skills/ui/impeccable/scripts/impeccable +206 -0
- package/skills/ui/impeccable/scripts/impeccable.cmd +214 -0
- package/skills/ui/impeccable/scripts/live-browser-dom.js +167 -0
- package/skills/ui/impeccable/scripts/live-browser-ignores.js +242 -0
- package/skills/ui/impeccable/scripts/live-browser-session.js +144 -0
- package/skills/ui/impeccable/scripts/live-browser.js +13510 -0
- package/skills/ui/impeccable/scripts/modern-screenshot.umd.js +14 -0
- package/skills/ui/motion/SKILL.md +207 -0
- package/skills/ui/pick-ui-library/SKILL.md +85 -0
- package/skills/ui/product-messaging/SKILL.md +163 -0
- package/skills/ui/product-site/SKILL.md +465 -0
- package/skills/ui/prototype/PICKER.md +197 -0
- package/skills/ui/prototype/SKILL.md +98 -0
- package/skills/ui/refero-design/SKILL.md +534 -0
- package/skills/ui/refero-design/agents/openai.yaml +4 -0
- package/skills/ui/refero-design/references/anti-ai-slop.md +292 -0
- package/skills/ui/refero-design/references/color.md +563 -0
- package/skills/ui/refero-design/references/copywriting.md +222 -0
- package/skills/ui/refero-design/references/craft-details.md +525 -0
- package/skills/ui/refero-design/references/example-workflow.md +264 -0
- package/skills/ui/refero-design/references/icons.md +166 -0
- package/skills/ui/refero-design/references/mcp-tools.md +258 -0
- package/skills/ui/refero-design/references/motion.md +504 -0
- package/skills/ui/refero-design/references/typography.md +737 -0
- package/skills/ui/refero-design/references/visual-workflow.md +105 -0
- package/skills/ui/style-animaxxing/SKILL.md +48 -0
- package/skills/ui/style-animaxxing/agents/openai.yaml +7 -0
- package/skills/ui/style-animaxxing/references/motion-vocabulary.md +51 -0
- package/skills/ui/style-animaxxing/references/tokens.md +288 -0
- package/skills/ui/style-animaxxing/references/typography-and-layout.md +149 -0
- package/skills/ui/style-animaxxing/references/verification.md +38 -0
- package/skills/ui/typography-picker/SKILL.md +305 -0
- package/skills/ui/ui-core/SKILL.md +345 -0
- package/skills/ui/ui-core/references/accessibility.md +85 -0
- package/skills/ui/ui-core/references/build.md +666 -0
- package/skills/ui/ui-core/references/copy.md +70 -0
- package/skills/ui/ui-core/references/dark-mode.md +76 -0
- package/skills/ui/ui-core/references/direction.md +99 -0
- package/skills/ui/ui-core/references/redesign.md +74 -0
- package/skills/ui/ui-core/references/responsive.md +77 -0
- package/skills/ui/ui-core/references/styles.md +42 -0
- package/skills/ui/ui-core/references/system.md +190 -0
- package/skills/ui/ui-core/references/verify.md +37 -0
- package/skills/ui/ui-engineering/SKILL.md +436 -0
- package/skills/ui/ui-engineering/references/avatars.md +74 -0
- package/skills/ui/ui-engineering/references/card-patterns.md +66 -0
- package/skills/ui/ui-engineering/references/floating-actions.md +65 -0
- package/skills/ui/ui-engineering/references/navigation.md +81 -0
- package/skills/ui/ui-engineering/references/overlays.md +74 -0
- package/skills/ui/ui-engineering/references/pagination.md +71 -0
- package/skills/ui/ui-engineering/references/progress-indicators.md +77 -0
- package/skills/ui/ui-engineering/references/quality-bar.md +293 -0
- package/skills/ui/ui-engineering/references/search.md +68 -0
- package/skills/ui/ui-engineering/references/tailwind-architecture.md +81 -0
- package/skills/ui/ui-theme-picker/SKILL.md +522 -0
- package/skills/ui/ui-theme-picker/references/component-sources.md +223 -0
- package/skills/ui/ui-theme-picker/references/styles.md +298 -0
- package/skills/ui/vitepress-docs/SKILL.md +439 -0
- package/skills/ui/vitepress-docs/references/components.md +333 -0
- package/skills/ui/vitepress-docs/references/layout.md +128 -0
- package/skills/ui/vitepress-docs/references/tokens.md +87 -0
- package/skills/ui/vitepress-docs/references/typography.md +76 -0
- package/skills/workflow/careful/SKILL.md +48 -0
- package/skills/workflow/context-restore/SKILL.md +69 -0
- package/skills/workflow/context-save/SKILL.md +96 -0
- package/skills/workflow/health/SKILL.md +99 -0
- package/skills/workflow/learn/SKILL.md +95 -0
- package/skills/workflow/office-hours/SKILL.md +136 -0
- package/skills/workflow/ship/SKILL.md +95 -0
- package/vendor.json +80 -0
|
@@ -0,0 +1,234 @@
|
|
|
1
|
+
# Step 2: Write the brag plan
|
|
2
|
+
|
|
3
|
+
Write `<output-dir>/brag-plan.md`. One focused page. This is the creative north star for the entire video.
|
|
4
|
+
|
|
5
|
+
The plan should specify what the video must communicate and what project material must be used. It should not prescribe low-level Hyperframes implementation details. Hyperframes will decide the concrete composition structure, animation mechanics, and render workflow from the brief in Step 3.
|
|
6
|
+
|
|
7
|
+
## Create the output directory
|
|
8
|
+
|
|
9
|
+
```bash
|
|
10
|
+
mkdir -p <output-dir>
|
|
11
|
+
```
|
|
12
|
+
|
|
13
|
+
## Structure of brag-plan.md
|
|
14
|
+
|
|
15
|
+
```markdown
|
|
16
|
+
# Brag Plan: [App Name]
|
|
17
|
+
|
|
18
|
+
## What is this app?
|
|
19
|
+
[One sentence. What it does, what makes it funny or impressive.]
|
|
20
|
+
|
|
21
|
+
## The angle
|
|
22
|
+
[The creative premise. The joke, the hook, the claim.
|
|
23
|
+
What makes this video specific to this project and not generic.]
|
|
24
|
+
|
|
25
|
+
## Hook (first 2-3 seconds)
|
|
26
|
+
[The opening moment. This is the most important decision.
|
|
27
|
+
What word, image, or motion earns the next 20 seconds?]
|
|
28
|
+
|
|
29
|
+
## Key moments (the middle)
|
|
30
|
+
[2-3 sharp highlights from the product.
|
|
31
|
+
Bullet points. Specific. "The altitude meter counting up."
|
|
32
|
+
Not "feature callouts."]
|
|
33
|
+
|
|
34
|
+
## Outro / punchline
|
|
35
|
+
[How does it land? The final line. The beat before the logo.]
|
|
36
|
+
|
|
37
|
+
## User flow worth showing
|
|
38
|
+
[The 2–3 beats of *using* the product (entry → key action → result), pulled from
|
|
39
|
+
Step 1 question 9. This is the strongest material the video has — the centerpiece
|
|
40
|
+
scenes should show the flow, not just landing-page sections. If the project is
|
|
41
|
+
landing-page-only, write "none — landing-page only" and rely on Key moments instead.]
|
|
42
|
+
|
|
43
|
+
## Tone
|
|
44
|
+
- Preset: [default / polished / yc-parody / chaotic / deadpan / cinematic / app-store]
|
|
45
|
+
- Creative direction: [freeform phrase, inferred or user-provided]
|
|
46
|
+
- Interpretation: [one sentence on how this affects pacing, writing, visual energy, and restraint]
|
|
47
|
+
|
|
48
|
+
## Format: [landscape / vertical / square] — [width]x[height]
|
|
49
|
+
## Duration: [target seconds]
|
|
50
|
+
|
|
51
|
+
## Visual identity (from the project)
|
|
52
|
+
- Background: [exact color value]
|
|
53
|
+
- Accent: [exact color value]
|
|
54
|
+
- Text: [exact color value]
|
|
55
|
+
- Display font: [name]
|
|
56
|
+
- Body font: [name]
|
|
57
|
+
- Strongest visual element: [what from the site to reference]
|
|
58
|
+
|
|
59
|
+
## Share copy (draft)
|
|
60
|
+
[One sentence for Twitter/X/LinkedIn/Discord. Punchy. Not corporate.]
|
|
61
|
+
|
|
62
|
+
## Audio direction
|
|
63
|
+
- Role: [warm bed / sparse professional accents / cinematic support / dense rhythmic layer / intentional silence]
|
|
64
|
+
- Music: [candidate track / mood / none only if disabled, missing, or intentionally silent]
|
|
65
|
+
- Music treatment: [start time, volume posture, fade-in/out intent, beat/swell notes]
|
|
66
|
+
- Music cue guidance: [preset cue file read / unavailable; list 1-3 strongCue timestamps for major moments; list beat-grid windows for sequential events]
|
|
67
|
+
- Audio-reactive treatment: [none / subtle / expressive; what visual qualities may respond to music energy]
|
|
68
|
+
- SFX posture: [sparse / moderate / dense; motion-matched; professional restraint]
|
|
69
|
+
- Audio-coupled moments: [visual ideas that should consider sound, e.g. typed text, beat reveal, count-up, card sequence]
|
|
70
|
+
- Restraint rule: [what audio must not do]
|
|
71
|
+
|
|
72
|
+
## Storyboard
|
|
73
|
+
|
|
74
|
+
### Scene 1 — [name] — [duration]s
|
|
75
|
+
[What's on screen. What text appears. What product material must be referenced.]
|
|
76
|
+
Sequential/interaction: [yes — describe what appears one by one or what interaction is simulated, e.g. "3 stat cards arrive one by one" or "cursor clicks the match button"; or none]
|
|
77
|
+
Audio intent: [what the sound should do emotionally]
|
|
78
|
+
Audio-coupled idea: [typed text, beat-aligned reveal, counter ticks, card-by-card sequence, simulated tap/swipe/type — or none]
|
|
79
|
+
Music: [mood, or "none" only if disabled / missing / intentionally silent]
|
|
80
|
+
Transition mood: [clean / hard / dramatic / soft / chaotic] → Scene 2
|
|
81
|
+
|
|
82
|
+
### Scene 2 — [name] — [duration]s
|
|
83
|
+
[...]
|
|
84
|
+
Sequential/interaction: [yes — describe it; or none]
|
|
85
|
+
Audio intent: [what the sound should do emotionally]
|
|
86
|
+
Audio-coupled idea: [type or none]
|
|
87
|
+
Transition mood: [mood] → Scene 3
|
|
88
|
+
|
|
89
|
+
[... continue for all scenes]
|
|
90
|
+
|
|
91
|
+
**Music mood for this video:** [upbeat / cinematic / chaotic / deadpan / parody / none only if disabled / missing / intentionally silent]
|
|
92
|
+
**Audio summary:** [one sentence describing the full audio arc]
|
|
93
|
+
```
|
|
94
|
+
|
|
95
|
+
## Planning the scenes
|
|
96
|
+
|
|
97
|
+
The default pattern is:
|
|
98
|
+
```
|
|
99
|
+
Hook → Reveal → 2-3 highlights → Punchline/outro
|
|
100
|
+
```
|
|
101
|
+
|
|
102
|
+
But adapt it. These are the right scene counts for each tone:
|
|
103
|
+
|
|
104
|
+
| Tone | Scenes | Pacing |
|
|
105
|
+
|---|---|---|
|
|
106
|
+
| `default` | 4-5 | Comfortable. Room for each moment to breathe. |
|
|
107
|
+
| `polished` | 3-4 | Fewer scenes, longer holds. Confidence through restraint. |
|
|
108
|
+
| `yc-parody` | 4-5 | Structured. The joke is how seriously it's delivered. |
|
|
109
|
+
| `chaotic` | 6-8 | Rapid. Some scenes under 2 seconds. |
|
|
110
|
+
| `deadpan` | 3-4 | Long holds. Big empty space. One word at a time. |
|
|
111
|
+
| `cinematic` | 4-5 | Wide shots. Big type. Dramatic reveals. |
|
|
112
|
+
| `app-store` | 4-6 | Feature cards. Clean reveals. No mess. |
|
|
113
|
+
|
|
114
|
+
## Duration guidance
|
|
115
|
+
|
|
116
|
+
Scene durations must sum to 15-25 seconds. Count them.
|
|
117
|
+
|
|
118
|
+
- Under 15 seconds: too thin, add a scene or lengthen holds.
|
|
119
|
+
- Over 25 seconds: cut a scene or tighten timing.
|
|
120
|
+
- 18-22 seconds is the sweet spot for most brag videos.
|
|
121
|
+
|
|
122
|
+
## Reading time (keep the pace, not at text's expense)
|
|
123
|
+
|
|
124
|
+
High pace comes from fast motion, fast transitions, and tight cuts , NOT from pulling text off screen before it can be read. Every text element a viewer must read needs enough fully-visible, settled time (entered, not yet exiting) to actually read it:
|
|
125
|
+
|
|
126
|
+
- Short label or 1-3 word line: about 0.8s settled.
|
|
127
|
+
- Headline or full sentence: about 0.3s per word, minimum ~1.2s. The hook line gets the most.
|
|
128
|
+
|
|
129
|
+
Plan that floor, then keep everything else fast: entrances and transitions stay snappy (0.3-0.6s) and motion stays energetic. A line can SLAM in fast and then HOLD , fast-in plus an adequate hold reads as punchy AND legible.
|
|
130
|
+
|
|
131
|
+
Two failure modes to design out at the plan stage:
|
|
132
|
+
|
|
133
|
+
- **Too much text for the scene length.** A 4s scene lands maybe 2-3 short reads at the floor, not 6. If a scene carries more text than its duration allows, cut copy or split the scene , do not speed it up.
|
|
134
|
+
- **Sequential text snapped onto a fast beat.** Beat-grid reveals can land ~0.5s apart at 110+ BPM (this is what rushed the bicycles spec rows). That spacing is fine for accents (glows, dots, ticks) but too fast for readable lines. For sequential TEXT, hold each item to the floor: snap to every other beat, or reveal them quickly and hold the full set on screen afterward. Flag any sequential text reveal in the storyboard with its intended hold.
|
|
135
|
+
|
|
136
|
+
## Choosing what to show
|
|
137
|
+
|
|
138
|
+
Every brag video must show something real from the product. Options, in preferred order:
|
|
139
|
+
|
|
140
|
+
1. **Recreate a working-app moment** , the upload screen, the result view, the dashboard with real-looking content. Use real source from `app/`, `pages/`, or routed components , not just the landing page. This is the most compelling option whenever the product has a flow. The product *doing* its thing beats the product *describing* its thing.
|
|
141
|
+
2. **Recreate a UI element in HTML** , a hero card, swipe UI, progress meter, stat block. Strong when there is no flow to show.
|
|
142
|
+
3. **Animate the core concept** , if the product is "taxis for taxis", animate two taxis where one is in the other. Pure graphic but grounded in the idea.
|
|
143
|
+
4. **Text-forward sequence** , if the product is copy-driven (Psychologists for Chatbots), let the copy be the visual. Giant display type, minimal chrome.
|
|
144
|
+
|
|
145
|
+
Never fill scenes with abstract patterns, color washes, or generic motion graphics that could belong to any video.
|
|
146
|
+
|
|
147
|
+
## Bias the storyboard toward the user flow
|
|
148
|
+
|
|
149
|
+
If Step 1 question 9 identified a real user flow, the **centerpiece scenes must show that flow** , not just landing-page recreations.
|
|
150
|
+
|
|
151
|
+
Good (working-app scenes):
|
|
152
|
+
- "Upload screen , cursor drops a video file. Filename appears. Progress bar fills 0→100% in 1.2s."
|
|
153
|
+
- "Three result thumbnails pop in: 0:15, 0:23, 0:31. Each shows a vertical clip frame with a real-looking caption."
|
|
154
|
+
- "Inbox row appears, gets a green 'resolved' badge, slides off the top of the list."
|
|
155
|
+
|
|
156
|
+
Avoid (marketing-only scenes when a flow exists):
|
|
157
|
+
- "16:9 → 9:16 transform diagram" , that's a *diagram of what the product does*, not the product doing it.
|
|
158
|
+
- "Three stat cards: 10x faster / 0 cuts / 3 clips" , that's the landing page's social-proof row, not the product.
|
|
159
|
+
|
|
160
|
+
Stat cards, headline blocks, and the landing-page hero still have a place , but at most one of them, used as a frame around the flow, not as a substitute. The centerpiece is the working app.
|
|
161
|
+
|
|
162
|
+
If the project has no app (landing-page-only static site), skip this section and recreate the landing-page strongest visual instead.
|
|
163
|
+
|
|
164
|
+
## Look for interaction and sequential reveal moments
|
|
165
|
+
|
|
166
|
+
Before writing the storyboard, ask: **does this product have things that can appear one by one, or actions that can be simulated?**
|
|
167
|
+
|
|
168
|
+
These are among the most effective moments in a brag video , they make the product feel alive and real, not like a slide deck. Look for:
|
|
169
|
+
|
|
170
|
+
- **Sequential reveals** , feature cards, stats, list items, match results, profile cards, menu options, or anything the product shows as a set. Design these to appear one by one so sound and motion reinforce each arrival. This is a storyboard decision, not an audio afterthought.
|
|
171
|
+
- **Simulated interaction** , if the product involves swiping, clicking, typing, selecting, or toggling, show it. A cursor clicking a button, a swipe gesture on a card, or text being typed into a field turns a static mockup into a demonstration. Sound matches the action automatically when the gesture is in the storyboard.
|
|
172
|
+
|
|
173
|
+
If a scene has either of these, commit to it explicitly in the scene description:
|
|
174
|
+
- Good: "3 horse profiles slide in one by one, each with a card sound"
|
|
175
|
+
- Good: "Simulate a right-swipe on Thunder's profile card"
|
|
176
|
+
- Good: "The hook line types out character by character with keyboard sounds"
|
|
177
|
+
- Avoid: leaving it vague and hoping Hyperframes adds rhythm on its own
|
|
178
|
+
|
|
179
|
+
Hyperframes can implement both patterns well , but only if the plan specifies what's appearing, in what order, and that interaction is being simulated. The plan is the contract.
|
|
180
|
+
|
|
181
|
+
## Audio planning
|
|
182
|
+
|
|
183
|
+
Choose the music direction in the plan. Leave exact SFX file selection and exact timestamps to Hyperframes during composition, because SFX should match the actual visual implementation.
|
|
184
|
+
|
|
185
|
+
Default posture: include audio. Pick a music bed and a few tasteful SFX unless the user passed `--no-music` / `--no-sfx`, the assets are missing, or silence is explicitly part of the concept.
|
|
186
|
+
|
|
187
|
+
For each scene, note the intended audio role and likely audio-coupled opportunities:
|
|
188
|
+
|
|
189
|
+
Format: `Audio-coupled idea: type the hook with subtle key ticks if Hyperframes uses a typing animation.`
|
|
190
|
+
|
|
191
|
+
For audio-reactive visuals, say what should respond and how restrained it should be. Example: `Audio-reactive treatment: subtle; use music RMS/bass to make the hero glow and product card presence breathe, not to add waveform bars.`
|
|
192
|
+
|
|
193
|
+
Do not require exact SFX filenames in `brag-plan.md` unless the user explicitly requested a specific sound or the mapping is unavoidable. Prefer moment types and intent.
|
|
194
|
+
|
|
195
|
+
Hyperframes has creative freedom to choose exact files, density, and timestamps that make the video feel smooth and professional.
|
|
196
|
+
|
|
197
|
+
Do not over-specify audio if the tone asks for restraint. For `yc-parody` or `deadpan`, use fewer and quieter cues, but prefer polished restraint over no audio.
|
|
198
|
+
|
|
199
|
+
## Music cue guidance
|
|
200
|
+
|
|
201
|
+
Beat/cue sync is available for any track now (see `audio.md` → "Beat and cue sources"): bundled tracks have precomputed presets; custom tracks get cues at composition time via `analyze_music_cues.py` (rich, needs Python) or `npx hyperframes beats` (simple, zero-dep). When the plan chooses music, add a compact `Music cue guidance` section to `brag-plan.md`:
|
|
202
|
+
|
|
203
|
+
- The track and, if a preset exists, its tempo.
|
|
204
|
+
- 1-3 strong-cue timestamps to target for major visual moments , from the preset if bundled, otherwise note "to be detected at composition time."
|
|
205
|
+
- Beat-grid windows for any sequential reveals in the storyboard.
|
|
206
|
+
- A restraint note when the tone is deadpan, yc-parody, or otherwise quiet.
|
|
207
|
+
|
|
208
|
+
See `audio.md` for the cue sources, JSON schema, and beat-sync tolerances.
|
|
209
|
+
|
|
210
|
+
If SFX are enabled, note likely sound opportunities but leave exact filenames to Hyperframes. Hyperframes should use the skill's `sfx-analysis.md` during composition.
|
|
211
|
+
|
|
212
|
+
## Handoff posture
|
|
213
|
+
|
|
214
|
+
- Good: "Recreate the swipe card with Thunder's profile and hay tags."
|
|
215
|
+
- Good: "Use the source site's amber/dark palette and serif headline feel."
|
|
216
|
+
- Good: "The stat reveal should feel like a deadpan startup metric slide."
|
|
217
|
+
- Avoid: "Use a GSAP timeline with this selector and this easing."
|
|
218
|
+
- Avoid: "Use this exact HTML structure."
|
|
219
|
+
- Avoid: "Load this specific runtime URL."
|
|
220
|
+
|
|
221
|
+
## Transition vocabulary
|
|
222
|
+
|
|
223
|
+
Match transitions to tone:
|
|
224
|
+
|
|
225
|
+
| Tone | Preferred transitions |
|
|
226
|
+
|---|---|
|
|
227
|
+
| `default` | Crossfade, clean wipe |
|
|
228
|
+
| `polished` | Soft crossfade, slide |
|
|
229
|
+
| `yc-parody` | Hard cut, minimal |
|
|
230
|
+
| `chaotic` | Hard cut, flash, zoom |
|
|
231
|
+
| `deadpan` | Slow crossfade, long hold |
|
|
232
|
+
| `cinematic` | Dramatic wipe, crossfade |
|
|
233
|
+
| `app-store` | Slide, smooth wipe |
|
|
234
|
+
|
|
@@ -0,0 +1,210 @@
|
|
|
1
|
+
# Step 3: Hand off to Hyperframes
|
|
2
|
+
|
|
3
|
+
## Create the composition brief
|
|
4
|
+
|
|
5
|
+
Write `<output-dir>/composition-brief.md` before creating or editing the Hyperframes composition.
|
|
6
|
+
|
|
7
|
+
```markdown
|
|
8
|
+
# Hyperframes Composition Brief: [App Name]
|
|
9
|
+
|
|
10
|
+
## Objective
|
|
11
|
+
Create a short launch-style brag video for [App Name].
|
|
12
|
+
|
|
13
|
+
## Output
|
|
14
|
+
- Composition directory: `<output-dir>/composition/`
|
|
15
|
+
- Rendered video: `<output-dir>/brag.mp4`
|
|
16
|
+
- Format: [landscape / vertical / square] — [width]x[height]
|
|
17
|
+
- Duration: [15-25 seconds]
|
|
18
|
+
|
|
19
|
+
## Source Material
|
|
20
|
+
- Project root: [path]
|
|
21
|
+
- Primary files read: [index.html, styles.css, README, etc.]
|
|
22
|
+
- Product name: [name]
|
|
23
|
+
- Tagline / strongest claim: [line]
|
|
24
|
+
- Key UI or visual moment to recreate: [specific element]
|
|
25
|
+
- Copy that must appear verbatim:
|
|
26
|
+
- [line 1]
|
|
27
|
+
- [line 2]
|
|
28
|
+
|
|
29
|
+
## Creative Direction
|
|
30
|
+
- Tone preset: [default / polished / yc-parody / chaotic / deadpan / cinematic / app-store]
|
|
31
|
+
- Creative direction: [freeform phrase, inferred or user-provided]
|
|
32
|
+
- Interpretation: [how tone affects pacing, writing, visual energy, and restraint]
|
|
33
|
+
- Angle: [one paragraph from brag-plan.md]
|
|
34
|
+
- Hook: [first 2-3 seconds]
|
|
35
|
+
- Outro / punchline: [final line]
|
|
36
|
+
- Avoid:
|
|
37
|
+
- Generic SaaS language
|
|
38
|
+
- Abstract filler visuals
|
|
39
|
+
- Unrelated visual redesign
|
|
40
|
+
|
|
41
|
+
## Visual Identity
|
|
42
|
+
- Background: [exact value from project]
|
|
43
|
+
- Text: [exact value from project]
|
|
44
|
+
- Accent: [exact value from project]
|
|
45
|
+
- Display font: [font or fallback decision]
|
|
46
|
+
- Body font: [font or fallback decision]
|
|
47
|
+
- Visual references from the project: [short list]
|
|
48
|
+
|
|
49
|
+
## Storyboard
|
|
50
|
+
Use the storyboard in `<output-dir>/brag-plan.md` as the creative contract.
|
|
51
|
+
|
|
52
|
+
Scene summary:
|
|
53
|
+
1. [Scene name] — [duration]s — [what must be seen / read]
|
|
54
|
+
2. [Scene name] — [duration]s — [what must be seen / read]
|
|
55
|
+
3. [...]
|
|
56
|
+
|
|
57
|
+
## Audio
|
|
58
|
+
- Audio role: [warm bed / sparse professional accents / cinematic support / dense rhythmic layer / intentional silence]
|
|
59
|
+
- Audio arc: [how sound changes across the video]
|
|
60
|
+
- Music: [filename, or none only if disabled, missing, or intentionally silent]
|
|
61
|
+
- Music treatment: [volume posture, fade-in/out intent, beat/swell notes; e.g. fade under final logo]
|
|
62
|
+
- Music cue guidance: [cue source — bundled preset path, or "detect at composition via analyze_music_cues.py / hyperframes beats" — plus concise optional timing hints; or unavailable]
|
|
63
|
+
- Audio-reactive treatment: [none / subtle / expressive; what visual qualities may respond to RMS/frequency energy]
|
|
64
|
+
- Audio-coupled moments:
|
|
65
|
+
- [scene/moment] — [typing / beat reveal / counter / card sequence / simulated interaction / final logo]
|
|
66
|
+
- [scene/moment] — [intent]
|
|
67
|
+
- SFX selection guidance: [how sound should match motion and interaction; examples only, not rigid rules]
|
|
68
|
+
- SFX analysis guidance: [path to sfx-analysis.md/json if present; use lower high-frequency-risk sounds for repeated or polished moments]
|
|
69
|
+
- Exact SFX choice: Hyperframes should choose filenames, timestamps, density, and volume based on the implemented animation.
|
|
70
|
+
- Audio files: copy the chosen music and any Hyperframes-selected SFX into `<output-dir>/composition/assets/`
|
|
71
|
+
|
|
72
|
+
## Hyperframes Instructions
|
|
73
|
+
Load the composition-building Hyperframes domain skills — `hyperframes-core` (composition contract + `data-*` timing), `hyperframes-animation` (motion), `hyperframes-creative` (design spec, beats, audio-reactive), `hyperframes-keyframes` (seek-safe keyframes), and `hyperframes-cli` (lint/check/render). /brag is its own workflow: do not enter the `hyperframes` entry-point intent interview and do not route into its generic promo / launch-video workflow. Prefer native Hyperframes conventions over anything in `/brag`.
|
|
74
|
+
|
|
75
|
+
Requirements:
|
|
76
|
+
- Show at least one real UI, copy, or visual element from the source project.
|
|
77
|
+
- Keep all text readable in the final render.
|
|
78
|
+
- Keep the video within 15-25 seconds.
|
|
79
|
+
- Include the planned music/SFX layer unless audio was explicitly disabled or documented as intentionally silent.
|
|
80
|
+
- Treat `/brag` audio notes as guidance, not a fixed cue sheet. Choose SFX after the visual animation exists.
|
|
81
|
+
- Treat music cue metadata as optional timing hints. Hyperframes decides exact animation timing and should ignore cues that hurt readability, scene pacing, or the product story.
|
|
82
|
+
- Major reveals may move toward nearby strong cues within about 0.15s. Smaller entrances may align to nearby beat points within about 0.10s. Use only 1-3 strong cue locks in a 15-25s video unless the edit clearly benefits from more.
|
|
83
|
+
- Use SFX to support motion and interaction: card sounds for card-like reveals, short announcement cues for major payoffs, key/click sounds for text or user actions, and restraint when the edit is already busy.
|
|
84
|
+
- Honor planned music treatment such as fade-outs, ducking, beat-aligned reveals, or letting a final SFX ring over the music, using the best Hyperframes-supported implementation.
|
|
85
|
+
- When music is present and the treatment is not `none`, consider Hyperframes audio-reactive workflow: extract audio data and use RMS/frequency bands for subtle, brand-specific motion. Good targets are glow, depth, background warmth, card presence, title emphasis, or other existing visual elements. Avoid waveform/equalizer visuals, musical-note graphics, generic particle systems, strobing, or heavy pulsing.
|
|
86
|
+
- Use local assets for audio and any required runtime/media dependencies when possible.
|
|
87
|
+
- Run `hyperframes check` before render — it is brag's single gate.
|
|
88
|
+
```
|
|
89
|
+
|
|
90
|
+
The brief is the boundary: if a detail belongs to product positioning, copy, tone, source material, or selection of moments, `/brag` should specify it. If a detail belongs to composition implementation, Hyperframes should decide it.
|
|
91
|
+
|
|
92
|
+
---
|
|
93
|
+
|
|
94
|
+
## Audio asset preparation
|
|
95
|
+
|
|
96
|
+
Read [audio.md](audio.md). Copy the planned music into `<output-dir>/composition/assets/music/` before building the composition.
|
|
97
|
+
|
|
98
|
+
```bash
|
|
99
|
+
mkdir -p <output-dir>/composition/assets/music
|
|
100
|
+
cp <skill-dir>/assets/music/<track>.mp3 <output-dir>/composition/assets/music/
|
|
101
|
+
```
|
|
102
|
+
|
|
103
|
+
`<skill-dir>` is this skill's own directory (see "Skill directory" in `SKILL.md`).
|
|
104
|
+
|
|
105
|
+
Hyperframes copies any SFX it selects into the same `assets/` tree after choosing exact files.
|
|
106
|
+
|
|
107
|
+
---
|
|
108
|
+
|
|
109
|
+
## Voiceover (only when the user explicitly asks)
|
|
110
|
+
|
|
111
|
+
Voiceover is disabled unless the user explicitly requests it, for example
|
|
112
|
+
with `--voice` or "narrate this". Do not offer or enable narration during a
|
|
113
|
+
normal `/brag` run.
|
|
114
|
+
|
|
115
|
+
When voice is disabled, do not write a voiceover script, generate narration,
|
|
116
|
+
transcribe audio, duck music, add a voice track, or merge narration into the
|
|
117
|
+
video. The normal video export must remain entirely voice-agnostic.
|
|
118
|
+
|
|
119
|
+
When voice is enabled, write the narration lines into `brag-plan.md` under a
|
|
120
|
+
`## Voiceover script` section, then generate the audio through Kokoro:
|
|
121
|
+
|
|
122
|
+
```bash
|
|
123
|
+
npx hyperframes tts "<narration text or path to script>" \
|
|
124
|
+
--voice af_heart \
|
|
125
|
+
--output <output-dir>/composition/assets/voiceover.wav
|
|
126
|
+
```
|
|
127
|
+
|
|
128
|
+
If the user wants a different Kokoro voice, run `npx hyperframes tts --list`
|
|
129
|
+
to see the available options. The command above is the voice implementation
|
|
130
|
+
for this PR and should be used directly.
|
|
131
|
+
|
|
132
|
+
Wire it into the composition on its own track. Music ducks to 0.12-0.15 for the duration of the voiceover, then returns to its normal level:
|
|
133
|
+
|
|
134
|
+
```html
|
|
135
|
+
<audio id="vo" data-start="0" data-track-index="3" data-volume="1" src="assets/voiceover.wav"></audio>
|
|
136
|
+
```
|
|
137
|
+
|
|
138
|
+
Scene durations must flex to match the generated audio , check the WAV duration after generation and adjust `data-duration` values accordingly. Do not hardcode scene lengths when voiceover is present; let the voice set the pace.
|
|
139
|
+
|
|
140
|
+
---
|
|
141
|
+
|
|
142
|
+
## Audio-reactive extraction (when music is present)
|
|
143
|
+
|
|
144
|
+
When music is present and the treatment is not `none`, the composition can react to per-frame audio data. **Delegate the extraction to the Hyperframes audio-reactive workflow** , `/brag` does not ship an extraction script and must not hardcode a path to one.
|
|
145
|
+
|
|
146
|
+
In the composition step, follow the audio-reactive guidance owned by the `hyperframes-creative` skill (let that skill locate its own files). It owns the data format, the extraction helper (which ships with that skill, not with `/brag`, so don't hardcode a path to it), and the per-frame sampling pattern. Ask Hyperframes to extract the audio data and wire at least one visual element to it.
|
|
147
|
+
|
|
148
|
+
If extraction is unavailable (no helper, or ffmpeg missing), note it in the brief and skip audio-reactive , do not block the render.
|
|
149
|
+
|
|
150
|
+
---
|
|
151
|
+
|
|
152
|
+
## Beat sync (when a cue source is available)
|
|
153
|
+
|
|
154
|
+
Get a cue source first (see `audio.md` → "Beat and cue sources"): a bundled preset, `analyze_music_cues.py` on any track (needs Python; run via `uv`), or `npx hyperframes beats` (no Python; needs Hyperframes ≥ 0.6.99). The rich sources (preset / `analyze_music_cues.py`) give two arrays; `hyperframes beats` gives one.
|
|
155
|
+
|
|
156
|
+
- **`strongCues`** , high-intensity beats (drops, swells, accents). Use for **major moments**: scene transitions, hero reveals, match payoff, logo landing. Lock 1-3 per video. With `hyperframes beats` (no `strongCues`), take the highest-`strength` beats instead.
|
|
157
|
+
- **`beats`** , the full beat grid. Use to **snap small sequential events** into the music's pulse: cards arriving one by one, stats popping in, sequenced SFX hits.
|
|
158
|
+
|
|
159
|
+
### How to implement
|
|
160
|
+
|
|
161
|
+
**Major moments (strong cues):**
|
|
162
|
+
1. Load the cue source: the preset/analysis JSON (`strongCues` + `beats`), or the beat-grid JSON that `hyperframes beats` writes (a plain beat list; see the current hyperframes-cli skill for its location).
|
|
163
|
+
2. Pick 1-3 strong timestamps near a planned major visual moment , `strongCues`, or the highest-`strength` beats.
|
|
164
|
+
3. Shift the reveal's start time to land within ±0.15s of the cue.
|
|
165
|
+
4. Mark it: `// beat-locked: 5.80s`
|
|
166
|
+
|
|
167
|
+
**Sequential events (beats):**
|
|
168
|
+
1. Decide how many sequential items there are (e.g. 3 stats, 4 profile cards).
|
|
169
|
+
2. Find the nearest beat to your intended start time for the first item.
|
|
170
|
+
3. Use consecutive beats from that point for each subsequent item , snap each within ±0.10s of a beat timestamp.
|
|
171
|
+
4. Mark it: `// beat-grid: stat 1 at 12.65s, stat 2 at 13.17s, stat 3 at 13.70s`
|
|
172
|
+
|
|
173
|
+
**Readable text vs the beat grid:** if the sequential items are text the viewer reads (stat labels, list rows, callouts) and the beats are close (under ~0.6s apart at fast tempos), do not reveal a new line on every beat , it outruns reading (this rushed the bicycles spec rows). Snap to every other beat, or reveal them quickly and hold the full set on screen afterward. Non-text accents (glows, dots, ticks) may still hit every beat. See the reading-time floor in `step-2-plan.md`.
|
|
174
|
+
|
|
175
|
+
This gives you two layers of musicality: the big moments land on the strongest hits, and the small events tick along with the pulse.
|
|
176
|
+
|
|
177
|
+
Do not force every tween onto a beat , readability and scene pacing come first. If snapping a tween to a beat hurts copy legibility or the product story, use the natural timing instead.
|
|
178
|
+
|
|
179
|
+
If SFX are enabled, also pass `<skill-dir>/assets/sfx/sfx-analysis.md` as selection guidance. Prefer low high-frequency-risk files for repeated or polished moments. SFX on sequential events should fire at the same timestamp as the visual , the sound and motion land together.
|
|
180
|
+
|
|
181
|
+
---
|
|
182
|
+
|
|
183
|
+
## Call Hyperframes
|
|
184
|
+
|
|
185
|
+
After `<output-dir>/brag-plan.md`, `<output-dir>/composition-brief.md`, and selected audio assets exist:
|
|
186
|
+
|
|
187
|
+
1. Load the Hyperframes domain skills (`hyperframes-core`, `hyperframes-animation`, `hyperframes-creative`, `hyperframes-keyframes`, `hyperframes-cli`) to create or update `<output-dir>/composition/`. /brag is its own workflow , do not enter the `hyperframes` entry-point intent interview or route into its generic promo / launch-video workflow.
|
|
188
|
+
2. Pass Hyperframes the composition brief, the brag plan, and the source files it should reference.
|
|
189
|
+
3. Let Hyperframes choose the implementation details.
|
|
190
|
+
4. Run Hyperframes check (the single gate before render).
|
|
191
|
+
5. Render to `<output-dir>/brag.mp4`.
|
|
192
|
+
|
|
193
|
+
Do not manually copy stale composition snippets from this skill into the output. The point of delegating is to benefit from the latest Hyperframes guidance.
|
|
194
|
+
|
|
195
|
+
---
|
|
196
|
+
|
|
197
|
+
## Self-review checklist
|
|
198
|
+
|
|
199
|
+
Before moving to delivery, verify:
|
|
200
|
+
|
|
201
|
+
- [ ] `<output-dir>/composition-brief.md` exists.
|
|
202
|
+
- [ ] The brief clearly identifies the exact product moments to show.
|
|
203
|
+
- [ ] The composition uses the current Hyperframes workflow, not a hardcoded `/brag` template.
|
|
204
|
+
- [ ] Music file is copied into `<output-dir>/composition/assets/music/`.
|
|
205
|
+
- [ ] At least one visual element subtly reacts to the music (audio-reactive treatment present), or extraction failure is documented.
|
|
206
|
+
- [ ] At least 1 major tween is beat-locked to a strong cue (a `strongCue`, or the highest-`strength` beat from `hyperframes beats`) within ±0.15s, marked `// beat-locked` (or natural timing was chosen for readability).
|
|
207
|
+
- [ ] Sequential events (cards, stats, list items) snap to consecutive `beats[]` timestamps (±0.10s), marked `// beat-grid` (or natural timing was chosen for readability).
|
|
208
|
+
- [ ] The composition shows at least one real UI, copy, or visual element from the project.
|
|
209
|
+
- [ ] Total duration is 15-25 seconds.
|
|
210
|
+
- [ ] Hyperframes check passes, or any blocker is documented for the user.
|
|
@@ -0,0 +1,168 @@
|
|
|
1
|
+
# Step 4: Validate, render, and deliver
|
|
2
|
+
|
|
3
|
+
## Validate
|
|
4
|
+
|
|
5
|
+
```bash
|
|
6
|
+
cd <output-dir>/composition
|
|
7
|
+
npx hyperframes check # brag's single pre-render gate — fix every error it reports
|
|
8
|
+
```
|
|
9
|
+
|
|
10
|
+
Fix all errors. `check` is brag's single pre-render gate , run it and fix everything it reports, including WCAG contrast failures (they gate as errors, not warnings). Each contrast finding carries a suggested compliant color, so apply it or adjust within the palette family and re-run `check` , most fixes need no screenshot. There is no per-element contrast escape hatch for real text. the only bypass is `check --no-contrast`, which skips the entire WCAG pass (all-or-nothing), not a way to accept one borderline element. For exact contrast thresholds, layout escape hatches, and reporting details, use the current hyperframes-cli `check` guidance. `check`'s layout pass backstops the "keep all text readable" creative law , fix any reported overflow.
|
|
11
|
+
|
|
12
|
+
For a visual gut-check before rendering, optionally capture key frames:
|
|
13
|
+
|
|
14
|
+
```bash
|
|
15
|
+
npx hyperframes snapshot # PNG key frames
|
|
16
|
+
```
|
|
17
|
+
|
|
18
|
+
## Preview
|
|
19
|
+
|
|
20
|
+
```bash
|
|
21
|
+
npx hyperframes preview
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
Tell the user the preview is running and give them the localhost URL. Invite them to check it before rendering.
|
|
25
|
+
|
|
26
|
+
If the user approves or asks to render:
|
|
27
|
+
|
|
28
|
+
## Render
|
|
29
|
+
|
|
30
|
+
```bash
|
|
31
|
+
npx hyperframes render --output ../brag.mp4
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
This outputs to `<output-dir>/brag.mp4` (one level up from the composition directory).
|
|
35
|
+
|
|
36
|
+
For a faster iteration render:
|
|
37
|
+
```bash
|
|
38
|
+
npx hyperframes render --quality draft --output ../brag.mp4
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
For final delivery:
|
|
42
|
+
```bash
|
|
43
|
+
npx hyperframes render --quality high --output ../brag.mp4
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
## Pick the poster frame
|
|
47
|
+
|
|
48
|
+
The poster is the still shown before the video plays , the first thing anyone sees when it is idle or unplayed. Don't leave it to the raw first frame or an arbitrary timestamp. those land on fades, mid-transitions, blank intro backgrounds, or half-rendered text.
|
|
49
|
+
|
|
50
|
+
You built this composition, so you already know its strongest moment and exactly when it lands , the hook line, the hero reveal, or the final logo. Pick that beat at a **settled** point: text fully animated in, before it exits (the storyboard timings tell you the safe window). Then extract that one frame full-res with ffmpeg. From `<output-dir>/composition`:
|
|
51
|
+
|
|
52
|
+
```bash
|
|
53
|
+
# use the timestamp of your strongest settled beat, e.g. 3.2s
|
|
54
|
+
ffmpeg -ss 3.2 -i ../brag.mp4 -frames:v 1 -q:v 2 ../brag.jpg
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
Aim for a frame that is postable on its own (the "show the thing" law , any frozen frame ought to be shareable). If the pulled frame lands on a transition or mid-animation, nudge the timestamp a few tenths of a second and re-extract.
|
|
58
|
+
|
|
59
|
+
### Bake the poster as frame 0
|
|
60
|
+
|
|
61
|
+
A bare `.mp4` has no `poster` attribute , every player and platform picks its own idle thumbnail, and almost all of them grab **frame 0**. Slack, Twitter/X,. Discord regenerate thumbnails server-side and ignore embedded cover-art metadata, so the *only* reliable way to control the idle image everywhere is to make frame 0 *be* the poster.
|
|
62
|
+
|
|
63
|
+
Replace **only** the first frame's pixels with `brag.jpg`, leaving every other frame and all timing untouched , same duration, same frame count, audio copied through. At 30fps the poster shows for 1/30s before the intro rolls, so it is imperceptible on playback but it is what every thumbnail grabber sees. From `<output-dir>`:
|
|
64
|
+
|
|
65
|
+
```bash
|
|
66
|
+
ffmpeg -y -i brag.mp4 -i brag.jpg \
|
|
67
|
+
-filter_complex "[0:v][1:v]overlay=0:0:enable='eq(n,0)'[v]" \
|
|
68
|
+
-map "[v]" -map 0:a? -c:v libx264 -crf 18 -preset slow -pix_fmt yuv420p \
|
|
69
|
+
-c:a copy -movflags +faststart brag.poster.mp4 \
|
|
70
|
+
&& mv brag.poster.mp4 brag.mp4
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
The poster (`brag.jpg`) matches the video's dimensions because it was pulled from the same render, so the overlay lines up exactly. Keep `brag.jpg` alongside , it is the custom-thumbnail asset for platforms that accept an upload (Instagram, TikTok, YouTube, Facebook, and the LinkedIn post editor) and the `poster="brag.jpg"` image for any `<video>` that embeds the brag (a gallery card, the user's site).
|
|
74
|
+
|
|
75
|
+
## Write share copy
|
|
76
|
+
|
|
77
|
+
Write `<output-dir>/share-copy.txt`.
|
|
78
|
+
|
|
79
|
+
The share copy ought to be:
|
|
80
|
+
- One to three sentences max
|
|
81
|
+
- Postable as-is to Twitter/X, LinkedIn, or Discord
|
|
82
|
+
- Specific to the project , no generic "excited to share" language
|
|
83
|
+
- Tone-matched to the brag video
|
|
84
|
+
|
|
85
|
+
`share-copy.txt` is the canonical single caption. Do not put multi-platform variants, long launch notes, or Product Hunt copy in this file.
|
|
86
|
+
|
|
87
|
+
If variants are useful, write them to a separate optional file:
|
|
88
|
+
|
|
89
|
+
```text
|
|
90
|
+
<output-dir>/share-copy-variants.md
|
|
91
|
+
```
|
|
92
|
+
|
|
93
|
+
### Share copy by tone
|
|
94
|
+
|
|
95
|
+
**`default`:**
|
|
96
|
+
```
|
|
97
|
+
Made [App Name]. It's [what it does, in the project's own absurd terms].
|
|
98
|
+
[The best line from the product.]
|
|
99
|
+
```
|
|
100
|
+
|
|
101
|
+
**`polished`:**
|
|
102
|
+
```
|
|
103
|
+
Introducing [App Name]: [clean one-liner from the site].
|
|
104
|
+
Built with [stack if notable].
|
|
105
|
+
```
|
|
106
|
+
|
|
107
|
+
**`yc-parody`:**
|
|
108
|
+
```
|
|
109
|
+
We built [App Name] to solve [problem stated completely seriously].
|
|
110
|
+
[Deadpan feature or stat.]
|
|
111
|
+
```
|
|
112
|
+
|
|
113
|
+
**`chaotic`:**
|
|
114
|
+
```
|
|
115
|
+
[ALL CAPS CLAIM].
|
|
116
|
+
[App Name] is [wildly overstated description].
|
|
117
|
+
Link below.
|
|
118
|
+
```
|
|
119
|
+
|
|
120
|
+
**`deadpan`:**
|
|
121
|
+
```
|
|
122
|
+
I made [App Name].
|
|
123
|
+
It [what it does].
|
|
124
|
+
```
|
|
125
|
+
|
|
126
|
+
**`cinematic`:**
|
|
127
|
+
```
|
|
128
|
+
[App Name].
|
|
129
|
+
[Tagline from the site, verbatim or lightly adapted.]
|
|
130
|
+
```
|
|
131
|
+
|
|
132
|
+
**`app-store`:**
|
|
133
|
+
```
|
|
134
|
+
[App Name] is now live.
|
|
135
|
+
[Feature 1], [Feature 2], and [Feature 3] — all in one place.
|
|
136
|
+
```
|
|
137
|
+
|
|
138
|
+
### Example: Taxi for Taxis
|
|
139
|
+
|
|
140
|
+
```
|
|
141
|
+
Every day, taxis carry us. But who carries the taxis?
|
|
142
|
+
Taxi for Taxis: the ride-hailing app for ride-hailing assets.
|
|
143
|
+
Available in 12 metros.
|
|
144
|
+
```
|
|
145
|
+
|
|
146
|
+
## Final output structure
|
|
147
|
+
|
|
148
|
+
After this step, `<output-dir>/` ought to contain:
|
|
149
|
+
|
|
150
|
+
```
|
|
151
|
+
<output-dir>/
|
|
152
|
+
brag.mp4 — the rendered video
|
|
153
|
+
brag.jpg — the poster (best frame, for <video poster>)
|
|
154
|
+
brag-plan.md — the plan and storyboard
|
|
155
|
+
composition-brief.md — the Hyperframes handoff brief
|
|
156
|
+
share-copy.txt — the share caption
|
|
157
|
+
composition/ — the Hyperframes project
|
|
158
|
+
index.html
|
|
159
|
+
...
|
|
160
|
+
```
|
|
161
|
+
|
|
162
|
+
## Telling the user
|
|
163
|
+
|
|
164
|
+
After everything is done, tell the user:
|
|
165
|
+
- Where the video is (`<output-dir>/brag.mp4`)
|
|
166
|
+
- Where the share copy is
|
|
167
|
+
- One sentence on what the video does creatively
|
|
168
|
+
- Optionally: offer to re-roll a scene, change tone, or try a different angle
|