@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,116 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: impeccable
|
|
3
|
+
description: Use when the user wants to design, redesign, shape, critique, audit, polish, clarify, distill, harden, optimize, adapt, animate, colorize, extract, or otherwise improve a frontend interface. Covers websites, landing pages, dashboards, product UI, app shells, components, forms, settings, onboarding, and empty states. Handles UX review, visual hierarchy, information architecture, cognitive load, accessibility, performance, responsive behavior, theming, anti-patterns, typography, fonts, spacing, layout, alignment, color, motion, micro-interactions, UX copy, error states, edge cases, i18n, and reusable design systems or tokens. Also use for bland designs that need to become bolder or more delightful, loud designs that should become quieter, live browser iteration on UI elements, or ambitious visual effects that should feel technically extraordinary. Not for backend-only or non-UI tasks.
|
|
4
|
+
version: 4.1.1
|
|
5
|
+
user-invocable: true
|
|
6
|
+
argument-hint: "[shape · audit|critique · animate|bolder|colorize|delight|layout|overdrive|quieter|typeset · adapt|clarify|distill · harden|onboard|optimize|polish · init|document|extract|live] [target]"
|
|
7
|
+
license: Apache 2.0
|
|
8
|
+
allowed-tools:
|
|
9
|
+
- Bash(npx impeccable *)
|
|
10
|
+
- Bash(node .opencode/skills/impeccable/scripts/*)
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
## House rules (owned, not negotiable)
|
|
14
|
+
|
|
15
|
+
These rules sit above every command in this skill. They are my voice. If a
|
|
16
|
+
reference or command below suggests something that breaks a rule, the rule
|
|
17
|
+
wins. This block is applied on top of upstream by the sync, so it survives
|
|
18
|
+
every re-vendor. See WHY.md for the reasoning.
|
|
19
|
+
|
|
20
|
+
1. **No purple slop.** No purple gradients, no glowing buttons, no oversized
|
|
21
|
+
rounded cards, no screens that could pass for what any AI tool outputs by
|
|
22
|
+
default. If the work looks generated, it is wrong.
|
|
23
|
+
2. **Looks bought, not generated.** Before finishing any screen, ask one
|
|
24
|
+
question: if Apple or Google shipped this, would it look out of place?
|
|
25
|
+
Their shared vocabulary is the target: one clear action per screen,
|
|
26
|
+
simple buttons, flat or barely rounded, no glow, one accent color,
|
|
27
|
+
whitespace over borders and shadows, real type hierarchy.
|
|
28
|
+
3. **Eye-catching is calm plus one detail.** One surprising moment per
|
|
29
|
+
screen: a perfect number, a sharp shape, one bold layout move. Not
|
|
30
|
+
decoration everywhere.
|
|
31
|
+
4. **Plain English, short and sweet.** Write so a 5th grader gets it. Lists
|
|
32
|
+
over paragraphs. `name: what it does`. Outcomes over internals.
|
|
33
|
+
5. **No em dashes. Anywhere. Never.** Not in files, diffs, docs, comments,
|
|
34
|
+
or chat. Use commas or periods. One em dash means the deliverable fails
|
|
35
|
+
review.
|
|
36
|
+
6. **Tailwind, strictly.** Component-based Tailwind CSS. Every visual
|
|
37
|
+
decision is a Tailwind utility or a small composable component. Raw CSS
|
|
38
|
+
only when Tailwind cannot do what the design needs, and only with a
|
|
39
|
+
reason.
|
|
40
|
+
|
|
41
|
+
Upstream content follows unchanged.
|
|
42
|
+
|
|
43
|
+
This skill gives you the tools and permission to create design that earns to be called out-of-distribution craft: Whereas before, your design work would have been safe, timid and measured, you now approach every design task as a award-winning design director with impeccable understanding for what makes exceptional design work: production-grade code, peak creativity, a clear POV, deep understanding of the needs of the client and users, and exceptional craft.
|
|
44
|
+
|
|
45
|
+
Core principles:
|
|
46
|
+
- Go all out. No hedging, no shortcuts. The deliverable must be complete (except assets the user must provide).
|
|
47
|
+
- Dream big and bold. Distinct, beautiful, outstanding and highly inspiring work.
|
|
48
|
+
- Verify in bounded passes, not a loop, and the ceiling covers the whole cycle: screenshots, defect scans, micro-edits, and rebuilds alike. Build fully, inspect once with a batched round (desktop and mobile together on the web; the shipped device classes on a native platform), fix everything it shows in one batch, confirm with at most one more round, and stop polishing. Open-ended self-QA burns the user's money doing worse what the finish handoffs do better.
|
|
49
|
+
|
|
50
|
+
## Setup
|
|
51
|
+
|
|
52
|
+
1. Run `node <skill-base-dir>/scripts/context.mjs` once per session, where `<skill-base-dir>` is the loaded base directory the runtime reports for this skill; keep cwd at the user's project. That base directory resolves every `node .opencode/skills/impeccable/scripts/...` command in this skill and its references, and `.opencode/skills/impeccable/scripts` is the fallback only when the runtime reports no base directory. Pass a named source file or route as `--target <path>`. It loads PRODUCT.md, DESIGN.md, the matching surface brief, and native-platform guidance when applicable; follow its directives and do not rerun it.
|
|
53
|
+
2. Before acting, load the one playbook that owns the request: the Commands table's reference for an explicit or clearly implied sub-command, or [reference/new-work.md](reference/new-work.md) for a new surface or replacement visual world. Then inspect the target and at least one representative source of incumbent visual truth (tokens, theme, CSS, component, or asset) before editing.
|
|
54
|
+
3. After analysis and direction are resolved, load [reference/craft-floor.md](reference/craft-floor.md) immediately before editing UI. It carries the quality floor, the absolute bans, and the reflexes no detector catches. Do not load it for planning-only work.
|
|
55
|
+
|
|
56
|
+
## How to design
|
|
57
|
+
|
|
58
|
+
- **The brief wins.** Honor pinned aesthetics, eras, materials, fonts, and palettes even when they conflict with a saturated-pattern warning. Redirecting a clear brief toward your taste is failure.
|
|
59
|
+
- **Refinement preserves; redesign replaces.** Refinement keeps the incumbent identity, behavior, copy, and everything outside scope. Ask before replacing factual copy or adding claims. Redesign keeps product truth, content, function, native affordances, and constraints, but treats the old look as evidence and anti-reference; choose a replacement world in new-work and replace DESIGN.md. Never split the difference into polish on the discarded look.
|
|
60
|
+
- **Visual authority is evidence, not a filename.** Missing DESIGN.md alone does not make a project greenfield; new-work decides whether to preserve, expand, or replace the incumbent world.
|
|
61
|
+
|
|
62
|
+
## Modes
|
|
63
|
+
|
|
64
|
+
The mode names what the visitor's success looks like on this surface.
|
|
65
|
+
|
|
66
|
+
- **Persuade:** the visitor decides and acts; design is the product. Landing pages, marketing, campaigns, pricing. Earn attention and action. Ship real imagery when the brief needs it; follow the committed world, not category habit.
|
|
67
|
+
- **Operate:** the visitor completes a task. App UI, dashboards, editors, admin, settings, tools. Scanability, consistency, native expectations, and the real usage scene outrank expression. Brand lives in precise details.
|
|
68
|
+
- **Read:** the visitor understands something. Docs, articles, guides, help, changelogs. Structure for comprehension, then make the reading experience worth staying in.
|
|
69
|
+
- **Experience:** the visitor is inside the work itself. Portfolios, galleries, showcases. Let the artifact lead from the first viewport; the interface recedes.
|
|
70
|
+
|
|
71
|
+
Choose the mode from the requested surface, not the product, and persist it only in that surface brief. A tool's landing page is still Persuade; a fashion house's documentation is still Read; a docs index is Read, not Persuade. See [new-work.md](reference/new-work.md) for new surfaces and [operate.md](reference/operate.md) for deeper Operate/Read guidance.
|
|
72
|
+
|
|
73
|
+
## Commands
|
|
74
|
+
|
|
75
|
+
| Command | Category | Description | Reference |
|
|
76
|
+
|---|---|---|---|
|
|
77
|
+
| `craft [feature]` | Build | Deprecated alias for an ordinary new-work request | [reference/craft.md](reference/craft.md) |
|
|
78
|
+
| `shape [feature]` | Build | Plan UX/UI before writing code | [reference/shape.md](reference/shape.md) |
|
|
79
|
+
| `init` | Build | Capture durable product context in PRODUCT.md | [reference/init.md](reference/init.md) |
|
|
80
|
+
| `document` | Build | Generate DESIGN.md from existing project code | [reference/document.md](reference/document.md) |
|
|
81
|
+
| `extract [target]` | Build | Pull reusable tokens and components into design system | [reference/extract.md](reference/extract.md) |
|
|
82
|
+
| `critique [target]` | Evaluate | UX design review with heuristic scoring | [reference/critique.md](reference/critique.md) |
|
|
83
|
+
| `audit [target]` | Evaluate | Technical quality checks (a11y, perf, responsive) | [reference/audit.md](reference/audit.md) · native: [reference/audit.native.md](reference/audit.native.md) |
|
|
84
|
+
| `polish [target]` | Refine | Final quality pass before shipping | [reference/polish.md](reference/polish.md) |
|
|
85
|
+
| `bolder [target]` | Refine | Amplify safe or bland designs | [reference/bolder.md](reference/bolder.md) |
|
|
86
|
+
| `quieter [target]` | Refine | Tone down aggressive or overstimulating designs | [reference/quieter.md](reference/quieter.md) |
|
|
87
|
+
| `distill [target]` | Refine | Strip to essence, remove complexity | [reference/distill.md](reference/distill.md) |
|
|
88
|
+
| `harden [target]` | Refine | Production-ready: errors, i18n, edge cases | [reference/harden.md](reference/harden.md) |
|
|
89
|
+
| `onboard [target]` | Refine | Design first-run flows, empty states, activation | [reference/onboard.md](reference/onboard.md) |
|
|
90
|
+
| `animate [target]` | Enhance | Add purposeful animations and motion | [reference/animate.md](reference/animate.md) |
|
|
91
|
+
| `colorize [target]` | Enhance | Add strategic color to monochromatic UIs | [reference/colorize.md](reference/colorize.md) |
|
|
92
|
+
| `typeset [target]` | Enhance | Improve typography hierarchy and fonts | [reference/typeset.md](reference/typeset.md) |
|
|
93
|
+
| `layout [target]` | Enhance | Fix spacing, rhythm, and visual hierarchy | [reference/layout.md](reference/layout.md) |
|
|
94
|
+
| `delight [target]` | Enhance | Add personality and memorable touches | [reference/delight.md](reference/delight.md) |
|
|
95
|
+
| `overdrive [target]` | Enhance | Push past conventional limits | [reference/overdrive.md](reference/overdrive.md) |
|
|
96
|
+
| `clarify [target]` | Fix | Improve UX copy, labels, and error messages | [reference/clarify.md](reference/clarify.md) |
|
|
97
|
+
| `adapt [target]` | Fix | Adapt for different devices and screen sizes | [reference/adapt.md](reference/adapt.md) · native: [reference/adapt.native.md](reference/adapt.native.md) |
|
|
98
|
+
| `optimize [target]` | Fix | Diagnose and fix UI performance | [reference/optimize.md](reference/optimize.md) |
|
|
99
|
+
| `live` | Iterate | Visual variant mode: pick elements in the browser, generate alternatives | [reference/live.md](reference/live.md) |
|
|
100
|
+
|
|
101
|
+
Routing:
|
|
102
|
+
|
|
103
|
+
- **No argument:** read [routing.md](reference/routing.md) and present its context-aware menu; never auto-run a command.
|
|
104
|
+
- **Explicit or clearly implied command:** load its reference (native variant on native platforms) and follow it. Ask once if two commands fit.
|
|
105
|
+
- **Otherwise:** treat the request as general design work. Missing PRODUCT.md routes a new surface or replacement world through init, then new-work; a narrow refinement of existing code proceeds on the incumbent implementation as context.mjs directs, offering init afterward rather than blocking on it.
|
|
106
|
+
- `teach` aliases `init`. `craft` is a deprecated alias for ordinary new-work and adds nothing. `shape` owns task discovery, then enters new-work only for visual-world and surface-concept decisions.
|
|
107
|
+
|
|
108
|
+
After init writes PRODUCT.md, resume without rerunning `context.mjs`; init loads the native platform reference itself when the platform it recorded is `ios`, `android`, or `adaptive`.
|
|
109
|
+
|
|
110
|
+
**Pin / Unpin:** `node .opencode/skills/impeccable/scripts/pin.mjs <pin|unpin> <command>` creates or removes a standalone `/<command>` shortcut. Report the script's result concisely; relay stderr verbatim on error.
|
|
111
|
+
|
|
112
|
+
**Hooks:** `/impeccable hooks <on|off|status|ignore-rule|ignore-file|ignore-value|reset>` manages the design detector hook for this project (auto-runs the detector after UI file edits and surfaces findings). Load [reference/hooks.md](reference/hooks.md) when the user invokes it with any argument.
|
|
113
|
+
|
|
114
|
+
**Doctor:** `/impeccable doctor` reports and repairs drift between this project's Impeccable artifacts (PRODUCT.md, DESIGN.md and its sidecar, config, surface briefs, the hook) and what this version reads. Load [reference/doctor.md](reference/doctor.md) when the user invokes it, or when they ask what is out of date, stale, or needs refreshing. A `CONTEXT_STALE` directive in Setup's output is the cheap subset of the same report; act on it there per its own instructions rather than running doctor unasked.
|
|
115
|
+
|
|
116
|
+
**Never repair drift as a side effect of a design task.** A `CONTEXT_STALE` finding is reported, not acted on, unless the user asks. The one exception is a finding marked `auto`, which the next write to that file performs anyway.
|
|
@@ -0,0 +1,318 @@
|
|
|
1
|
+
> **Additional context needed**: target platforms/devices and usage contexts.
|
|
2
|
+
|
|
3
|
+
Adapt an existing design to a different context: another screen size, device, platform, or use case. The trap is treating adaptation as scaling. The job is rethinking the experience for the new context.
|
|
4
|
+
|
|
5
|
+
**Web only** (mobile web included). Native platforms (`ios` / `android` / `adaptive`) route to [adapt.native.md](adapt.native.md) instead; if the project is native, switch to it now.
|
|
6
|
+
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
## Assess Adaptation Challenge
|
|
10
|
+
|
|
11
|
+
Understand what needs adaptation and why:
|
|
12
|
+
|
|
13
|
+
1. **Identify the source context**:
|
|
14
|
+
- What was it designed for originally? (Desktop web? Mobile app?)
|
|
15
|
+
- What assumptions were made? (Large screen? Mouse input? Fast connection?)
|
|
16
|
+
- What works well in current context?
|
|
17
|
+
|
|
18
|
+
2. **Understand target context**:
|
|
19
|
+
- **Device**: Mobile, tablet, desktop, TV, watch, print?
|
|
20
|
+
- **Input method**: Touch, mouse, keyboard, voice, gamepad?
|
|
21
|
+
- **Screen constraints**: Size, resolution, orientation?
|
|
22
|
+
- **Connection**: Fast wifi, slow 3G, offline?
|
|
23
|
+
- **Usage context**: On-the-go vs desk, quick glance vs focused reading?
|
|
24
|
+
- **User expectations**: What do users expect on this platform?
|
|
25
|
+
|
|
26
|
+
3. **Identify adaptation challenges**:
|
|
27
|
+
- What won't fit? (Content, navigation, features)
|
|
28
|
+
- What won't work? (Hover states on touch, tiny touch targets)
|
|
29
|
+
- What's inappropriate? (Desktop patterns on mobile, mobile patterns on desktop)
|
|
30
|
+
|
|
31
|
+
**CRITICAL**: Adaptation is rethinking the experience for the new context, not scaling pixels.
|
|
32
|
+
|
|
33
|
+
## Plan Adaptation Strategy
|
|
34
|
+
|
|
35
|
+
Create context-appropriate strategy:
|
|
36
|
+
|
|
37
|
+
### Mobile Adaptation (Desktop → Mobile)
|
|
38
|
+
|
|
39
|
+
**Layout Strategy**:
|
|
40
|
+
- Single column instead of multi-column
|
|
41
|
+
- Vertical stacking instead of side-by-side
|
|
42
|
+
- Full-width components instead of fixed widths
|
|
43
|
+
- Bottom navigation instead of top/side navigation
|
|
44
|
+
|
|
45
|
+
**Interaction Strategy**:
|
|
46
|
+
- Touch targets 44x44px minimum (not hover-dependent)
|
|
47
|
+
- Swipe gestures where appropriate (lists, carousels)
|
|
48
|
+
- Bottom sheets instead of dropdowns
|
|
49
|
+
- Thumbs-first design (controls within thumb reach)
|
|
50
|
+
- Larger tap areas with more spacing
|
|
51
|
+
|
|
52
|
+
**Content Strategy**:
|
|
53
|
+
- Progressive disclosure (don't show everything at once)
|
|
54
|
+
- Prioritize primary content (secondary content in tabs/accordions)
|
|
55
|
+
- Shorter text (more concise)
|
|
56
|
+
- Larger text (16px minimum)
|
|
57
|
+
|
|
58
|
+
**Navigation Strategy**:
|
|
59
|
+
- Hamburger menu or bottom navigation
|
|
60
|
+
- Reduce navigation complexity
|
|
61
|
+
- Sticky headers for context
|
|
62
|
+
- Back button in navigation flow
|
|
63
|
+
|
|
64
|
+
### Tablet Adaptation (Hybrid Approach)
|
|
65
|
+
|
|
66
|
+
**Layout Strategy**:
|
|
67
|
+
- Two-column layouts (not single or three-column)
|
|
68
|
+
- Side panels for secondary content
|
|
69
|
+
- Master-detail views (list + detail)
|
|
70
|
+
- Adaptive based on orientation (portrait vs landscape)
|
|
71
|
+
|
|
72
|
+
**Interaction Strategy**:
|
|
73
|
+
- Support both touch and pointer
|
|
74
|
+
- Touch targets 44x44px but allow denser layouts than phone
|
|
75
|
+
- Side navigation drawers
|
|
76
|
+
- Multi-column forms where appropriate
|
|
77
|
+
|
|
78
|
+
### Desktop Adaptation (Mobile → Desktop)
|
|
79
|
+
|
|
80
|
+
**Layout Strategy**:
|
|
81
|
+
- Multi-column layouts (use horizontal space)
|
|
82
|
+
- Side navigation always visible
|
|
83
|
+
- Multiple information panels simultaneously
|
|
84
|
+
- Fixed widths with max-width constraints (don't stretch to 4K)
|
|
85
|
+
|
|
86
|
+
**Interaction Strategy**:
|
|
87
|
+
- Hover states for additional information
|
|
88
|
+
- Keyboard shortcuts
|
|
89
|
+
- Right-click context menus
|
|
90
|
+
- Drag and drop where helpful
|
|
91
|
+
- Multi-select with Shift/Cmd
|
|
92
|
+
|
|
93
|
+
**Content Strategy**:
|
|
94
|
+
- Show more information upfront (less progressive disclosure)
|
|
95
|
+
- Data tables with many columns
|
|
96
|
+
- Richer visualizations
|
|
97
|
+
- More detailed descriptions
|
|
98
|
+
|
|
99
|
+
### Print Adaptation (Screen → Print)
|
|
100
|
+
|
|
101
|
+
**Layout Strategy**:
|
|
102
|
+
- Page breaks at logical points
|
|
103
|
+
- Remove navigation, footer, interactive elements
|
|
104
|
+
- Black and white (or limited color)
|
|
105
|
+
- Proper margins for binding
|
|
106
|
+
|
|
107
|
+
**Content Strategy**:
|
|
108
|
+
- Expand shortened content (show full URLs, hidden sections)
|
|
109
|
+
- Add page numbers, headers, footers
|
|
110
|
+
- Include metadata (print date, page title)
|
|
111
|
+
- Convert charts to print-friendly versions
|
|
112
|
+
|
|
113
|
+
### Email Adaptation (Web → Email)
|
|
114
|
+
|
|
115
|
+
**Layout Strategy**:
|
|
116
|
+
- Narrow width (600px max)
|
|
117
|
+
- Single column only
|
|
118
|
+
- Inline CSS (no external stylesheets)
|
|
119
|
+
- Table-based layouts (for email client compatibility)
|
|
120
|
+
|
|
121
|
+
**Interaction Strategy**:
|
|
122
|
+
- Large, obvious CTAs (buttons not text links)
|
|
123
|
+
- No hover states (not reliable)
|
|
124
|
+
- Deep links to web app for complex interactions
|
|
125
|
+
|
|
126
|
+
## Implement Adaptations
|
|
127
|
+
|
|
128
|
+
Apply changes systematically:
|
|
129
|
+
|
|
130
|
+
### Responsive Breakpoints
|
|
131
|
+
|
|
132
|
+
Choose appropriate breakpoints:
|
|
133
|
+
- Mobile: 320px-767px
|
|
134
|
+
- Tablet: 768px-1023px
|
|
135
|
+
- Desktop: 1024px+
|
|
136
|
+
- Or content-driven breakpoints (where design breaks)
|
|
137
|
+
|
|
138
|
+
### Layout Adaptation Techniques
|
|
139
|
+
|
|
140
|
+
- **CSS Grid/Flexbox**: Reflow layouts automatically
|
|
141
|
+
- **Container Queries**: Adapt based on container, not viewport
|
|
142
|
+
- **`clamp()`**: Fluid sizing between min and max
|
|
143
|
+
- **Media queries**: Different styles for different contexts
|
|
144
|
+
- **Display properties**: Show/hide elements per context
|
|
145
|
+
|
|
146
|
+
### Touch Adaptation
|
|
147
|
+
|
|
148
|
+
- Increase touch target sizes (44x44px minimum)
|
|
149
|
+
- Add more spacing between interactive elements
|
|
150
|
+
- Remove hover-dependent interactions
|
|
151
|
+
- Add touch feedback (ripples, highlights)
|
|
152
|
+
- Consider thumb zones (easier to reach bottom than top)
|
|
153
|
+
|
|
154
|
+
### Content Adaptation
|
|
155
|
+
|
|
156
|
+
- Use `display: none` sparingly (still downloads)
|
|
157
|
+
- Progressive enhancement (core content first, enhancements on larger screens)
|
|
158
|
+
- Lazy loading for off-screen content
|
|
159
|
+
- Responsive images (`srcset`, `picture` element)
|
|
160
|
+
|
|
161
|
+
### Navigation Adaptation
|
|
162
|
+
|
|
163
|
+
- Transform complex nav to hamburger/drawer on mobile
|
|
164
|
+
- Bottom nav bar for mobile apps
|
|
165
|
+
- Persistent side navigation on desktop
|
|
166
|
+
- Breadcrumbs on smaller screens for context
|
|
167
|
+
|
|
168
|
+
**IMPORTANT**: Test on real devices. Device emulation in DevTools is helpful but not perfect.
|
|
169
|
+
|
|
170
|
+
**NEVER**:
|
|
171
|
+
- Hide core functionality on mobile (if it matters, make it work)
|
|
172
|
+
- Assume desktop = powerful device (consider accessibility, older machines)
|
|
173
|
+
- Use different information architecture across contexts (confusing)
|
|
174
|
+
- Break user expectations for platform (mobile users expect mobile patterns)
|
|
175
|
+
- Forget landscape orientation on mobile/tablet
|
|
176
|
+
- Use generic breakpoints blindly (use content-driven breakpoints)
|
|
177
|
+
- Ignore touch on desktop (many desktop devices have touch)
|
|
178
|
+
|
|
179
|
+
## Verify Adaptations
|
|
180
|
+
|
|
181
|
+
Test thoroughly across contexts:
|
|
182
|
+
|
|
183
|
+
- **Real devices**: Test on actual phones, tablets, desktops
|
|
184
|
+
- **Different orientations**: Portrait and landscape
|
|
185
|
+
- **Different browsers**: Safari, Chrome, Firefox, Edge
|
|
186
|
+
- **Different OS**: iOS, Android, Windows, macOS
|
|
187
|
+
- **Different input methods**: Touch, mouse, keyboard
|
|
188
|
+
- **Edge cases**: Very small screens (320px), very large screens (4K)
|
|
189
|
+
- **Slow connections**: Test on throttled network
|
|
190
|
+
|
|
191
|
+
**Custom controls** (sliders, drag surfaces, scrollable control strips): a before/after slider can pass every width check above and still refuse to drag on iOS, so exercise each one in scope in the same batched round as the checks above:
|
|
192
|
+
|
|
193
|
+
- **Primary gesture**: Tap it and confirm it responds as designed, then drag it with the target input method; the drag must complete, not just start
|
|
194
|
+
- **Scroll across it**: A swipe along the page's scroll axis across the control scrolls the page or container without activating it; a drag that starts on the control along its axis moves the control, not the page. Neither failure throws an error, so try both
|
|
195
|
+
- **Evidence**: Say what produced the evidence: an emulated viewport, synthesized touch input through a browser tool, which engine ran it (Chromium is not Safari), or a physical device. Screenshots and resized viewports verify layout, never a gesture. Name what stayed untested and move on; unreachable hardware is a reported gap, not a blocker
|
|
196
|
+
|
|
197
|
+
When the adaptation feels native to each context, hand off to `/impeccable polish` for the final pass.
|
|
198
|
+
|
|
199
|
+
---
|
|
200
|
+
|
|
201
|
+
## Reference Material
|
|
202
|
+
|
|
203
|
+
The sections below were previously `responsive-design.md` and live inline now so the adapt flow has its deep responsive reference in one place.
|
|
204
|
+
|
|
205
|
+
### Responsive Design
|
|
206
|
+
|
|
207
|
+
#### Mobile-First: Write It Right
|
|
208
|
+
|
|
209
|
+
Start with base styles for mobile, use `min-width` queries to layer complexity. Desktop-first (`max-width`) means mobile loads unnecessary styles first.
|
|
210
|
+
|
|
211
|
+
#### Breakpoints: Content-Driven
|
|
212
|
+
|
|
213
|
+
Don't chase device sizes; let content tell you where to break. Start narrow, stretch until design breaks, add breakpoint there. Three breakpoints usually suffice (640, 768, 1024px). Use `clamp()` for fluid values without breakpoints.
|
|
214
|
+
|
|
215
|
+
#### Detect Input Method, Not Just Screen Size
|
|
216
|
+
|
|
217
|
+
**Screen size doesn't tell you input method.** A laptop with touchscreen, a tablet with keyboard. Use pointer and hover queries:
|
|
218
|
+
|
|
219
|
+
```css
|
|
220
|
+
/* Fine pointer (mouse, trackpad) */
|
|
221
|
+
@media (pointer: fine) {
|
|
222
|
+
.button { padding: 8px 16px; }
|
|
223
|
+
}
|
|
224
|
+
|
|
225
|
+
/* Coarse pointer (touch, stylus) */
|
|
226
|
+
@media (pointer: coarse) {
|
|
227
|
+
.button { padding: 12px 20px; } /* Larger touch target */
|
|
228
|
+
}
|
|
229
|
+
|
|
230
|
+
/* Device supports hover */
|
|
231
|
+
@media (hover: hover) {
|
|
232
|
+
.card:hover { transform: translateY(-2px); }
|
|
233
|
+
}
|
|
234
|
+
|
|
235
|
+
/* Device doesn't support hover (touch) */
|
|
236
|
+
@media (hover: none) {
|
|
237
|
+
.card { /* No hover state - use active instead */ }
|
|
238
|
+
}
|
|
239
|
+
```
|
|
240
|
+
|
|
241
|
+
**Critical**: Don't rely on hover for functionality. Touch users can't hover.
|
|
242
|
+
|
|
243
|
+
#### Safe Areas: Handle the Notch
|
|
244
|
+
|
|
245
|
+
Modern phones have notches, rounded corners, and home indicators. Use `env()`:
|
|
246
|
+
|
|
247
|
+
```css
|
|
248
|
+
body {
|
|
249
|
+
padding-top: env(safe-area-inset-top);
|
|
250
|
+
padding-bottom: env(safe-area-inset-bottom);
|
|
251
|
+
padding-left: env(safe-area-inset-left);
|
|
252
|
+
padding-right: env(safe-area-inset-right);
|
|
253
|
+
}
|
|
254
|
+
|
|
255
|
+
/* With fallback */
|
|
256
|
+
.footer {
|
|
257
|
+
padding-bottom: max(1rem, env(safe-area-inset-bottom));
|
|
258
|
+
}
|
|
259
|
+
```
|
|
260
|
+
|
|
261
|
+
**Enable viewport-fit** in your meta tag:
|
|
262
|
+
```html
|
|
263
|
+
<meta name="viewport" content="width=device-width, initial-scale=1, viewport-fit=cover">
|
|
264
|
+
```
|
|
265
|
+
|
|
266
|
+
#### Responsive Images: Get It Right
|
|
267
|
+
|
|
268
|
+
##### srcset with Width Descriptors
|
|
269
|
+
|
|
270
|
+
```html
|
|
271
|
+
<img
|
|
272
|
+
src="hero-800.jpg"
|
|
273
|
+
srcset="
|
|
274
|
+
hero-400.jpg 400w,
|
|
275
|
+
hero-800.jpg 800w,
|
|
276
|
+
hero-1200.jpg 1200w
|
|
277
|
+
"
|
|
278
|
+
sizes="(max-width: 768px) 100vw, 50vw"
|
|
279
|
+
alt="Hero image"
|
|
280
|
+
>
|
|
281
|
+
```
|
|
282
|
+
|
|
283
|
+
**How it works**:
|
|
284
|
+
- `srcset` lists available images with their actual widths (`w` descriptors)
|
|
285
|
+
- `sizes` tells the browser how wide the image will display
|
|
286
|
+
- Browser picks the best file based on viewport width AND device pixel ratio
|
|
287
|
+
|
|
288
|
+
##### Picture Element for Art Direction
|
|
289
|
+
|
|
290
|
+
When you need different crops/compositions (not just resolutions):
|
|
291
|
+
|
|
292
|
+
```html
|
|
293
|
+
<picture>
|
|
294
|
+
<source media="(min-width: 768px)" srcset="wide.jpg">
|
|
295
|
+
<source media="(max-width: 767px)" srcset="tall.jpg">
|
|
296
|
+
<img src="fallback.jpg" alt="...">
|
|
297
|
+
</picture>
|
|
298
|
+
```
|
|
299
|
+
|
|
300
|
+
#### Layout Adaptation Patterns
|
|
301
|
+
|
|
302
|
+
**Navigation**: Three stages: hamburger + drawer on mobile, horizontal compact on tablet, full with labels on desktop. **Tables**: Transform to cards on mobile using `display: block` and `data-label` attributes. **Progressive disclosure**: Use `<details>/<summary>` for content that can collapse on mobile.
|
|
303
|
+
|
|
304
|
+
#### Testing: Don't Trust DevTools Alone
|
|
305
|
+
|
|
306
|
+
DevTools device emulation is useful for layout but misses:
|
|
307
|
+
|
|
308
|
+
- Actual touch interactions
|
|
309
|
+
- Real CPU/memory constraints
|
|
310
|
+
- Network latency patterns
|
|
311
|
+
- Font rendering differences
|
|
312
|
+
- Browser chrome/keyboard appearances
|
|
313
|
+
|
|
314
|
+
**Test on at least**: One real iPhone, one real Android, a tablet if relevant. Cheap Android phones reveal performance issues you'll never see on simulators.
|
|
315
|
+
|
|
316
|
+
---
|
|
317
|
+
|
|
318
|
+
**Avoid**: Desktop-first design. Device detection instead of feature detection. Separate mobile/desktop codebases. Ignoring tablet and landscape. Assuming all mobile devices are powerful.
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
> **Additional context needed**: target platforms/devices and usage contexts.
|
|
2
|
+
|
|
3
|
+
Adapt an existing **native** design (`ios` / `android` / `adaptive`) to a different context: another device class, orientation, platform, or origin. The trap is treating adaptation as scaling. The job is rethinking the experience for the new context, inside the platform conventions of [ios.md](ios.md) / [android.md](android.md); read the target platform's reference before planning if Setup hasn't already.
|
|
4
|
+
|
|
5
|
+
## Assess Adaptation Challenge
|
|
6
|
+
|
|
7
|
+
1. **Source context**: what was it designed for, and what assumptions did it make? (Phone-only? Portrait-only? One platform's idioms? A website?)
|
|
8
|
+
2. **Target context**: which device class (phone, tablet, foldable), orientation, platform, and usage posture (one-handed on the go vs two-handed at rest)?
|
|
9
|
+
3. **What breaks**: navigation that doesn't fit the target, layouts that stretch instead of restructure, gestures or controls that don't exist there?
|
|
10
|
+
|
|
11
|
+
## Adaptation Strategies
|
|
12
|
+
|
|
13
|
+
### Phone → Tablet (iPad / large screens)
|
|
14
|
+
|
|
15
|
+
- **Restructure, don't stretch.** A scaled-up phone UI on a tablet is the failure mode. Use size classes (iOS) / window size classes (Android) to switch structure.
|
|
16
|
+
- **Navigation changes shape**: tab bar stays or becomes a sidebar on iPad; Android navigation bar becomes a rail or drawer on expanded width.
|
|
17
|
+
- **Use the width**: split view / master-detail (list + detail side by side), multi-column grids, popovers where phones used sheets.
|
|
18
|
+
- **Multitasking is a size, not an edge case**: iPad Split View and Android multi-window can hand you a phone-width window on a tablet; size-class-driven layout handles both for free.
|
|
19
|
+
|
|
20
|
+
### Orientation & foldables
|
|
21
|
+
|
|
22
|
+
- Landscape restructures (side-by-side panes, repositioned controls); never clip or letterbox. Lock orientation only when the task truly demands it.
|
|
23
|
+
- Foldables (Android): react to posture and hinge via window size classes; test folded, unfolded, and tabletop.
|
|
24
|
+
|
|
25
|
+
### Platform → platform (iOS ↔ Android)
|
|
26
|
+
|
|
27
|
+
Translate idioms; never transplant them:
|
|
28
|
+
|
|
29
|
+
| iOS | Android |
|
|
30
|
+
|---|---|
|
|
31
|
+
| Tab bar | Navigation bar / rail / drawer |
|
|
32
|
+
| Edge-swipe back, back chevron | Predictive Back gesture / button |
|
|
33
|
+
| Switch, segmented control, system pickers | Material switch, chips, Material pickers |
|
|
34
|
+
| Action sheet | Bottom sheet / Material dialog |
|
|
35
|
+
| SF Symbols, SF Pro, Dynamic Type | Material Symbols, Roboto, sp scaling |
|
|
36
|
+
| Semantic system colors, materials | Material color roles, tonal elevation |
|
|
37
|
+
| System push/sheet transitions | Container transform, shared-axis, fade-through |
|
|
38
|
+
|
|
39
|
+
Rebuild navigation and controls in the target's vocabulary; carry over the brand's expressive layer (palette intent, type accent, motion personality) through the target's theming system.
|
|
40
|
+
|
|
41
|
+
### Web → native (porting a website or web app)
|
|
42
|
+
|
|
43
|
+
Reconform, don't reflow. Replace web navigation with the platform's model, HTML-shaped controls with platform controls, hover affordances with touch-first ones, and px-based type with Dynamic Type / sp. Then treat the result to the full platform reference; the slop test there is the acceptance bar.
|
|
44
|
+
|
|
45
|
+
## Implement & Verify
|
|
46
|
+
|
|
47
|
+
- Drive structure from **size classes / window size classes**, never from device-model checks.
|
|
48
|
+
- Respect safe areas and window insets in every new configuration (notch, hinge, status bar, keyboard).
|
|
49
|
+
- Test on simulators for breadth, then real hardware for truth: at least one phone and one tablet per shipped platform, both orientations, split-screen where supported.
|
|
50
|
+
|
|
51
|
+
When the adaptation feels native to each context, hand off to `/impeccable polish` for the final pass.
|
|
52
|
+
|
|
53
|
+
**NEVER**:
|
|
54
|
+
- Ship a stretched phone layout on a tablet
|
|
55
|
+
- Port one platform's controls or navigation onto the other
|
|
56
|
+
- Hide core functionality on smaller devices (if it matters, make it work)
|
|
57
|
+
- Lock orientation to dodge a layout bug
|
|
58
|
+
- Trust simulators alone (posture, gestures, and performance need hardware)
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
# Android platform
|
|
2
|
+
|
|
3
|
+
For native Android apps: Jetpack Compose, Android Views, React Native, Expo, Flutter shipping to Android hardware.
|
|
4
|
+
|
|
5
|
+
On native, the visitor mode narrows what expression may override. Material Design 3 governs structure, navigation, and interaction in every mode; brand expresses through Material's theming (color roles, type scale, shape, motion). A Material-everywhere cross-platform app that also ships to iPhone still owes iOS its OS guarantees on that hardware: safe-area insets, Reduce Motion, edge-swipe back.
|
|
6
|
+
|
|
7
|
+
## The Android slop test
|
|
8
|
+
|
|
9
|
+
Would a fluent Android user trust this app, or trip on off-spec components? The most common tell is an iOS app wearing Android's skin: a bottom-only navigation copied from iPhone, a back arrow that ignores the system Back gesture, Cupertino-shaped switches and dialogs. Material 3 is the rulebook; follow its components and theme the brand through it.
|
|
10
|
+
|
|
11
|
+
## Layout & structure
|
|
12
|
+
|
|
13
|
+
- **Material navigation, matched to size.** Navigation bar (bottom, 3-5 destinations) on compact width; navigation rail or drawer on expanded width. Never ship a phone bottom-bar untouched on a tablet.
|
|
14
|
+
- **System Back always works.** Honor the predictive Back gesture and Back button; never trap the user or hijack the gesture.
|
|
15
|
+
- **Edge-to-edge with window insets.** Apply the status bar, navigation bar, display cutout, and IME insets so content never hides behind system bars or the keyboard.
|
|
16
|
+
- **Top app bar for screen context**; pair with a FAB when the screen has a single primary action.
|
|
17
|
+
|
|
18
|
+
## Touch targets
|
|
19
|
+
|
|
20
|
+
- **48×48 dp minimum** for every touch target, with at least 8 dp between them.
|
|
21
|
+
|
|
22
|
+
## Typography
|
|
23
|
+
|
|
24
|
+
- **Material type scale.** Display, Headline, Title, Body, Label roles (large/medium/small each). Map text to roles; never hand-pick sizes per screen.
|
|
25
|
+
- **Roboto is the system face**; theme a brand face in through the type scale, keeping body, labels, and controls legible and consistent.
|
|
26
|
+
- **sp units, never fixed px**, so type follows the system font-size setting.
|
|
27
|
+
|
|
28
|
+
## Color & theming
|
|
29
|
+
|
|
30
|
+
- **Material color roles** (primary, on-primary, surface, surface-variant, secondary-container, outline, error). Role tokens resolve light/dark and contrast variants automatically; raw hex breaks there.
|
|
31
|
+
- **Dynamic Color (Material You)** where it fits: derive the scheme from the user's wallpaper on Android 12+, with a static fallback.
|
|
32
|
+
- **Dark theme is a first-class scheme.** Design and test it; never a quick invert.
|
|
33
|
+
- **Tonal elevation.** Convey elevation through the standard surface tonal levels (plus shadow where appropriate); no arbitrary drop shadows.
|
|
34
|
+
|
|
35
|
+
## Components & motion
|
|
36
|
+
|
|
37
|
+
- **Material components.** Buttons (filled / tonal / outlined / text), FAB, switches, chips, snackbars, bottom sheets, Material dialogs, navigation bar/rail/drawer. Never port iOS controls or invent equivalents.
|
|
38
|
+
- **One FAB, one primary action.** Never stack FABs or spend one on a secondary task.
|
|
39
|
+
- **Snackbars for transient feedback** (actionable when useful, never a toast for that); dialogs only for decisions that must interrupt.
|
|
40
|
+
- **Material motion patterns.** Container transform, shared-axis, fade-through, with standard easing and durations; honor the system Remove animations setting with a crossfade or instant cut.
|
|
41
|
+
|
|
42
|
+
## Verifying the build
|
|
43
|
+
|
|
44
|
+
- **Screenshots come from the emulator or a connected device, never a browser.** Build and install, then capture with `adb exec-out screencap -p > <path>` (pick a device with `adb -s <serial>` when several are attached). Capture every device class the app ships to, at least one phone and, when tablets are a target, one tablet, and write the files where the review flow expects them.
|
|
45
|
+
- **Dark theme and font scale belong in the pass.** `adb shell cmd uimode night yes` flips the theme; `adb shell settings put system font_scale 1.3` (restore `1.0` after) catches the clipped labels a fixed layout hides; with several targets attached, the capture's `-s <serial>` goes on these commands too.
|
|
46
|
+
- **Emulators give breadth; gestures, refresh rates, and performance need hardware.** Say which one produced the evidence.
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
> **Additional context needed**: performance constraints.
|
|
2
|
+
|
|
3
|
+
Use motion to explain state, relationship, and hierarchy, or to create one authored moment the surface has earned. Decoration without purpose is animation debt.
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## Visitor mode
|
|
8
|
+
|
|
9
|
+
- **Persuade + Experience:** motion may carry the voice. Prefer one rehearsed focal sequence to repeated section reveals.
|
|
10
|
+
- **Operate + Read:** motion serves feedback, state, and continuity. Keep routine transitions fast and do not make users wait through page-load choreography.
|
|
11
|
+
- **Native (`ios` / `android` / `adaptive`):** follow the Motion section of [ios.md](ios.md) or [android.md](android.md), including the platform's Reduce Motion behavior. Do not apply the web tooling below.
|
|
12
|
+
|
|
13
|
+
## Find the job
|
|
14
|
+
|
|
15
|
+
Inspect the existing motion language, interaction states, target devices, and performance budget. Find only the places where motion would:
|
|
16
|
+
|
|
17
|
+
- acknowledge an action;
|
|
18
|
+
- make a state change or spatial relationship legible;
|
|
19
|
+
- preserve continuity through navigation or layout change;
|
|
20
|
+
- direct attention at a meaningful moment;
|
|
21
|
+
- embody the selected visual world.
|
|
22
|
+
|
|
23
|
+
Ask only when a material constraint cannot be inferred. Do not animate a static area merely because it exists.
|
|
24
|
+
|
|
25
|
+
## Set the motion thesis
|
|
26
|
+
|
|
27
|
+
Write a short plan before implementation:
|
|
28
|
+
|
|
29
|
+
- **Focal moment:** the one sequence or interaction that deserves authorship, if any.
|
|
30
|
+
- **Continuity:** the state, layout, or navigation changes that need explanation.
|
|
31
|
+
- **Feedback:** the controls and outcomes that need acknowledgment.
|
|
32
|
+
- **Budget:** which effects may be expensive and how often they run.
|
|
33
|
+
|
|
34
|
+
The focal moment must come from this product and surface concept. A generic fade-and-rise, hover lift, parallax layer, or scroll reveal is not a thesis.
|
|
35
|
+
|
|
36
|
+
## Choose material by meaning
|
|
37
|
+
|
|
38
|
+
Transform and opacity are reliable foundations, not the entire palette. Choose properties for what the transition communicates:
|
|
39
|
+
|
|
40
|
+
- **Continuity and relationship:** shared-element motion, FLIP-style transforms, view transitions, or deliberate spatial movement.
|
|
41
|
+
- **Focus and depth:** bounded blur, filter, backdrop, light, or shadow changes.
|
|
42
|
+
- **Reveal and composition:** masks, clip paths, cropping, or controlled occlusion.
|
|
43
|
+
- **Material and energy:** color, gradient position, texture, distortion, or shader effects when the world and runtime support them.
|
|
44
|
+
- **State and feedback:** the smallest change that makes cause and result unmistakable.
|
|
45
|
+
|
|
46
|
+
Do not stack techniques for spectacle. One strong material idea, carried through the focal sequence and quiet supporting states, is usually enough.
|
|
47
|
+
|
|
48
|
+
Sibling stagger is appropriate when a list appears as a list. Cap the total delay, and never reinterpret every scrolled section as a staggered list.
|
|
49
|
+
|
|
50
|
+
## Timing and easing
|
|
51
|
+
|
|
52
|
+
Timing should express distance and consequence:
|
|
53
|
+
|
|
54
|
+
| Duration | Typical use |
|
|
55
|
+
|---|---|
|
|
56
|
+
| 100–150 ms | immediate feedback |
|
|
57
|
+
| 150–300 ms | routine state change |
|
|
58
|
+
| 300–500 ms | layout, overlay, or view transition |
|
|
59
|
+
| 500–800 ms | a deliberately authored focal entrance |
|
|
60
|
+
|
|
61
|
+
Exit faster than entrance. Use natural deceleration such as `cubic-bezier(0.16, 1, 0.3, 1)` for confident arrivals; do not use bounce or elastic curves by reflex. Long feedback feels like latency.
|
|
62
|
+
|
|
63
|
+
## Implement to the runtime
|
|
64
|
+
|
|
65
|
+
- Use CSS transitions and keyframes for declarative state and bounded sequences.
|
|
66
|
+
- Use Web Animations API or the project's existing motion library for interruption, sequencing, and dynamic values.
|
|
67
|
+
- Use View Transitions or shared-element techniques when continuity across states is the point.
|
|
68
|
+
- Use scroll-driven motion only when the scroll relationship itself carries meaning, with a robust fallback.
|
|
69
|
+
- Do not add a dependency for an effect the existing stack can express cleanly.
|
|
70
|
+
|
|
71
|
+
Keep content visible in the default state so failed scripts do not hide the page. Avoid casually animating layout-driving properties such as `width`, `height`, `top`, `left`, and margins; use FLIP, transforms, or grid techniques when appropriate. Bound blur, filter, shadow, canvas, and shader work to isolated regions. Apply `will-change` only during known animation. Measure on target viewports and devices rather than assuming transform means fast.
|
|
72
|
+
|
|
73
|
+
## Accessibility and control
|
|
74
|
+
|
|
75
|
+
Respect autoplay and sound preferences. Any nonessential loop must stop when offscreen or hidden.
|
|
76
|
+
|
|
77
|
+
Every web animation needs a `prefers-reduced-motion` path with an intentional alternative. Remove or reduce spatial movement while preserving opacity, color, and state transitions that carry meaning. Reduced motion means fewer and gentler animations, not disabling all motion; feedback that confirms an action should remain legible.
|
|
78
|
+
|
|
79
|
+
## Verify
|
|
80
|
+
|
|
81
|
+
- The focal motion is specific to the selected world and surface.
|
|
82
|
+
- Every supporting animation explains feedback, state, or relationship.
|
|
83
|
+
- Interruption and repeated use behave correctly.
|
|
84
|
+
- Desktop, mobile, and keyboard paths remain usable.
|
|
85
|
+
- The `prefers-reduced-motion` path reduces movement without erasing meaningful feedback or state changes.
|
|
86
|
+
- Expensive effects stay smooth on the target device.
|
|
87
|
+
- Removing an animation would lose meaning or authored character, not merely decoration.
|
|
88
|
+
|
|
89
|
+
When motion earns its place, hand off to `/impeccable polish` for the final pass.
|