# Onboard

> 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.

- Skill: `sohaibdevv/onboard` (Agent Skill)
- Install (CLI): `npx skillmds@latest add sohaibdevv/onboard`
- Raw SKILL.md: https://api.skillmd.com/api/skills/sohaibdevv/onboard/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- Author: sohaibdevv (https://skillmd.com/u/sohaibdevv)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/sohaibdevv/onboard

---


# /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."

