# onboard > Onboard new users to Personal OS. Collects context through interview, lets user choose a creature companion, and populates context files. - Author: hwells4 - Repository: hwells4/SaplingOS - Version: 20260123132054 - Stars: 0 - Forks: 0 - Last Updated: 2026-02-07 - Source: https://github.com/hwells4/SaplingOS - Web: https://mule.run/skillshub/@@hwells4/SaplingOS~onboard:20260123132054 --- --- name: onboard description: Onboard new users to Personal OS. Collects context through interview, lets user choose a creature companion, and populates context files. context_budget: skill_md: 200 max_references: 4 --- Guide new users through Personal OS setup: collect identity/business/voice context through sequential questions, let them choose an elemental creature companion, and populate context files. ``` /onboard # Start fresh onboarding /onboard --creature # Just change creature selection /onboard --reset # Re-run full onboarding (overwrites existing) ``` 1. **One question at a time:** Use AskUserQuestion for each step, never batch questions 2. **Everything skippable:** Every question can be skipped (except creature selection) 3. **Graceful degradation:** Scraping failures → offer manual input or skip 4. **Immediate payoff:** First calibration after onboarding hatches the egg 5. **Progressive disclosure:** Only load references when needed for specific workflows **Run these checks before anything else. Block onboarding if critical deps missing.** ```bash # Beads (required) - task tracking which bd >/dev/null 2>&1 || echo "MISSING: bd" # PyYAML (required) - schema validation python3 -c "import yaml" 2>/dev/null || echo "MISSING: pyyaml" ``` **If Beads missing:** > Beads is required for task tracking. Install it with: > ``` > brew tap steveyegge/beads > brew install bd > ``` > Then run `/onboard` again. **If PyYAML missing:** > PyYAML is required for schema validation. Install it with: > ``` > pip install pyyaml > ``` > Then run `/onboard` again. Only proceed if both checks pass. 1. **Check dependencies** — block if missing (see ``) 2. Check if context files exist → route appropriately 3. Get their name via AskUserQuestion 4. Welcome with rundown of what's coming (~3-5 min) 5. Creature selection (required): Fire egg, Water egg, or Nature egg 6. Business context (skippable): website URL or quick questions 7. Role selection (skippable): founder, engineer, designer, etc. 8. Primary use case (skippable): what they want help with 9. Writing samples (skippable) → analyze → voice-and-style.md 10. Image generation setup (optional) → Gemini API key 11. Call recording setup (optional) → Granola sync daemon 12. Generate context files from collected data 13. Explain how /task, /calibrate, /today work 14. Show creature + personalized welcome banner 15. GitHub CLI auth (optional): `gh auth login` for GitHub features 16. ⭐ Ask about starring the repo (optional): auto-star if authed, else manual link 17. Commit with /commit 18. Suggest `/today` to start first daily note | Condition | Workflow | |-----------|----------| | No context files exist | workflows/fresh-start.md | | Context files exist, no --reset | Ask: overwrite/merge/cancel | | --creature flag | workflows/creature-select.md | | --reset flag | workflows/fresh-start.md (force) | | Resume from interrupted | Load .claude/onboard-state.json, continue | User selects an elemental egg. The creature inside hatches after first calibration (10 traces). | Element | Egg | Creature | Theme | |---------|-----|----------|-------| | 🔥 Fire | Red/Orange | **Ember** | Burns through blockers, iterates fast | | 💧 Water | Blue | **Drift** | Flows around obstacles, adaptable | | 🌿 Nature | Green | **Bloom** | Grows organically, cultivates knowledge | **Evolution stages:** | Level | Traces | Stage | |-------|--------|-------| | 1 | 0-9 | Egg | | 2 | 10-99 | Hatchling | | 3 | 100-499 | Juvenile | | 4 | 500-1499 | Adult | | 5 | 1500+ | Legendary | Creature art stored in `.claude/creatures/{name}/{stage}.txt` **Step 11: Call Recording Setup (Optional)** Check if Granola is installed: ```bash [ -f "$HOME/Library/Application Support/Granola/cache-v3.json" ] && echo "installed" ``` If installed, ask via AskUserQuestion: > "Granola detected! Want to auto-sync meeting notes to your vault? (Recommended)" > - Yes, set it up > - No, skip If yes: ```bash cd services/granola-sync && ./install.sh ``` If not installed, skip silently (don't mention Granola to users who don't have it). Files populated during onboarding: | File | Primary Source | Fallback | |------|---------------|----------| | brain/context/about-me.md | Name + Role questions | Defaults | | brain/context/business.md | Company website | Business type Qs | | brain/context/voice-and-style.md | Writing samples | Template only | | brain/context/preferences.md | Use case selection | Defaults | Templates in: `.claude/skills/onboard/templates/` | Error | Recovery | |-------|----------| | Website scrape fails | "Couldn't load that—no worries, I'll ask a couple questions instead" | | Invalid URL | Show example, re-ask | | Session interrupted | Save to .claude/onboard-state.json, resume on next /onboard | | All questions skipped | Create minimal files with TODOs | | API key invalid | Validate format, offer to re-enter or skip | | Reference | Purpose | |-----------|---------| | references/extraction-targets.md | What to extract from company websites | | references/creatures.md | Creature definitions + art paths | | workflows/fresh-start.md | Main onboarding workflow | - [ ] User's name collected - [ ] Creature selected and stored in .claude/stats.yaml - [ ] At least one context file populated (or all skipped with TODOs) - [ ] System explanation delivered (/task, /calibrate, /today) - [ ] Welcome banner displayed with creature and name - [ ] Changes committed with /commit - [ ] User guided to next step (/today)