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.
Installs into .claude/skills of the current project.
Are you the author of Onboard?
Add the live security badge to your README. It updates with every re-scan.
[](https://www.skillsdirectory.com/skills/sohaibdevv-onboard)
---
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."