@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,70 @@
|
|
|
1
|
+
# Copy and UX writing
|
|
2
|
+
|
|
3
|
+
Banning em dashes and Lorem Ipsum is not a copy standard, it is two
|
|
4
|
+
prohibitions. This is the standard.
|
|
5
|
+
|
|
6
|
+
## Voice and mood
|
|
7
|
+
|
|
8
|
+
- CTAs and instructions: imperative mood. "Save changes", "Add member".
|
|
9
|
+
Not "You can save your changes" or "Saving changes".
|
|
10
|
+
- Sentence case for everything: buttons, headings, labels, menu items.
|
|
11
|
+
Title Case only for proper nouns. No ALL CAPS except the eyebrow
|
|
12
|
+
style already defined in system.md (11px uppercase tracking).
|
|
13
|
+
- One register for the whole product: pick plain-and-direct or
|
|
14
|
+
warm-and-conversational, not both. A confirm dialog that says
|
|
15
|
+
"Oops! Something went sideways" next to a button that says
|
|
16
|
+
"Terminate session" is two products.
|
|
17
|
+
|
|
18
|
+
## CTAs and labels
|
|
19
|
+
|
|
20
|
+
- Verb + object, specific to the action: "Delete project", not
|
|
21
|
+
"Delete" alone when ambiguous, not "Yes" for a destructive confirm.
|
|
22
|
+
- Never label a button with what it is ("Submit button"). Label it
|
|
23
|
+
with what happens ("Create account").
|
|
24
|
+
- Max about 3 words for standard actions, but never truncate to
|
|
25
|
+
ambiguity. "Send" beats "Send inv." every time. Fix the button width
|
|
26
|
+
instead.
|
|
27
|
+
|
|
28
|
+
## Error messages
|
|
29
|
+
|
|
30
|
+
Structure: what happened + what to do. Both parts, every time.
|
|
31
|
+
|
|
32
|
+
- Bad: "Error." / "Something went wrong." / "Invalid input."
|
|
33
|
+
- Good: "Couldn't save. Check your connection and try again."
|
|
34
|
+
"Email already in use. Sign in instead or use a different address."
|
|
35
|
+
- Name the field for form errors: "Password must be 8+ characters",
|
|
36
|
+
not "Invalid field" pointing vaguely at the form.
|
|
37
|
+
- Never expose raw technical detail (stack traces, status codes) in
|
|
38
|
+
user-facing copy. Log it. Show the human version. A "Show details"
|
|
39
|
+
disclosure is fine for power users, collapsed by default.
|
|
40
|
+
- Recovery action is a real next step (retry button, link to fix,
|
|
41
|
+
contact support). Not just restating the problem.
|
|
42
|
+
|
|
43
|
+
## Label brevity
|
|
44
|
+
|
|
45
|
+
- Form labels: 1-3 words, no trailing colon, no "Please enter your...".
|
|
46
|
+
"Email" not "Please enter your email address:".
|
|
47
|
+
- Nav items: single words or short noun phrases, consistent part of
|
|
48
|
+
speech across the set (all nouns, not "Dashboard / Analyzing / Team").
|
|
49
|
+
- Tooltips and hints: one short sentence. If it needs two, it's not a
|
|
50
|
+
tooltip, it's a help panel.
|
|
51
|
+
|
|
52
|
+
## Micro-copy tone
|
|
53
|
+
|
|
54
|
+
- Empty states: say what the user can do next (system.md already sets
|
|
55
|
+
this), in one line, imperative. "Add your first project" not
|
|
56
|
+
"No projects yet." alone.
|
|
57
|
+
- Success confirmations: quiet and brief. A saved indicator or a toast
|
|
58
|
+
under about 6 words. Save the words for things that need them.
|
|
59
|
+
- Placeholders inside inputs show a format example, never the label
|
|
60
|
+
itself (no placeholder-as-label, per system.md). "you@company.com",
|
|
61
|
+
not "Email".
|
|
62
|
+
- Loading copy, if any text is shown at all beyond a skeleton: describe
|
|
63
|
+
what's happening, not a generic "Loading...". Prefer no text over a
|
|
64
|
+
spinner-plus-vague-label when the skeleton already communicates it.
|
|
65
|
+
|
|
66
|
+
## Verify additions
|
|
67
|
+
|
|
68
|
+
Add to the Phase 5 gate: every error state has a what-happened and a
|
|
69
|
+
what-to-do [dom], one copy register audited across the full page
|
|
70
|
+
[code], no placeholder-as-label anywhere [dom].
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
# Dark mode
|
|
2
|
+
|
|
3
|
+
"Dark mode works" is not a spec. This is the spec.
|
|
4
|
+
|
|
5
|
+
## CSS variable architecture
|
|
6
|
+
|
|
7
|
+
- Semantic tokens, not raw colors, at every call site:
|
|
8
|
+
`bg-canvas`, `bg-surface`, `text-primary`, `text-muted`, `border`,
|
|
9
|
+
not `bg-white` / `bg-black` / `text-gray-900` anywhere in components.
|
|
10
|
+
- Two value sets behind the same token names, swapped by a `.dark`
|
|
11
|
+
class or `data-theme` attribute on `<html>`. Never per-component
|
|
12
|
+
`dark:` overrides scattered through the codebase for anything that's
|
|
13
|
+
a reusable token (page-specific one-offs are the only exception).
|
|
14
|
+
- Define the tokens once, in one file (`globals.css` or the design
|
|
15
|
+
system entry point). Components consume tokens; they don't define
|
|
16
|
+
colors.
|
|
17
|
+
|
|
18
|
+
## Tailwind dark: strategy
|
|
19
|
+
|
|
20
|
+
- `darkMode: 'class'` (or `'selector'` in v4), not `'media'`. The
|
|
21
|
+
toggle needs to be user-controlled, not OS-only.
|
|
22
|
+
- Prefer semantic utility classes (`bg-surface`) over `dark:` variants
|
|
23
|
+
(`bg-white dark:bg-gray-900`) wherever the token system covers it.
|
|
24
|
+
Use `dark:` only for the token definitions themselves or genuine
|
|
25
|
+
one-offs.
|
|
26
|
+
|
|
27
|
+
## System preference detection
|
|
28
|
+
|
|
29
|
+
- Default to `prefers-color-scheme` on first load (no flash of wrong
|
|
30
|
+
theme. Set the class before paint, for example inline script or SSR
|
|
31
|
+
cookie, not after hydration).
|
|
32
|
+
- Persist an explicit user choice (localStorage or cookie) once they
|
|
33
|
+
toggle it. That choice overrides the system preference until they
|
|
34
|
+
clear it or pick "system" again.
|
|
35
|
+
- Offer three states where a toggle exists: light, dark, system. Not
|
|
36
|
+
just a binary switch, unless the product genuinely has no system-sync
|
|
37
|
+
need.
|
|
38
|
+
|
|
39
|
+
## Color adjustment rules
|
|
40
|
+
|
|
41
|
+
- Don't invert. Redesign each token. A light `canvas` (#fff) does not
|
|
42
|
+
become dark `canvas` (#000). It becomes a tinted near-black
|
|
43
|
+
(#0a0a0b to #121214 range), matching system.md's "no pure black"
|
|
44
|
+
rule in both themes.
|
|
45
|
+
- Reduce saturation on accents in dark mode. The same saturated hue
|
|
46
|
+
reads as glowing/neon against a dark background. Drop 10-20% and
|
|
47
|
+
usually lighten slightly.
|
|
48
|
+
- Text: dark mode primary text is off-white (#e8e8ea range), not pure
|
|
49
|
+
white. Pure white on dark surfaces creates halation/glare.
|
|
50
|
+
- Borders: light-mode borders are often a light gray. The dark-mode
|
|
51
|
+
equivalent is usually a lighter value than you'd guess (a border
|
|
52
|
+
needs contrast against a dark surface too), not just "the dark
|
|
53
|
+
version of the same gray."
|
|
54
|
+
|
|
55
|
+
## Edge cases
|
|
56
|
+
|
|
57
|
+
- Shadows: box-shadows tuned for light mode disappear or look wrong on
|
|
58
|
+
dark surfaces. Use a lighter border or a subtle inset highlight
|
|
59
|
+
instead of a shadow for elevation in dark mode, or tint the shadow
|
|
60
|
+
color to something other than black (system.md already says tint
|
|
61
|
+
shadows to background hue. This applies doubly in dark mode).
|
|
62
|
+
- Images and logos: photos may need a slight brightness/contrast
|
|
63
|
+
reduction on dark backgrounds. Logos with dark-only ink need a light
|
|
64
|
+
variant swapped in, not just displayed as-is.
|
|
65
|
+
- Illustrations with transparent backgrounds: check they don't assume
|
|
66
|
+
a white canvas behind them (visible white halos or boxes).
|
|
67
|
+
- Code blocks / syntax highlighting: needs its own light/dark theme
|
|
68
|
+
pair, not the page's generic tokens.
|
|
69
|
+
- Charts: data-viz palettes need contrast-checked dark variants, not
|
|
70
|
+
the same hues dimmed uniformly.
|
|
71
|
+
|
|
72
|
+
## Verify additions
|
|
73
|
+
|
|
74
|
+
Add to the Phase 5 gate: both themes hit AA contrast [dom], no
|
|
75
|
+
literal white/black utility classes in component code [code], theme
|
|
76
|
+
persists across reload and matches system on first load [dom].
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
# Direction
|
|
2
|
+
|
|
3
|
+
## Context questions (max 3 per round, one word each where possible)
|
|
4
|
+
|
|
5
|
+
1. What is it: landing, SaaS, dashboard, internal tool, portfolio,
|
|
6
|
+
e-commerce, dev tool, CLI wrapper, blog, mobile-first app.
|
|
7
|
+
2. Who is it for: consumers, developers, enterprise, portfolio viewers.
|
|
8
|
+
3. The vibe in one word. If they cannot say it, infer it and state it
|
|
9
|
+
back before proceeding.
|
|
10
|
+
4. Constraints: brand color, logo, light, dark, both, none.
|
|
11
|
+
5. The motion dial: 1 static, 5 a few signature moments, 10 cinematic.
|
|
12
|
+
Ask explicitly, never assume.
|
|
13
|
+
6. The density dial only when not obvious: 1 airy, 5 normal app,
|
|
14
|
+
10 cockpit.
|
|
15
|
+
|
|
16
|
+
## Style families
|
|
17
|
+
|
|
18
|
+
Shortlist 2-3, never one, never all. The default is always clean SaaS
|
|
19
|
+
(house-style).
|
|
20
|
+
|
|
21
|
+
| Family | Feel | Anchor |
|
|
22
|
+
|---|---|---|
|
|
23
|
+
| Clean SaaS | Apple/Google calm, bought not generated | Linear, Vercel, Stripe |
|
|
24
|
+
| Minimalist | warm monochrome, editorial quiet | recipes in styles.md |
|
|
25
|
+
| Brutalist | raw grids, military terminal | recipes in styles.md |
|
|
26
|
+
|
|
27
|
+
Match on project type, audience, and the vibe word. Enterprise
|
|
28
|
+
dashboards almost never get brutalism. Consumers and enterprise want
|
|
29
|
+
whitespace and polish.
|
|
30
|
+
|
|
31
|
+
## Present options
|
|
32
|
+
|
|
33
|
+
For each: name, one-line feel, why it fits this project, one concrete
|
|
34
|
+
visual anchor. Tight, a few lines.
|
|
35
|
+
|
|
36
|
+
## Token output
|
|
37
|
+
|
|
38
|
+
1. Palette hexes: background, surface, border, text, primary, accent.
|
|
39
|
+
Light and dark.
|
|
40
|
+
2. Type pairing: real font names plus the scale.
|
|
41
|
+
3. Spacing and radius.
|
|
42
|
+
4. Shadows or the explicit line "no shadows".
|
|
43
|
+
5. Motion character in one line.
|
|
44
|
+
6. Ready to paste: Tailwind v4 @theme in globals.css, or v3
|
|
45
|
+
theme.extend. Diff against existing tokens, never replace
|
|
46
|
+
everything.
|
|
47
|
+
7. Semantics: bg-background text-foreground border-border. No raw hex
|
|
48
|
+
in JSX.
|
|
49
|
+
|
|
50
|
+
## Refine-existing mode
|
|
51
|
+
|
|
52
|
+
- Audit first: list current primitives and duplicated one-offs.
|
|
53
|
+
- Extract principles, not pixels.
|
|
54
|
+
- Protect: brand colors, logo, layout, copy. State the user's non-goals
|
|
55
|
+
as hard constraints.
|
|
56
|
+
- Output a token diff.
|
|
57
|
+
|
|
58
|
+
## Tailwind strictness
|
|
59
|
+
|
|
60
|
+
- Tailwind is the only styling output. No raw CSS leakage, no
|
|
61
|
+
module.css, no style props except dynamic runtime values.
|
|
62
|
+
- Detect v4 vs v3 and wire it before coding.
|
|
63
|
+
- Existing tokens are the source of truth. Extend, do not duplicate.
|
|
64
|
+
- In monorepos, shared tokens live in packages/ui.
|
|
65
|
+
- Keyframes live in @theme for v4, not in separate CSS files.
|
|
66
|
+
|
|
67
|
+
## Signature interaction
|
|
68
|
+
|
|
69
|
+
Pick one product-native interaction and do it exceptionally well:
|
|
70
|
+
command palette for tools, direct manipulation for canvas, inline
|
|
71
|
+
editing for docs. Hand-buildable code by default; name a library only
|
|
72
|
+
when it is genuinely better (3D, particles).
|
|
73
|
+
|
|
74
|
+
## Productization pass (when the ask is a product, not a page)
|
|
75
|
+
|
|
76
|
+
1. Identity: one distinctive visual idea that comes from the product's
|
|
77
|
+
purpose.
|
|
78
|
+
2. Information architecture: the most important thing is dominant and
|
|
79
|
+
understood in seconds.
|
|
80
|
+
3. Interaction model: every action has an obvious model and a visible
|
|
81
|
+
state.
|
|
82
|
+
4. Component language: one small grammar, same behavior everywhere.
|
|
83
|
+
5. Density: one intentional level.
|
|
84
|
+
6. Hierarchy before decoration: structure first, effects last.
|
|
85
|
+
7. Signature interaction: one memorable, product-appropriate moment.
|
|
86
|
+
8. Micro-polish: focus rings, pressed states, tooltips, cursors,
|
|
87
|
+
truncation as one system.
|
|
88
|
+
9. Remove generic AI UI: cards everywhere, rounded containers, gradient
|
|
89
|
+
backgrounds, oversized heroes, badges, decorative icons, default
|
|
90
|
+
3-column grids.
|
|
91
|
+
10. Screenshot test: it must look like a shipped product with no
|
|
92
|
+
context.
|
|
93
|
+
|
|
94
|
+
## Reference products (study the why, never copy the pixels)
|
|
95
|
+
|
|
96
|
+
Excalidraw: direct manipulation, forgiving. Linear: dense but calm.
|
|
97
|
+
Raycast: finished utility. Vercel: restrained system. Figma: complex
|
|
98
|
+
coherence. Notion: approachable scale. Stripe: typography and density.
|
|
99
|
+
Arc: intentional weirdness.
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
# Redesign or audit
|
|
2
|
+
|
|
3
|
+
## The workflow
|
|
4
|
+
|
|
5
|
+
1. Scan: read the codebase, find the framework, the styling method, the
|
|
6
|
+
current patterns.
|
|
7
|
+
2. Diagnose: run the audit below, list every generic pattern and weak
|
|
8
|
+
point.
|
|
9
|
+
3. Fix: targeted upgrades on the existing stack. Never rewrite from
|
|
10
|
+
scratch.
|
|
11
|
+
|
|
12
|
+
Preserve: information architecture, slugs, nav labels, copy voice,
|
|
13
|
+
accessibility, analytics.
|
|
14
|
+
|
|
15
|
+
## The feel contract (write first, 3-5 lines)
|
|
16
|
+
|
|
17
|
+
1. Temperament in one word: calm, playful, precise, rugged.
|
|
18
|
+
2. What the product believes: one sentence.
|
|
19
|
+
3. Anti-goals: what it refuses to be.
|
|
20
|
+
4. Two reference products and why they feel good.
|
|
21
|
+
5. Where the feel lives: 2-3 contact points, like stroke language,
|
|
22
|
+
spring feel, or selection behavior.
|
|
23
|
+
|
|
24
|
+
Test: would a user who loves the reference recognize this as the same
|
|
25
|
+
product?
|
|
26
|
+
|
|
27
|
+
## The audit
|
|
28
|
+
|
|
29
|
+
- Typography: font swap, display presence, 65ch body, weights 500/600,
|
|
30
|
+
tabular figures, text-wrap balance.
|
|
31
|
+
- Color: no pure black, accent under 80% saturation, one gray family,
|
|
32
|
+
no AI gradients, tinted shadows.
|
|
33
|
+
- Layout: break symmetry, kill the three equal cards, 100dvh, grid over
|
|
34
|
+
flex, 1400px max.
|
|
35
|
+
- Interactivity: hover, pressed, focus rings, skeletons, composed empty
|
|
36
|
+
states, inline errors, no dead links.
|
|
37
|
+
- Content: real names, organic numbers, banned cliches, sentence case,
|
|
38
|
+
no exclamation marks.
|
|
39
|
+
- Components: cards only with elevation, tertiary buttons, no pill
|
|
40
|
+
badges, side-by-side FAQ entries.
|
|
41
|
+
- Icons: non-cliche metaphors, one stroke weight, branded favicon.
|
|
42
|
+
- Code: semantic HTML, z-index scale, no dead code, meta tags.
|
|
43
|
+
|
|
44
|
+
## Priority order
|
|
45
|
+
|
|
46
|
+
P0 broken or confusing. P1 visibly unfinished. P2 major quality.
|
|
47
|
+
P3 polish. Fix all P0 before any P2.
|
|
48
|
+
|
|
49
|
+
Upgrade levers in order: typography, spacing, color, motion, hero,
|
|
50
|
+
then the full block.
|
|
51
|
+
|
|
52
|
+
## Product-quality pass (for app-like surfaces)
|
|
53
|
+
|
|
54
|
+
- Full-state audit: instant operations have no loader, short operations
|
|
55
|
+
a subtle indicator, long operations progress plus context. Empty
|
|
56
|
+
states say what to do. Errors say what happened and how to recover.
|
|
57
|
+
- Feedback mechanism: direct manipulation gets a visual state on the
|
|
58
|
+
thing itself; completed work gets a small contextual status;
|
|
59
|
+
destructive gets confirm only when dangerous; undoable gets undo
|
|
60
|
+
over confirm.
|
|
61
|
+
- Keyboard-first: tool activation, undo redo, Escape exits, no focus
|
|
62
|
+
traps, no mouse-only controls.
|
|
63
|
+
- First-run: lightweight guidance that self-disappears.
|
|
64
|
+
- Finish details: no layout jump, consistent panel directions, selected
|
|
65
|
+
controls stay selected, no clipped shadows, no hover-caused movement,
|
|
66
|
+
no dead controls.
|
|
67
|
+
- The 10-minute test: walk the core journey and ask at each step:
|
|
68
|
+
understood, feedback, unfinished, slow. Then describe the feeling of
|
|
69
|
+
each interaction.
|
|
70
|
+
|
|
71
|
+
## Do not overdesign
|
|
72
|
+
|
|
73
|
+
Must not become a copy of Linear, Notion, Figma, or a glassmorphism
|
|
74
|
+
dashboard. When in doubt, remove.
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
# Responsive design
|
|
2
|
+
|
|
3
|
+
The seven verify viewports (1440, 1280, 1024, 768, 640, 390, 375) tell
|
|
4
|
+
you where to check. This file tells you what should change at each
|
|
5
|
+
stop and why.
|
|
6
|
+
|
|
7
|
+
## Breakpoint scale
|
|
8
|
+
|
|
9
|
+
Tailwind defaults, used as-is unless the brief specifies devices:
|
|
10
|
+
|
|
11
|
+
- `sm` 640: large phone / small phone landscape.
|
|
12
|
+
- `md` 768: tablet portrait.
|
|
13
|
+
- `lg` 1024: tablet landscape / small laptop.
|
|
14
|
+
- `xl` 1280: laptop.
|
|
15
|
+
- `2xl` 1536: desktop.
|
|
16
|
+
|
|
17
|
+
Don't invent custom breakpoints for one component. If a card wraps
|
|
18
|
+
badly at 810px, that's a component fix (min-width, flex-wrap), not a
|
|
19
|
+
new breakpoint.
|
|
20
|
+
|
|
21
|
+
## Reflow vs resize
|
|
22
|
+
|
|
23
|
+
- Resize (same layout, smaller): fine down to the point text or targets
|
|
24
|
+
break. Most spacing scales this way (clamp(), fluid type).
|
|
25
|
+
- Reflow (structure changes) happens at these tiers, matching Phase 5's
|
|
26
|
+
hierarchy rule:
|
|
27
|
+
- Desktop (1024+): full chrome. Sidebar visible, multi-column,
|
|
28
|
+
secondary actions inline.
|
|
29
|
+
- Tablet (768–1023): reduced secondary chrome. Sidebar collapses to
|
|
30
|
+
icon rail or drawer, 2-column becomes stacked where content needs
|
|
31
|
+
the width.
|
|
32
|
+
- Mobile (<768): one column, primary action first, secondary actions
|
|
33
|
+
behind a menu or moved below the fold.
|
|
34
|
+
- A "squeezed desktop" (same layout, everything just smaller and
|
|
35
|
+
cramped) at any tier fails verify.
|
|
36
|
+
|
|
37
|
+
## Container queries vs media queries
|
|
38
|
+
|
|
39
|
+
- Use a container query when a component's layout depends on the space
|
|
40
|
+
it has, not the viewport (a card that's sometimes in a 3-column
|
|
41
|
+
grid, sometimes a sidebar).
|
|
42
|
+
- Use a media query for page-level structure: nav, page grid, whether a
|
|
43
|
+
sidebar exists at all.
|
|
44
|
+
- Don't container-query something that only ever appears full-width.
|
|
45
|
+
That's a media query with extra steps.
|
|
46
|
+
|
|
47
|
+
## Touch targets
|
|
48
|
+
|
|
49
|
+
- 44x44px minimum hit area (per verify.md), including padding. A 24px
|
|
50
|
+
icon with 10px padding on each side clears it. A bare 24px icon does
|
|
51
|
+
not.
|
|
52
|
+
- Adjacent tappable targets (list row actions, toolbar icons): 8px
|
|
53
|
+
minimum gap so mis-taps don't fire the neighbor.
|
|
54
|
+
- Targets near screen edges or in a bottom bar get extra margin. Thumb
|
|
55
|
+
reach is worse at the very edge.
|
|
56
|
+
- Desktop-only affordances (small close buttons, drag handles) can stay
|
|
57
|
+
small only if they never render on a touch viewport.
|
|
58
|
+
|
|
59
|
+
## Density shifts per viewport
|
|
60
|
+
|
|
61
|
+
- Desktop: information density can be higher. More columns, inline
|
|
62
|
+
metadata, hover-revealed actions.
|
|
63
|
+
- Mobile: density drops. One primary value per row, secondary info
|
|
64
|
+
becomes a second line, hover actions become always-visible or
|
|
65
|
+
swipe/long-press.
|
|
66
|
+
- Tables: desktop keeps the table. Mobile becomes stacked cards (label:
|
|
67
|
+
value pairs) once columns can't fit at 16px min column width.
|
|
68
|
+
Never horizontal-scroll a data table as the only mobile treatment
|
|
69
|
+
unless the data is genuinely tabular-only (for example, a
|
|
70
|
+
spreadsheet-like tool).
|
|
71
|
+
|
|
72
|
+
## Verify additions
|
|
73
|
+
|
|
74
|
+
Per class (already in verify.md) plus: container-queried components
|
|
75
|
+
tested at their narrowest realistic container, not just narrowest
|
|
76
|
+
viewport; bottom-bar/thumb-zone targets checked with extra edge margin
|
|
77
|
+
on mobile.
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
# Style recipes
|
|
2
|
+
|
|
3
|
+
Only when explicitly asked. The default is always the clean Apple/Google
|
|
4
|
+
look from the main skill.
|
|
5
|
+
|
|
6
|
+
## Minimalist
|
|
7
|
+
|
|
8
|
+
- Type: SF Pro Display, Geist, or Helvetica Neue for body. Editorial
|
|
9
|
+
serif for heroes and quotes with tracking -0.02em to -0.04em, leading
|
|
10
|
+
1.1. Mono for labels.
|
|
11
|
+
- Colors: white or warm off-white canvas, near-black text, 1px light
|
|
12
|
+
dividers. Pastel accents only: pale red, pale blue, pale green, pale
|
|
13
|
+
yellow, each with dark readable text.
|
|
14
|
+
- Radius: 8px max, 12px for cards. No pill containers.
|
|
15
|
+
- Buttons: near-black fill, white text, radius 4-6px, no shadow, hover
|
|
16
|
+
darkens or scales to 0.98.
|
|
17
|
+
- Borders: 1px solid #EAEAEA everywhere. No shadow-md and above.
|
|
18
|
+
- Layout: asymmetric grid, bento, generous py-24 to py-32 whitespace.
|
|
19
|
+
- Motion: fade-up 12px over 600ms with ease-out spring, stagger 80ms,
|
|
20
|
+
hover shadow at 2px 8px and 0.04 opacity.
|
|
21
|
+
- Bans: gradients, neon, glassmorphism, rounded-full containers, emojis,
|
|
22
|
+
cliche copy.
|
|
23
|
+
|
|
24
|
+
## Brutalist
|
|
25
|
+
|
|
26
|
+
Two archetypes, pick one, never mix.
|
|
27
|
+
|
|
28
|
+
Swiss Industrial Print: off-white substrate, heavy sans uppercase
|
|
29
|
+
(Archivo Black, Monument Extended), visible 1px grid lines,
|
|
30
|
+
viewport-bleeding numerals, one harvest red accent. Zero radius.
|
|
31
|
+
clamp() type at extreme scale.
|
|
32
|
+
|
|
33
|
+
Tactical Telemetry: dark exclusive, mono dominance (JetBrains Mono, IBM
|
|
34
|
+
Plex Mono), tabular data, ASCII framing, crosshairs, phosphor glow,
|
|
35
|
+
scanlines, low bit depth. Terminal green for one element max.
|
|
36
|
+
|
|
37
|
+
- Color: one substrate. Light: #F4F4F0 canvas with near-black text and
|
|
38
|
+
red accent. Dark: #0A0A0A or #121212, never pure black.
|
|
39
|
+
- Layout: strict grid anchoring, 1px or 2px solid borders, full-width
|
|
40
|
+
rules, bimodal density, zero border radius.
|
|
41
|
+
- Effects: halftone and dithering, CRT scanlines, low-opacity noise.
|
|
42
|
+
- Bans: gradients, shadows, translucency.
|
|
@@ -0,0 +1,190 @@
|
|
|
1
|
+
# Design system
|
|
2
|
+
|
|
3
|
+
## Constraint budget
|
|
4
|
+
|
|
5
|
+
One accent, one gray family, one radius scale, one icon family, one
|
|
6
|
+
stroke weight, one motion curve family, one surface language. Every
|
|
7
|
+
addition needs a reason tied to the product.
|
|
8
|
+
|
|
9
|
+
## Color
|
|
10
|
+
|
|
11
|
+
- Max one accent, saturation under 80%.
|
|
12
|
+
- One gray family: warm or cool, not both.
|
|
13
|
+
- No pure black: use tinted near-blacks.
|
|
14
|
+
- Neutral roles: canvas, surface, text, muted text, border.
|
|
15
|
+
- Pastel accents with dark text for tags and badges.
|
|
16
|
+
- One palette per project. Accent identical across the page.
|
|
17
|
+
- No purple or blue AI gradients anywhere.
|
|
18
|
+
- Semantic colors: success, warning, danger, info. Each gets one hue,
|
|
19
|
+
used only in that role. Warning never borrows from accent. Danger never
|
|
20
|
+
borrows from warning.
|
|
21
|
+
- Dark mode: invert the neutral scale, keep the accent hue, reduce
|
|
22
|
+
saturation by 10-20%. See Dark mode in build.md.
|
|
23
|
+
|
|
24
|
+
## Type
|
|
25
|
+
|
|
26
|
+
- Sans body candidates: Geist, Outfit, Cabinet Grotesk, Satoshi. Inter
|
|
27
|
+
and Roboto are the AI default; banned unless the brand names one.
|
|
28
|
+
- Display: tight tracking, leading near 1.1, negative letter spacing.
|
|
29
|
+
- Body: 16px base, line-height 1.6, max width 65ch.
|
|
30
|
+
- Data: tabular figures (font-variant-numeric).
|
|
31
|
+
- One family. Italic or bold of the same family for emphasis.
|
|
32
|
+
- Serif only when the brand asks or the brief is editorial.
|
|
33
|
+
- Modular scale: major third (1.25), perfect fourth (1.333), or golden
|
|
34
|
+
ratio (1.618). See Type scale in build.md.
|
|
35
|
+
|
|
36
|
+
## Scale
|
|
37
|
+
|
|
38
|
+
- Three levels: headline, sentence, hint. Never five sizes of bold.
|
|
39
|
+
- Headline under 8 words. Subtext under 25 words.
|
|
40
|
+
- Tighter tracking as size grows.
|
|
41
|
+
- text-wrap balance and pretty for headers.
|
|
42
|
+
- Weight ladder: 400 for body, 500 for emphasis, 600 for labels, 700
|
|
43
|
+
for display. No 800 or 900 in UI text.
|
|
44
|
+
- Leading: display at 1.05 to 1.1, body at 1.5 to 1.6, caption at 1.4.
|
|
45
|
+
- Mono for data only: JetBrains Mono, IBM Plex Mono, or Geist Mono.
|
|
46
|
+
Never mono for body copy.
|
|
47
|
+
|
|
48
|
+
## Spacing
|
|
49
|
+
|
|
50
|
+
- Macro whitespace first: py-24 to py-40 for sections.
|
|
51
|
+
- Section gaps: clamp(3rem, 8vw, 6rem).
|
|
52
|
+
- Content max width 1400px or max-w-7xl.
|
|
53
|
+
- Component padding: p-6 to p-8 for cards, p-4 for compact controls.
|
|
54
|
+
Inconsistent padding is a visual error.
|
|
55
|
+
- Density ladder: hero is sparse, feature section is medium, data table
|
|
56
|
+
is dense. One density per section.
|
|
57
|
+
- Minimum section padding: py-12 on mobile, py-16 on tablet, py-24 on
|
|
58
|
+
desktop. Never drop below py-12 between distinct sections.
|
|
59
|
+
|
|
60
|
+
## Radius
|
|
61
|
+
|
|
62
|
+
- One radius language per page: sharp 0, all-soft 12-16px, or all-pill.
|
|
63
|
+
Mixed only with a documented rule.
|
|
64
|
+
- The bought-not-generated band: 12 to 30px. Skip the 40px outliers.
|
|
65
|
+
|
|
66
|
+
## Shadows
|
|
67
|
+
|
|
68
|
+
- Tint shadows to the background hue.
|
|
69
|
+
- Diffuse, low opacity. shadow-md and above are banned as defaults.
|
|
70
|
+
- High density: 1px lines instead of cards.
|
|
71
|
+
- Dark mode: eliminate shadows or use very subtle diffused shadows.
|
|
72
|
+
Borders replace shadows for separation.
|
|
73
|
+
|
|
74
|
+
## Components
|
|
75
|
+
|
|
76
|
+
- Buttons: flat or barely rounded, solid contrast, no glow, no gradient.
|
|
77
|
+
Pressed state: scale 0.98. One CTA per intent, no duplicated labels.
|
|
78
|
+
- Cards: only when elevation is hierarchy. No cards in cards. High
|
|
79
|
+
density: border-top instead.
|
|
80
|
+
- Inputs: label above, error below, accent focus ring. No
|
|
81
|
+
placeholder-as-label, no floating labels.
|
|
82
|
+
- Badges: pastel, pill, tiny. Max one per metadata line.
|
|
83
|
+
- Skeleton loaders shaped like the content, not spinners.
|
|
84
|
+
- Empty states that say what the user can do next.
|
|
85
|
+
- Icon system: stroke weight 1.5px for data-dense, 2px for marketing.
|
|
86
|
+
16px inline, 20px section headers, 24px standalone, 32px+ feature.
|
|
87
|
+
See Icon system in build.md.
|
|
88
|
+
- Form design: label above, validate on blur, error below input, submit
|
|
89
|
+
button shows loading state. See Form design in build.md.
|
|
90
|
+
- Component state matrix: every interactive component defines Default,
|
|
91
|
+
Hover, Focus, Active, Disabled, Loading, Error, Empty, Selected.
|
|
92
|
+
See Component state matrix in build.md.
|
|
93
|
+
|
|
94
|
+
## Dark mode
|
|
95
|
+
|
|
96
|
+
- CSS variable architecture: all colors via CSS variables. Light and
|
|
97
|
+
dark variants in :root and .dark.
|
|
98
|
+
- Tailwind strategy: use dark: prefix. Never hardcode colors in JSX.
|
|
99
|
+
- System preference: default to system. Allow manual override with
|
|
100
|
+
localStorage. Respect prefers-color-scheme.
|
|
101
|
+
- Color adjustments: reduce saturation 10-20% in dark mode. Dark
|
|
102
|
+
backgrounds need lighter text, not darker.
|
|
103
|
+
- Accent: keep same hue, increase lightness 5-10% in dark mode.
|
|
104
|
+
- Shadows: eliminate in dark mode. Borders replace shadows.
|
|
105
|
+
- Images: don't invert. Use opacity adjustments if needed. SVG icons
|
|
106
|
+
with currentColor adapt automatically.
|
|
107
|
+
- Text: never pure white on pure black. Use gray-50 to gray-100 on
|
|
108
|
+
gray-900 to gray-950. Minimum 4.5:1 contrast.
|
|
109
|
+
- Testing: verify every screen in both light and dark mode.
|
|
110
|
+
|
|
111
|
+
## Responsive
|
|
112
|
+
|
|
113
|
+
- Breakpoint scale: sm 640, md 768, lg 1024, xl 1280, 2xl 1536.
|
|
114
|
+
Mobile first.
|
|
115
|
+
- Reflow before resize: at each breakpoint, ask if layout should reflow
|
|
116
|
+
or resize. Reflow wins.
|
|
117
|
+
- Container queries: use when component width depends on parent, not
|
|
118
|
+
viewport.
|
|
119
|
+
- Touch targets: 44x44px minimum on touch devices. 8px minimum gap
|
|
120
|
+
between targets.
|
|
121
|
+
- Density shifts: mobile gets larger targets and less dense content.
|
|
122
|
+
Desktop gets more columns and tighter spacing.
|
|
123
|
+
- Horizontal scroll banned: no element overflows container on any
|
|
124
|
+
viewport.
|
|
125
|
+
- Typography: use clamp() for font sizes. Scale with viewport.
|
|
126
|
+
- Navigation: hamburger on mobile, full nav on desktop.
|
|
127
|
+
- Tables: horizontal scroll on mobile, full table on desktop.
|
|
128
|
+
- Modals: full-screen on mobile, centered on desktop.
|
|
129
|
+
- Forms: single column on mobile, multi-column on desktop.
|
|
130
|
+
|
|
131
|
+
## Accessibility
|
|
132
|
+
|
|
133
|
+
- Color contrast: 4.5:1 for body, 3:1 for large text and UI.
|
|
134
|
+
- Focus management: every interactive element keyboard reachable. Focus
|
|
135
|
+
order follows visual order.
|
|
136
|
+
- Focus visible: 2px minimum, high contrast, visible on light and dark.
|
|
137
|
+
- ARIA: semantic HTML first. ARIA only when HTML falls short.
|
|
138
|
+
- Screen reader: decorative icons aria-hidden. Status messages
|
|
139
|
+
aria-live="polite". Errors aria-live="assertive".
|
|
140
|
+
- Touch targets: 44x44px on mobile, 32x32px on desktop.
|
|
141
|
+
- Forms: every input has label. Error linked with aria-describedby.
|
|
142
|
+
Required uses required attribute.
|
|
143
|
+
- Landmarks: header, main, nav, footer, aside. One main per page. Skip
|
|
144
|
+
links for keyboard users.
|
|
145
|
+
- Error prevention: destructive actions have confirmation. Validation
|
|
146
|
+
before submission.
|
|
147
|
+
|
|
148
|
+
## Motion
|
|
149
|
+
|
|
150
|
+
- Spring curves: cubic-bezier(0.16, 1, 0.3, 1). No ease-in-out.
|
|
151
|
+
- Durations: 200ms in, 150ms out. Micro means micro.
|
|
152
|
+
- Animate transform and opacity only. Layout animations stutter.
|
|
153
|
+
- One motion per event. Two springs competing reads as glitch.
|
|
154
|
+
- Exits exist. No one-frame vanishes.
|
|
155
|
+
- State lands first. Motion is polish on top.
|
|
156
|
+
- Interruptible: next event cancels current. Nobody waits.
|
|
157
|
+
- Reduced motion: all states instant. No springs, no entrances.
|
|
158
|
+
- Animation state machine: Idle, Entering, Entered, Active, Exiting,
|
|
159
|
+
Exited, Disabled, Error, Loading, Updating. See Animation state
|
|
160
|
+
machine in build.md.
|
|
161
|
+
|
|
162
|
+
## Iconography
|
|
163
|
+
|
|
164
|
+
- Families: Phosphor, Radix, Tabler, or Doton. One family per product.
|
|
165
|
+
- Stroke weight: 1.5px for data-dense, 2px for marketing.
|
|
166
|
+
- Sizing: 16px inline, 20px headers, 24px standalone, 32px+ feature.
|
|
167
|
+
- Filled vs outline: filled for active/selected, outline for default.
|
|
168
|
+
- Duo-tone: primary filled, secondary outline.
|
|
169
|
+
- Triple-tone: three opacity stops for illustrations, not navigation.
|
|
170
|
+
- Decoration limit: one decorative icon per component max.
|
|
171
|
+
- Accessibility: decorative icons aria-hidden. Meaningful icons have
|
|
172
|
+
aria-label or title.
|
|
173
|
+
|
|
174
|
+
## DESIGN.md (when a design system doc is asked for)
|
|
175
|
+
|
|
176
|
+
Ten mandatory sections:
|
|
177
|
+
|
|
178
|
+
1. Visual theme and atmosphere: density, variance, motion bands.
|
|
179
|
+
2. Color palette and roles: descriptive name, hex, functional role,
|
|
180
|
+
light/dark variants, semantic colors.
|
|
181
|
+
3. Typography: families, scale, usage rules, responsive behavior.
|
|
182
|
+
4. Component stylings: each component with its states, variants,
|
|
183
|
+
composition patterns.
|
|
184
|
+
5. Layout principles: grid, containers, responsive behavior, breakpoints.
|
|
185
|
+
6. Motion and interaction: curves, durations, state machine, what
|
|
186
|
+
animates.
|
|
187
|
+
7. Accessibility: contrast, focus, ARIA, keyboard, screen reader.
|
|
188
|
+
8. Dark mode: CSS variable architecture, color adjustments, testing.
|
|
189
|
+
9. Iconography: family, stroke weight, sizing, variants, usage rules.
|
|
190
|
+
10. Anti-patterns: the banned list for this project.
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
# Verify (the finish gate)
|
|
2
|
+
|
|
3
|
+
Nothing ships without this gate. Evidence classes: [capture] screenshot
|
|
4
|
+
at the stated viewport, [dom] computed style or DOM check, [code]
|
|
5
|
+
source with file:line. Assertions are not evidence.
|
|
6
|
+
|
|
7
|
+
## The gate
|
|
8
|
+
|
|
9
|
+
1. Seven viewports render without overflow: 1440, 1280, 1024, 768, 640,
|
|
10
|
+
390, 375. [capture]
|
|
11
|
+
2. Hierarchy changes per class, not just shrinks: desktop full chrome,
|
|
12
|
+
tablet reduced secondary chrome, mobile one-column with primary
|
|
13
|
+
action first. A squeezed desktop is a failed adaptation. [capture]
|
|
14
|
+
3. No surface renders blank: every list, panel, search, trash has empty,
|
|
15
|
+
loading, and error states. [dom]
|
|
16
|
+
4. Error states explain what happened and give a recovery action. [dom,
|
|
17
|
+
code]
|
|
18
|
+
5. No P0 or P1 issues remain. [code, dom]
|
|
19
|
+
6. Feedback matches the mechanism table. [code]
|
|
20
|
+
7. Keyboard: Escape exits transient states, focus never gets trapped,
|
|
21
|
+
no mouse-only controls. [code, dom]
|
|
22
|
+
8. First-run guidance exists and self-disappears. [capture]
|
|
23
|
+
9. prefers-reduced-motion respected. [code]
|
|
24
|
+
10. The 10-minute journey runs clean at every step. [per-step result]
|
|
25
|
+
11. Lint and build pass. [command output]
|
|
26
|
+
|
|
27
|
+
Per class also verify: nav collapse, hero reflow, multi-column
|
|
28
|
+
fallbacks, touch targets at 44px minimum, nothing scrolls horizontally,
|
|
29
|
+
container-queried components at their narrowest realistic container.
|
|
30
|
+
|
|
31
|
+
Accessibility, responsive, dark mode, and copy each have a dedicated
|
|
32
|
+
gate. See references/accessibility.md, references/responsive.md,
|
|
33
|
+
references/dark-mode.md, references/copy.md.
|
|
34
|
+
|
|
35
|
+
Zero failures to declare done. Fix and re-run the failed rows. If no
|
|
36
|
+
browser tooling exists, say "visual verification was NOT performed" and
|
|
37
|
+
downgrade captures to dom and code. Never skip silently.
|