@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,522 @@
|
|
|
1
|
+
name: nerdev-monorepo
|
|
2
|
+
description: Turborepo + Bun monorepo structure, conventions, CI/CD, and deployment patterns from nerdev-co
|
|
3
|
+
|
|
4
|
+
# nerdev-monorepo Skill
|
|
5
|
+
|
|
6
|
+
Enforce the nerdev-co development methodology across all projects: consistent monorepo structure, file-based architecture, camelCase naming, documented code, and production-ready patterns.
|
|
7
|
+
|
|
8
|
+
> **Visual, motion, and docs standards:** This skill defines structure and operations. For UI feel (Apple/Google quality), micro-animation restraint, and documentation tone, see [`house-style`](../house-style/SKILL.md). Load both for nerdev-co projects.
|
|
9
|
+
|
|
10
|
+
> **nerdev-co skill family:** This is one of three core skills. See also [`nerdev-docs`](../nerdev-docs/SKILL.md) for development-integrated documentation (ADRs, design docs, runbooks) and [`nerdev-abstraction`](../nerdev-abstraction/SKILL.md) for interface-first, registry-based plug-and-play patterns. All three work together for nerdev-co projects.
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
## Core Principles
|
|
14
|
+
|
|
15
|
+
### 1. Monorepo Architecture (Turborepo + Bun)
|
|
16
|
+
```
|
|
17
|
+
project-root/
|
|
18
|
+
├── apps/ # Independent deployable applications
|
|
19
|
+
│ ├── frontend/ # Vite + TanStack Router (preferred) or Next.js
|
|
20
|
+
│ ├── http-backend/ # Bun + Elysia (HTTP API)
|
|
21
|
+
│ └── ws-backend/ # Bun WebSocket server
|
|
22
|
+
├── packages/ # Shared internal packages
|
|
23
|
+
│ ├── db/ # Prisma schema + migrations
|
|
24
|
+
│ ├── ui/ # Design system primitives
|
|
25
|
+
│ ├── common/ # Shared types, utils, env config
|
|
26
|
+
│ ├── shapes/ # Domain-specific types (if applicable)
|
|
27
|
+
│ ├── typescript-config/ # Shared tsconfig presets
|
|
28
|
+
│ └── eslint-config/ # Shared ESLint configs
|
|
29
|
+
├── docs/ # Architecture, features, incidents
|
|
30
|
+
├── deploy/ # Nginx, PM2, deployment scripts
|
|
31
|
+
├── scripts/ # Automation scripts
|
|
32
|
+
├── monitoring/ # Prometheus, Grafana, alert rules
|
|
33
|
+
├── turbo.json # Turborepo pipeline config
|
|
34
|
+
├── package.json # Workspace root config
|
|
35
|
+
├── tsconfig.json # Root TypeScript config
|
|
36
|
+
├── eslint.config.js # Flat ESLint config
|
|
37
|
+
├── AGENTS.md # AI agent guidance (REQUIRED)
|
|
38
|
+
├── README.md # Project overview
|
|
39
|
+
├── deploy.md # Production deployment guide
|
|
40
|
+
├── design.md # Architecture decisions & rationale
|
|
41
|
+
├── ARCHITECTURE_MINIMAP.md # Visual architecture reference
|
|
42
|
+
├── openapi.yaml # API contract (generate via script)
|
|
43
|
+
├── asyncapi.yaml # Async/Event contract (if applicable)
|
|
44
|
+
└── .env.example # Environment template (tracked)
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
### 2. Naming Conventions (camelCase Everywhere)
|
|
48
|
+
| Element | Convention | Example |
|
|
49
|
+
|---------|------------|---------|
|
|
50
|
+
| Files | camelCase.ts | `userService.ts`, `roomController.ts` |
|
|
51
|
+
| Directories | camelCase | `src/routes`, `src/components`, `src/draw` |
|
|
52
|
+
| Functions | camelCase | `getUserById`, `createRoom`, `broadcastDiff` |
|
|
53
|
+
| Variables | camelCase | `currentUser`, `roomId`, `shapeDiff` |
|
|
54
|
+
| Types/Interfaces | PascalCase | `User`, `RoomState`, `ShapeDiff` |
|
|
55
|
+
| Enums | PascalCase | `ToolType`, `UserRole` |
|
|
56
|
+
| Constants | UPPER_SNAKE_CASE | `MAX_RETRY_ATTEMPTS`, `DEFAULT_TIMEOUT` |
|
|
57
|
+
| React Components | PascalCase | `CanvasToolbar`, `RoomHeader` |
|
|
58
|
+
| CSS Classes | kebab-case | `canvas-container`, `tool-button` |
|
|
59
|
+
|
|
60
|
+
### 3. File-Based Routing (TanStack Router Preferred)
|
|
61
|
+
```
|
|
62
|
+
apps/frontend/src/routes/
|
|
63
|
+
├── __root.tsx # Root layout + providers
|
|
64
|
+
├── index.tsx # Landing page
|
|
65
|
+
├── signin.tsx # Auth pages
|
|
66
|
+
├── signup.tsx
|
|
67
|
+
└── canvas/
|
|
68
|
+
└── $roomId.tsx # Dynamic route: /canvas/:roomId
|
|
69
|
+
```
|
|
70
|
+
- Auto-generates `routeTree.gen.ts` for type-safe navigation
|
|
71
|
+
- Use loaders for data fetching
|
|
72
|
+
- Search params validated with Zod
|
|
73
|
+
|
|
74
|
+
### 4. Documented Code Standards
|
|
75
|
+
**Every file must have:**
|
|
76
|
+
```typescript
|
|
77
|
+
/**
|
|
78
|
+
* @fileoverview Brief description of what this module does
|
|
79
|
+
* @module path/to/file
|
|
80
|
+
*/
|
|
81
|
+
|
|
82
|
+
// For functions:
|
|
83
|
+
/**
|
|
84
|
+
* Description of what the function does
|
|
85
|
+
* @param paramName - Description of parameter
|
|
86
|
+
* @returns Description of return value
|
|
87
|
+
* @throws ErrorType - When this error is thrown
|
|
88
|
+
*/
|
|
89
|
+
export function functionName(paramName: Type): ReturnType {
|
|
90
|
+
// implementation
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
// For types:
|
|
94
|
+
/**
|
|
95
|
+
* Description of the type
|
|
96
|
+
* @interface TypeName
|
|
97
|
+
*/
|
|
98
|
+
export interface TypeName {
|
|
99
|
+
/** Description of property */
|
|
100
|
+
propertyName: Type;
|
|
101
|
+
}
|
|
102
|
+
```
|
|
103
|
+
|
|
104
|
+
### 5. Shared Package Patterns
|
|
105
|
+
|
|
106
|
+
#### packages/common (Required)
|
|
107
|
+
```
|
|
108
|
+
packages/common/src/
|
|
109
|
+
├── env.ts # Validated env config (Zod)
|
|
110
|
+
├── jwt.ts # JWT sign/verify utilities
|
|
111
|
+
├── types.ts # Shared domain types
|
|
112
|
+
├── response.ts # Standardized API responses
|
|
113
|
+
├── pagination.ts # Cursor/offset pagination helpers
|
|
114
|
+
├── rate-limit.ts # Sliding window rate limiter
|
|
115
|
+
└── index.ts # Barrel export
|
|
116
|
+
```
|
|
117
|
+
|
|
118
|
+
#### packages/ui (Design System)
|
|
119
|
+
```
|
|
120
|
+
packages/ui/src/
|
|
121
|
+
├── components/
|
|
122
|
+
│ ├── surface/ # SURFACE, PANEL (island surfaces)
|
|
123
|
+
│ ├── button/ # IconButton, Button variants
|
|
124
|
+
│ ├── input/ # Form inputs
|
|
125
|
+
│ └── ...
|
|
126
|
+
├── tokens/
|
|
127
|
+
│ ├── colors.ts # Semantic color tokens
|
|
128
|
+
│ ├── spacing.ts # Spacing scale
|
|
129
|
+
│ └── typography.ts # Font tokens
|
|
130
|
+
├── utils/
|
|
131
|
+
│ └── cn.ts # className merger (clsx + tailwind-merge)
|
|
132
|
+
└── index.ts
|
|
133
|
+
```
|
|
134
|
+
|
|
135
|
+
#### packages/db (Prisma)
|
|
136
|
+
```
|
|
137
|
+
packages/db/
|
|
138
|
+
├── prisma/
|
|
139
|
+
│ ├── schema.prisma # Single source of truth
|
|
140
|
+
│ └── migrations/
|
|
141
|
+
├── src/
|
|
142
|
+
│ ├── client.ts # Prisma client singleton
|
|
143
|
+
│ ├── seed.ts # Database seeding
|
|
144
|
+
│ └── index.ts
|
|
145
|
+
└── package.json
|
|
146
|
+
```
|
|
147
|
+
|
|
148
|
+
### 6. Backend Patterns (Bun + Elysia)
|
|
149
|
+
|
|
150
|
+
#### HTTP Backend Structure
|
|
151
|
+
```
|
|
152
|
+
apps/http-backend/src/
|
|
153
|
+
├── routes/
|
|
154
|
+
│ ├── auth/ # /auth/signin, /auth/signup, /auth/ws-token
|
|
155
|
+
│ ├── rooms/ # /rooms CRUD
|
|
156
|
+
│ ├── shapes/ # /shapes persistence
|
|
157
|
+
│ └── health.ts # Health check
|
|
158
|
+
├── middleware/
|
|
159
|
+
│ ├── auth.ts # Session validation
|
|
160
|
+
│ ├── cors.ts # CORS config
|
|
161
|
+
│ ├── rate-limit.ts # Per-route limiting
|
|
162
|
+
│ └── validation.ts # Zod validation
|
|
163
|
+
├── services/
|
|
164
|
+
│ ├── authService.ts
|
|
165
|
+
│ ├── roomService.ts
|
|
166
|
+
│ └── shapeService.ts
|
|
167
|
+
├── db/
|
|
168
|
+
│ └── prisma.ts # Prisma client
|
|
169
|
+
├── utils/
|
|
170
|
+
│ └── errors.ts # Custom error classes
|
|
171
|
+
├── app.ts # Elysia app factory
|
|
172
|
+
└── index.ts # Entry point
|
|
173
|
+
```
|
|
174
|
+
|
|
175
|
+
#### WebSocket Backend Structure
|
|
176
|
+
```
|
|
177
|
+
apps/ws-backend/src/
|
|
178
|
+
├── handlers/
|
|
179
|
+
│ ├── connection.ts # Connect/disconnect
|
|
180
|
+
│ ├── shapeDiff.ts # Diff broadcasting
|
|
181
|
+
│ ├── cursor.ts # Cursor sync
|
|
182
|
+
│ └── chat.ts # Chat messages
|
|
183
|
+
├── rooms/
|
|
184
|
+
│ ├── roomManager.ts # Room state management
|
|
185
|
+
│ └── presence.ts # User presence
|
|
186
|
+
├── auth/
|
|
187
|
+
│ └── wsAuth.ts # Short-lived WS tokens
|
|
188
|
+
├── server.ts # Bun.serve setup
|
|
189
|
+
└── index.ts
|
|
190
|
+
```
|
|
191
|
+
|
|
192
|
+
### 6b. HTTP Route File Convention (Elysia)
|
|
193
|
+
|
|
194
|
+
**One file per resource under `routes/`, named after the resource.**
|
|
195
|
+
|
|
196
|
+
| Pattern | Example |
|
|
197
|
+
|---------|---------|
|
|
198
|
+
| Single file per resource | `routes/auth.ts`, `routes/me.ts`, `routes/profile.ts` |
|
|
199
|
+
| All HTTP verbs in one file | `GET /me`, `PUT /me` both in `me.ts` |
|
|
200
|
+
| Handler naming | `handleGetMe`, `handlePutMe` (or `handleMe` for single-handler) |
|
|
201
|
+
| Promotion to folder | `routes/<resource>/index.ts` + `handlers.ts` when resource outgrows one file |
|
|
202
|
+
|
|
203
|
+
```typescript
|
|
204
|
+
// apps/http-backend/src/routes/me.ts
|
|
205
|
+
import { t } from 'elysia'
|
|
206
|
+
|
|
207
|
+
/**
|
|
208
|
+
* @fileoverview Current user profile endpoints
|
|
209
|
+
* @module routes/me
|
|
210
|
+
*/
|
|
211
|
+
|
|
212
|
+
export function handleGetMe(app: Elysia) {
|
|
213
|
+
return app.get('/me', async ({ currentUser }) => currentUser)
|
|
214
|
+
}
|
|
215
|
+
|
|
216
|
+
export function handlePutMe(app: Elysia) {
|
|
217
|
+
return app.put('/me', async ({ body, currentUser, db }) => {
|
|
218
|
+
// update logic
|
|
219
|
+
}, { body: t.Object({ name: t.String(), bio: t.Optional(t.String()) }) })
|
|
220
|
+
}
|
|
221
|
+
```
|
|
222
|
+
|
|
223
|
+
```text
|
|
224
|
+
# When a resource grows (e.g., familyTree, messages, adminRoleChange):
|
|
225
|
+
routes/
|
|
226
|
+
├── familyTree/
|
|
227
|
+
│ ├── index.ts # Route registration
|
|
228
|
+
│ └── handlers.ts # All handlers
|
|
229
|
+
├── messages/
|
|
230
|
+
│ ├── index.ts
|
|
231
|
+
│ └── handlers.ts
|
|
232
|
+
└── adminRoleChange/
|
|
233
|
+
├── index.ts
|
|
234
|
+
└── handlers.ts
|
|
235
|
+
```
|
|
236
|
+
|
|
237
|
+
**Rule**: Start with one file. Only split into `routes/<resource>/` when the file genuinely exceeds ~300 lines or has 5+ handlers.
|
|
238
|
+
|
|
239
|
+
### 7. Frontend Patterns (Vite + TanStack Router)
|
|
240
|
+
|
|
241
|
+
#### Canvas Engine (CoDraw Pattern)
|
|
242
|
+
```
|
|
243
|
+
apps/frontend/src/draw/
|
|
244
|
+
├── engine/
|
|
245
|
+
│ ├── canvasEngine.ts # Core rendering loop
|
|
246
|
+
│ ├── renderLayers.ts # Static/active/overlay layers
|
|
247
|
+
│ └── dirtyRect.ts # Dirty-rect optimization
|
|
248
|
+
├── shapes/
|
|
249
|
+
│ ├── shapeTypes.ts # Shape type definitions
|
|
250
|
+
│ ├── shapeFactory.ts # Shape creation
|
|
251
|
+
│ ├── shapeRenderer.ts # Rough.js rendering
|
|
252
|
+
│ └── shapeUtils.ts # Hit testing, bounds
|
|
253
|
+
├── tools/
|
|
254
|
+
│ ├── toolManager.ts # Tool state machine
|
|
255
|
+
│ ├── pencilTool.ts
|
|
256
|
+
│ ├── rectangleTool.ts
|
|
257
|
+
│ └── ...
|
|
258
|
+
├── input/
|
|
259
|
+
│ ├── mouseHandler.ts
|
|
260
|
+
│ ├── touchHandler.ts
|
|
261
|
+
│ └── keyboardHandler.ts
|
|
262
|
+
├── history/
|
|
263
|
+
│ └── undoRedo.ts # Delta-based stack (cap 100)
|
|
264
|
+
├── collaboration/
|
|
265
|
+
│ ├── wsClient.ts # WebSocket client
|
|
266
|
+
│ ├── diffApplier.ts # Apply remote diffs
|
|
267
|
+
│ └── autoSave.ts # Debounced persistence
|
|
268
|
+
└── index.ts
|
|
269
|
+
```
|
|
270
|
+
|
|
271
|
+
#### Component Organization
|
|
272
|
+
```
|
|
273
|
+
apps/frontend/src/components/
|
|
274
|
+
├── canvas/ # Canvas-specific components
|
|
275
|
+
│ ├── Canvas.tsx
|
|
276
|
+
│ ├── Toolbar.tsx
|
|
277
|
+
│ └── PropertyPanel.tsx
|
|
278
|
+
├── ui/ # Shared UI (from @repo/ui)
|
|
279
|
+
├── auth/ # Auth forms
|
|
280
|
+
└── layout/ # Layout components
|
|
281
|
+
```
|
|
282
|
+
|
|
283
|
+
### 8. Database Patterns (Prisma + PostgreSQL)
|
|
284
|
+
|
|
285
|
+
#### Schema Conventions
|
|
286
|
+
```prisma
|
|
287
|
+
// Use camelCase for fields, PascalCase for models
|
|
288
|
+
model User {
|
|
289
|
+
id String @id @default(cuid())
|
|
290
|
+
email String @unique
|
|
291
|
+
passwordHash String
|
|
292
|
+
name String
|
|
293
|
+
role UserRole @default(MEMBER)
|
|
294
|
+
createdAt DateTime @default(now())
|
|
295
|
+
updatedAt DateTime @updatedAt
|
|
296
|
+
sessions Session[]
|
|
297
|
+
rooms RoomMember[]
|
|
298
|
+
|
|
299
|
+
@@map("users")
|
|
300
|
+
}
|
|
301
|
+
|
|
302
|
+
enum UserRole {
|
|
303
|
+
COMMUNITY_HEAD
|
|
304
|
+
SUB_HEAD
|
|
305
|
+
GOTRA_HEAD
|
|
306
|
+
FAMILY_HEAD
|
|
307
|
+
MEMBER
|
|
308
|
+
}
|
|
309
|
+
```
|
|
310
|
+
|
|
311
|
+
#### Optimistic Concurrency
|
|
312
|
+
```prisma
|
|
313
|
+
model Room {
|
|
314
|
+
id String @id @default(cuid())
|
|
315
|
+
slug String @unique
|
|
316
|
+
version Int @default(1) // For optimistic locking
|
|
317
|
+
shapes Json @default("[]")
|
|
318
|
+
updatedAt DateTime @updatedAt
|
|
319
|
+
|
|
320
|
+
@@map("rooms")
|
|
321
|
+
}
|
|
322
|
+
```
|
|
323
|
+
|
|
324
|
+
### 9. Real-Time Sync Pattern (Diff-Based)
|
|
325
|
+
|
|
326
|
+
```typescript
|
|
327
|
+
// Frontend computes minimal diff
|
|
328
|
+
interface ShapeDiff {
|
|
329
|
+
added: Shape[];
|
|
330
|
+
modified: Shape[];
|
|
331
|
+
deleted: string[]; // shape IDs
|
|
332
|
+
}
|
|
333
|
+
|
|
334
|
+
// WebSocket message types
|
|
335
|
+
type WSMessage =
|
|
336
|
+
| { type: 'shape-diff'; payload: ShapeDiff }
|
|
337
|
+
| { type: 'cursor'; payload: CursorData }
|
|
338
|
+
| { type: 'chat'; payload: ChatMessage }
|
|
339
|
+
| { type: 're-auth'; payload: { token: string } }
|
|
340
|
+
| { type: 'full-state'; payload: RoomState };
|
|
341
|
+
|
|
342
|
+
// Server broadcasts to room
|
|
343
|
+
roomManager.broadcast(roomId, message, excludeUserId?);
|
|
344
|
+
|
|
345
|
+
// Client applies diff immediately
|
|
346
|
+
diffApplier.apply(localState, remoteDiff);
|
|
347
|
+
```
|
|
348
|
+
|
|
349
|
+
### 10. Authentication & Security
|
|
350
|
+
|
|
351
|
+
#### Session-Based Auth (HTTP)
|
|
352
|
+
- bcrypt password hashing (cost 12)
|
|
353
|
+
- httpOnly, secure, sameSite=lax cookies
|
|
354
|
+
- Server-side session table with expiry
|
|
355
|
+
- Token revocation on logout
|
|
356
|
+
|
|
357
|
+
#### WebSocket Auth
|
|
358
|
+
- Short-lived WS tokens via `/auth/ws-token` (JWT, 5min TTL)
|
|
359
|
+
- Heartbeat with `re_auth` message
|
|
360
|
+
- Reconnection exchanges token for new session
|
|
361
|
+
|
|
362
|
+
#### Rate Limiting
|
|
363
|
+
- Sliding window on auth endpoints (5 req/min)
|
|
364
|
+
- Per-IP and per-user limits
|
|
365
|
+
- Redis-backed for distributed deployments
|
|
366
|
+
|
|
367
|
+
### 11. CI/CD Pipeline (GitHub Actions)
|
|
368
|
+
|
|
369
|
+
```yaml
|
|
370
|
+
# .github/workflows/ci.yml
|
|
371
|
+
jobs:
|
|
372
|
+
typecheck:
|
|
373
|
+
runs-on: ubuntu-latest
|
|
374
|
+
steps:
|
|
375
|
+
- uses: actions/checkout@v4
|
|
376
|
+
- uses: oven-sh/setup-bun@v1
|
|
377
|
+
- run: bun install
|
|
378
|
+
- run: bun run check-types # tsc --noEmit
|
|
379
|
+
|
|
380
|
+
lint:
|
|
381
|
+
runs-on: ubuntu-latest
|
|
382
|
+
steps:
|
|
383
|
+
- uses: actions/checkout@v4
|
|
384
|
+
- uses: oven-sh/setup-bun@v1
|
|
385
|
+
- run: bun install
|
|
386
|
+
- run: bun run lint
|
|
387
|
+
|
|
388
|
+
build:
|
|
389
|
+
runs-on: ubuntu-latest
|
|
390
|
+
needs: [typecheck, lint]
|
|
391
|
+
steps:
|
|
392
|
+
- uses: actions/checkout@v4
|
|
393
|
+
- uses: oven-sh/setup-bun@v1
|
|
394
|
+
- run: bun install
|
|
395
|
+
- run: bun run build
|
|
396
|
+
- uses: actions/upload-artifact@v4
|
|
397
|
+
with:
|
|
398
|
+
name: dist
|
|
399
|
+
path: apps/frontend/dist
|
|
400
|
+
```
|
|
401
|
+
|
|
402
|
+
### 12. Deployment (Single EC2 + Nginx + PM2)
|
|
403
|
+
|
|
404
|
+
```nginx
|
|
405
|
+
# nginx.conf
|
|
406
|
+
server {
|
|
407
|
+
listen 80;
|
|
408
|
+
server_name app.example.com;
|
|
409
|
+
|
|
410
|
+
location / {
|
|
411
|
+
proxy_pass http://localhost:5173; # Frontend
|
|
412
|
+
}
|
|
413
|
+
|
|
414
|
+
location /api/ {
|
|
415
|
+
proxy_pass http://localhost:3001; # HTTP Backend
|
|
416
|
+
}
|
|
417
|
+
|
|
418
|
+
location /ws/ {
|
|
419
|
+
proxy_pass http://localhost:8080; # WS Backend
|
|
420
|
+
proxy_http_version 1.1;
|
|
421
|
+
proxy_set_header Upgrade $http_upgrade;
|
|
422
|
+
proxy_set_header Connection "upgrade";
|
|
423
|
+
}
|
|
424
|
+
}
|
|
425
|
+
```
|
|
426
|
+
|
|
427
|
+
```json
|
|
428
|
+
// ecosystem.config.json (PM2)
|
|
429
|
+
{
|
|
430
|
+
"apps": [
|
|
431
|
+
{ "name": "http-backend", "script": "apps/http-backend/dist/index.js", "cwd": "./apps/http-backend" },
|
|
432
|
+
{ "name": "ws-backend", "script": "apps/ws-backend/dist/index.js", "cwd": "./apps/ws-backend" }
|
|
433
|
+
]
|
|
434
|
+
}
|
|
435
|
+
```
|
|
436
|
+
|
|
437
|
+
|
|
438
|
+
## Required Files Checklist
|
|
439
|
+
|
|
440
|
+
Every nerdev-co project MUST have:
|
|
441
|
+
|
|
442
|
+
- [ ] `AGENTS.md` - AI agent guidance (use agent-docs-writer skill)
|
|
443
|
+
- [ ] `README.md` - Project overview with architecture diagram
|
|
444
|
+
- [ ] `design.md` - Architecture decisions with rationale tables
|
|
445
|
+
- [ ] `ARCHITECTURE_MINIMAP.md` - Visual reference
|
|
446
|
+
- [ ] `deploy.md` - Complete production deployment guide
|
|
447
|
+
- [ ] `.env.example` - All required env vars documented
|
|
448
|
+
- [ ] `openapi.yaml` - API contract (generate via `bun run openapi:gen`)
|
|
449
|
+
- [ ] `turbo.json` - Pipeline config with `build`, `lint`, `check-types`, `dev`
|
|
450
|
+
- [ ] `eslint.config.js` - Flat config extending `@repo/eslint-config`
|
|
451
|
+
- [ ] `tsconfig.json` - Extending `@repo/typescript-config`
|
|
452
|
+
|
|
453
|
+
|
|
454
|
+
## Commands Reference
|
|
455
|
+
|
|
456
|
+
| Command | Description |
|
|
457
|
+
|---------|-------------|
|
|
458
|
+
| `bun install` | Install all workspace deps |
|
|
459
|
+
| `bun run dev` | Start all apps in dev mode |
|
|
460
|
+
| `bun run build` | Build all packages and apps |
|
|
461
|
+
| `bun run lint` | ESLint across all workspaces |
|
|
462
|
+
| `bun run check-types` | TypeScript type checking |
|
|
463
|
+
| `bun run format` | Prettier format |
|
|
464
|
+
| `bun run db:seed` | Seed database |
|
|
465
|
+
| `bun run openapi:gen` | Generate OpenAPI spec |
|
|
466
|
+
| `bun run docs:gen` | Generate documentation |
|
|
467
|
+
|
|
468
|
+
|
|
469
|
+
## When Creating New Projects
|
|
470
|
+
|
|
471
|
+
1. **Scaffold with Turborepo**: `bun create turbor@latest my-project`
|
|
472
|
+
2. **Configure Bun**: Use `bun` as runtime, package manager, and test runner
|
|
473
|
+
3. **Set up shared configs first**: typescript-config, eslint-config
|
|
474
|
+
4. **Create packages/common** with env, jwt, types, response utilities
|
|
475
|
+
5. **Add packages/db** with Prisma schema
|
|
476
|
+
6. **Build apps** following the structure above
|
|
477
|
+
7. **Write AGENTS.md first** using agent-docs-writer skill
|
|
478
|
+
8. **Document architecture decisions** in design.md with rationale tables
|
|
479
|
+
9. **Create deploy.md** before first deployment
|
|
480
|
+
|
|
481
|
+
|
|
482
|
+
## Code Review Checklist
|
|
483
|
+
|
|
484
|
+
- [ ] All files use camelCase (files, functions, variables)
|
|
485
|
+
- [ ] All types use PascalCase
|
|
486
|
+
- [ ] All functions have JSDoc comments
|
|
487
|
+
- [ ] No `any` types (use `unknown` or proper types)
|
|
488
|
+
- [ ] Shared code in `packages/`, not duplicated
|
|
489
|
+
- [ ] API routes use Zod validation
|
|
490
|
+
- [ ] Database changes include migration
|
|
491
|
+
- [ ] WebSocket messages typed
|
|
492
|
+
- [ ] Error handling with custom error classes
|
|
493
|
+
- [ ] Loading/error states in UI
|
|
494
|
+
- [ ] Dark mode support in components
|
|
495
|
+
- [ ] Accessibility (ARIA, keyboard nav)
|
|
496
|
+
|
|
497
|
+
|
|
498
|
+
## Anti-Patterns to Avoid
|
|
499
|
+
|
|
500
|
+
| Anti-Pattern | Correct Approach |
|
|
501
|
+
|--------------|------------------|
|
|
502
|
+
| `snake_case` files/functions | Use `camelCase` |
|
|
503
|
+
| Inline types in components | Extract to `packages/common/types.ts` |
|
|
504
|
+
| Direct Prisma calls in routes | Use service layer |
|
|
505
|
+
| Full state sync over WS | Diff-based broadcasting |
|
|
506
|
+
| `any` type for WebSocket messages | Discriminated union types |
|
|
507
|
+
| Missing JSDoc on exports | Document every public API |
|
|
508
|
+
| Hardcoded env values | Use `packages/common/env.ts` |
|
|
509
|
+
| Duplicated validation logic | Shared Zod schemas in `common` |
|
|
510
|
+
| Next.js for canvas-heavy apps | Vite + TanStack Router |
|
|
511
|
+
| Node.js for WebSocket servers | Bun.serve native WebSocket |
|
|
512
|
+
|
|
513
|
+
|
|
514
|
+
## References
|
|
515
|
+
|
|
516
|
+
- **CoDraw**: https://github.com/nerdev-co/codraw
|
|
517
|
+
- **Modheshwari**: https://github.com/nerdev-co/modheshwari
|
|
518
|
+
- **Turborepo Docs**: https://turbo.build/repo/docs
|
|
519
|
+
- **Bun Docs**: https://bun.sh/docs
|
|
520
|
+
- **TanStack Router**: https://tanstack.com/router
|
|
521
|
+
- **Elysia**: https://elysiajs.com
|
|
522
|
+
- **Prisma**: https://prisma.io/docs
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: full-output-enforcement
|
|
3
|
+
description: Overrides default LLM truncation behavior. Enforces complete code generation, bans placeholder patterns, and handles token-limit splits cleanly. Apply to any task requiring exhaustive, unabridged output.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Full-Output Enforcement
|
|
7
|
+
|
|
8
|
+
## Baseline
|
|
9
|
+
|
|
10
|
+
Treat every task as production-critical. A partial output is a broken output. Do not optimize for brevity — optimize for completeness. If the user asks for a full file, deliver the full file. If the user asks for 5 components, deliver 5 components. No exceptions.
|
|
11
|
+
|
|
12
|
+
## Banned Output Patterns
|
|
13
|
+
|
|
14
|
+
The following patterns are hard failures. Never produce them:
|
|
15
|
+
|
|
16
|
+
**In code blocks:** `// ...`, `// rest of code`, `// implement here`, `// TODO`, `/* ... */`, `// similar to above`, `// continue pattern`, `// add more as needed`, bare `...` standing in for omitted code
|
|
17
|
+
|
|
18
|
+
**In prose:** "Let me know if you want me to continue", "I can provide more details if needed", "for brevity", "the rest follows the same pattern", "similarly for the remaining", "and so on" (when replacing actual content), "I'll leave that as an exercise"
|
|
19
|
+
|
|
20
|
+
**Structural shortcuts:** Outputting a skeleton when the request was for a full implementation. Showing the first and last section while skipping the middle. Replacing repeated logic with one example and a description. Describing what code should do instead of writing it.
|
|
21
|
+
|
|
22
|
+
## Execution Process
|
|
23
|
+
|
|
24
|
+
1. **Scope** — Read the full request. Count how many distinct deliverables are expected (files, functions, sections, answers). Lock that number.
|
|
25
|
+
2. **Build** — Generate every deliverable completely. No partial drafts, no "you can extend this later."
|
|
26
|
+
3. **Cross-check** — Before output, re-read the original request. Compare your deliverable count against the scope count. If anything is missing, add it before responding.
|
|
27
|
+
|
|
28
|
+
## Handling Long Outputs
|
|
29
|
+
|
|
30
|
+
When a response approaches the token limit:
|
|
31
|
+
|
|
32
|
+
- Do not compress remaining sections to squeeze them in.
|
|
33
|
+
- Do not skip ahead to a conclusion.
|
|
34
|
+
- Write at full quality up to a clean breakpoint (end of a function, end of a file, end of a section).
|
|
35
|
+
- End with:
|
|
36
|
+
|
|
37
|
+
```
|
|
38
|
+
[PAUSED — X of Y complete. Send "continue" to resume from: next section name]
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
On "continue", pick up exactly where you stopped. No recap, no repetition.
|
|
42
|
+
|
|
43
|
+
## Quick Check
|
|
44
|
+
|
|
45
|
+
Before finalizing any response, verify:
|
|
46
|
+
- No banned patterns from the list above appear anywhere in the output
|
|
47
|
+
- Every item the user requested is present and finished
|
|
48
|
+
- Code blocks contain actual runnable code, not descriptions of what code would do
|
|
49
|
+
- Nothing was shortened to save space
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: unslop
|
|
3
|
+
description: Cut AI tells from any writing. Must always apply.
|
|
4
|
+
disable-model-invocation: true
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# Unslop
|
|
8
|
+
|
|
9
|
+
Edit text to remove AI patterns.
|
|
10
|
+
|
|
11
|
+
## Process
|
|
12
|
+
|
|
13
|
+
1. Scan for the patterns below.
|
|
14
|
+
2. Rewrite. Preserve meaning, match intended tone.
|
|
15
|
+
|
|
16
|
+
## Patterns to detect and fix
|
|
17
|
+
|
|
18
|
+
Rule numbers are stable ids that other skills cite. A removed rule leaves a gap.
|
|
19
|
+
|
|
20
|
+
### Content
|
|
21
|
+
|
|
22
|
+
3. **Superficial -ing phrases.** "highlighting...", "ensuring...", "reflecting...", "showcasing...", "fostering...". Delete or expand with real sources.
|
|
23
|
+
5. **Vague attributions.** "Experts believe", "Industry reports suggest", "Some critics argue". Name the source or delete.
|
|
24
|
+
|
|
25
|
+
### Language
|
|
26
|
+
|
|
27
|
+
7. **AI vocabulary.** Additionally, crucial, delve, enduring, enhance, fostering, garner, interplay, intricate, landscape (abstract), pivotal, showcase, tapestry (abstract), testament, underscore, vibrant. Replace with plain words.
|
|
28
|
+
8. **Fancy ways to say "is".** "serves as", "stands as", "boasts", "features". Just say "is" or "has".
|
|
29
|
+
9. **"Not just X, but Y."** State the point directly instead.
|
|
30
|
+
10. **Rule of three.** Forcing ideas into groups of three. Use the natural number.
|
|
31
|
+
11. **Synonym cycling.** Protagonist, main character, central figure, hero all in one paragraph. Pick one, repeat it.
|
|
32
|
+
12. **False ranges.** "from X to Y" where X and Y aren't on a meaningful scale. List topics directly.
|
|
33
|
+
|
|
34
|
+
### Style
|
|
35
|
+
|
|
36
|
+
13. **Em dash overuse.** Avoid em dashes entirely. Use periods or commas only (no parentheses, no en dashes, no hyphen-as-dash substitutes). If a thought needs separation, end the sentence or use a comma.
|
|
37
|
+
14. **Colon overuse.** Colons are fine before a list or example. Not as mid-sentence connectors. "If you're coming from traditional automation: instead of registering event handlers, you describe conditions" adds nothing with the colon. Rewrite to let the point stand on its own without comparison framing. "Describing when the scheduler should fire works best as plain English." Same meaning, no crutch punctuation.
|
|
38
|
+
15. **Boldface overuse.** Don't bold every proper noun or acronym.
|
|
39
|
+
16. **Inline-header lists.** The tell is a bold label and colon that restates the line: "**Performance:** Performance improved...". Convert those to prose. A bold lead-in that ends in a period, names the item, and is followed by genuinely new detail ("**Schema in TypeScript.** Tables live in one file.") is fine, not a tell.
|
|
40
|
+
17. **Title case headings.** Use sentence case.
|
|
41
|
+
18. **Decorative emojis.** Remove from headings and bullets.
|
|
42
|
+
19. **Curly quotes.** Replace with straight quotes.
|
|
43
|
+
|
|
44
|
+
### Communication artifacts
|
|
45
|
+
|
|
46
|
+
20. **Chatbot phrases.** "I hope this helps!", "Let me know if...", "Of course!", "Certainly!", "Found the smoking gun!" Remove.
|
|
47
|
+
22. **Sycophantic tone.** "Great question! You're absolutely right!" Respond directly.
|
|
48
|
+
|
|
49
|
+
### Filler
|
|
50
|
+
|
|
51
|
+
23. **Filler phrases.** "In order to" becomes "To". "Due to the fact that" becomes "Because". "It is important to note that" gets deleted.
|
|
52
|
+
24. **Excessive hedging.** "could potentially possibly be argued that it might" becomes "may".
|
|
53
|
+
25. **Generic conclusions.** "The future looks bright." State specific plans or facts.
|
|
54
|
+
|
|
55
|
+
### Jargon
|
|
56
|
+
|
|
57
|
+
26. **Abstract metaphor nouns.** Substrate, wedge, vector, locus, vantage, nexus, primitive (as noun), harness (as metaphor), surface (as in "API surface"), bedrock, scaffolding (as metaphor), modality, paradigm, gold-plating, ratchet (as metaphor), evacuate (for moving code), endgame, north star, flywheel. These read as technical but usually have a plainer concrete word. "Substrate" becomes "base". "Wedge in" becomes "add". "Vector" becomes "way" or "method". "Gold-plating" becomes "more than the job needs". "Ratchet" becomes the mechanism's real name or "a limit that only tightens". "Evacuate" becomes "move out". "Endgame" becomes "the last phase". Pick the concrete word.
|
|
58
|
+
|
|
59
|
+
### Plain speech
|
|
60
|
+
|
|
61
|
+
27. **Say what it does, not how it feels.** "the database stays close at hand", "SQL you can read", "types that follow your schema" name a feeling. The fix names the mechanism or a number: "`.toSQL()` returns the exact string sent to the database", "a column rename fails the build". Ask what the sentence tells the reader to do or know, then write that. If you can't restate it as a concrete instruction, fact, or number, cut it. One more check: if the sentence could appear unchanged in another project's docs, it says nothing about this one. Cut it.
|
|
62
|
+
28. **Shorten or split dense sentences.** If the reader has to backtrack to parse a sentence, break it in two or drop clauses. One idea per sentence.
|
|
63
|
+
29. **Active voice.** Prefer it. Catch "is/are/was/were + past participle" and name the actor: "queries are validated" becomes "the compiler validates queries", "the file is parsed by the loader" becomes "the loader parses the file". Passive is fine only when the actor is unknown or genuinely doesn't matter.
|
|
64
|
+
30. **Cut adverbs, or use a stronger verb.** "runs quickly" becomes "is fast" or the number. "significantly improves" becomes the measured delta. An adverb propping up a weak verb means the verb is wrong.
|
|
65
|
+
31. **Prefer the plain word.** "utilize" becomes "use", "leverage" becomes "use", "facilitate" becomes "help", "numerous" becomes "many", "in the event that" becomes "if". The fancier synonym is rarely clearer.
|
|
66
|
+
32. **Mannered prose.** Metaphor or flourish where a literal phrase exists: aphorisms ("wire it or delete it"), rhetorical fragments for effect, personified code ("the plan holds it"), figurative verbs ("rides along", "stands on"), stock framing phrases. "A dial worth turning" becomes "a parameter worth varying". Say what you mean. Rule 26 covers the metaphor nouns.
|
|
67
|
+
33. **Over-compression.** Dropped articles, verbless fragments, symbol-speak, and abbreviations that make the reader decode instead of read. "Parser rejects bad date → exit 2, no write" becomes "The parser rejects a bad date, exits with code 2, and writes nothing." Write whole sentences with their articles and verbs, and spell out arrows and abbreviations.
|