@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,81 @@
|
|
|
1
|
+
# Tailwind architecture
|
|
2
|
+
|
|
3
|
+
Rules for Tailwind v3 vs v4 strategy, token architecture, and
|
|
4
|
+
implementation conventions. For dark-mode token wiring, see
|
|
5
|
+
ui-core/references/dark-mode.md.
|
|
6
|
+
|
|
7
|
+
## v3 vs v4 strategy
|
|
8
|
+
|
|
9
|
+
- Use v4 if the project is new and the team can adopt it. v4's `@theme`
|
|
10
|
+
is simpler and keeps tokens in CSS, not JS config.
|
|
11
|
+
- Use v3 if the project is existing with a mature config, or if the
|
|
12
|
+
team needs plugin stability. Don't upgrade mid-project unless the
|
|
13
|
+
pain of v3 is acute.
|
|
14
|
+
- Don't mix: pick one version per project. v3 and v4 configs are not
|
|
15
|
+
compatible.
|
|
16
|
+
|
|
17
|
+
## @theme vs theme.extend
|
|
18
|
+
|
|
19
|
+
- v4: `@theme` in globals.css. Tokens are CSS custom properties by
|
|
20
|
+
default. Extend with `@theme` blocks, not JS config.
|
|
21
|
+
- v3: `theme.extend` in tailwind.config.js. Tokens are JS objects.
|
|
22
|
+
Extend with nested objects.
|
|
23
|
+
- Rule: tokens live in one file. globals.css for v4, tailwind.config.js
|
|
24
|
+
for v3. Don't scatter tokens across components.
|
|
25
|
+
|
|
26
|
+
## Design token naming
|
|
27
|
+
|
|
28
|
+
- Semantic tokens: `bg-canvas`, `text-primary`, `border-muted`. Use
|
|
29
|
+
function, not appearance.
|
|
30
|
+
- Component tokens: `btn-bg-primary`, `input-border`. Derived from
|
|
31
|
+
semantic tokens, not standalone.
|
|
32
|
+
- Arbitrary values: use sparingly. `bg-[#ff0000]` is a one-off, not a
|
|
33
|
+
token. If you use it twice, make a token.
|
|
34
|
+
- Arbitrary values for layout: `w-[calc(100%-2rem)]` is acceptable for
|
|
35
|
+
one-off layouts. Don't make it a token unless it's reused.
|
|
36
|
+
|
|
37
|
+
## When to extend vs arbitrary
|
|
38
|
+
|
|
39
|
+
- Extend the theme when the value is reused 2 or more times. Two
|
|
40
|
+
buttons with the same padding = a token.
|
|
41
|
+
- Use arbitrary values for one-off layouts, experimental designs, or
|
|
42
|
+
when the value is tied to content (image width, text length).
|
|
43
|
+
- Don't extend the theme for every variant. Button variants (primary,
|
|
44
|
+
secondary, ghost) are component variants, not theme tokens.
|
|
45
|
+
|
|
46
|
+
## Dark-mode token wiring
|
|
47
|
+
|
|
48
|
+
- All colors via CSS variables or semantic tokens. Never hardcode
|
|
49
|
+
`bg-white` or `bg-gray-900` in components.
|
|
50
|
+
- v4: `@theme` supports `--color-*` tokens. Define light and dark
|
|
51
|
+
values in `:root` and `.dark`.
|
|
52
|
+
- v3: `darkMode: 'class'` with `dark:` variants on token utilities, or
|
|
53
|
+
CSS variables with `@apply`.
|
|
54
|
+
- See ui-core/references/dark-mode.md for color adjustment rules.
|
|
55
|
+
|
|
56
|
+
## Implementation conventions
|
|
57
|
+
|
|
58
|
+
- Component classes: `class="btn btn-primary"` not `class="bg-blue-500
|
|
59
|
+
text-white px-4 py-2 rounded"`. Tokens in components, utilities in
|
|
60
|
+
tokens.
|
|
61
|
+
- Variant composition: use `group` and `peer` for hover/focus states
|
|
62
|
+
that depend on parent or sibling. Don't duplicate state logic.
|
|
63
|
+
- Responsive: mobile-first. `md:`, `lg:`, `xl:` for breakpoints. See
|
|
64
|
+
ui-core/references/responsive.md.
|
|
65
|
+
- State: `hover:`, `focus:`, `active:`, `disabled:`, `data-*:` for
|
|
66
|
+
component states. Don't use arbitrary state selectors.
|
|
67
|
+
- Plugins: use `@tailwindcss/forms`, `@tailwindcss/typography` only
|
|
68
|
+
when the project needs them. Don't install plugins for one use case.
|
|
69
|
+
|
|
70
|
+
## Don'ts
|
|
71
|
+
|
|
72
|
+
- Don't use `!important` or `!` utility. If you need it, the cascade
|
|
73
|
+
is wrong.
|
|
74
|
+
- Don't use `@apply` in component files. `@apply` belongs in the theme
|
|
75
|
+
or utilities, not in JSX.
|
|
76
|
+
- Don't create utility classes that duplicate token utilities. If you
|
|
77
|
+
need `text-primary` often, make it a token.
|
|
78
|
+
- Don't extend the theme for every shade of gray. One gray family, one
|
|
79
|
+
scale.
|
|
80
|
+
- Don't use arbitrary values for colors. If you use `#ff0000` twice,
|
|
81
|
+
make a token.
|
|
@@ -0,0 +1,522 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: ui-theme-picker
|
|
3
|
+
description: Use whenever the user is starting a new project/page/component and needs a visual direction. Also use when the user shares a reference site/screenshot they like and wants its techniques identified or recreated, or asks to make an existing UI feel like a real/finished product rather than a template. Any request to build, redesign, polish, refine, or implement a frontend interface should trigger productization thinking. The skill is not only responsible for choosing a visual theme. It is responsible for making the resulting interface feel like a coherent, production-ready product. Asks context questions, matches answers to style families, outputs ready-to-paste tokens and Tailwind config, runs a productization pass (identity, IA, interaction model, component language, signature interaction) so results behave like a designed product, and hands back hand-buildable code for signature interactions.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# UI Theme Picker
|
|
7
|
+
|
|
8
|
+
Picks a visual direction for a project by asking a few sharp questions, then hands back
|
|
9
|
+
2-3 concrete, opinionated theme options with copy-pasteable tokens - not vague adjectives.
|
|
10
|
+
|
|
11
|
+
**Default taste target: give the product one memorable product-native idea.** The
|
|
12
|
+
visual and interaction language should emerge from what the product actually is, not
|
|
13
|
+
from a generic "modern SaaS" template. For T3, the memorable idea isn't a particle
|
|
14
|
+
effect. It's the developer/agent workflow itself. For 100x, it isn't a glowing card.
|
|
15
|
+
It's the content/project browsing experience. For Linear, it's the precision and
|
|
16
|
+
density. For Raycast, it's the command-driven interaction model. Prioritize
|
|
17
|
+
product-native signatures over decorative signatures. A contextual toolbar, command
|
|
18
|
+
palette, inline editing, keyboard workflow, drag interaction, intelligent filtering,
|
|
19
|
+
or spatial manipulation will always be more memorable than a gradient or glow effect.
|
|
20
|
+
|
|
21
|
+
Motion should earn its place: reinforce hierarchy, guide attention, feel natural. The
|
|
22
|
+
single biggest failure mode is janky or slow animation: it converts "great UI" into
|
|
23
|
+
"cheap UI" instantly. Prefer GPU-friendly transforms, respect
|
|
24
|
+
`prefers-reduced-motion`, and don't stack more than 2-3 signature effects per page.
|
|
25
|
+
|
|
26
|
+
**Animation mechanics checklist - apply whenever writing actual motion code, not just
|
|
27
|
+
picking a "motion character" adjective:**
|
|
28
|
+
- **Ask "should this animate at all" first.** High-frequency actions (hover states,
|
|
29
|
+
list navigation, keyboard-triggered actions used tens/hundreds of times a day) should
|
|
30
|
+
usually get little or no animation - the fastest interface is the best interface for
|
|
31
|
+
those. Reserve real motion for things that happen occasionally and benefit from
|
|
32
|
+
spatial continuity or feedback (opening a panel, confirming a destructive action,
|
|
33
|
+
onboarding moments).
|
|
34
|
+
- **`transform` and `opacity` only.** These skip layout/paint and run on the GPU.
|
|
35
|
+
`width`/`height`/`margin`/`padding`/`top`/`left` (or animating x/y/scale via
|
|
36
|
+
non-GPU-backed properties) trigger layout thrash - treat as a bug, not a style choice.
|
|
37
|
+
`clip-path` is an acceptable fourth property when needed; `height` is tolerated only
|
|
38
|
+
for accordions where there's no transform equivalent.
|
|
39
|
+
- **Sub-300ms for UI motion.** Anything slower on a UI element (button, toggle,
|
|
40
|
+
dropdown, toast) needs a specific reason - slower is fine for deliberate marketing/
|
|
41
|
+
hero moments, not for routine interface feedback.
|
|
42
|
+
- **Popovers/dropdowns/tooltips scale from their trigger** (`transform-origin` set to
|
|
43
|
+
the anchor point), not from center - center-scaling reads as generic and spatially
|
|
44
|
+
wrong. Modals are the exception and stay centered.
|
|
45
|
+
- **Never animate in from `scale(0)`.** Start from `scale(0.9 - 0.97)` + `opacity: 0` -
|
|
46
|
+
scaling from zero reads as a bug, not an entrance.
|
|
47
|
+
- **Rapidly-retriggerable motion must be interruptible** (toasts, toggles, drag) - use
|
|
48
|
+
transitions/springs that retarget from current state, not keyframes that restart from
|
|
49
|
+
zero every time they fire.
|
|
50
|
+
- **`prefers-reduced-motion` means gentler, not zero.** Keep opacity/color transitions
|
|
51
|
+
that aid comprehension; drop movement, scale, and position changes.
|
|
52
|
+
- **No bounce/elastic easing on ordinary UI** - it reads as dated/cheap on anything
|
|
53
|
+
other than a deliberately playful signature moment.
|
|
54
|
+
|
|
55
|
+
**What "great UI" means for this user (apply by default unless a specific project
|
|
56
|
+
overrides it):**
|
|
57
|
+
- The bar is "does this feel like a real, intentional product" - not just "is this
|
|
58
|
+
clean." Polish alone isn't the goal; polish that makes someone stop scrolling is.
|
|
59
|
+
- **Structure safe, detail bold.** Default to conventional, proven page structure and
|
|
60
|
+
layout - but push hard on visual polish and product-native detail within that
|
|
61
|
+
structure. Don't default to structurally-risky styles unless the project explicitly
|
|
62
|
+
calls for it.
|
|
63
|
+
- **Color mood is context-dependent, not fixed** - dark/techy for dev tools, light-clean
|
|
64
|
+
or bold-colorful for SaaS/consumer, matched to brand when one exists.
|
|
65
|
+
- **Deliver signature interactions as actual hand-buildable code**, not just a library
|
|
66
|
+
pointer. Still name the library if one exists, but always include the code to build it
|
|
67
|
+
directly.
|
|
68
|
+
- **Proactively identify one product-native signature interaction** even if not asked.
|
|
69
|
+
Prefer product-native interaction (a contextual toolbar, command palette, inline
|
|
70
|
+
editing, a keyboard flow, drag interaction) over a decorative effect (particles, glow,
|
|
71
|
+
ambient blobs). A visual effect is acceptable only when it reinforces the product's
|
|
72
|
+
actual identity, not as a default move to seem eye-catching. The signature should be
|
|
73
|
+
the interaction that naturally belongs to the product, not an effect added to impress.
|
|
74
|
+
- **Hard avoid-list** (reads instantly cheap/dated or as generic AI output): overused
|
|
75
|
+
purple/blue SaaS gradient combos; cheesy rounded corporate fonts; defaulting to
|
|
76
|
+
Inter/Arial for everything; pure black or pure gray with no tint; cards nested inside
|
|
77
|
+
cards; rounded-square icon tiles above every heading; unexplained dark ambient glow
|
|
78
|
+
effects; floating decorative pills with no functional purpose.
|
|
79
|
+
|
|
80
|
+
**Animation effort has no fixed default - always ask per-project.** Don't assume "go
|
|
81
|
+
heavy" or "keep it light" from a past project; the right amount depends on the specific
|
|
82
|
+
client/timeline/budget each time. Frame the question as a rough 1-10 dial: **1** =
|
|
83
|
+
essentially static, functional transitions only; **5** = a couple of signature moments,
|
|
84
|
+
rest clean and fast; **10** = cinematic, motion-forward on nearly every surface. The
|
|
85
|
+
signature moments should be product-native interactions, not decorative effects. Same
|
|
86
|
+
applies to density: **1** = airy/gallery-like, **5** = normal app spacing, **10** =
|
|
87
|
+
packed "cockpit" spacing.
|
|
88
|
+
|
|
89
|
+
**"Finished product" is the actual quality bar - not "themed" or "styled."** The user
|
|
90
|
+
should not need to supervise routine design decisions. When requirements are
|
|
91
|
+
sufficiently clear, make reasonable product and design decisions autonomously. The
|
|
92
|
+
difference between AI-generated UI and a UI that "looks like a real product" isn't the
|
|
93
|
+
palette - it's these eight things, check output against all of them before presenting:
|
|
94
|
+
|
|
95
|
+
1. **Recognizable visual language** - a person could screenshot one component and
|
|
96
|
+
identify it belongs to this product, not a template. If every button/card/input
|
|
97
|
+
would look at home in any other AI-generated app, it hasn't cleared the bar.
|
|
98
|
+
2. **Every spacing decision is intentional** - no leftover default padding, no random
|
|
99
|
+
`mt-4` that doesn't relate to a scale. If asked "why 24px here," there's a reason.
|
|
100
|
+
3. **Clear hierarchy between primary and secondary actions** - one obvious primary
|
|
101
|
+
action per view, everything else visually recedes. Not three equally-weighted
|
|
102
|
+
buttons competing for attention.
|
|
103
|
+
4. **Dense functionality is organized, not hidden or dumped flat** - group related
|
|
104
|
+
controls, use progressive disclosure, don't either cram everything into one panel
|
|
105
|
+
or bury it three menus deep.
|
|
106
|
+
5. **Non-happy-path states are designed too** - empty states, loading states, error
|
|
107
|
+
states, hover/focus/disabled states, and menus need the same care as the main view.
|
|
108
|
+
A polished main screen with a default browser error state is still unfinished.
|
|
109
|
+
6. **Components behave consistently** - the same interaction (e.g. how a dropdown opens,
|
|
110
|
+
how a destructive action confirms) works the same way everywhere in the product.
|
|
111
|
+
7. **Restraint - not decorating every surface "to look modern."** Gradients, glows,
|
|
112
|
+
shadows, and glassmorphism used on everything read as trying too hard. Reach for
|
|
113
|
+
these only where they earn their place.
|
|
114
|
+
8. **The UI reflects the product's actual personality**, not a generic "professional
|
|
115
|
+
SaaS" default. A playful whiteboard tool and an enterprise dashboard should not
|
|
116
|
+
converge on the same look just because both used this skill.
|
|
117
|
+
|
|
118
|
+
**Reference products for this bar** (study for *why* they feel finished - extract
|
|
119
|
+
principles, never copy pixels):
|
|
120
|
+
- **Excalidraw** - simple, playful, distinctive, doesn't try to look "premium," has its
|
|
121
|
+
own visual language. Best anchor for creative/canvas tools.
|
|
122
|
+
- **Linear** - restrained SaaS UI, dense info without clutter, strong hierarchy.
|
|
123
|
+
- **Raycast** - utility that feels like a finished product; typography/spacing/motion
|
|
124
|
+
all reinforce it. Best anchor for command palettes, search, keyboard-driven UI.
|
|
125
|
+
- **Vercel** - restrained system; strong reference for typography, cards, nav, dark/light.
|
|
126
|
+
- **Figma** - complex functionality staying coherent; best anchor for creative/dev tools.
|
|
127
|
+
- **Notion** - huge functionality made approachable without being visually flashy.
|
|
128
|
+
- **Stripe** - typography, hierarchy, and density for marketing/product surfaces.
|
|
129
|
+
- **Arc** - unconventional but intentional; UI with opinions rather than another dashboard.
|
|
130
|
+
- **Framer** - polished visuals + strong interaction design, more visually expressive.
|
|
131
|
+
|
|
132
|
+
When a project matches one of these categories (canvas/creative tool, dense SaaS,
|
|
133
|
+
command-driven utility, dev tool), name the closest 1-2 matches as the quality anchor
|
|
134
|
+
in step 3's output - not as a style to clone, but as "this is the bar, here's what it
|
|
135
|
+
does that we're borrowing the *principle* of, not the pixels."
|
|
136
|
+
|
|
137
|
+
**Reference product analysis happens at the behavior level, not the visual level.**
|
|
138
|
+
The question is never "what does Linear look like" - it's "what does Linear *do* that
|
|
139
|
+
makes its UI feel intentional, and which of those principles applies here." Concretely:
|
|
140
|
+
|
|
141
|
+
DO NOT copy from a reference: colors, layouts, logos, typography, exact component
|
|
142
|
+
shapes, exact spacing, exact navigation structure, copy, visual motifs.
|
|
143
|
+
|
|
144
|
+
DO extract from a reference: hierarchy, density philosophy, interaction model,
|
|
145
|
+
information architecture, feedback patterns, component consistency, motion restraint,
|
|
146
|
+
direct-manipulation patterns, progressive disclosure, the relationship between primary
|
|
147
|
+
and secondary actions.
|
|
148
|
+
|
|
149
|
+
If output can be described as "it looks like Linear" rather than "it behaves with
|
|
150
|
+
Linear's density and hierarchy discipline," the extraction was at the wrong level -
|
|
151
|
+
redo it at the behavior level.
|
|
152
|
+
|
|
153
|
+
Optimized for Next.js + TypeScript + Tailwind stacks by default (adjust if the user's
|
|
154
|
+
stack is different), and for fast, decisive output over long explanations.
|
|
155
|
+
|
|
156
|
+
Two reference files:
|
|
157
|
+
- `references/styles.md` - 14 style families with rationale, tokens, and Tailwind/CSS templates
|
|
158
|
+
- `references/component-sources.md` - which library to actually pull each style/effect
|
|
159
|
+
from (Aceternity, Magic UI, 21st.dev, shadcn, etc.), plus a breakdown of recurring
|
|
160
|
+
"wow" effects (particle heroes, glass navbars, scroll tickers, glowing cards, ambient
|
|
161
|
+
blobs, marquees) with source + effort level for each
|
|
162
|
+
|
|
163
|
+
## Workflow
|
|
164
|
+
|
|
165
|
+
### 0. Detect which mode this is: new theme vs. refine-existing-toward-a-reference
|
|
166
|
+
|
|
167
|
+
These are different jobs - don't run the greenfield workflow on a refinement task.
|
|
168
|
+
|
|
169
|
+
- **New theme** (default, steps 1-6 below): no existing UI, or existing UI is being
|
|
170
|
+
replaced wholesale. Goal is picking a style family from scratch.
|
|
171
|
+
- **Refine existing UI, possibly using a reference product for quality bar**: the user
|
|
172
|
+
has a working app that "looks bad"/"looks amateur" and points at a polished reference
|
|
173
|
+
(a competitor, a screenshot, a well-known product) - but wants their own identity, not
|
|
174
|
+
a clone. Signals: "make it feel as polished as X", "I don't want a visual clone, but
|
|
175
|
+
see how X actually looks like a product", attaching a screenshot of their own app
|
|
176
|
+
alongside a reference.
|
|
177
|
+
|
|
178
|
+
For the refine-existing mode:
|
|
179
|
+
1. **Audit first, always.** List the current design primitives (colors, spacing, button
|
|
180
|
+
styles, states) actually in the codebase before proposing anything - don't skip to
|
|
181
|
+
tokens. Note duplicated/inconsistent one-off styling as you go.
|
|
182
|
+
2. **Extract principles from the reference, not pixels.** Translate what makes the
|
|
183
|
+
reference read as "a product" into transferable rules - restraint (fewer competing
|
|
184
|
+
colors), spacing rhythm, floating surfaces vs. fixed panels, subtle multi-state
|
|
185
|
+
feedback (default/hover/selected, not just on/off), consistent radius/shadow scale.
|
|
186
|
+
Do not carry over the reference's brand colors, logo, exact layout, or literal
|
|
187
|
+
component copy - say explicitly in the output that these are excluded.
|
|
188
|
+
Never restyle every screen at once, if avoidable - biggest visual-debt zones first
|
|
189
|
+
only if the user's request is scoped that way; otherwise cover what they asked for.
|
|
190
|
+
3. **Explicit non-goals matter as much as goals.** If the user lists things not to
|
|
191
|
+
touch (architecture, business logic, API contracts, canvas/data logic), repeat them
|
|
192
|
+
back as hard constraints in the output plan, not just silently respected - this is
|
|
193
|
+
a common trust point when a UI-refinement request touches a working app.
|
|
194
|
+
4. **Do the same stack-detection (1a) and monorepo-location (1b) checks below** - a
|
|
195
|
+
refinement task still needs to know where tokens actually live before touching them.
|
|
196
|
+
5. Skip step 2/3 (style-family selection) - the direction is already set by the
|
|
197
|
+
reference + "keep my identity," not chosen from the family list. Go straight to
|
|
198
|
+
token output (step 4) framed as a diff against the current styling, not a fresh
|
|
199
|
+
greenfield palette.
|
|
200
|
+
|
|
201
|
+
### 1. Gather context (skip questions already answered in conversation)
|
|
202
|
+
|
|
203
|
+
Don't ask what you already know. If the user already said "SaaS dashboard for devs" or
|
|
204
|
+
similar, don't re-ask category - just ask what's missing.
|
|
205
|
+
|
|
206
|
+
If an interactive elicitation tool is available (e.g. `ask_user_input_v0`), use it -
|
|
207
|
+
these should be quick taps, not an essay prompt. Otherwise ask inline, tightly grouped,
|
|
208
|
+
max 3 questions per round.
|
|
209
|
+
|
|
210
|
+
Ask about (only what's not already known):
|
|
211
|
+
1. **What are you building** - landing page / SaaS product / dashboard-internal-tool /
|
|
212
|
+
portfolio / e-commerce / dev tool or CLI wrapper / blog-content site / mobile-first app
|
|
213
|
+
2. **Who's it for** - consumers / developers-technical / enterprise-buyers / creative-portfolio-viewers
|
|
214
|
+
3. **Vibe in one word, if they have one** - otherwise infer from #1 and #2
|
|
215
|
+
4. **Any constraint** - existing brand color, must match a logo, light/dark/both, or none
|
|
216
|
+
5. **Animation effort for this project** - always ask this one explicitly, don't default
|
|
217
|
+
to heavy or light: e.g. "a couple signature moves, rest clean" vs "go all-in" vs
|
|
218
|
+
"keep it fast and minimal, this client needs speed over spectacle"
|
|
219
|
+
|
|
220
|
+
Do not ask more than these. If the user just says "build me a UI, pick something good",
|
|
221
|
+
infer sensible defaults from project type alone and proceed - don't stall on questions.
|
|
222
|
+
|
|
223
|
+
### 1a. Confirm the styling stack before generating any tokens
|
|
224
|
+
|
|
225
|
+
**Tailwind is the only styling approach this skill outputs - this is strict, not a
|
|
226
|
+
default that yields to convenience.** Every project this skill touches gets Tailwind
|
|
227
|
+
utility classes for styling; plain CSS, CSS-in-JS (styled-components, emotion), or
|
|
228
|
+
CSS modules are never the output, even if the existing project already uses one of
|
|
229
|
+
those. If the codebase uses something else, migrating that specific surface to
|
|
230
|
+
Tailwind is part of the job, not an out-of-scope concern to flag and skip.
|
|
231
|
+
|
|
232
|
+
Never assume Tailwind version or CSS variable format - get this wrong and the entire
|
|
233
|
+
token output is unusable. Check, in order:
|
|
234
|
+
|
|
235
|
+
1. **Is this an existing repo?** If a project directory is available, check for it
|
|
236
|
+
directly rather than asking:
|
|
237
|
+
- Tailwind v4 signature: `@import "tailwindcss"` in a CSS file (e.g. `globals.css`),
|
|
238
|
+
no `tailwind.config.ts`/`.js`, or a `@theme { ... }` block present.
|
|
239
|
+
- Tailwind v3 signature: `tailwind.config.ts`/`.js` exists with a `content` array and
|
|
240
|
+
`theme.extend`.
|
|
241
|
+
- Look at `package.json` for the `tailwindcss` version as a tiebreaker (`^4.x` vs `^3.x`).
|
|
242
|
+
- If tokens/CSS variables already exist (a `:root` block, a `@theme` block, or a
|
|
243
|
+
`theme.extend.colors` object already filled in) - treat those as the source of
|
|
244
|
+
truth. Extend or restyle them; don't generate a second, competing token set. Say
|
|
245
|
+
what you found before proposing anything new.
|
|
246
|
+
2. **If it's a React or Next.js frontend and Tailwind is NOT detected** (no
|
|
247
|
+
`tailwindcss` in `package.json`, no `@theme`/`tailwind.config.*`, no `@tailwind`/
|
|
248
|
+
`@import "tailwindcss"` directive) - **install and wire it up before writing any
|
|
249
|
+
component code.** Don't ask permission to add a styling dependency; this skill's
|
|
250
|
+
whole output format depends on Tailwind existing, so treat it as a required setup
|
|
251
|
+
step, same as checking the framework version. Sequence:
|
|
252
|
+
- Detect the framework first (Next.js App Router vs Pages Router, Vite+React, CRA,
|
|
253
|
+
etc.) from `package.json`/config files - install steps differ by framework.
|
|
254
|
+
- **Next.js (App Router, v13.4+):** Tailwind v4 is the default expectation for new
|
|
255
|
+
work: `npm install tailwindcss @tailwindcss/postcss postcss --save-dev`, add a
|
|
256
|
+
`postcss.config.mjs` with the `@tailwindcss/postcss` plugin, and replace the
|
|
257
|
+
contents of `app/globals.css` with `@import "tailwindcss";` plus the `@theme`
|
|
258
|
+
block once tokens are chosen. Confirm `globals.css` is imported in the root layout.
|
|
259
|
+
- **Next.js (Pages Router) or Vite+React on Tailwind v3 conventions:**
|
|
260
|
+
`npm install -D tailwindcss postcss autoprefixer && npx tailwindcss init -p`,
|
|
261
|
+
set `content` in `tailwind.config.js` to cover all component paths, add the
|
|
262
|
+
`@tailwind base; @tailwind components; @tailwind utilities;` directives to the
|
|
263
|
+
global stylesheet, and confirm that stylesheet is imported at the app entry point.
|
|
264
|
+
- If a package manager other than npm is in use (`pnpm-lock.yaml`, `yarn.lock`,
|
|
265
|
+
`bun.lockb`), use that manager's install command instead of assuming npm.
|
|
266
|
+
- After install, verify by checking that the config/`@theme` block and the
|
|
267
|
+
directive/import are both actually present before moving on - don't assume the
|
|
268
|
+
install succeeded silently.
|
|
269
|
+
- State plainly what was installed and why: "No Tailwind config found - installed
|
|
270
|
+
Tailwind v4 and wired it into `globals.css` before writing components," so the
|
|
271
|
+
user isn't surprised by a new dependency showing up.
|
|
272
|
+
- If the project isn't React/Next.js at all (plain HTML, another framework), ask
|
|
273
|
+
the user directly whether to add Tailwind via CDN/CLI for that stack rather than
|
|
274
|
+
silently picking a framework-specific install path that doesn't apply.
|
|
275
|
+
3. **If there's no existing repo yet (greenfield, nothing scaffolded), ask the
|
|
276
|
+
user directly** - don't guess silently:
|
|
277
|
+
- "Which Tailwind version - v4 (CSS-first `@theme`, default in new Next.js/Vite
|
|
278
|
+
projects) or v3 (`tailwind.config.ts`)? If unsure, say what scaffolded the project
|
|
279
|
+
(e.g. `create-next-app`, `create-vite`) and I'll infer it." New Next.js apps (App
|
|
280
|
+
Router, scaffolded recently) default to v4 - treat that as the working assumption
|
|
281
|
+
only if the user can't check, and flag it as an assumption.
|
|
282
|
+
- "Using shadcn/ui, or any component library that expects HSL CSS variables? Or plain
|
|
283
|
+
Tailwind utility classes only?" This changes the color format (HSL triplets like
|
|
284
|
+
`222 47% 11%` for shadcn vs plain hex for plain Tailwind) - don't output HSL unless
|
|
285
|
+
shadcn (or an equivalent) is confirmed in use.
|
|
286
|
+
|
|
287
|
+
### 1b. In a monorepo, find where tokens actually belong before writing them
|
|
288
|
+
|
|
289
|
+
Don't default to the first `globals.css` found. Check for a workspace/turbo config
|
|
290
|
+
(`turbo.json`, `pnpm-workspace.yaml`, or multiple `apps/*` + `packages/*` dirs):
|
|
291
|
+
|
|
292
|
+
- If a shared UI/design-system package exists (commonly `packages/ui`), tokens likely
|
|
293
|
+
belong there so every app in the monorepo consumes one source - check whether other
|
|
294
|
+
apps already import from it before putting tokens in a single app's local CSS.
|
|
295
|
+
- If each app intentionally has independent styling (no shared package, or the user
|
|
296
|
+
confirms per-app theming), it's fine to scope tokens to that one app - but say this
|
|
297
|
+
assumption out loud rather than assuming silently.
|
|
298
|
+
- If unsure, ask: "single shared token package, or scoped to this app only?" - one
|
|
299
|
+
question, don't guess on a monorepo structure.
|
|
300
|
+
|
|
301
|
+
### 1c. Check for non-CSS consumers of color/spacing tokens
|
|
302
|
+
|
|
303
|
+
Tailwind tokens only style DOM elements. If the project renders visuals outside the
|
|
304
|
+
DOM - `<canvas>` drawing calls, WebGL, SVG generated in JS, chart libraries - those
|
|
305
|
+
almost always read color/stroke values from hardcoded JS/TS constants, not CSS, and
|
|
306
|
+
Tailwind's token layer cannot reach them.
|
|
307
|
+
|
|
308
|
+
- Search for hardcoded hex/rgba color literals in rendering/engine code (not just
|
|
309
|
+
component files) before declaring the token migration complete.
|
|
310
|
+
- Call this out as a **separate, explicit step** in the output - these constants need
|
|
311
|
+
to be updated by hand to match the new palette, and it's easy to finish the CSS token
|
|
312
|
+
work and assume the job is done while canvas/chart colors are still stale.
|
|
313
|
+
- Do not attempt to route canvas/WebGL rendering through CSS variables unless the
|
|
314
|
+
project already does this (e.g. reading `getComputedStyle` at draw time) - that's an
|
|
315
|
+
architecture change, out of scope for a visual-refinement task.
|
|
316
|
+
|
|
317
|
+
### 1d. When Tailwind is confirmed, enforce Tailwind-only - no raw CSS leakage
|
|
318
|
+
|
|
319
|
+
This is a recurring failure mode: even after confirming Tailwind, output (or an agent
|
|
320
|
+
executing the output) drifts into writing plain CSS - new classes in `globals.css`
|
|
321
|
+
(`.toolbar { ... }`), a fresh `.module.css` file, or inline `style={{...}}` objects -
|
|
322
|
+
usually because it's the path of least resistance for a specific layout/animation
|
|
323
|
+
detail. Treat this as a hard constraint, not a preference, once Tailwind is confirmed:
|
|
324
|
+
|
|
325
|
+
- The **only** CSS syntax allowed in a Tailwind project is the token/config layer
|
|
326
|
+
itself: the `@theme` block (v4) or `tailwind.config.ts` `theme.extend` (v3), plus
|
|
327
|
+
Tailwind's own `@import`/`@tailwind` directives. Nothing else gets written as CSS.
|
|
328
|
+
- Every other style decision - layout, spacing, color, state, animation - must be
|
|
329
|
+
Tailwind utility classes on the element, or `@apply` inside a component-scoped class
|
|
330
|
+
only if the user's existing codebase already uses that pattern (don't introduce
|
|
331
|
+
`@apply` fresh into a project that doesn't use it).
|
|
332
|
+
- Arbitrary values belong in Tailwind's bracket syntax (`w-[137px]`, `bg-[var(--x)]`),
|
|
333
|
+
not in a new CSS rule, when a utility class doesn't already cover it.
|
|
334
|
+
- For animation beyond what Tailwind's utilities cover, use a JS animation
|
|
335
|
+
library already in the stack (Framer Motion, GSAP) driving `className`/`style` props
|
|
336
|
+
programmatically - not new keyframe CSS blocks - unless the project already defines
|
|
337
|
+
`@keyframes` in Tailwind's `@theme`/config (Tailwind v4 supports custom keyframes
|
|
338
|
+
inside `@theme` - use that, not a separate CSS file).
|
|
339
|
+
- Inline `style={{...}}` is acceptable only for truly dynamic runtime values that can't
|
|
340
|
+
be expressed as a class (e.g. a computed transform from drag state) - never for static
|
|
341
|
+
styling that a utility class already covers.
|
|
342
|
+
- **Before presenting output, explicitly state**: "No CSS outside the token block - everything
|
|
343
|
+
else is Tailwind utility classes," so the user can verify this claim rather than
|
|
344
|
+
discovering a violation later. If asked to generate actual code (not just tokens),
|
|
345
|
+
scan what was written for stray `.css`/`.module.css` files, new `<style>` blocks, or
|
|
346
|
+
style objects, and flag/fix any found before finishing.
|
|
347
|
+
|
|
348
|
+
### 2. Map answers to style families
|
|
349
|
+
|
|
350
|
+
Read `references/styles.md` for the full library (14 style families with rationale,
|
|
351
|
+
tokens, and when each one is a trap). Match on:
|
|
352
|
+
|
|
353
|
+
- **Project type** narrows the field fast - e.g. enterprise dashboards almost never want
|
|
354
|
+
brutalism; dev tools and portfolios often do.
|
|
355
|
+
- **Audience** adjusts boldness - technical/developer audiences tolerate (often prefer)
|
|
356
|
+
more rawness and density; consumer/enterprise audiences want more polish and whitespace.
|
|
357
|
+
- **Vibe word**, if given, should dominate over defaults.
|
|
358
|
+
|
|
359
|
+
Pick **2-3 candidates**, not one - always give a real choice, but a narrow, matched one
|
|
360
|
+
(not 14 options). Order them by best-fit first.
|
|
361
|
+
|
|
362
|
+
### 3. Present options
|
|
363
|
+
|
|
364
|
+
For each candidate, give:
|
|
365
|
+
- Name + one-line description of the feel
|
|
366
|
+
- Why it fits *this* project specifically (not a generic style description)
|
|
367
|
+
- One concrete visual anchor (e.g. "think Linear/Vercel docs" or "think Brutalist
|
|
368
|
+
portfolio sites - thick borders, mono type, no shadows")
|
|
369
|
+
|
|
370
|
+
Keep this tight - a few lines per option, not paragraphs. If `ask_user_input_v0` is
|
|
371
|
+
available, present the 2-3 options as tappable choices rather than prose.
|
|
372
|
+
|
|
373
|
+
### 4. Output the chosen theme
|
|
374
|
+
|
|
375
|
+
Once picked (or if the user says "just pick one"), pull the full token set for that
|
|
376
|
+
style from `references/styles.md` and output:
|
|
377
|
+
|
|
378
|
+
1. **Color palette** - hex values for background/surface/border/text/primary/accent, both
|
|
379
|
+
light and dark mode if relevant (HSL triplets instead, only if shadcn/HSL was confirmed
|
|
380
|
+
in step 1a)
|
|
381
|
+
2. **Typography** - font pairing (with a real Google Fonts / system stack name) and scale
|
|
382
|
+
3. **Spacing & radius** - the family's characteristic spacing density and border-radius values
|
|
383
|
+
4. **Shadows/elevation** - or explicit "no shadows" if the style calls for flat/bordered
|
|
384
|
+
5. **Motion character** - snappy/none/springy/slow-fade, one line
|
|
385
|
+
6. A ready-to-paste token block matching the **confirmed** stack from step 1a - never
|
|
386
|
+
default to v3 syntax without checking:
|
|
387
|
+
- **Tailwind v4** (default for new Next.js/Vite projects) → CSS-first `@theme` block
|
|
388
|
+
in `globals.css`, per the v4 template in `references/styles.md`. No config file.
|
|
389
|
+
- **Tailwind v3** → `tailwind.config.ts` `theme.extend` block, per the v3 template in
|
|
390
|
+
`references/styles.md`.
|
|
391
|
+
- If an existing token set was found in step 1a, output a diff/extension against it,
|
|
392
|
+
not a full replacement - name exactly which values change and which stay.
|
|
393
|
+
7. **How to actually use the tokens** - one short line + example, so the semantic names
|
|
394
|
+
get used instead of raw hex creeping back into the JSX: e.g. "reference these as
|
|
395
|
+
`bg-background text-foreground border-border`, not `bg-[#0D1117]` - the whole point of
|
|
396
|
+
the token layer is that colors live in one file." Call this out explicitly since it's
|
|
397
|
+
the step most often skipped.
|
|
398
|
+
|
|
399
|
+
Don't explain design theory unless asked. Give the tokens and move on. If asked "why this
|
|
400
|
+
works," then explain.
|
|
401
|
+
|
|
402
|
+
### 5. Give the actual code for signature interactions - not just a library pointer
|
|
403
|
+
|
|
404
|
+
Read `references/component-sources.md` for the technique/recipe. This user wants
|
|
405
|
+
hand-buildable code by default, not "go check Aceternity" - so:
|
|
406
|
+
- If the interaction/effect is cheap to hand-build (glass navbar, ambient blobs, hover
|
|
407
|
+
fill-sweep, scroll ticker, contextual toolbar, inline editing) - write the actual
|
|
408
|
+
working code (Tailwind classes + Framer Motion/GSAP snippet as needed), not just a
|
|
409
|
+
description.
|
|
410
|
+
- If a library genuinely does it better/faster (3D scenes, complex particle systems) -
|
|
411
|
+
name the specific component (e.g. Aceternity `Sparkles`) *and* still show the install/
|
|
412
|
+
usage snippet, don't just link out.
|
|
413
|
+
- Always identify **at least one signature interaction proactively**, even if the user
|
|
414
|
+
didn't ask for one - prefer a product-native interaction pattern over a decorative
|
|
415
|
+
effect (see step 6.5 for how to pick the right one for this specific product).
|
|
416
|
+
|
|
417
|
+
### 6. Offer variations, don't force them
|
|
418
|
+
|
|
419
|
+
After output, one line max: "want a variant (darker/louder/calmer) or a second option
|
|
420
|
+
from the shortlist?" Don't pad further unless they ask.
|
|
421
|
+
|
|
422
|
+
### 6.5 Productization pass - make it feel like a real product
|
|
423
|
+
|
|
424
|
+
A visually polished interface is not automatically a good product UI. Before
|
|
425
|
+
considering the work complete, run this pass. The objective is not "make the existing
|
|
426
|
+
UI prettier" - it's "make the product feel intentionally designed." This applies most
|
|
427
|
+
to the refine-existing mode (step 0), but the identity/interaction/component-language
|
|
428
|
+
layers matter for new builds too, not just tokens and effects. Evaluate in order:
|
|
429
|
+
|
|
430
|
+
**1. Product identity.** What's this product's distinctive visual/interaction idea?
|
|
431
|
+
What should someone remember after using it? Which element could become a signature
|
|
432
|
+
element? Don't manufacture a visual gimmick for uniqueness - identity should emerge
|
|
433
|
+
from the product's actual purpose. Canvas product → spatial freedom, direct
|
|
434
|
+
manipulation. Dev tool → density, keyboard efficiency, precision. Project management →
|
|
435
|
+
hierarchy, scanning speed, state visibility. Creative tool → expressive workspace, low
|
|
436
|
+
friction.
|
|
437
|
+
|
|
438
|
+
**2. Information architecture.** Don't preserve a bad hierarchy just because the
|
|
439
|
+
existing UI already has it. Is the most important thing visually dominant? Can the
|
|
440
|
+
screen be understood in a few seconds? Are related actions grouped, secondary actions
|
|
441
|
+
subordinate, advanced controls progressively disclosed? If the structure is confusing,
|
|
442
|
+
redesign the structure before styling it - don't polish an incorrect hierarchy.
|
|
443
|
+
|
|
444
|
+
**3. Interaction model.** Every important action needs an obvious model: what happens
|
|
445
|
+
on click, hover, select, keyboard focus, while loading, on success, on failure, on
|
|
446
|
+
empty state, on repeated use? Avoid controls that look good but behave like generic
|
|
447
|
+
HTML. Prefer deliberate patterns where they genuinely fit - command palette, contextual
|
|
448
|
+
toolbar, inline editing, keyboard shortcuts, drag interactions, optimistic updates,
|
|
449
|
+
undo instead of confirmation dialogs - only where they improve the actual product, not
|
|
450
|
+
as a checklist to force through.
|
|
451
|
+
|
|
452
|
+
**4. Component language.** Don't let every component be independently "pretty" - define
|
|
453
|
+
one small visual grammar: control height, density, radius scale, border treatment,
|
|
454
|
+
shadow/elevation scale, type hierarchy, icon sizing/stroke weight, and the
|
|
455
|
+
hover/selected/focus/disabled/destructive treatment. The same interaction must look and
|
|
456
|
+
behave the same everywhere. If similar actions look unrelated, fix the system, don't
|
|
457
|
+
style them individually.
|
|
458
|
+
|
|
459
|
+
**5. Density.** Pick one intentional level - compact, balanced, spacious - and don't mix
|
|
460
|
+
it accidentally. Dev tools/productivity generally want higher density; marketing/
|
|
461
|
+
onboarding generally wants more whitespace. Different surfaces in one product may use
|
|
462
|
+
different densities on purpose, but the transition should feel deliberate, not sloppy.
|
|
463
|
+
|
|
464
|
+
**6. Hierarchy before decoration.** Before adding gradients, glows, glass, shadows,
|
|
465
|
+
particles, blobs, or animated backgrounds - verify layout, hierarchy, spacing,
|
|
466
|
+
typography, grouping, affordances, and states are solid first. If the UI doesn't look
|
|
467
|
+
good without decorative effects, the effects are compensating for weak design underneath
|
|
468
|
+
- fix the design, don't add more decoration on top.
|
|
469
|
+
|
|
470
|
+
**7. Signature interaction.** Every product should have one memorable interaction or
|
|
471
|
+
behavior - the interaction that naturally belongs to it. Excalidraw → direct canvas
|
|
472
|
+
manipulation. Raycast → command/search interaction. Linear → fast issue manipulation
|
|
473
|
+
and navigation. Figma → direct manipulation of the design surface. Identify the
|
|
474
|
+
equivalent for this product and implement it exceptionally well rather than spreading
|
|
475
|
+
effort across several mediocre ones. Prefer product-native signatures (contextual
|
|
476
|
+
toolbar, command palette, inline editing, keyboard workflow, drag interaction) over
|
|
477
|
+
decorative signatures (particles, glow, ambient blobs). The signature should be the
|
|
478
|
+
thing that makes someone say "this product" not "this effect."
|
|
479
|
+
|
|
480
|
+
**8. Micro-polish.** Inspect hover transitions, focus rings, pressed/selected/disabled
|
|
481
|
+
states, loading indicators, empty/error states, success feedback, tooltips, keyboard
|
|
482
|
+
shortcuts, cursor behavior, icon alignment, text truncation, overflow, responsive and
|
|
483
|
+
scroll behavior. These should read as one coherent system, not independently-styled bits.
|
|
484
|
+
|
|
485
|
+
**9. Remove generic AI UI.** Actively look for and remove: unnecessary cards, excessive
|
|
486
|
+
rounded containers, repeated border boxes, generic gradient backgrounds, oversized hero
|
|
487
|
+
headings, excessive badges, decorative icons with no purpose, default three-column card
|
|
488
|
+
grids, excessive shadows/glassmorphism, arbitrary pills, random floating elements,
|
|
489
|
+
unnecessary dividers, "AI SaaS" purple/blue gradients, and any component that could
|
|
490
|
+
belong to any other SaaS app unchanged. Replace generic patterns with product-specific
|
|
491
|
+
ones: instead of a card grid, try a dense list with status indicators; instead of a
|
|
492
|
+
generic hero, try showing the actual product; instead of decorative badges, try
|
|
493
|
+
functional state labels. Delete rather than decorate - a simpler interface with stronger
|
|
494
|
+
hierarchy beats a more decorated generic one.
|
|
495
|
+
|
|
496
|
+
**10. Screenshot test.** Mentally evaluate the primary screen as a bare screenshot - no
|
|
497
|
+
product name, no docs, no marketing copy explaining what's special. Would this be
|
|
498
|
+
recognized as a deliberate product with a clear identity, or does it look like an
|
|
499
|
+
AI-generated template? If template: identify the generic element, replace the pattern
|
|
500
|
+
with something product-specific, introduce product-specific hierarchy or interaction,
|
|
501
|
+
and repeat the test. "Looks clean" is not the bar - "looks like a shipped product with
|
|
502
|
+
a clear identity" is.
|
|
503
|
+
|
|
504
|
+
### 7. Self-check against the "finished product" bar before presenting
|
|
505
|
+
|
|
506
|
+
Never skip this - it's what separates a themed template from a product-quality output.
|
|
507
|
+
Run the 8-point checklist above **and** the step 6.5 productization pass against what
|
|
508
|
+
was just produced:
|
|
509
|
+
|
|
510
|
+
- If any answer is "no" or "not really," fix it before presenting, not after - don't
|
|
511
|
+
ship a knockoff and offer to revise later.
|
|
512
|
+
- Explicitly note in the output which reference product's principle got applied where
|
|
513
|
+
(e.g. "primary/secondary hierarchy borrowed from Linear's action patterns" - one line,
|
|
514
|
+
not a paragraph) so the user can see the reasoning, not just trust it happened.
|
|
515
|
+
- If states (empty/loading/error/hover/disabled) weren't addressed because they weren't
|
|
516
|
+
asked about, say so directly rather than silently omitting them - "didn't touch empty/
|
|
517
|
+
error states, want those covered too?" is better than leaving a gap unmentioned.
|
|
518
|
+
- If Tailwind was confirmed as the stack (step 1a/1d), do a literal pass over any code
|
|
519
|
+
written and confirm zero new CSS rules exist outside the token/config block - no
|
|
520
|
+
`.module.css`, no `<style>` tag, no new `globals.css` classes. If any slipped in
|
|
521
|
+
(common when generating a lot of code at once), convert them to utility classes before
|
|
522
|
+
presenting, don't leave it for the user to catch.
|