@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,38 @@
|
|
|
1
|
+
# Verification
|
|
2
|
+
|
|
3
|
+
Reference demo: [Animaxxing](https://github.com/johnpolacek/animaxxing). Until an style suite exists in animaxxing-skills-test, verify the changed design there or in the consuming app. For selected animation, also run `animaxxing`'s `references/verification.md` and the framework skill's relevant checks; those own effect behavior, SplitText cleanup stability, and lifecycle verification.
|
|
4
|
+
|
|
5
|
+
## Tokens and type
|
|
6
|
+
|
|
7
|
+
In a real browser, at settled:
|
|
8
|
+
|
|
9
|
+
- Computed text, background, and border colors remain neutral and use the theme tokens.
|
|
10
|
+
- Both faces loaded: `document.fonts.check('800 1em "Rethink Sans"')` and `document.fonts.check('400 1em "JetBrains Mono"')` are true.
|
|
11
|
+
- Display type is `font-weight: 800`. Nothing asks for 900.
|
|
12
|
+
- Labels and annotations are uppercase mono; body copy is not.
|
|
13
|
+
- Annotation type computes to at least 11px at every breakpoint.
|
|
14
|
+
- The dark scheme follows `prefers-color-scheme`, and `data-theme` overrides it in both directions.
|
|
15
|
+
- The focus ring is visible on every interactive element by keyboard, and clears any particle canvas.
|
|
16
|
+
|
|
17
|
+
## Layout
|
|
18
|
+
|
|
19
|
+
- Nothing is centered or justified. Alignment edges line up down the page.
|
|
20
|
+
- Poster type is cropped, not shrunk, where it overflows its column; reading type is never clipped.
|
|
21
|
+
- The twelve-column grid, the rail, and the ledgers hold at the narrow breakpoint: the rail becomes chips, rows fold their figures under the title.
|
|
22
|
+
- Layout boxes do not move during any phase. Only transforms move pixels.
|
|
23
|
+
|
|
24
|
+
## Readability
|
|
25
|
+
|
|
26
|
+
- Static styling remains readable without GSAP or a motion skill, including headings, cards, navigation, and footer.
|
|
27
|
+
- Selected animation delegates the failure matrix to the installed framework skill's `references/initialization.md`. Recovered content keeps the design, links, and intentional hidden states.
|
|
28
|
+
|
|
29
|
+
## Motion art direction
|
|
30
|
+
|
|
31
|
+
- The selected intensity matches the request. A static or minimal-motion restyle does not automatically acquire scattering, speak-in, waves, or particles.
|
|
32
|
+
- For the full treatment, the chosen effects match [the surface mapping](motion-vocabulary.md#surface-effects). Reading text stays still apart from the selected hero subhead; effects do not compete on a display surface.
|
|
33
|
+
- Particle colors follow the chosen theme and maintain contrast. Reduced motion preserves the same readable design.
|
|
34
|
+
- For character animation, use the motion skill's text stability checks; visual design is not verified by heading height alone.
|
|
35
|
+
|
|
36
|
+
## Report
|
|
37
|
+
|
|
38
|
+
Say which checks ran in a browser and which were static review. Do not claim the look was verified from code alone.
|
|
@@ -0,0 +1,305 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: typography-picker
|
|
3
|
+
description: Use whenever a project needs a type direction - font pairing, type scale, or text motion - separate from or alongside overall theme/color work. Trigger on "what font should I use", "pick a typeface", "how should headings look", "font pairing", "make the typography feel more premium/editorial/bold", "add a text animation/effect", "the type looks generic/default", or any new build before a font choice is locked in. Also use when a reference site's typography ("their headlines look amazing") should be analyzed and adapted, not cloned. Asks a few sharp questions, then hands back a concrete pairing with real family names, a fluid type scale, next/font wiring, and - if wanted - one hand-buildable text-motion effect. Companion to ui-theme-picker: that skill owns color/theme/component language, this one owns everything about type.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Typography Picker
|
|
7
|
+
|
|
8
|
+
Picks a type direction the way `ui-theme-picker` picks a visual direction: a few sharp
|
|
9
|
+
questions, then 1-2 concrete, opinionated pairings with real family names and
|
|
10
|
+
copy-pasteable code - never "use a nice sans-serif."
|
|
11
|
+
|
|
12
|
+
**Default taste target: confident and editorial, never default-AI.** The single
|
|
13
|
+
fastest tell that a page was AI-generated is Inter (or system-ui) at one weight, one
|
|
14
|
+
size jump between h1 and body, and default line-height. Escaping that is 80% of this
|
|
15
|
+
skill's job - the rest is knowing which few effects are worth the code.
|
|
16
|
+
|
|
17
|
+
## The generic-type failure mode (check every output against this)
|
|
18
|
+
|
|
19
|
+
If any of these are true, the job isn't done:
|
|
20
|
+
- Only one typeface family in the whole UI, doing both display and body duty at
|
|
21
|
+
default browser weights.
|
|
22
|
+
- Heading and body sizes differ by one Tailwind step (`text-lg` → `text-xl`) instead
|
|
23
|
+
of a deliberate scale - hierarchy that's technically present but not felt.
|
|
24
|
+
- Default `line-height`/`letter-spacing` left untouched at every size - tight display
|
|
25
|
+
type and loose body type both need explicit tuning, browsers don't do this for you.
|
|
26
|
+
- A "pairing" that's actually the same superfamily at two weights presented as if it
|
|
27
|
+
were two typefaces (fine as a *style*, but say so - don't call Inter Regular +
|
|
28
|
+
Inter Bold a "font pairing").
|
|
29
|
+
- Zero attention to numerals in dashboards/pricing (tabular figures matter for
|
|
30
|
+
anything in a column) or to how the chosen face handles the actual longest string
|
|
31
|
+
in the UI (a nav label, a stat with a comma).
|
|
32
|
+
|
|
33
|
+
## 1. Core rules (Calvez)
|
|
34
|
+
|
|
35
|
+
Non-negotiable constraints from Pierrick Calvez's "Five-Minute Guide to Better
|
|
36
|
+
Typography." Apply these to every output:
|
|
37
|
+
|
|
38
|
+
1. **Hierarchy in blocks, not on the page.** Think per-block rules (heading block,
|
|
39
|
+
body block, caption block) not page-level layout. Consistent rules per block beat
|
|
40
|
+
inconsistent rules across the page.
|
|
41
|
+
2. **One typeface, 4+ weights.** Start with a single family that ships at least
|
|
42
|
+
Regular, Medium, Bold, and one more. Multiple families is a later decision, not a
|
|
43
|
+
starting point.
|
|
44
|
+
3. **Skip a weight for contrast.** Headings at 700, body at 400 — not 500. Skipping a
|
|
45
|
+
weight creates stronger visual hierarchy than adjacent weights.
|
|
46
|
+
4. **45-75 characters per line.** The readability sweet spot. Over 75 and the eye
|
|
47
|
+
loses its place; under 45 and the rhythm breaks. Use `ch` units or
|
|
48
|
+
`max-width: 65ch` as a starting point.
|
|
49
|
+
5. **Align left.** Never justify on screen. Justified text creates uneven spacing that
|
|
50
|
+
reads as amateur on digital surfaces.
|
|
51
|
+
6. **Line height 1.2-1.5x.** Tighter for display (1.0-1.2), looser for body (1.5-1.6).
|
|
52
|
+
Never the default browser value at every size.
|
|
53
|
+
7. **Never below 14px.** 12px is too small. 14-25px is the readable range for body
|
|
54
|
+
text on screen.
|
|
55
|
+
8. **When in doubt, double.** If paragraph is 16px, subheading is 32px, heading is
|
|
56
|
+
48-64px. Bold size contrast over timid increments.
|
|
57
|
+
9. **Contrast over decoration.** Weight and size do the typographic work. Colors,
|
|
58
|
+
italics, and underlines are support, not the main hierarchy tool.
|
|
59
|
+
10. **Align with your eyes.** Type is not an exact science. It is aligned when it
|
|
60
|
+
*feels* aligned. Nudge by hand, not by grid math.
|
|
61
|
+
11. **Kerning matters.** Pay attention to spacing between individual character pairs.
|
|
62
|
+
Tight kerning on display type, looser on body. Auto-kerning is a starting point,
|
|
63
|
+
not a finish.
|
|
64
|
+
12. **Use the right dash.** Hyphen (`-`) for compound terms (check-in, money-back). En
|
|
65
|
+
dash (`–`) for ranges (1926–2017, pages 37–61). Em dash (`—`) to replace commas,
|
|
66
|
+
parentheses, or colons ("The em dash is underused in typography—such a waste.").
|
|
67
|
+
|
|
68
|
+
**Calvez wrap-up:** Don't nerd over typefaces, just pick one. Think in blocks. Align
|
|
69
|
+
with your eyes. Hierarchy first. Use contrast. Fine-tune with spacing. And voilà.
|
|
70
|
+
|
|
71
|
+
## 2. Gather context (skip what's already known)
|
|
72
|
+
|
|
73
|
+
Use `ask_user_input_v0` if available; otherwise ask inline, max 3 questions.
|
|
74
|
+
|
|
75
|
+
1. **What's the surface** - marketing/landing page / SaaS product UI / editorial or
|
|
76
|
+
blog / portfolio / dashboard-dense-data. This decides serif-vs-grotesque-vs-geometric
|
|
77
|
+
more than any other answer.
|
|
78
|
+
2. **Register** - technical & precise / warm & approachable / loud & maximalist /
|
|
79
|
+
quiet & editorial. If they already picked a UI theme family (from
|
|
80
|
+
`ui-theme-picker`'s `references/styles.md`), infer this instead of asking again.
|
|
81
|
+
3. **Motion appetite for text specifically** - none (static, ship fast) / one
|
|
82
|
+
signature moment (a hero headline) / go kinetic (multiple scroll/hover effects).
|
|
83
|
+
Don't reuse the general "animation effort" answer from a theme pass without
|
|
84
|
+
confirming it applies to *text* - some projects want a fully animated UI but
|
|
85
|
+
completely static, serious type (e.g. a legal or fintech product).
|
|
86
|
+
|
|
87
|
+
Don't ask about specific typeface names - that's this skill's job to propose, not
|
|
88
|
+
the user's job to know.
|
|
89
|
+
|
|
90
|
+
## 3. Typeface landscape - what to actually reach for (2026)
|
|
91
|
+
|
|
92
|
+
Grouped by register, not by "serif vs sans," because that's how the choice actually
|
|
93
|
+
gets made. Skip anything on `ui-theme-picker`'s hard-avoid-list (rounded "friendly"
|
|
94
|
+
corporate faces like Poppins/Quicksand/Baloo) as a *default* - they're fine when a
|
|
95
|
+
project genuinely calls for approachable-and-soft, just never the reach-for-it-first
|
|
96
|
+
choice.
|
|
97
|
+
|
|
98
|
+
**Neo-grotesque (quiet authority - the safest premium default for dev tools, fintech,
|
|
99
|
+
design-forward SaaS):** Inter, Suisse Int'l, Aktiv Grotesk, ABC Diatype, Neue Montreal,
|
|
100
|
+
Söhne, Graphik. This is the family doing the most work in premium product UI right
|
|
101
|
+
now - precise, unemotional, lets content carry the personality. Geist (Vercel's
|
|
102
|
+
variable font) is the easiest free on-ramp into this register for a Next.js stack.
|
|
103
|
+
|
|
104
|
+
**Geometric sans (friendlier, rounder, more approachable):** Futura (the century-old
|
|
105
|
+
reference point), Poppins, General Sans, Nohemi. Geometric reads warmer than
|
|
106
|
+
neo-grotesque at the same weight - reach here when the brand wants approachable over
|
|
107
|
+
authoritative, but watch the hard-avoid-list above for the "trying too hard to be
|
|
108
|
+
friendly" trap.
|
|
109
|
+
|
|
110
|
+
**Display / personality sans (headlines only, never body text):** Clash Display,
|
|
111
|
+
Bricolage Grotesque, Degular, Trim Poster, Aeonik, Cabinet Grotesk. These carry a
|
|
112
|
+
strong point of view at large sizes and get awkward or illegible at body sizes -
|
|
113
|
+
pair with a neutral grotesque for everything under ~24px, never use alone as a
|
|
114
|
+
system.
|
|
115
|
+
|
|
116
|
+
**Editorial / display serif (the strongest typographic move for 2026 - serifs
|
|
117
|
+
displaced geometric sans in a lot of premium display work):** Instrument Serif,
|
|
118
|
+
Fraunces (has live `opsz`/`wonk`/`soft` variable axes - see step 4), Editorial New,
|
|
119
|
+
GT Sectra, Canela. Use for a hero headline or pull-quote against a plain grotesque
|
|
120
|
+
body - the contrast is what reads as "designed," not either face alone.
|
|
121
|
+
|
|
122
|
+
**Monospace (data, code, labels, tabular UI, or a deliberate technical accent):**
|
|
123
|
+
Geist Mono, JetBrains Mono, IBM Plex Mono, Berkeley Mono. A mono accent on labels/
|
|
124
|
+
metadata (dates, tags, stat units) is a cheap, reliable way to add texture to an
|
|
125
|
+
otherwise plain UI without touching the main type family.
|
|
126
|
+
|
|
127
|
+
**Free & variable-font sources to actually pull from:** Fontshare (Satoshi, General
|
|
128
|
+
Sans, Cabinet Grotesk, Clash Display, Switzer - all free, all shipped as true
|
|
129
|
+
variable fonts with a single `wght` axis, ITF's free license covers commercial use)
|
|
130
|
+
and Google Fonts' growing variable catalog (Inter, Fraunda, Recursive - which
|
|
131
|
+
uniquely exposes `MONO`/`CASL`/`slnt` axes for a mono-to-humanist morph). Default
|
|
132
|
+
here unless the project has a type budget for a foundry license.
|
|
133
|
+
|
|
134
|
+
## 4. Pairing rules
|
|
135
|
+
|
|
136
|
+
1. **Contrast, not similarity, creates hierarchy.** A serif display + grotesque body,
|
|
137
|
+
or a display face + its own family's plainest weight, both work because the eye
|
|
138
|
+
can tell them apart instantly. Two similar grotesques at similar weights reads as
|
|
139
|
+
a mistake, not a choice.
|
|
140
|
+
2. **Two families is the ceiling for most projects** - one display/heading face, one
|
|
141
|
+
body/UI face, optionally one mono for data/labels. A third expressive face
|
|
142
|
+
(a script, a serif accent) is a deliberate one-time flourish (a pull-quote, a
|
|
143
|
+
logotype), never a fourth system-wide voice.
|
|
144
|
+
3. **Superfamily pairing is a legitimate, safer choice** - one family's Grotesk/Serif
|
|
145
|
+
siblings (e.g. Söhne + Söhne Mono + Söhne Buch) guarantees metric harmony and is
|
|
146
|
+
the lower-risk move when the user wants "put together" over "distinctive."
|
|
147
|
+
4. **Match x-height and weight at the sizes they'll actually sit next to.** A display
|
|
148
|
+
serif with a tiny x-height next to a grotesque with a huge one will look
|
|
149
|
+
mismatched in scale even at "correct" pixel sizes - check them side by side at the
|
|
150
|
+
real heading/body sizes, not in isolation.
|
|
151
|
+
5. **Check the real content, not lorem ipsum** - the longest nav label, a number with
|
|
152
|
+
commas, the brand name itself, any all-caps usage. A pairing that looks great on
|
|
153
|
+
placeholder text can break on the client's actual longest string.
|
|
154
|
+
|
|
155
|
+
## 5. Fluid type scale (don't ship fixed pixel sizes)
|
|
156
|
+
|
|
157
|
+
Default to a `clamp()`-based fluid scale so headings scale smoothly between mobile
|
|
158
|
+
and desktop instead of jumping at breakpoints. Formula per step:
|
|
159
|
+
|
|
160
|
+
```css
|
|
161
|
+
/* clamp(min, preferred, max) - preferred uses viewport width so it scales smoothly */
|
|
162
|
+
:root {
|
|
163
|
+
--step--1: clamp(0.83rem, 0.8rem + 0.15vw, 0.9rem); /* small/meta text */
|
|
164
|
+
--step-0: clamp(1rem, 0.96rem + 0.2vw, 1.125rem); /* body */
|
|
165
|
+
--step-1: clamp(1.2rem, 1.1rem + 0.5vw, 1.5rem); /* h4/lead */
|
|
166
|
+
--step-2: clamp(1.5rem, 1.3rem + 1vw, 2rem); /* h3 */
|
|
167
|
+
--step-3: clamp(1.9rem, 1.6rem + 1.8vw, 2.75rem); /* h2 */
|
|
168
|
+
--step-4: clamp(2.4rem, 1.9rem + 2.8vw, 4rem); /* h1 */
|
|
169
|
+
--step-5: clamp(3rem, 2.2rem + 4.5vw, 6rem); /* hero display */
|
|
170
|
+
}
|
|
171
|
+
```
|
|
172
|
+
|
|
173
|
+
Generate real numbers for the project with a modular scale (1.2 - 1.333 ratio for
|
|
174
|
+
UI-dense products, 1.5+ for editorial/marketing where bigger jumps read as
|
|
175
|
+
confidence) rather than reusing the block above verbatim - treat it as the shape,
|
|
176
|
+
not the values. For exact numbers, the utopia.fyi fluid-scale calculator is the
|
|
177
|
+
standard reference; compute by hand if it's not reachable.
|
|
178
|
+
|
|
179
|
+
**Tune per-size, not just per-family:**
|
|
180
|
+
- Display sizes (step-3 and up) want tighter `letter-spacing` (often -0.01em to
|
|
181
|
+
-0.03em) and tighter `line-height` (1.0 - 1.15) - default spacing looks loose and
|
|
182
|
+
amateurish at large sizes.
|
|
183
|
+
- Body sizes want `line-height` 1.5 - 1.65 for comfortable reading, and default or
|
|
184
|
+
slightly *positive* letter-spacing for small caps/labels/eyebrow text
|
|
185
|
+
(0.05em - 0.1em) to keep short uppercase strings legible.
|
|
186
|
+
- All-caps labels need explicit tracking - never ship `uppercase` without adding
|
|
187
|
+
`letter-spacing`, default tracking on caps looks cramped.
|
|
188
|
+
|
|
189
|
+
## 6. Variable fonts and OpenType features
|
|
190
|
+
|
|
191
|
+
**Ship one variable font file instead of 4-6 static weights** wherever the chosen
|
|
192
|
+
family offers one (Fontshare Originals, Geist, Inter, Recursive, Fraunces all do) -
|
|
193
|
+
smaller payload, and it unlocks animating weight/width continuously instead of
|
|
194
|
+
snapping between static cuts.
|
|
195
|
+
|
|
196
|
+
```ts
|
|
197
|
+
// Next.js - next/font/google, variable weight range
|
|
198
|
+
import { Inter } from "next/font/google";
|
|
199
|
+
const inter = Inter({ subsets: ["latin"], variable: "--font-sans" });
|
|
200
|
+
|
|
201
|
+
// next/font/local for a Fontshare/foundry variable font
|
|
202
|
+
import localFont from "next/font/local";
|
|
203
|
+
const cabinet = localFont({
|
|
204
|
+
src: "../fonts/CabinetGrotesk-Variable.woff2",
|
|
205
|
+
variable: "--font-display",
|
|
206
|
+
weight: "100 900", // declare the full variable range, not one number
|
|
207
|
+
});
|
|
208
|
+
```
|
|
209
|
+
|
|
210
|
+
```css
|
|
211
|
+
/* Reaching into specific axes directly (beyond what font-weight covers) */
|
|
212
|
+
.hero-word {
|
|
213
|
+
font-variation-settings: "wght" 650, "wdth" 110; /* interpolate live on hover/scroll */
|
|
214
|
+
}
|
|
215
|
+
```
|
|
216
|
+
|
|
217
|
+
Common axes worth knowing: `wght` (weight, universal), `wdth` (width - Recursive,
|
|
218
|
+
General Sans), `opsz` (optical size - Fraunces adapts detail level from display to
|
|
219
|
+
text automatically), `slnt`/`ital` (slant), and novelty axes like Fraunces'
|
|
220
|
+
`SOFT`/`WONK` or Recursive's `CASL`/`MONO` for a single-file style morph.
|
|
221
|
+
|
|
222
|
+
**OpenType features are usually off by default - turn on what the content needs:**
|
|
223
|
+
```css
|
|
224
|
+
.data-table td { font-variant-numeric: tabular-nums; } /* columns of numbers */
|
|
225
|
+
.price { font-variant-numeric: oldstyle-nums; } /* editorial body copy */
|
|
226
|
+
.headline { font-feature-settings: "liga" 1, "ss01" 1; } /* ligatures, stylistic sets */
|
|
227
|
+
```
|
|
228
|
+
Check the specific family's specimen page for which stylistic sets it ships - these
|
|
229
|
+
are family-specific and not guessable from the CSS property alone.
|
|
230
|
+
|
|
231
|
+
## 7. Text-motion effects - pick 0-2, never more
|
|
232
|
+
|
|
233
|
+
Motion on text is the highest-leverage, highest-risk move in this skill: one
|
|
234
|
+
well-executed headline reveal reads as premium; three competing text effects on one
|
|
235
|
+
page reads as a demo reel, not a product. Apply `ui-theme-picker`'s motion rules
|
|
236
|
+
(transform/opacity only, respect `prefers-reduced-motion`, GPU-friendly) - they
|
|
237
|
+
apply to text motion at least as much as to UI chrome.
|
|
238
|
+
|
|
239
|
+
**Pick the tool by complexity, don't reach for a JS library by default:**
|
|
240
|
+
- **Pure CSS** (`@keyframes`, `animation-timeline: scroll()`/`view()`, `:hover`) -
|
|
241
|
+
correct choice for anything simple and one-shot: fade/slide-up on load, a hover
|
|
242
|
+
underline stretch, a gradient-text shimmer, a variable-font weight morph on hover.
|
|
243
|
+
Zero JS dependency, works with reduced-motion media queries directly.
|
|
244
|
+
- **GSAP + SplitText** (or the CSS-only `::first-line`/manual span-wrapping
|
|
245
|
+
equivalent) - needed once you're splitting text into words/characters for a
|
|
246
|
+
staggered reveal, a scroll-scrubbed animation, or per-character effects. This is
|
|
247
|
+
the step up from CSS when the effect needs per-character or per-word timing
|
|
248
|
+
control that keyframes can't express cleanly.
|
|
249
|
+
- **Three.js/WebGL/shaders** - only for a genuine hero-moment 3D text effect
|
|
250
|
+
(explode-into-shapes, shader-based displacement). Heavy, has a real performance
|
|
251
|
+
and complexity cost - reserve for a flagship hero, never a body-copy or repeated
|
|
252
|
+
UI element.
|
|
253
|
+
|
|
254
|
+
**Effect catalog, roughly ordered cheapest → most involved:**
|
|
255
|
+
|
|
256
|
+
| Effect | Tool | Where it belongs |
|
|
257
|
+
|---|---|---|
|
|
258
|
+
| Fade/slide-up on scroll into view | CSS `animation-timeline: view()` or IntersectionObserver + CSS class | Section headings, cards |
|
|
259
|
+
| Gradient-fill text (`background-clip: text`) | Pure CSS | Hero headline accent word |
|
|
260
|
+
| Variable-font weight/width morph on hover | Pure CSS transition on `font-variation-settings` | Nav links, buttons, interactive labels |
|
|
261
|
+
| Underline stretch / highlight wipe on hover | Pure CSS | Links, nav |
|
|
262
|
+
| Word-by-word or line-by-line scroll reveal | SplitText + ScrollTrigger, or CSS `view-timeline` per span | Long-form hero copy, manifesto/story pages (this is the effect Apple's product pages lean on most) |
|
|
263
|
+
| Character stagger entrance (blur/rotate/rise per letter) | SplitText + GSAP timeline with per-char stagger | One hero headline, first-load moment only |
|
|
264
|
+
| Cursor-proximity weight morph (`wght` interpolates 200→900 near the pointer) | JS mousemove → CSS custom property → `font-variation-settings` | A single showpiece headline on a portfolio/agency site |
|
|
265
|
+
| Typewriter | Pure CSS (`steps()` + blinking caret) or small JS | Terminal/CLI-flavored products, loading states |
|
|
266
|
+
| Marquee / ticker | Pure CSS `animation-timeline` loop | Logo walls, status tickers - never body copy |
|
|
267
|
+
| Glitch / text-scramble on hover | Small JS (character substitution) + CSS | Attention CTAs, limited-time offers - use sparingly, reads as loud |
|
|
268
|
+
| SVG filter distortion, 3D perspective flip, shader displacement | Three.js/WebGL or SVG filters | One flagship hero moment only |
|
|
269
|
+
|
|
270
|
+
**Before shipping any text effect, confirm:**
|
|
271
|
+
- `prefers-reduced-motion: reduce` gets a static, fully-readable fallback - not just
|
|
272
|
+
a shorter animation.
|
|
273
|
+
- The effect degrades gracefully if JS fails (CSS-only effects do this for free;
|
|
274
|
+
JS-driven ones need the text visible-by-default, then enhanced).
|
|
275
|
+
- It doesn't fight scroll/hover with anything from a `ui-theme-picker` pass on the
|
|
276
|
+
same page - count total signature effects on one screen against that skill's
|
|
277
|
+
2-3-effect ceiling, text effects included.
|
|
278
|
+
|
|
279
|
+
## 8. Output format
|
|
280
|
+
|
|
281
|
+
1. **Pairing** - 1-2 named typefaces (never "a clean sans-serif"), one line each on
|
|
282
|
+
why they fit the register from step 1, plus which free source to pull from.
|
|
283
|
+
2. **Scale** - the fluid `clamp()` scale sized to the project, with per-size
|
|
284
|
+
`line-height`/`letter-spacing` called out for display vs. body.
|
|
285
|
+
3. **Wiring** - the actual `next/font` (or equivalent) import for the chosen stack,
|
|
286
|
+
consistent with whatever `ui-theme-picker` step 1a already established for CSS
|
|
287
|
+
variables/Tailwind version - don't introduce a second token system.
|
|
288
|
+
4. **One signature moment, if motion was wanted** - real code for exactly one effect
|
|
289
|
+
from the table above, not a menu of options to pick from later.
|
|
290
|
+
|
|
291
|
+
Close with one line max: "want a variant (calmer/louder) or the effect built out for
|
|
292
|
+
a second element?" - don't pad further unless asked.
|
|
293
|
+
|
|
294
|
+
## 9. Self-check before presenting
|
|
295
|
+
|
|
296
|
+
- Would this pass as one of the "generic-type failure mode" bullets from the top of
|
|
297
|
+
this skill? If yes, it's not done.
|
|
298
|
+
- Is there a real, named typeface - not a category ("a geometric sans") - for both
|
|
299
|
+
display and body?
|
|
300
|
+
- Does the scale use `clamp()`, not fixed breakpoint jumps?
|
|
301
|
+
- If motion was requested, is there exactly one clearly-implemented effect with real
|
|
302
|
+
code, not a list of possibilities?
|
|
303
|
+
- Does this stay consistent with any `ui-theme-picker` output already in the
|
|
304
|
+
conversation (same CSS variable approach, same Tailwind version, same restraint
|
|
305
|
+
budget for total effects on a page)?
|