This directory is a minimal starting shell for the LockIn project. It contains the context files Claude Code needs to be immediately useful, plus a bootstrap script to scaffold the real monorepo.
.
├── CLAUDE.md ← Persistent context (Claude Code reads this every session)
├── bootstrap.sh ← One-time scaffolding script
├── docs/
│ ├── CURRENT_SLICE.md ← What we're building RIGHT NOW (only this, nothing else)
│ ├── PRD.md ← Copy your PRD here
│ ├── P1_Spec.md ← Copy your P1 spec here
│ ├── Technical_Roadmap.md ← Copy your roadmap here
│ └── Competitive_ReCut.md ← Copy your competitive doc here
└── packages/
└── events/
└── schema.ts ← THE event schema. Read it before touching anything.
# 1. Clone or copy this directory to where you want the project to live
cp -r lockin-bootstrap ~/projects/lockin && cd ~/projects/lockin
# 2. Copy your actual project docs into docs/
# (PRD_v2.md, P1_Spec_RoleBased.md, Technical_Roadmap.md, Competitive_ReCut.md)
# 3. Run the bootstrap
chmod +x bootstrap.sh && ./bootstrap.sh
# 4. Fill in .env.local (Google OAuth credentials at minimum)
# 5. Start local infrastructure
docker compose -f infra/docker/docker-compose.yml up -d
# 6. Open Claude Code
claudeOnce Claude Code is open in the repo, start with this exact prompt:
Read
CLAUDE.mdanddocs/CURRENT_SLICE.md. Then propose a plan for implementing the current slice. Do not write any code yet — show me the plan first, including file-by-file structure, the order you'd build things, and any decisions you need me to make.
Why this prompt works:
- It forces Claude Code to load persistent context before acting
- "Do not write code yet" prevents the classic AI failure of generating 2,000 lines that miss the point
- "Show me the plan first" gives you a chance to course-correct before commits happen
- Asking for "decisions you need me to make" surfaces the small choices that matter (Drizzle vs Prisma, NextAuth v4 vs v5, etc.)
One slice at a time. When the current slice ships:
- Archive
CURRENT_SLICE.mdtodocs/slices/00_auth_task_spine.md - Write a new
CURRENT_SLICE.mdfor the next slice - Start a fresh Claude Code session
Do not work on multiple slices in parallel. The reason Claude Code gets confused is context overload. Keep the focus narrow and the docs current.
Slice 0: Auth + Task Capture Spine (3–5 days) ← CURRENT
Slice 1: Google Calendar Read-Only Sync (3–4 days)
Slice 2: Event Sourcing + Outbox Pattern (2–3 days)
Slice 3: Mood/Energy Widget + Events (3–4 days)
Slice 4: Scheduling Service (heuristic v0) (5–7 days)
Slice 5: Explanation Service (LLM polish) (3–4 days)
Slice 6: MCP Server (Claude/ChatGPT/Gemini) (5–7 days)
Slice 7: Landing page + Onboarding polish (3–4 days)
Slice 8: Beta launch prep (3–5 days)
That's 8 slices over ~12 weeks, which matches the P1 roadmap with realistic slack for debugging, refactors, and user research.
- Writing boilerplate (Next.js routes, FastAPI endpoints, Pydantic models, Tailwind components)
- Translating between type systems (TypeScript ↔ Python via shared contracts)
- Maintaining consistency across a codebase once patterns are set
- Running tests, linting, and debugging
- Refactoring when you have a clear goal
- Making product decisions (keep those in docs, not in prompts)
- Inventing architecture from scratch (that's why
CLAUDE.mdis opinionated) - Knowing when to stop (you have to enforce scope; that's what
CURRENT_SLICE.mdis for) - Remembering previous sessions (CLAUDE.md solves this; chat history doesn't persist)
Update CLAUDE.md and CURRENT_SLICE.md as the project evolves. Stale docs are the #1 failure mode when using Claude Code on a long project. Treat them as living specs, not archive material.
This bootstrap was generated in April 2026. Verify dependency versions before you run.