Purpose
Collect just enough about the person and their project to tailor the Claude Code setup, then
write USER_PROFILE.json and route to the right tier (developer / hybrid / non-dev).
When To Use This
- The user runs
/onboard, says they're new, or asks to be set up - No
USER_PROFILE.jsonexists yet and the user wants/bootstrap
Steps
1. Greet briefly
"I'll ask 6 quick questions so Claude Code fits how YOU work — about 2 minutes, once."
2. Ask the 6 questions ONE AT A TIME (wait for each answer)
- Role — developer, founder, designer, PM, data, student, other?
- Comfort with code/terminal (1–5) — 1 = avoid the terminal … 5 = senior engineer.
- Team — solo / small (2–5) / larger?
- Domain — software / design / ops / marketing / research / other?
- Top 1–3 goals — e.g. "ship faster", "automate reports", "learn to code".
- Success in 30 days — one sentence.
3. Detect the project (no interaction)
python3 .claude/skills/onboarding/scripts/detect-project.py --target . --output /tmp/detected.json
If it fails, treat detection as {"has_project": false}.
4. Write the profile
echo '<answers_json>' | python3 .claude/skills/onboarding/scripts/write-profile.py \
--detected /tmp/detected.json --output USER_PROFILE.json
<answers_json> keys: role_type, tech_level (int 1–5), team_size (solo|small|large),
domain, primary_goals (array), success_in_30_days.
5. Recommend the tier
Read generation_tier from USER_PROFILE.json and tell the user which tier fits, then point
them to /bootstrap (or to bash install.sh --tier <tier> if they prefer the deterministic path).
Output
Writes USER_PROFILE.json and prints a short summary (role, tech level, tier, detected stack).
Notes
- If a profile already exists, ask whether to update or keep it — never silently overwrite.
- If an answer is ambiguous, ask one quick follow-up rather than guessing.