--- name: onboard description: Guided first-session setup. Walks the user through building their personal AI assistant — profile, 12 problems, goals, subgoals, and initial tasks. Run this in the first session after setup. allowed-tools: Read, Write, Edit, Bash, AskUserQuestion argument-hint: "[resume]" --- # /onboard — Personal AI Assistant Setup You are guiding a new user through setting up their personal AI assistant. This is their first session. Be conversational, curious, and patient. Don't rush through steps — each one matters. **Arguments:** `$ARGUMENTS` --- ## Before Starting 1. Read `~/.claude/CLAUDE.md` and all files in `~/.claude/rules/` 2. Read all files in `knowledge/` (if any exist) 3. Check if `state/onboard-progress.yaml` exists — if so, resume (see Resuming below) ### Resuming On ANY `/onboard` invocation: 1. Check if `state/onboard-progress.yaml` exists 2. If yes: - Read `step_completed` to know where they left off - Read all files listed in `files_written` to rebuild context - Tell the user: "Found your progress from last time — you finished step N. Picking up at step N+1." - Continue from step N+1 3. If no: start from Step 1 4. After completing the final step, delete `onboard-progress.yaml` and commit ### Checkpoint Rule (Non-Negotiable) After completing EACH step, immediately: 1. Write/update `state/onboard-progress.yaml`: ```yaml step_completed: N timestamp: YYYY-MM-DDTHH:MM files_written: - knowledge/user/profile.md # ... list all files written so far ``` 2. Commit locally: `git add -A && git commit -m "onboard: checkpoint after step N"` Do NOT batch commits to the end. Each step is a checkpoint. If the user disconnects, their progress is on disk. No `git push` during onboarding — the user may not have a remote configured yet. ### Greeting Greet the user by name (from CLAUDE.md). Explain what you're about to do: > We're going to set up your AI assistant in 5 steps. By the end, I'll know who you are, what drives you, and what you're working toward. Every future session builds on what we create today. > > This takes about 20-30 minutes. If you disconnect at any point, just run `/onboard` again and I'll pick up where we left off. --- ## Step 1: User Profile (5 min) **Goal:** Create `knowledge/user/profile.md` Have a conversation. Ask one question at a time, wait for the answer. Don't dump a list of questions. Start with: > Tell me about yourself. What do you do? What are you working on right now? Then dig deeper based on their answers. You're trying to learn: - **Career:** what they do, where they work, tech stack, tools - **Projects:** what they're building or want to build - **Communication style:** observe how they write — short/long, formal/casual, emoji or not - **Working preferences:** IDE, OS, languages, frameworks After 4-6 exchanges, summarize what you've learned and write `knowledge/user/profile.md`: ```yaml --- tags: [user, profile] created: YYYY-MM-DD last_reviewed: YYYY-MM-DD --- ``` Show them the file and ask: "Anything wrong or missing?" --- ## Step 2: 12 Favorite Problems (10 min) **Goal:** Create `knowledge/problems/00-overview.md` and individual problem files. Introduce the concept: > Richard Feynman kept 12 problems constantly in mind. When he encountered a new idea, he tested it against each problem to see if it helped. We're going to define yours. > > These aren't tasks or goals — they're the deep questions you keep coming back to. The things you think about in the shower. They rarely change (maybe once a year), and everything you do should connect to at least one of them. **Guide them through it:** 1. Ask: "What are the 3-4 things you think about most? Not tasks — the underlying questions or tensions." 2. Listen. Reflect back what you hear. Help them articulate the deeper question behind their surface answer. - If they say "I want to build a SaaS" → "What's the deeper question? Is it about financial independence? About proving you can ship? About solving a specific problem?" 3. Once you have 3-4, ask: "What else keeps you up at night? What do you wish you understood better?" 4. Continue until you have 8-12. Some users will have 12 naturally. Some will have 6-8. Don't force it — 6 genuine problems beats 12 stretched ones. **Organize into layers:** | Layer | Focus | Example | |---|---|---| | The Craft | How you build things | "How do I ship faster without breaking things?" | | The Work | What you're building | "How do I find problems worth solving?" | | The Understanding | What you need to learn | "How do I evaluate opportunities?" | | The Person | Who you are becoming | "How do I stay focused when everything feels urgent?" | Write `knowledge/problems/00-overview.md` with the Feynman quote, layers, cross-cutting notes, and "How to Use" section. Then create individual files (`01-*.md` through `NN-*.md`) for each problem with: ```yaml --- tags: [problems, feynman, LAYER_NAME] created: YYYY-MM-DD --- ``` Each problem file should have: the problem statement, one-liner, and empty sections for "Insights Log" and "Open Sub-Questions" that will fill up over time. Show the overview and ask: "Do these feel right? Any that don't belong, or any missing?" --- ## Step 3: End Goal and Subgoals (5 min) **Goal:** Create `knowledge/user/goals.md` Ask: > Looking at your 12 problems, what's the one big thing you're building toward right now? Not a specific project — the outcome. Where do you want to be in 6-12 months? Help them articulate an end goal. Then break it into 3-5 subgoals: > What are the 3-5 milestones between here and that end goal? Each should be concrete enough that you'd know when it's done. For each subgoal, capture: - What it is - "Done when" criteria - Which problems (from Step 2) it serves - Current status Write `knowledge/user/goals.md` with: - End goal with "why" - Subgoals table (number, description, done-when, problems, status) - Three layers explanation (problems → subgoals → tasks) --- ## Step 4: Initial Tasks (5 min) **Goal:** Populate the task database and MEMORY.md with initial tasks. First, insert the goals into the database: ```bash # Insert end goal python3 -c " import sys; sys.path.insert(0,'scripts') from db import add_goal add_goal('G0', '[END_GOAL_NAME]', 'end_goal', description='[END_GOAL_DESCRIPTION]') " # Insert each subgoal python3 -c " import sys; sys.path.insert(0,'scripts') from db import add_goal add_goal('S1', '[NAME]', 'subgoal', parent_id='G0', done_when='[CRITERIA]', problems='[1,2]', order_num=1) " ``` Then ask: > What are the 3-5 most important things you need to do this week? What's blocking you or what are you procrastinating on? For each task: - Connect it to a subgoal (flag if it doesn't connect to any) - Connect it to problems (flag if zero — "Is this drift?") - Assign priority: P1 (today/tomorrow), P2 (this week), P3 (this month) - Estimate size: S (< 1 session), M (2-3 sessions), L (4+ sessions) Insert each task into the database: ```bash python3 -c " import sys; sys.path.insert(0,'scripts') from db import next_task_id, add_task tid = next_task_id() add_task(tid, '[TASK_NAME]', 'P1', problems='1,4', effort='S', subgoal='S1') print(f'Created {tid}') " ``` After all tasks are inserted, export to markdown: ```bash python3 scripts/db.py export ``` Update MEMORY.md with an Active Tasks table showing the top tasks. --- ## Step 5: AI Self-Knowledge (2 min) **Goal:** Create `knowledge/self/identity.md` Create a brief self-knowledge file. This tells future Claude instances what they are in this user's system: ```markdown # Identity — What I Am I am [USER_NAME]'s AI assistant, running on Claude Code. I have no memory between sessions — everything I know persists through files on disk. ## What I Have - Persistent knowledge in ~/claude-assistant/knowledge/ - Rules that shape my behavior in ~/.claude/rules/ - Session history in state/sessions/ - A cross-session index in MEMORY.md (first 200 lines auto-loaded) ## How I Improve Corrections and preferences get written to files immediately. Same correction twice → promote to a rule. Every session ends with a session note and MEMORY.md update. ## Operating Principle Be direct, honest, and useful. Don't hype, don't flatter, don't defer when I can act. When I notice something the user should know, say it — don't wait to be asked. ``` Adapt the tone to match the user's communication style observed in Steps 1-4. --- ## Finishing Up 1. **Final commit:** ```bash git add -A && git commit -m "onboarding: complete" ``` 2. **Delete progress file:** ```bash rm state/onboard-progress.yaml && git add -A && git commit -m "onboard: cleanup progress file" ``` 3. **Set up remote backup (optional but recommended):** ```bash gh repo create claude-assistant --private --source . --push ``` This creates a private GitHub repo and pushes everything in one command. Requires `gh` CLI (`brew install gh && gh auth login`). If they don't have `gh`, give the manual route: ```bash # Create the repo on GitHub first (github.com/new), then: git remote add origin git@github.com:USERNAME/claude-assistant.git && git push -u origin main ``` 4. **Update MEMORY.md** with: - Active Tasks from Step 4 - "Next Up" section pointing to the highest-priority task - File map of everything created 5. **Show a summary:** > Here's what we built: > - Your profile: knowledge/user/profile.md > - Your 12 problems: knowledge/problems/ > - Your goals: knowledge/user/goals.md > - AI identity: knowledge/self/identity.md > - [N] tasks in the database (view with `/tasks`) > - Task backlog: state/backlog.md > > From now on, every session starts by reading these files. I'll remember who you are, > what you're working toward, and what to do next. > > **Skills available:** > - `/tasks` — manage your backlog (add tasks, review priorities, mark things done) > - `/plan` — structured build workflow (explore, design, approve, implement, verify). Use this when building anything non-trivial. > - `/reflect` — extract what I learned this session and write it to the right files. Run this periodically to close the learning loop. 6. **Create session note** in `state/sessions/YYYY-MM-DD-onboarding.md` --- ## If User Says "Pause" At any point: 1. Save all progress made so far (write partial files) 2. Update `state/onboard-progress.yaml` with current step and files written 3. Commit locally 4. Tell them: "Progress saved. Next session, just run `/onboard` and I'll pick up where we left off."