@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,267 @@
|
|
|
1
|
+
# Idea Validation
|
|
2
|
+
|
|
3
|
+
## The Mom Test (core method)
|
|
4
|
+
Talk to potential customers about their life/problem, not your idea. Rules:
|
|
5
|
+
- Ask about their past behavior and specific problems, not hypothetical future behavior ("would you use X" is a lie-generating question).
|
|
6
|
+
- Do not pitch. Do not mention your idea until the end, if at all.
|
|
7
|
+
- Good questions: "Walk me through the last time you dealt with [problem]." "What did you try to fix it?" "What does that cost you (time/money)?"
|
|
8
|
+
- Bad questions: "Would you pay for a tool that does X?" (people say yes to be nice)
|
|
9
|
+
- Do 10-15 of these conversations before writing a line of product code. Look for people who have already tried to solve the problem themselves (paid tools, spreadsheets, hacky workarounds). That is signal of real pain.
|
|
10
|
+
|
|
11
|
+
## Fast market sizing
|
|
12
|
+
- Top-down (market reports) is usually wrong for early-stage. Prefer bottom-up: how many potential customers exist, realistic price, realistic capture rate in year 1-2.
|
|
13
|
+
- A small market you can dominate beats a huge market you cannot crack. Paul Graham states the "a market of one" thesis: build for a specific, underserved user first. YC gives the same advice: start narrow, expand later.
|
|
14
|
+
|
|
15
|
+
## Red flags an idea isn't ready
|
|
16
|
+
- You cannot name 5 specific people or companies who have this problem today.
|
|
17
|
+
- The "customers" you are describing are hypothetical ("companies like X would want this").
|
|
18
|
+
- Nobody you talked to already spent money or serious time trying to solve it.
|
|
19
|
+
- The idea only works if a platform/regulation/behavior change happens first.
|
|
20
|
+
|
|
21
|
+
## Green flags
|
|
22
|
+
- People are already duct-taping a solution (Excel, Zapier chains, manual process). You can replace that.
|
|
23
|
+
- People ask "when can I use this" unprompted during discovery calls.
|
|
24
|
+
- The problem costs the person measurable time or money today.
|
|
25
|
+
|
|
26
|
+
## For technical/dev-tooling ideas specifically
|
|
27
|
+
- Check GitHub issues, Reddit (r/webdev, r/SaaS, r/startups), Hacker News "Who's Hiring"/"Show HN" threads, and Indie Hackers for existing pain points before building.
|
|
28
|
+
- Competitor exists ≠ bad sign. No competitor at all is often a red flag (nobody found a business there), not a green one.
|
|
29
|
+
|
|
30
|
+
---
|
|
31
|
+
|
|
32
|
+
## Build in Public + Cold Outreach Playbook (DriftLock Case Study)
|
|
33
|
+
|
|
34
|
+
### Core Philosophy
|
|
35
|
+
**Build in public + talk to potential users + talk to founders + build based on what you learn.**
|
|
36
|
+
Not "launch and hope people come."
|
|
37
|
+
|
|
38
|
+
**Goal for early weeks:** Problem validation + design partners, not "getting users."
|
|
39
|
+
|
|
40
|
+
---
|
|
41
|
+
|
|
42
|
+
### 1. Start Build in Public Now (Day 1)
|
|
43
|
+
|
|
44
|
+
Don't wait until polished. First post example:
|
|
45
|
+
|
|
46
|
+
> "I'm building DriftLock.
|
|
47
|
+
> The idea: APIs change, but the code using them doesn't magically update.
|
|
48
|
+
> I'm exploring a tool that detects API changes affecting your codebase and auto-generates migration PRs.
|
|
49
|
+
> Starting with Stripe.
|
|
50
|
+
> Still at design stage — building in public, sharing what I learn.
|
|
51
|
+
> If you've ever had an API migration unexpectedly break your code, I'd love to hear how you handled it."
|
|
52
|
+
|
|
53
|
+
**Key:** You're not pretending you have a product. You're asking people with the problem to talk to you.
|
|
54
|
+
|
|
55
|
+
---
|
|
56
|
+
|
|
57
|
+
### 2. Don't Ask "Would You Use This?"
|
|
58
|
+
|
|
59
|
+
**Biggest trap.** People say "yeah that's cool" to be nice. That's noise.
|
|
60
|
+
|
|
61
|
+
**Instead ask about actual experience:**
|
|
62
|
+
- "When was the last time an API change caused an issue for your team?"
|
|
63
|
+
- "How did you discover it?"
|
|
64
|
+
- "Who had to fix it?"
|
|
65
|
+
- "How long did it take?"
|
|
66
|
+
- "Do you have any automation around API migrations today?"
|
|
67
|
+
- "What happens when Stripe changes something?"
|
|
68
|
+
|
|
69
|
+
**You're discovering if you're solving a painful existing workflow**, not asking for idea validation.
|
|
70
|
+
|
|
71
|
+
---
|
|
72
|
+
|
|
73
|
+
### 3. Build a Spreadsheet of 100 Potential Users
|
|
74
|
+
|
|
75
|
+
Not 100 YC founders. **Potential DriftLock users.**
|
|
76
|
+
|
|
77
|
+
**Look for:**
|
|
78
|
+
- Engineers/founders who use Stripe
|
|
79
|
+
- Build SaaS
|
|
80
|
+
- Work at startups
|
|
81
|
+
- Maintain APIs/integrations
|
|
82
|
+
- Have public GitHub repos
|
|
83
|
+
- Write about engineering
|
|
84
|
+
- Have dealt with migrations
|
|
85
|
+
|
|
86
|
+
**Outreach template (highly personalized, small numbers):**
|
|
87
|
+
|
|
88
|
+
> "Hey! I'm building something around API migrations and noticed you work quite a bit with Stripe.
|
|
89
|
+
> I'm still in design stage, not trying to sell anything. Trying to understand how teams deal with breaking/API-version changes.
|
|
90
|
+
> Have you ever had a Stripe/API change require a bunch of code changes on your side?
|
|
91
|
+
> Would love to hear how you handled it."
|
|
92
|
+
|
|
93
|
+
**Why this works:** Easier for a stranger to answer than "can you try my product?" — because you don't have one yet.
|
|
94
|
+
|
|
95
|
+
---
|
|
96
|
+
|
|
97
|
+
### 4. DM YC/Experienced Founders Now (Not After Launch)
|
|
98
|
+
|
|
99
|
+
Don't approach as "please advise my startup." Approach as "you've crossed the bridge I'm approaching."
|
|
100
|
+
|
|
101
|
+
> "Hey Dany, congrats on getting into YC!
|
|
102
|
+
> I'm a full-stack developer building DriftLock, a dev tool around detecting API changes and generating migration PRs.
|
|
103
|
+
> Just started — figuring out product and first users.
|
|
104
|
+
> Reaching out to founders who've gone through early stage. Open to a quick 15-20 min chat? Mainly want to hear how you got first users and what you learned."
|
|
105
|
+
|
|
106
|
+
Low response rate is normal. Don't take it personally.
|
|
107
|
+
|
|
108
|
+
---
|
|
109
|
+
|
|
110
|
+
### 5. Turn Design Docs Into Content
|
|
111
|
+
|
|
112
|
+
Your thinking IS the content. You don't need manufactured achievements.
|
|
113
|
+
|
|
114
|
+
Examples:
|
|
115
|
+
> "I'm designing DriftLock. One question: should API migrations be detected from OpenAPI specs, runtime traffic, SDK versions, or some combination?"
|
|
116
|
+
|
|
117
|
+
> "I initially thought detecting API changes would be the hard part. While designing, I realized identifying which lines of application code are affected may actually be harder."
|
|
118
|
+
|
|
119
|
+
---
|
|
120
|
+
|
|
121
|
+
### 6. Milestones That Matter (Not Waitlist)
|
|
122
|
+
|
|
123
|
+
| Milestone | Signal Strength |
|
|
124
|
+
|-----------|-----------------|
|
|
125
|
+
| M0: Design validated | Weak |
|
|
126
|
+
| M1: First API change detected | Technical |
|
|
127
|
+
| M2: First affected code location identified | Technical |
|
|
128
|
+
| M3: First migration PR generated | Technical |
|
|
129
|
+
| M4: Stranger runs DriftLock | **Strong** |
|
|
130
|
+
| M5: Stranger gets useful result | **Stronger** |
|
|
131
|
+
| M6: 5 people use it | Strong |
|
|
132
|
+
| M7: Someone asks to keep using it | **Very Strong** |
|
|
133
|
+
| M8: Someone pays | **Strongest** |
|
|
134
|
+
|
|
135
|
+
**First meaningful external milestone = one stranger gets value without you explaining every step.** Waitlist is a weak signal.
|
|
136
|
+
|
|
137
|
+
---
|
|
138
|
+
|
|
139
|
+
### 7. Move Quickly = Reduce Time Between Assumption and Evidence
|
|
140
|
+
|
|
141
|
+
Not "build entire thing fast." **"Reduce time between assumption and evidence."**
|
|
142
|
+
|
|
143
|
+
**Loop every week:**
|
|
144
|
+
Build something → publish what you built → talk to 5–10 people → learn → update design → build again
|
|
145
|
+
|
|
146
|
+
**Example public journey:**
|
|
147
|
+
- Day 1 — Problem I'm investigating
|
|
148
|
+
- Day 3 — What I learned from 5 engineers
|
|
149
|
+
- Day 7 — Architecture I'm considering
|
|
150
|
+
- Day 10 — First prototype detects breaking change
|
|
151
|
+
- Day 14 — First generated migration PR
|
|
152
|
+
- Day 18 — Someone outside my network tried it
|
|
153
|
+
- Day 21 — Here's what broke
|
|
154
|
+
|
|
155
|
+
---
|
|
156
|
+
|
|
157
|
+
## Cold Outreach Mastery
|
|
158
|
+
|
|
159
|
+
### Install Your Fucking Software on Other People's Systems
|
|
160
|
+
You will network a lot and have something valuable.
|
|
161
|
+
|
|
162
|
+
### Ask People to Roast Your Product
|
|
163
|
+
Respond to your cold email.
|
|
164
|
+
|
|
165
|
+
### Volume
|
|
166
|
+
~20k outreach avg needed. Do 100 by hand, literally.
|
|
167
|
+
|
|
168
|
+
### Subject Lines & Preview Text
|
|
169
|
+
- **Avoid:** "inquiry," "exclusive," "seeking" → sounds like bot
|
|
170
|
+
- **Experiment** with creative lines
|
|
171
|
+
- **First 20-30 words** of body show in preview — make them count
|
|
172
|
+
|
|
173
|
+
### Message Structure (5-8 sentences email, 2-5 LinkedIn)
|
|
174
|
+
- Be informal
|
|
175
|
+
- Explain how you want to help them
|
|
176
|
+
- One-sentence value prop
|
|
177
|
+
- Social proof: other customers OR very relevant background
|
|
178
|
+
- **Specific CTA:** "Got 20 mins this week?" (not "does this sound interesting?")
|
|
179
|
+
- Include calendar link
|
|
180
|
+
|
|
181
|
+
### Targeting Beats Perfect Message
|
|
182
|
+
- Think: does this person actually have this pain point?
|
|
183
|
+
- Check last success → reach out to similar people
|
|
184
|
+
- Who in org has most to gain from buying?
|
|
185
|
+
- Company size matters
|
|
186
|
+
- Verify individually if they're right fit
|
|
187
|
+
|
|
188
|
+
### Start With Warm Network
|
|
189
|
+
Friends, family, literally everyone → ask for intros
|
|
190
|
+
|
|
191
|
+
### LinkedIn Optimization
|
|
192
|
+
- Profile pic
|
|
193
|
+
- Banner as an ad
|
|
194
|
+
- 1-line description for company
|
|
195
|
+
- Elevate anything buyer would care about
|
|
196
|
+
- Build mutual connections
|
|
197
|
+
|
|
198
|
+
### Reply Rate Benchmarks
|
|
199
|
+
**2-3 replies per 100** is normal. Improve by:
|
|
200
|
+
- Contact right person
|
|
201
|
+
- Contact right companies
|
|
202
|
+
- Good subject lines
|
|
203
|
+
- Good message
|
|
204
|
+
- Good materials
|
|
205
|
+
- Deliverability
|
|
206
|
+
|
|
207
|
+
### Follow-Up Cadence
|
|
208
|
+
4 follow-ups over ~10 days (5 total touches). Break up message — make things clear.
|
|
209
|
+
|
|
210
|
+
### Block Out Time
|
|
211
|
+
- How many msgs/day
|
|
212
|
+
- Time per msg
|
|
213
|
+
- When to send
|
|
214
|
+
|
|
215
|
+
### Use Customer Language
|
|
216
|
+
Ask existing customers: "What got your attention about my message?"
|
|
217
|
+
"How do you think about my product?"
|
|
218
|
+
Use their words in your outreach.
|
|
219
|
+
|
|
220
|
+
---
|
|
221
|
+
|
|
222
|
+
## Build in Public: Video & Multi-Platform
|
|
223
|
+
|
|
224
|
+
**Put up videos everywhere:** YouTube, X/Twitter, LinkedIn, TikTok, Reels, Shorts.
|
|
225
|
+
|
|
226
|
+
**Content types that work:**
|
|
227
|
+
- Day-in-the-life building
|
|
228
|
+
- "Here's what I learned today" (2-3 min)
|
|
229
|
+
- Live coding / architecture walkthroughs
|
|
230
|
+
- Problem deep-dives (not solution pitches)
|
|
231
|
+
- User conversation highlights (anonymized)
|
|
232
|
+
- Milestone updates (M1-M8 from above)
|
|
233
|
+
- Failures and what broke
|
|
234
|
+
|
|
235
|
+
**Frequency:** 3-5 posts/week minimum. Consistency > quality at start.
|
|
236
|
+
|
|
237
|
+
**Repurpose:** One recording → clip for X, LinkedIn, Shorts, TikTok. Long-form for YouTube.
|
|
238
|
+
|
|
239
|
+
---
|
|
240
|
+
|
|
241
|
+
## Warm Intro Networks (Exhaust Before Cold)
|
|
242
|
+
|
|
243
|
+
**Tier 1 — Direct:**
|
|
244
|
+
- Close friends
|
|
245
|
+
- Current/former coworkers
|
|
246
|
+
- School alumni (same cohort, same major, same clubs)
|
|
247
|
+
- Employer alumni network (ex-Google, ex-Stripe, ex-YC, etc.)
|
|
248
|
+
|
|
249
|
+
**Tier 2 — One Hop:**
|
|
250
|
+
- Friends of friends (ask: "Who do you know who deals with Stripe/API migrations?")
|
|
251
|
+
- Former coworkers' current networks
|
|
252
|
+
- Alumni one degree out
|
|
253
|
+
|
|
254
|
+
**Tier 3 — Community:**
|
|
255
|
+
- Indie Hackers / YC co-founder matching / OnDeck / Pioneer / HF0 alumni
|
|
256
|
+
- Discord/Slack communities you're active in
|
|
257
|
+
- Conference/meetup contacts
|
|
258
|
+
|
|
259
|
+
**How to ask:**
|
|
260
|
+
> "Hey [Name], I'm building DriftLock — a tool that detects API changes and auto-generates migration PRs. Starting with Stripe.
|
|
261
|
+
> I'm looking to talk to engineers who've felt this pain. Know anyone who:
|
|
262
|
+
> - Maintains Stripe integrations
|
|
263
|
+
> - Has dealt with breaking API changes
|
|
264
|
+
> - Builds SaaS with payment integrations
|
|
265
|
+
> Would appreciate an intro. Happy to share what I'm learning too."
|
|
266
|
+
|
|
267
|
+
**Track in your 100-person spreadsheet:** Source column (warm Tier 1/2/3 vs cold). Warm intros convert 10-50x better.
|
|
@@ -0,0 +1,339 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: deployments
|
|
3
|
+
description: "Analyze any repository structure (monorepo, separate frontend/backend, full-stack, static site) and give clean step-by-step deployment instructions for AWS EC2, VPS, or virtual machines. Guides through the complete E2E process from launching instances to SSL setup, with exact commands, verification steps, and troubleshooting. Use when user wants to deploy a repo to production, asks about AWS/cloud deployment, or needs hosting guidance. Covers all architectures: Node.js, Python, Docker, static sites, databases, and adapts instructions to the detected tech stack."
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Deployments
|
|
7
|
+
|
|
8
|
+
## When to trigger
|
|
9
|
+
|
|
10
|
+
- User wants to deploy a repo to AWS/EC2/VPS/cloud VM
|
|
11
|
+
- User asks "how do I deploy this"
|
|
12
|
+
- User mentions setting up production environment
|
|
13
|
+
- User uploads/clones a repo and wants hosting guidance
|
|
14
|
+
- User asks about deployment architecture, setup, or infrastructure
|
|
15
|
+
|
|
16
|
+
## What this skill does
|
|
17
|
+
|
|
18
|
+
### Phase 1: Repository Analysis
|
|
19
|
+
|
|
20
|
+
1. Identify architecture type: monorepo, separate repos, full-stack single project, static site, backend-only API, or microservices.
|
|
21
|
+
2. Detect tech stack: frontend framework, backend runtime, database, build tools, package manager.
|
|
22
|
+
3. Find critical files: package.json, Dockerfiles, .env.example, build scripts, migration files.
|
|
23
|
+
|
|
24
|
+
### Phase 2: Deployment Strategy
|
|
25
|
+
|
|
26
|
+
Based on analysis, determine single vs multi-server setup, reverse proxy needs (Nginx/Caddy), process management (PM2/systemd), build vs runtime separation, environment variables, port configuration, and SSL/HTTPS setup.
|
|
27
|
+
|
|
28
|
+
### Phase 3: Step-by-Step Instructions
|
|
29
|
+
|
|
30
|
+
Give in this format. Each step has a one-sentence goal, exact commands, and gotchas.
|
|
31
|
+
|
|
32
|
+
```
|
|
33
|
+
## Deployment Plan for [Project Name]
|
|
34
|
+
|
|
35
|
+
Architecture detected: [e.g., "Monorepo with Next.js frontend + Express backend"]
|
|
36
|
+
Recommended setup: [e.g., "Single EC2 t3.small, Nginx reverse proxy, PM2"]
|
|
37
|
+
|
|
38
|
+
### Prerequisites Checklist
|
|
39
|
+
- [ ] AWS account with billing enabled
|
|
40
|
+
- [ ] Domain name (optional but recommended)
|
|
41
|
+
- [ ] SSH key pair generated locally
|
|
42
|
+
- [ ] Git installed locally
|
|
43
|
+
|
|
44
|
+
### Step 1: Launch EC2 Instance
|
|
45
|
+
Create the virtual machine.
|
|
46
|
+
|
|
47
|
+
1. Go to AWS Console, EC2, Launch Instance
|
|
48
|
+
2. Choose Ubuntu 22.04 LTS (free tier eligible)
|
|
49
|
+
3. Instance type: t3.small (2GB RAM minimum for this stack)
|
|
50
|
+
4. Key pair: Create new, download .pem file, save as `myproject.pem`
|
|
51
|
+
5. Security group: Allow SSH (22), HTTP (80), HTTPS (443), Custom TCP ([ports needed])
|
|
52
|
+
6. Storage: 20GB GP3
|
|
53
|
+
7. Click Launch
|
|
54
|
+
|
|
55
|
+
Save your .pem file immediately. You cannot download it again. Run `chmod 400 myproject.pem` after download. Note your instance's public IP from the console.
|
|
56
|
+
|
|
57
|
+
### Step 2: Connect to Server
|
|
58
|
+
SSH into your new instance.
|
|
59
|
+
|
|
60
|
+
```bash
|
|
61
|
+
chmod 400 myproject.pem
|
|
62
|
+
ssh -i myproject.pem ubuntu@YOUR_INSTANCE_IP
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
Replace YOUR_INSTANCE_IP with actual IP from console. First connection asks to verify fingerprint, type "yes".
|
|
66
|
+
|
|
67
|
+
### Step 3: Install System Dependencies
|
|
68
|
+
Set up Node.js, Nginx, database.
|
|
69
|
+
|
|
70
|
+
```bash
|
|
71
|
+
# Update system
|
|
72
|
+
sudo apt update && sudo apt upgrade -y
|
|
73
|
+
|
|
74
|
+
# Install Node.js 20
|
|
75
|
+
curl -fsSL https://deb.nodesource.com/setup_20.x | sudo -E bash -
|
|
76
|
+
sudo apt install -y nodejs
|
|
77
|
+
|
|
78
|
+
# Install Nginx
|
|
79
|
+
sudo apt install -y nginx
|
|
80
|
+
|
|
81
|
+
# Install PostgreSQL (if needed)
|
|
82
|
+
sudo apt install -y postgresql postgresql-contrib
|
|
83
|
+
|
|
84
|
+
# Install PM2 globally
|
|
85
|
+
sudo npm install -g pm2
|
|
86
|
+
```
|
|
87
|
+
|
|
88
|
+
Each command should complete without errors. Check versions: `node -v`, `nginx -v`, `psql --version`.
|
|
89
|
+
|
|
90
|
+
### Step 4: Clone Repository
|
|
91
|
+
Get your code on the server.
|
|
92
|
+
|
|
93
|
+
```bash
|
|
94
|
+
cd /home/ubuntu
|
|
95
|
+
git clone https://github.com/yourusername/yourrepo.git
|
|
96
|
+
cd yourrepo
|
|
97
|
+
```
|
|
98
|
+
|
|
99
|
+
If private repo, set up GitHub SSH key or use personal access token. Verify all files cloned: `ls -la`.
|
|
100
|
+
|
|
101
|
+
### Step 5: Configure Environment Variables
|
|
102
|
+
Set up .env files.
|
|
103
|
+
|
|
104
|
+
```bash
|
|
105
|
+
# Backend
|
|
106
|
+
cd /home/ubuntu/yourrepo/backend
|
|
107
|
+
cp .env.example .env
|
|
108
|
+
nano .env
|
|
109
|
+
```
|
|
110
|
+
|
|
111
|
+
Edit these values:
|
|
112
|
+
```
|
|
113
|
+
DATABASE_URL=postgresql://user:password@localhost:5432/dbname
|
|
114
|
+
PORT=5000
|
|
115
|
+
NODE_ENV=production
|
|
116
|
+
JWT_SECRET=[generate random string]
|
|
117
|
+
```
|
|
118
|
+
|
|
119
|
+
Frontend (if separate):
|
|
120
|
+
```bash
|
|
121
|
+
cd /home/ubuntu/yourrepo/frontend
|
|
122
|
+
cp .env.example .env
|
|
123
|
+
nano .env
|
|
124
|
+
```
|
|
125
|
+
|
|
126
|
+
```
|
|
127
|
+
VITE_API_URL=http://YOUR_INSTANCE_IP:5000
|
|
128
|
+
```
|
|
129
|
+
|
|
130
|
+
Generate secure secrets with `openssl rand -base64 32`. Never commit .env files. Save and exit nano: Ctrl+X, Y, Enter.
|
|
131
|
+
|
|
132
|
+
### Step 6: Set Up Database
|
|
133
|
+
Create database and run migrations.
|
|
134
|
+
|
|
135
|
+
```bash
|
|
136
|
+
# Switch to postgres user
|
|
137
|
+
sudo -u postgres psql
|
|
138
|
+
|
|
139
|
+
# In PostgreSQL prompt:
|
|
140
|
+
CREATE DATABASE yourdbname;
|
|
141
|
+
CREATE USER youruser WITH PASSWORD 'securepassword';
|
|
142
|
+
GRANT ALL PRIVILEGES ON DATABASE yourdbname TO youruser;
|
|
143
|
+
\q
|
|
144
|
+
|
|
145
|
+
# Run migrations (adjust for your project)
|
|
146
|
+
cd /home/ubuntu/yourrepo/backend
|
|
147
|
+
npm install
|
|
148
|
+
npm run migrate
|
|
149
|
+
```
|
|
150
|
+
|
|
151
|
+
Use the same credentials in .env. Check migration success before continuing.
|
|
152
|
+
|
|
153
|
+
### Step 7: Build Frontend
|
|
154
|
+
Compile production assets.
|
|
155
|
+
|
|
156
|
+
```bash
|
|
157
|
+
cd /home/ubuntu/yourrepo/frontend
|
|
158
|
+
npm install
|
|
159
|
+
npm run build
|
|
160
|
+
```
|
|
161
|
+
|
|
162
|
+
Build creates `dist/` or `build/` folder. Check for errors in build output. Note the output folder name.
|
|
163
|
+
|
|
164
|
+
### Step 8: Start Backend with PM2
|
|
165
|
+
Run backend as persistent process.
|
|
166
|
+
|
|
167
|
+
```bash
|
|
168
|
+
cd /home/ubuntu/yourrepo/backend
|
|
169
|
+
npm install
|
|
170
|
+
pm2 start npm --name "backend" -- start
|
|
171
|
+
pm2 save
|
|
172
|
+
pm2 startup
|
|
173
|
+
```
|
|
174
|
+
|
|
175
|
+
Run the command PM2 outputs (starts with sudo). `pm2 status` shows backend running. `pm2 logs backend` to check for errors. PM2 will auto-restart on crashes and server reboots.
|
|
176
|
+
|
|
177
|
+
### Step 9: Configure Nginx
|
|
178
|
+
Set up reverse proxy and serve frontend.
|
|
179
|
+
|
|
180
|
+
```bash
|
|
181
|
+
sudo nano /etc/nginx/sites-available/yourapp
|
|
182
|
+
```
|
|
183
|
+
|
|
184
|
+
Paste this config:
|
|
185
|
+
```nginx
|
|
186
|
+
server {
|
|
187
|
+
listen 80;
|
|
188
|
+
server_name YOUR_DOMAIN_OR_IP;
|
|
189
|
+
|
|
190
|
+
# Frontend
|
|
191
|
+
location / {
|
|
192
|
+
root /home/ubuntu/yourrepo/frontend/dist;
|
|
193
|
+
try_files $uri $uri/ /index.html;
|
|
194
|
+
}
|
|
195
|
+
|
|
196
|
+
# Backend API
|
|
197
|
+
location /api {
|
|
198
|
+
proxy_pass http://localhost:5000;
|
|
199
|
+
proxy_http_version 1.1;
|
|
200
|
+
proxy_set_header Upgrade $http_upgrade;
|
|
201
|
+
proxy_set_header Connection 'upgrade';
|
|
202
|
+
proxy_set_header Host $host;
|
|
203
|
+
proxy_cache_bypass $http_upgrade;
|
|
204
|
+
}
|
|
205
|
+
}
|
|
206
|
+
```
|
|
207
|
+
|
|
208
|
+
Enable the site:
|
|
209
|
+
```bash
|
|
210
|
+
sudo ln -s /etc/nginx/sites-available/yourapp /etc/nginx/sites-enabled/
|
|
211
|
+
sudo nginx -t
|
|
212
|
+
sudo systemctl restart nginx
|
|
213
|
+
```
|
|
214
|
+
|
|
215
|
+
Replace YOUR_DOMAIN_OR_IP with actual value. Adjust `/api` path if your backend uses different routes. `nginx -t` must show "syntax is ok".
|
|
216
|
+
|
|
217
|
+
### Step 10: Configure Firewall
|
|
218
|
+
Lock down security.
|
|
219
|
+
|
|
220
|
+
```bash
|
|
221
|
+
sudo ufw allow 'Nginx Full'
|
|
222
|
+
sudo ufw allow OpenSSH
|
|
223
|
+
sudo ufw enable
|
|
224
|
+
```
|
|
225
|
+
|
|
226
|
+
Allow OpenSSH BEFORE enabling firewall or you will lock yourself out. Type 'y' when prompted.
|
|
227
|
+
|
|
228
|
+
### Step 11: Test Deployment
|
|
229
|
+
Verify everything works.
|
|
230
|
+
|
|
231
|
+
1. Visit http://YOUR_INSTANCE_IP in browser
|
|
232
|
+
2. Frontend should load
|
|
233
|
+
3. Test API calls through frontend
|
|
234
|
+
4. Check PM2 logs: `pm2 logs backend`
|
|
235
|
+
5. Check Nginx logs: `sudo tail -f /var/log/nginx/error.log`
|
|
236
|
+
|
|
237
|
+
If frontend doesn't load, check Nginx config. If API fails, check backend logs and .env. Browser console shows frontend errors.
|
|
238
|
+
|
|
239
|
+
### Step 12: SSL Setup
|
|
240
|
+
Enable HTTPS with Let's Encrypt.
|
|
241
|
+
|
|
242
|
+
```bash
|
|
243
|
+
sudo apt install certbot python3-certbot-nginx
|
|
244
|
+
sudo certbot --nginx -d yourdomain.com
|
|
245
|
+
```
|
|
246
|
+
|
|
247
|
+
Follow prompts, choose redirect HTTP to HTTPS. Need a domain name pointing to your IP. Certificates auto-renew every 90 days. Test auto-renewal: `sudo certbot renew --dry-run`.
|
|
248
|
+
|
|
249
|
+
## Maintenance Commands
|
|
250
|
+
|
|
251
|
+
View logs:
|
|
252
|
+
```bash
|
|
253
|
+
pm2 logs backend
|
|
254
|
+
sudo tail -f /var/log/nginx/error.log
|
|
255
|
+
```
|
|
256
|
+
|
|
257
|
+
Restart services:
|
|
258
|
+
```bash
|
|
259
|
+
pm2 restart backend
|
|
260
|
+
sudo systemctl restart nginx
|
|
261
|
+
```
|
|
262
|
+
|
|
263
|
+
Update code:
|
|
264
|
+
```bash
|
|
265
|
+
cd /home/ubuntu/yourrepo
|
|
266
|
+
git pull
|
|
267
|
+
cd frontend && npm install && npm run build
|
|
268
|
+
cd ../backend && npm install
|
|
269
|
+
pm2 restart backend
|
|
270
|
+
```
|
|
271
|
+
|
|
272
|
+
Monitor resources:
|
|
273
|
+
```bash
|
|
274
|
+
pm2 monit
|
|
275
|
+
htop
|
|
276
|
+
df -h # disk space
|
|
277
|
+
```
|
|
278
|
+
|
|
279
|
+
## Troubleshooting
|
|
280
|
+
|
|
281
|
+
Site not loading: check firewall (`sudo ufw status`), Nginx (`sudo systemctl status nginx`), PM2 (`pm2 status`).
|
|
282
|
+
|
|
283
|
+
API 502 errors: backend not running (`pm2 restart backend`), wrong port in Nginx config, check backend logs (`pm2 logs backend`).
|
|
284
|
+
|
|
285
|
+
Database connection fails: check PostgreSQL running (`sudo systemctl status postgresql`), verify .env DATABASE_URL matches database setup, check user permissions.
|
|
286
|
+
|
|
287
|
+
Out of memory: upgrade instance type, add swap space, optimize build process.
|
|
288
|
+
|
|
289
|
+
## Cost Estimate
|
|
290
|
+
|
|
291
|
+
- t3.small EC2: ~$15/month
|
|
292
|
+
- Domain (optional): ~$12/year
|
|
293
|
+
- Total: ~$15-20/month
|
|
294
|
+
|
|
295
|
+
## Adaptation Rules
|
|
296
|
+
|
|
297
|
+
Monorepo with shared code: install at root level, build workspace packages first, separate PM2 processes for each service.
|
|
298
|
+
|
|
299
|
+
Microservices: multiple PM2 processes, Nginx routing to different ports, consider Docker Compose alternative.
|
|
300
|
+
|
|
301
|
+
Static site only: skip PM2 and database, Nginx serves files directly, cheaper (t3.micro).
|
|
302
|
+
|
|
303
|
+
Docker-based: install Docker instead of Node, use docker-compose, Nginx optional (can use Docker ports).
|
|
304
|
+
|
|
305
|
+
Python backend: use gunicorn instead of PM2, systemd service file, install pip requirements.
|
|
306
|
+
|
|
307
|
+
Different databases: MongoDB (install MongoDB server, adjust connection string), MySQL (install mysql-server, use mysql commands), Redis (install redis-server for caching).
|
|
308
|
+
|
|
309
|
+
Different clouds: DigitalOcean ("Droplet" instead of EC2, otherwise identical), Linode ("Linode" instead of EC2, same process), Vultr (same Ubuntu setup process).
|
|
310
|
+
|
|
311
|
+
## Output Format Rules
|
|
312
|
+
|
|
313
|
+
1. Always start with architecture detection.
|
|
314
|
+
2. Number every step.
|
|
315
|
+
3. One-sentence goal, exact commands, gotchas per step.
|
|
316
|
+
4. Use actual values when possible, placeholders when not.
|
|
317
|
+
5. Include verification commands after critical steps.
|
|
318
|
+
6. Give copy-pasteable code blocks.
|
|
319
|
+
7. End with maintenance and troubleshooting.
|
|
320
|
+
|
|
321
|
+
## Critical Principles
|
|
322
|
+
|
|
323
|
+
Never assume knowledge. Explain what EC2 is, what PM2 does, why Nginx. One step, one concept. Show the actual command, not "run the migration script." Explain why. Include checkpoints before continuing. Offer alternative paths for different stacks.
|
|
324
|
+
|
|
325
|
+
## Quality Checks Before Output
|
|
326
|
+
|
|
327
|
+
- [ ] Can a beginner follow this without prior AWS knowledge?
|
|
328
|
+
- [ ] Are all ports/URLs/paths specific to this repo?
|
|
329
|
+
- [ ] Did I explain what each tool does?
|
|
330
|
+
- [ ] Are there verification steps after critical changes?
|
|
331
|
+
- [ ] Did I cover what to do when things break?
|
|
332
|
+
- [ ] Is the security group configuration complete?
|
|
333
|
+
- [ ] Are environment variables all documented?
|
|
334
|
+
|
|
335
|
+
## Example Adaptations
|
|
336
|
+
|
|
337
|
+
Next.js app (frontend + API routes): skip separate backend setup, PM2 runs `next start` only, Nginx proxies everything to Node, simpler architecture.
|
|
338
|
+
|
|
339
|
+
Django + React: Python/pip instead of Node for backend, Gunicorn + systemd instead of PM2, static file collection step, PostgreSQL setup same.
|