@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,436 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: ui-engineering
|
|
3
|
+
description: The complete UI engineering orchestrator. Load when user says "build the FE", "build the UI", "build the frontend", "make the UI", "design the frontend", or any request to build/design a frontend. This skill owns the quality of the interface. It does not wait for design instructions. It makes the decisions, builds the product, and ships finished UI.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# UI Engineering: Master Orchestrator
|
|
7
|
+
|
|
8
|
+
**One job:** When user wants frontend/UI, this skill runs the complete process. It asks, plans, loads sub-skills, and ships masterpiece quality.
|
|
9
|
+
|
|
10
|
+
---
|
|
11
|
+
|
|
12
|
+
## Product-Ready UI Standard
|
|
13
|
+
|
|
14
|
+
This is the default quality bar for every frontend/UI task. It sits
|
|
15
|
+
above every phase. It is the operating principle, not a checklist item.
|
|
16
|
+
|
|
17
|
+
The objective is not merely to implement the requested UI.
|
|
18
|
+
|
|
19
|
+
The objective is to deliver a UI that feels like a real, intentional,
|
|
20
|
+
production-ready product.
|
|
21
|
+
|
|
22
|
+
The user should not need to supervise routine design decisions. When
|
|
23
|
+
requirements are sufficiently clear, make reasonable product and design
|
|
24
|
+
decisions autonomously. Do not repeatedly ask the user to choose colors,
|
|
25
|
+
spacing, typography, component shapes, interaction states, responsive
|
|
26
|
+
behavior, or animation details unless the choice materially affects the
|
|
27
|
+
product or business requirements.
|
|
28
|
+
|
|
29
|
+
### Own the interface
|
|
30
|
+
|
|
31
|
+
Treat yourself as both the implementer and the product designer.
|
|
32
|
+
|
|
33
|
+
Do not interpret "build a dashboard" as "create some cards that
|
|
34
|
+
resemble a dashboard." Instead determine:
|
|
35
|
+
|
|
36
|
+
- What is the user's primary goal?
|
|
37
|
+
- What is the primary action?
|
|
38
|
+
- What information matters most?
|
|
39
|
+
- What should be visible immediately?
|
|
40
|
+
- What can be secondary or progressively disclosed?
|
|
41
|
+
- What happens when there is no data?
|
|
42
|
+
- What happens while loading?
|
|
43
|
+
- What happens when something fails?
|
|
44
|
+
- What happens after success?
|
|
45
|
+
- How does the workflow work on mobile?
|
|
46
|
+
- Which interactions should feel especially good?
|
|
47
|
+
|
|
48
|
+
Make those decisions yourself unless the project requirements require
|
|
49
|
+
user input.
|
|
50
|
+
|
|
51
|
+
### Product-ready means more than visually polished
|
|
52
|
+
|
|
53
|
+
A UI is not complete simply because it has good colors, typography,
|
|
54
|
+
and spacing. A product-ready interface has:
|
|
55
|
+
|
|
56
|
+
1. Clear product identity
|
|
57
|
+
2. Clear information hierarchy
|
|
58
|
+
3. A coherent interaction model
|
|
59
|
+
4. Consistent component behavior
|
|
60
|
+
5. Complete UI states
|
|
61
|
+
6. Realistic content
|
|
62
|
+
7. Responsive behavior
|
|
63
|
+
8. Accessible interaction states
|
|
64
|
+
9. Intentional motion
|
|
65
|
+
10. A coherent visual language
|
|
66
|
+
|
|
67
|
+
Do not stop at "the page looks good." The finished result should feel
|
|
68
|
+
like someone deliberately designed the product.
|
|
69
|
+
|
|
70
|
+
### Complete the states
|
|
71
|
+
|
|
72
|
+
Never design only the happy path. For every meaningful interactive
|
|
73
|
+
surface, consider:
|
|
74
|
+
|
|
75
|
+
- initial
|
|
76
|
+
- loading
|
|
77
|
+
- populated
|
|
78
|
+
- empty
|
|
79
|
+
- error
|
|
80
|
+
- disabled
|
|
81
|
+
- hover
|
|
82
|
+
- focus
|
|
83
|
+
- active
|
|
84
|
+
- selected
|
|
85
|
+
- success
|
|
86
|
+
- partial or limited
|
|
87
|
+
- permission denied
|
|
88
|
+
- offline where relevant
|
|
89
|
+
|
|
90
|
+
Empty states should explain what happened and what the user can do
|
|
91
|
+
next. Errors should be actionable. Loading states should preserve
|
|
92
|
+
layout where practical.
|
|
93
|
+
|
|
94
|
+
### Use realistic content
|
|
95
|
+
|
|
96
|
+
Avoid lorem ipsum and obviously fake placeholder content unless the
|
|
97
|
+
task specifically requires placeholder data. Use realistic names,
|
|
98
|
+
titles, labels, descriptions, dates, statuses, numbers, file names,
|
|
99
|
+
and notifications. Copy is part of the interface. A polished layout
|
|
100
|
+
with obviously artificial content still looks unfinished.
|
|
101
|
+
|
|
102
|
+
### Establish interaction consistency
|
|
103
|
+
|
|
104
|
+
The same interaction should behave the same way throughout the
|
|
105
|
+
product. Dropdowns open consistently. Menus have consistent spacing
|
|
106
|
+
and positioning. Destructive actions follow the same confirmation
|
|
107
|
+
pattern. Buttons have consistent height and feedback. Inputs have
|
|
108
|
+
consistent focus treatment.
|
|
109
|
+
|
|
110
|
+
### Do not make everything a card
|
|
111
|
+
|
|
112
|
+
Cards are not a default layout primitive. Use cards when grouping
|
|
113
|
+
content benefits from a distinct surface. Otherwise prefer whitespace,
|
|
114
|
+
typography, dividers, lists, tables, inline controls, sections, and
|
|
115
|
+
grouped controls. If every element is boxed, nothing has hierarchy.
|
|
116
|
+
|
|
117
|
+
### Responsive design is not an afterthought
|
|
118
|
+
|
|
119
|
+
Do not simply stack desktop elements vertically. Design mobile
|
|
120
|
+
intentionally. Determine what remains visible, what becomes a drawer,
|
|
121
|
+
what becomes sticky, what becomes horizontally scrollable, what
|
|
122
|
+
disappears, what changes priority, how navigation changes, and how
|
|
123
|
+
dense information is transformed.
|
|
124
|
+
|
|
125
|
+
### Motion should communicate something
|
|
126
|
+
|
|
127
|
+
Animation is optional. Poor animation makes a product feel cheaper,
|
|
128
|
+
not better. Use motion when it explains hierarchy, communicates state,
|
|
129
|
+
guides attention, confirms an action, establishes spatial
|
|
130
|
+
relationships, makes an interaction feel natural, or reinforces product
|
|
131
|
+
identity. Respect prefers-reduced-motion. Do not add animation merely
|
|
132
|
+
because an animation library is available.
|
|
133
|
+
|
|
134
|
+
### Visual restraint
|
|
135
|
+
|
|
136
|
+
Avoid decoration without purpose. Do not automatically use gradients,
|
|
137
|
+
glows, glassmorphism, excessive shadows, giant rounded cards, floating
|
|
138
|
+
blobs, particles, excessive borders, or excessive animation. These
|
|
139
|
+
techniques can be excellent when they belong to the product. They
|
|
140
|
+
should never be the default definition of "modern." A simple interface
|
|
141
|
+
with excellent hierarchy is better than a visually busy interface
|
|
142
|
+
trying to appear sophisticated.
|
|
143
|
+
|
|
144
|
+
### Marketing pages need product storytelling
|
|
145
|
+
|
|
146
|
+
For marketing websites, do not fall into hero, three generic cards,
|
|
147
|
+
testimonials, CTA. Instead create a visual narrative. A strong default
|
|
148
|
+
structure is: statement, product proof, core workflow, explanation,
|
|
149
|
+
deeper product detail, trust and proof, final action. Whenever
|
|
150
|
+
possible, show the real product rather than replacing it with generic
|
|
151
|
+
illustrations.
|
|
152
|
+
|
|
153
|
+
### Autonomous productization pass
|
|
154
|
+
|
|
155
|
+
Before declaring the UI complete, stop and review it as a product
|
|
156
|
+
designer. Ask:
|
|
157
|
+
|
|
158
|
+
- Does this feel like a specific product or a generic AI-generated
|
|
159
|
+
interface?
|
|
160
|
+
- Can a new user understand what matters within a few seconds?
|
|
161
|
+
- Is the primary action obvious?
|
|
162
|
+
- Is information organized without becoming cluttered?
|
|
163
|
+
- Do similar controls behave and look the same?
|
|
164
|
+
- Are loading, empty, error, disabled, hover, focus, selected, and
|
|
165
|
+
success states handled?
|
|
166
|
+
- Does the copy feel real?
|
|
167
|
+
- Does mobile feel intentionally designed?
|
|
168
|
+
- Can keyboard users understand and operate the interface?
|
|
169
|
+
- Does animation improve comprehension or interaction?
|
|
170
|
+
- Can anything be removed without reducing usability?
|
|
171
|
+
- Could this screenshot be mistaken for a generic template?
|
|
172
|
+
|
|
173
|
+
If the answer to the last question is yes, continue refining. Do not
|
|
174
|
+
merely report the problems. Fix them.
|
|
175
|
+
|
|
176
|
+
### The final quality rule
|
|
177
|
+
|
|
178
|
+
Do not finish when "the requested components exist." Finish when "the
|
|
179
|
+
requested workflow works and the interface feels like a coherent
|
|
180
|
+
product."
|
|
181
|
+
|
|
182
|
+
The user should not have to provide a second round of instructions
|
|
183
|
+
saying "make it look more polished," "add empty states," "make mobile
|
|
184
|
+
better," "fix the spacing," "add hover states," or "make it feel less
|
|
185
|
+
generic." Anticipate these requirements and handle them during the
|
|
186
|
+
initial implementation.
|
|
187
|
+
|
|
188
|
+
The standard is:
|
|
189
|
+
|
|
190
|
+
FUNCTIONAL
|
|
191
|
+
-> USABLE
|
|
192
|
+
-> PRODUCT-READY
|
|
193
|
+
-> POLISHED
|
|
194
|
+
-> DISTINCTIVE
|
|
195
|
+
|
|
196
|
+
Default target: PRODUCT-READY + POLISHED. Go beyond that when the
|
|
197
|
+
product and available time justify it.
|
|
198
|
+
|
|
199
|
+
---
|
|
200
|
+
|
|
201
|
+
## The Quality Bar (Non-Negotiable)
|
|
202
|
+
|
|
203
|
+
Reference these. If the output doesn't feel like these, it's not done.
|
|
204
|
+
|
|
205
|
+
| Tier | References | What to Steal |
|
|
206
|
+
|------|------------|---------------|
|
|
207
|
+
| **SaaS Gold Standard** | Linear, Raycast, Stripe, Vercel, Arc, Attio/Cron | Command palette, page transitions, cursor states, scroll reveals, gradient morphs, geometric motion, micro-copy + micro-animation |
|
|
208
|
+
| **Agency/Showcase** | Awwwards SOTD, Locomotive, Basement.studio, Cuberto, Resn, Active Theory | GSAP/ScrollTrigger, smooth scroll (Lenis), parallax, WebGL, Rive |
|
|
209
|
+
| **Pattern Libraries** | Mobbin, Godly, SiteInspire | Real-world patterns, not hero-section porn |
|
|
210
|
+
|
|
211
|
+
**Libraries to use (via `pick-ui-library` + `ask-*` skills):**
|
|
212
|
+
- Primitives: `base-ui` (dialogs, popovers, selects, menus)
|
|
213
|
+
- Toasts: `Sonner`
|
|
214
|
+
- Motion: `motion.dev` (Framer Motion) + `GSAP` + `ScrollTrigger` + `Lenis`
|
|
215
|
+
- Command palette: `cmdk`
|
|
216
|
+
- Forms: `react-hook-form` + `zod`
|
|
217
|
+
- Tables: `TanStack Table`
|
|
218
|
+
- Virtual lists: `Virtuoso`
|
|
219
|
+
- Drawers: `Vaul`
|
|
220
|
+
- Interactive vectors: `Rive`
|
|
221
|
+
|
|
222
|
+
---
|
|
223
|
+
|
|
224
|
+
## Phase 0: Clarify (Mandatory: Never Skip)
|
|
225
|
+
|
|
226
|
+
Before ANY code, ask these. One round. Get answers.
|
|
227
|
+
|
|
228
|
+
```markdown
|
|
229
|
+
## UI Engineering Brief
|
|
230
|
+
|
|
231
|
+
**1. What is this?** (Landing page, dashboard, app shell, settings, onboarding, canvas, etc.)
|
|
232
|
+
|
|
233
|
+
**2. Who is it for?** (Devs, consumers, enterprise, internal tool)
|
|
234
|
+
|
|
235
|
+
**3. Vibe in one word?** (Clinical, playful, dense, editorial, brutal, calm, sharp)
|
|
236
|
+
|
|
237
|
+
**4. Animation dial?** (0 = none, 1 = micro only, 2 = meaningful transitions, 3 = showcase/motion-heavy)
|
|
238
|
+
|
|
239
|
+
**5. Must-have interactions?** (Command palette, drag-drop, canvas, real-time sync, keyboard shortcuts, etc.)
|
|
240
|
+
|
|
241
|
+
**6. Existing stack?** (Framework, styling, motion lib already installed: check package.json)
|
|
242
|
+
|
|
243
|
+
**7. Dark mode?** (Yes/No/System)
|
|
244
|
+
|
|
245
|
+
**8. Accessibility bar?** (WCAG AA default, higher if specified)
|
|
246
|
+
```
|
|
247
|
+
|
|
248
|
+
**If user gives vague answers, push back with concrete options.** "Clinical like Linear? Playful like Arc? Dense like Bloomberg terminal?" Show reference screenshots if needed.
|
|
249
|
+
|
|
250
|
+
---
|
|
251
|
+
|
|
252
|
+
## Phase 1: Direction & Tokens (Load `ui` + `house-style`)
|
|
253
|
+
|
|
254
|
+
- `house-style` = law (philosophy, restraint, no purple slop)
|
|
255
|
+
- `ui` skill runs: Pick direction → Design system → Build screen → Verify
|
|
256
|
+
- Output: palette, type pairing, spacing, radius, shadow, motion character
|
|
257
|
+
|
|
258
|
+
**Token budget (constraint):**
|
|
259
|
+
- 1 accent color, 1 gray family, 1 radius scale, 1 icon family, 1 stroke weight, 1 motion curve family
|
|
260
|
+
- To add somewhere, remove elsewhere
|
|
261
|
+
|
|
262
|
+
---
|
|
263
|
+
|
|
264
|
+
## Phase 2: Component Architecture (Load `pick-ui-library`)
|
|
265
|
+
|
|
266
|
+
For EACH interaction needed, invoke `pick-ui-library` to get the right library, then load its `ask-*` skill.
|
|
267
|
+
|
|
268
|
+
| Interaction | Pattern Skill | Library Skill |
|
|
269
|
+
|-------------|---------------|---------------|
|
|
270
|
+
| Dialogs, sheets, popovers, menus, selects | `ask-modal` | `ask-base-ui` |
|
|
271
|
+
| Toasts, notifications, loading states | `ask-toast` | `ask-sonner` |
|
|
272
|
+
| Transitions, springs, scroll animations, gestures | `ask-animation` | `ask-motion` |
|
|
273
|
+
| Command palette (⌘K) | `ask-command-menu` | `ask-cmdk` |
|
|
274
|
+
| Forms, validation, server actions | `ask-form` | `ask-rhf` |
|
|
275
|
+
| Data tables, sorting, filtering, virtualization | `ask-table` | `ask-tanstack-table` |
|
|
276
|
+
| Long lists, infinite scroll | `ask-virtual-list` | `ask-virtuoso` |
|
|
277
|
+
| Drawers (mobile sheets) | `ask-drawer` | `ask-vaul` |
|
|
278
|
+
|
|
279
|
+
**Rule:** Never pick a library directly. Always go through `pick-ui-library` → it recommends → load the `ask-*` skill for implementation.
|
|
280
|
+
|
|
281
|
+
---
|
|
282
|
+
|
|
283
|
+
## Phase 3: Motion Design (Load `motion`)
|
|
284
|
+
|
|
285
|
+
`motion` skill runs: Name it → Decide → Build → Review
|
|
286
|
+
|
|
287
|
+
**House-style motion rules (law):**
|
|
288
|
+
- Fast, physical, quiet, purposeful
|
|
289
|
+
- State lands first. Nobody waits on a spring.
|
|
290
|
+
- Animate `transform` and `opacity` only. Layout animations stutter.
|
|
291
|
+
- Nothing loops forever.
|
|
292
|
+
- `prefers-reduced-motion: reduce` = instant state changes.
|
|
293
|
+
- One motion per event. Pick the element that carries the change.
|
|
294
|
+
- 200ms in, 150ms out. Spring curves (`cubic-bezier(0.16, 1, 0.3, 1)`), not keywords.
|
|
295
|
+
- Exits exist. Whatever appears animated leaves animated.
|
|
296
|
+
|
|
297
|
+
**For showcase tier (dial 3):** Add `GSAP` + `ScrollTrigger` + `Lenis` via `ask-motion`.
|
|
298
|
+
|
|
299
|
+
---
|
|
300
|
+
|
|
301
|
+
## Phase 4: Build & Verify (Load `impeccable`)
|
|
302
|
+
|
|
303
|
+
`impeccable` commands for each screen/component:
|
|
304
|
+
- `audit`: full UX/UI review against craft bar
|
|
305
|
+
- `polish`: micro-interactions, hover states, focus states, error states
|
|
306
|
+
- `animate`: add purposeful motion
|
|
307
|
+
- `verify`: finish gate (mandatory before ship)
|
|
308
|
+
|
|
309
|
+
**Finish gate checklist (from `impeccable/references/verify.md`):**
|
|
310
|
+
- [ ] One clear action per screen
|
|
311
|
+
- [ ] Color in small doses (1 accent)
|
|
312
|
+
- [ ] Whitespace separates, not borders/shadows
|
|
313
|
+
- [ ] Real type hierarchy (display, body, hint: not 5 bold sizes)
|
|
314
|
+
- [ ] Feedback matches action (press = visual state, done = quiet status, destructive = confirmation)
|
|
315
|
+
- [ ] Dark mode works (both themes, contrast, no inversion)
|
|
316
|
+
- [ ] Reduced motion works
|
|
317
|
+
- [ ] No em dashes in visible text
|
|
318
|
+
- [ ] Accessibility: keyboard nav, ARIA, focus visible, contrast, screen reader
|
|
319
|
+
- [ ] Responsive: 7 viewports, reflow not resize, touch targets 44px
|
|
320
|
+
- [ ] Forms: labels above, validate on blur, errors below, loading state
|
|
321
|
+
- [ ] Loading and skeletons: skeleton before spinner, progressive loading
|
|
322
|
+
- [ ] Component states: all 9 states defined (Default, Hover, Focus, Active, Disabled, Loading, Error, Empty, Selected)
|
|
323
|
+
- [ ] Design tokens: semantic naming, light/dark variants, no orphans
|
|
324
|
+
- [ ] i18n: text expansion handled, RTL tested, locale formatting
|
|
325
|
+
- [ ] Performance: CLS under 0.1, LCP under 2.5s, images optimized
|
|
326
|
+
- [ ] Mobile: bottom sheets, swipe actions, safe areas, thumb zone
|
|
327
|
+
- [ ] Notifications/badges: one purpose per badge, accessible
|
|
328
|
+
- [ ] Empty states: purpose clear, copy structured, CTA present
|
|
329
|
+
|
|
330
|
+
---
|
|
331
|
+
|
|
332
|
+
## Phase 5: Divergence (Optional: Load `prototype`)
|
|
333
|
+
|
|
334
|
+
When direction is ambiguous or user wants options:
|
|
335
|
+
- Load `prototype` skill
|
|
336
|
+
- Build 3 genuinely different variants on named axes (layout, density, personality, motion, interaction model)
|
|
337
|
+
- User picks winner → integrate into production
|
|
338
|
+
|
|
339
|
+
---
|
|
340
|
+
|
|
341
|
+
## Sub-Skill Loading Map
|
|
342
|
+
|
|
343
|
+
```
|
|
344
|
+
User: "Build the FE/UI"
|
|
345
|
+
│
|
|
346
|
+
├─► ui-engineering (THIS SKILL: orchestrates all)
|
|
347
|
+
│
|
|
348
|
+
├─► house-style (LAW: always loaded)
|
|
349
|
+
│
|
|
350
|
+
├─► ui (process: direction → system → build → verify)
|
|
351
|
+
│
|
|
352
|
+
├─► pick-ui-library (for each interaction needed)
|
|
353
|
+
│ ├─► ask-modal → ask-base-ui
|
|
354
|
+
│ ├─► ask-toast → ask-sonner
|
|
355
|
+
│ ├─► ask-animation → ask-motion
|
|
356
|
+
│ ├─► ask-command-menu → ask-cmdk
|
|
357
|
+
│ ├─► ask-form → ask-rhf
|
|
358
|
+
│ ├─► ask-table → ask-tanstack-table
|
|
359
|
+
│ ├─► ask-virtual-list → ask-virtuoso
|
|
360
|
+
│ └─► ask-drawer → ask-vaul
|
|
361
|
+
│
|
|
362
|
+
├─► motion (name → decide → build → review)
|
|
363
|
+
│
|
|
364
|
+
├─► impeccable (audit → polish → animate → verify)
|
|
365
|
+
│
|
|
366
|
+
└─► prototype (optional: divergence exploration)
|
|
367
|
+
│
|
|
368
|
+
└─► References: references/quality-bar.md (sites, libraries, galleries)
|
|
369
|
+
```
|
|
370
|
+
|
|
371
|
+
---
|
|
372
|
+
|
|
373
|
+
## Anti-Slop Rules (Enforced)
|
|
374
|
+
|
|
375
|
+
- **No Aceternity/Magic UI copy-paste.** Those are reference implementations. Build from primitives.
|
|
376
|
+
- **No purple gradients, glowing buttons, oversized rounded cards.** Ever.
|
|
377
|
+
- **No "hero section with floating orbs" unless the product IS orbs.**
|
|
378
|
+
- **No stagger on every load.** Stagger = rare moments only.
|
|
379
|
+
- **No scroll-jack, parallax, infinite marquee unless dial = 3 AND justified.**
|
|
380
|
+
- **Every component from primitives (base-ui) + custom composition.**
|
|
381
|
+
- **Real copy. Real data shapes. No lorem ipsum. No "Item 1, Item 2".**
|
|
382
|
+
|
|
383
|
+
---
|
|
384
|
+
|
|
385
|
+
## When User Says Vague Things: Translate
|
|
386
|
+
|
|
387
|
+
| User Says | You Do |
|
|
388
|
+
|-----------|--------|
|
|
389
|
+
| "Make it pop" | Ask: "Linear-sharp? Arc-playful? Stripe-gradient?" → Pick one |
|
|
390
|
+
| "Add animations" | Load `motion` → Run Decide phase → Build only what passes |
|
|
391
|
+
| "Nice toast" | Load `ask-toast` → `ask-sonner` → Implement with `richColors`, action buttons |
|
|
392
|
+
| "Command palette" | Load `ask-command-menu` → `ask-cmdk` → Full keyboard nav, fuzzy search |
|
|
393
|
+
| "Smooth scroll" | Load `ask-animation` → `ask-motion` → GSAP + Lenis + ScrollTrigger |
|
|
394
|
+
| "Data table" | Load `ask-table` → `ask-tanstack-table` → Virtualized, sortable, filterable |
|
|
395
|
+
| "Form" | Load `ask-form` → `ask-rhf` → Zod schema, server actions, loading states |
|
|
396
|
+
|
|
397
|
+
---
|
|
398
|
+
|
|
399
|
+
## Output Standard
|
|
400
|
+
|
|
401
|
+
Every deliverable:
|
|
402
|
+
1. **Real component**: not a demo, production-ready
|
|
403
|
+
2. **TypeScript**: strict, no `any`, discriminated unions for variants
|
|
404
|
+
3. **Tailwind**: component-based, tokens first, raw CSS only when needed
|
|
405
|
+
4. **Motion**: spring curves, reduced-motion, exits, state lands first
|
|
406
|
+
5. **Accessibility**: keyboard, ARIA, focus, contrast
|
|
407
|
+
6. **Dark mode**: `theme="system"` wired
|
|
408
|
+
7. **Tests**: if test setup exists, add tests
|
|
409
|
+
|
|
410
|
+
---
|
|
411
|
+
|
|
412
|
+
## References
|
|
413
|
+
|
|
414
|
+
- `references/quality-bar.md`: Full site/library/gallery list with what to steal
|
|
415
|
+
- `references/tokens.md`: Token templates for each vibe
|
|
416
|
+
- `references/motion-recipes.md`: Common motion patterns with code
|
|
417
|
+
- `references/component-checklist.md`: Per-component finish gate
|
|
418
|
+
- `references/navigation.md`: Sidebar vs topbar, breadcrumbs, tabs, mobile nav, nested nav
|
|
419
|
+
- `references/search.md`: Search placement, autocomplete, debounce, empty state, highlighting, keyboard nav
|
|
420
|
+
- `references/pagination.md`: Numbered vs load-more vs infinite scroll, cursor vs offset, page-size, scroll restoration
|
|
421
|
+
- `references/progress-indicators.md`: Determinate vs indeterminate, step indicators, multi-stage, bar vs spinner vs skeleton
|
|
422
|
+
- `references/avatars.md`: Sizing, fallbacks, groups, presence dots, shape consistency
|
|
423
|
+
- `references/overlays.md`: Dropdown, tooltip, popover positioning, collision handling, placement rules
|
|
424
|
+
- `references/floating-actions.md`: FAB when-to-use, single vs speed-dial, placement, conflicts
|
|
425
|
+
- `references/card-patterns.md`: Card subtypes, elevation, clickable hit area, grid vs list
|
|
426
|
+
- `references/tailwind-architecture.md`: v3 vs v4, @theme vs theme.extend, token naming, dark-mode wiring
|
|
427
|
+
- `skills/ui/ui-core/references/build.md`: Anti-slop tells, hero rules, layout rules, typography, content, icons/imagery/motion, charts, testimonials, whitespace, type scale, color semantics, component states, icons, forms, loading, skeletons, i18n, composition, keyboard shortcuts, toasts, errors, performance, mobile, badges, empty states
|
|
428
|
+
- `skills/ui/ui-core/references/verify.md`: Finish gate, accessibility, dark mode, responsive, forms, loading, states, tokens, i18n, performance, mobile, notifications, empty states
|
|
429
|
+
- `skills/ui/ui-core/references/system.md`: Constraint budget, color, type, scale, spacing, radius, shadows, components, dark mode, responsive, accessibility, motion, iconography, DESIGN.md template
|
|
430
|
+
- `skills/ui/ui-core/references/accessibility.md`: Color contrast, focus management, ARIA, keyboard, screen reader
|
|
431
|
+
- `skills/ui/ui-core/references/responsive.md`: Breakpoints, reflow vs resize, container queries, touch targets, density shifts
|
|
432
|
+
- `skills/ui/ui-core/references/dark-mode.md`: CSS variables, Tailwind strategy, system preference, color adjustments, edge cases
|
|
433
|
+
- `skills/ui/ui-core/references/copy.md`: Voice, CTAs, error messages, labels, micro-copy tone
|
|
434
|
+
- `skills/ui/ui-core/references/direction.md`: Context questions, style families, token output, refine mode, signature interaction, productization pass
|
|
435
|
+
- `skills/ui/ui-core/references/styles.md`: Minimalist and brutalist style recipes
|
|
436
|
+
- `skills/ui/ui-core/references/redesign.md`: Workflow, feel contract, audit, priority order, product-quality pass
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
# Avatar patterns
|
|
2
|
+
|
|
3
|
+
Rules for sizing, fallbacks, groups, and presence indicators. For
|
|
4
|
+
accessibility, see accessibility.md.
|
|
5
|
+
|
|
6
|
+
## Sizing scale
|
|
7
|
+
|
|
8
|
+
- xs 24px: inline with body text, comment threads, compact lists.
|
|
9
|
+
- sm 32px: default for most UI, list rows, table cells.
|
|
10
|
+
- md 40px: expanded lists, cards, comments.
|
|
11
|
+
- lg 56px: profile headers, detail pages.
|
|
12
|
+
- xl 80px: account pages, hero sections.
|
|
13
|
+
- Don't invent sizes between these. If 48px feels right, you're
|
|
14
|
+
solving a layout problem with a new size instead of using md or lg.
|
|
15
|
+
|
|
16
|
+
## Fallback hierarchy
|
|
17
|
+
|
|
18
|
+
- Level 1: user-uploaded image. Load with lazy loading, show skeleton
|
|
19
|
+
or initials while loading.
|
|
20
|
+
- Level 2: initials. Generated from the user's name. One or two
|
|
21
|
+
characters, centered, contrasting background.
|
|
22
|
+
- Level 3: generic icon. Use only when there's no name to generate
|
|
23
|
+
initials from. Don't show a silhouette for every user without a photo.
|
|
24
|
+
Initials are more personal.
|
|
25
|
+
- Fallback background: use the accent color or a muted neutral. Don't
|
|
26
|
+
use a different color per user unless the color is derived from the
|
|
27
|
+
user's name or id (deterministic, not random).
|
|
28
|
+
|
|
29
|
+
## Avatar groups / stacking
|
|
30
|
+
|
|
31
|
+
- Max 4 to 5 avatars visible before overflow. Show "+N" for the rest.
|
|
32
|
+
- Overlap: 25 to 33% overlap (avatar width minus gap). Gap should be
|
|
33
|
+
2 to 4px.
|
|
34
|
+
- Overflow indicator: "+N" in a circle, same size as avatars, muted
|
|
35
|
+
background. Don't use a square or a different shape.
|
|
36
|
+
- Order: primary user first, then by relevance or alphabetically.
|
|
37
|
+
Don't reorder on every render.
|
|
38
|
+
- Click behavior: clicking the overflow indicator shows the full list.
|
|
39
|
+
Clicking an avatar navigates to that user's profile.
|
|
40
|
+
|
|
41
|
+
## Presence / status dot
|
|
42
|
+
|
|
43
|
+
- Placement: bottom-right of the avatar, offset by 2 to 4px. Don't
|
|
44
|
+
center it. It overlaps the avatar content.
|
|
45
|
+
- Size: 25% of avatar width. 6px for sm (32px), 8px for md (40px),
|
|
46
|
+
10px for lg (56px).
|
|
47
|
+
- Colors: green (online), amber (away), red (busy), gray (offline).
|
|
48
|
+
Don't use semantic colors for non-semantic states.
|
|
49
|
+
- Border: 2px solid background color to separate dot from avatar edge.
|
|
50
|
+
Don't use a shadow. It bleeds.
|
|
51
|
+
- Don't show presence for groups. Presence is per user, not per group.
|
|
52
|
+
|
|
53
|
+
## Shape consistency
|
|
54
|
+
|
|
55
|
+
- Circle: default for user avatars. Use everywhere, no exceptions.
|
|
56
|
+
- Square: use for teams, projects, or organizations. Radius 4 to 8px,
|
|
57
|
+
same as the product's radius language.
|
|
58
|
+
- Don't mix circles and squares in the same avatar group. Pick one
|
|
59
|
+
shape per context.
|
|
60
|
+
- Rounded square: acceptable for teams, but don't use for users. User
|
|
61
|
+
avatars are circles.
|
|
62
|
+
|
|
63
|
+
## Don'ts
|
|
64
|
+
|
|
65
|
+
- Don't show broken-image icons as fallbacks. Use initials or generic
|
|
66
|
+
icon.
|
|
67
|
+
- Don't stack more than 5 avatars without an overflow indicator. Six
|
|
68
|
+
overlapping circles is noise.
|
|
69
|
+
- Don't use presence dots for non-presence states. A dot is not a
|
|
70
|
+
notification badge.
|
|
71
|
+
- Don't change avatar size within the same component. Size is per
|
|
72
|
+
context, not per user.
|
|
73
|
+
- Don't use random colors for fallback backgrounds. Derive from name
|
|
74
|
+
or id, or use a single accent.
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
# Card patterns
|
|
2
|
+
|
|
3
|
+
Rules for card subtypes, elevation, and layout. For card anti-patterns,
|
|
4
|
+
see ui-core/references/build.md.
|
|
5
|
+
|
|
6
|
+
## Card subtypes
|
|
7
|
+
|
|
8
|
+
- Media card: image or video on top, text below. Use for articles,
|
|
9
|
+
products, portfolio items. Image aspect ratio is fixed per row.
|
|
10
|
+
- Text-only card: no media, just text content. Use for settings,
|
|
11
|
+
notes, descriptions. Relies on typography and whitespace, not
|
|
12
|
+
imagery.
|
|
13
|
+
- Action card: contains one or more actions. Use for tasks, tickets,
|
|
14
|
+
requests. Action buttons are at the bottom, always visible.
|
|
15
|
+
- Stat/summary card: shows a single metric with optional context. Use
|
|
16
|
+
for dashboards, analytics. Number is dominant, label is secondary.
|
|
17
|
+
- Don't mix subtypes in the same row. A media card next to a stat card
|
|
18
|
+
is fine. A media card next to an action card in the same row needs a
|
|
19
|
+
documented reason.
|
|
20
|
+
|
|
21
|
+
## Elevation and border rules
|
|
22
|
+
|
|
23
|
+
- Elevated card: shadow or border-top. Use when the card needs to float
|
|
24
|
+
above the surface (draggable, clickable, in a grid).
|
|
25
|
+
- Flat card: border only, no shadow. Use when cards are in a dense
|
|
26
|
+
list or table. Shadow on dense cards creates visual noise.
|
|
27
|
+
- No card: use when the content doesn't need grouping. A single text
|
|
28
|
+
block doesn't need a card wrapper.
|
|
29
|
+
- Dark mode: eliminate shadow, use border. See ui-core/references/
|
|
30
|
+
dark-mode.md.
|
|
31
|
+
|
|
32
|
+
## Clickable card hit area
|
|
33
|
+
|
|
34
|
+
- The whole card is clickable, but the hit area is the card bounds plus
|
|
35
|
+
padding. Don't make the image clickable and the text unclickable, or
|
|
36
|
+
vice versa.
|
|
37
|
+
- Focus state: the whole card gets a focus ring when focused via
|
|
38
|
+
keyboard. Don't only focus the link inside.
|
|
39
|
+
- Hover state: subtle background tint or border shift. Don't lift the
|
|
40
|
+
card on hover. That's a card flip, not a hover state.
|
|
41
|
+
- Don't put interactive elements inside a clickable card unless the
|
|
42
|
+
whole card navigates. A card that navigates but contains a button is
|
|
43
|
+
ambiguous. Does the button navigate or does the card?
|
|
44
|
+
|
|
45
|
+
## Card grid vs list layout
|
|
46
|
+
|
|
47
|
+
- Grid: use when cards have similar height and the user is browsing.
|
|
48
|
+
Bento grid for mixed content, uniform grid for homogeneous content.
|
|
49
|
+
- List: use when cards are dense, have variable height, or the user is
|
|
50
|
+
scanning. List is more compact than grid.
|
|
51
|
+
- Don't force grid for variable-height content. If cards have
|
|
52
|
+
different heights, use a masonry layout or a list. A uniform grid
|
|
53
|
+
with empty space is sloppy.
|
|
54
|
+
|
|
55
|
+
## Don'ts
|
|
56
|
+
|
|
57
|
+
- Don't put cards inside cards. If you need nested content, use a
|
|
58
|
+
card with a header and body, not two cards.
|
|
59
|
+
- Don't use cards for single items. A single button doesn't need a card
|
|
60
|
+
wrapper.
|
|
61
|
+
- Don't add shadow to every card. Shadow is for hierarchy, not
|
|
62
|
+
decoration. Flat cards are valid.
|
|
63
|
+
- Don't make every card clickable. Some cards are containers, not
|
|
64
|
+
links. A card with a "Delete" button is not a link.
|
|
65
|
+
- Don't use different card styles in the same row without a documented
|
|
66
|
+
reason. Consistency within a section is a craft requirement.
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
# Floating action buttons
|
|
2
|
+
|
|
3
|
+
Rules for when a FAB earns its place, placement, and variants. For
|
|
4
|
+
mobile patterns and thumb-zone rules, see responsive.md.
|
|
5
|
+
|
|
6
|
+
## When a FAB earns its place
|
|
7
|
+
|
|
8
|
+
- FAB is for the primary action on a screen that is not in the header
|
|
9
|
+
or content. Examples: compose new email, add new item, create post.
|
|
10
|
+
- If the primary action is already visible in the header or content,
|
|
11
|
+
do not add a FAB. One primary action per screen, one place to find it.
|
|
12
|
+
- Do not use FAB for secondary actions. A FAB that says "Share" next to
|
|
13
|
+
a primary "Create" button is the wrong pattern. The secondary action
|
|
14
|
+
belongs in a menu or inline.
|
|
15
|
+
- Avoid on dense screens. FABs need whitespace to breathe. On a dense
|
|
16
|
+
dashboard, a FAB is noise.
|
|
17
|
+
|
|
18
|
+
## Single vs speed-dial
|
|
19
|
+
|
|
20
|
+
- Single FAB: use when there is one primary action. The default.
|
|
21
|
+
- Speed-dial: use when there are 2 to 4 related actions that share the
|
|
22
|
+
same context. Expands on tap, showing smaller FABs stacked.
|
|
23
|
+
- Do not use speed-dial for unrelated actions. If the actions are
|
|
24
|
+
"Save", "Share", and "Delete", they do not belong in a speed-dial.
|
|
25
|
+
Save and Share might. Delete is separate.
|
|
26
|
+
- Do not use speed-dial on mobile unless the parent FAB is clearly
|
|
27
|
+
labeled. An unlabeled FAB that expands into more unlabeled FABs is
|
|
28
|
+
unusable.
|
|
29
|
+
|
|
30
|
+
## Placement across breakpoints
|
|
31
|
+
|
|
32
|
+
- Desktop: bottom-right corner, 24px from edges. Matches the toast
|
|
33
|
+
placement zone.
|
|
34
|
+
- Tablet: bottom-right corner, 16px from edges.
|
|
35
|
+
- Mobile: bottom-right corner, 16px from edges, above the bottom nav
|
|
36
|
+
if present. If there is a bottom nav, the FAB floats above it, not
|
|
37
|
+
behind it.
|
|
38
|
+
- Do not place FAB in the top-right. That is where secondary actions and
|
|
39
|
+
menus live. FAB is primary, bottom-right.
|
|
40
|
+
- Do not cover content. The FAB should float above content, not push it
|
|
41
|
+
down. Use fixed positioning, not margin.
|
|
42
|
+
|
|
43
|
+
## Conflict rules
|
|
44
|
+
|
|
45
|
+
- Bottom nav: FAB floats above the nav, not behind it. The FAB is
|
|
46
|
+
closer to the content edge than the nav.
|
|
47
|
+
- Bottom sheet: FAB hides when a bottom sheet is open. Two floating
|
|
48
|
+
elements compete for the same space.
|
|
49
|
+
- Scroll: FAB hides on scroll down, reappears on scroll up. Do not hide
|
|
50
|
+
on scroll up. The user is moving toward the action.
|
|
51
|
+
- Do not show FAB on a screen with no primary action. If there is nothing
|
|
52
|
+
to create, there is no FAB.
|
|
53
|
+
|
|
54
|
+
## Avoid
|
|
55
|
+
|
|
56
|
+
- Do not use FAB for navigation. FAB is for creation or primary action,
|
|
57
|
+
not for moving between screens.
|
|
58
|
+
- Do not use FAB as a "more" button. If you need more actions, use a
|
|
59
|
+
menu or a bottom sheet.
|
|
60
|
+
- Do not animate FAB on every scroll event. Hide/show on scroll
|
|
61
|
+
direction change, not on every pixel.
|
|
62
|
+
- Do not use FAB on landing pages. Landing pages have one CTA in the
|
|
63
|
+
hero. A FAB implies the user is inside the product.
|
|
64
|
+
- Do not label FAB with text unless it is a speed-dial parent. FAB is
|
|
65
|
+
icon-only. If the action needs a label, it is not a FAB.
|