user-onboarding
Capture user preferences once, persist across all projects.
191 lines
guide: ONBOARDING-QUESTIONS-GUIDE
guide: USAGE-EXAMPLES-GUIDE
core process
Phase 0 — Detect Profile
1. **Check
~/.config/opencode/user-profile.json:**
- <90 days → Read, skip to Phase 3 (Quick Verify)
- >90 days → Read, ask "Update profile?"
- Missing → Full onboarding
2. **Check stale preferences:** Mentioned technologies outdated (e.g., Next.js 14 when current is 16)? Suggest update.
---
Phase 1 — Discovery Interview (Full Onboarding)
→ **See
ONBOARDING-QUESTIONS-GUIDE.md for complete 30-question interview (7 sections: Identity, Technical, Design, Workflow, Commit, Constraints, Session Purpose).**
Summary: 27 questions covering identity, technical preferences (platform, framework, stack), design taste, workflow style, constraints.
Rules:
- Ask once. Store permanently.
- Never include secrets, API keys, or sensitive data.
- Update
updated_aton any change. - Version schema for backward compatibility.
- Asks "React or Vue?" when profile already specifies.
- Ignores user preference, defaults to agent's own.
- Profile contains secrets or API keys.
- Profile never updated even after user changes preferences.
- [ ] Checked
~/.config/opencode/user-profile.json - [ ] If exists: Used to personalize and skip redundant questions
- [ ] If missing: Ran full onboarding
- [ ] If outdated: Offered update
- [ ] Never stored secrets in profile
---
Phase 2 — Persist & Lock
Save to
~/.config/opencode/user-profile.json:
`json
{
"version": "1.0",
"created_at": "2026-05-24",
"updated_at": "2026-05-24",
"identity": {
"name": "Juan",
"role": "developer",
"industry": "fintech",
"experience_years": "3-5",
"team_size": "solo",
"github_username": "juandelossantos",
"author_name": "Juan de los Santos"
},
"preferences": {
"language": "es",
"primary_platform": "web",
"web_framework": "react",
"mobile_approach": null,
"desktop_framework": null,
"backend_stack": "nodejs",
"styling_approach": "tailwind",
"database": "postgresql",
"deployment": "vercel"
},
"design": {
"aesthetic": "minimalist",
"color_preference": "dark",
"typography_care": "high",
"animation_level": "moderate"
},
"workflow": {
"communication_style": "detailed",
"decision_style": "propose_options",
"commit_review": "auto_review_with_approval",
"context_persistence": true,
"documentation_level": "comprehensive",
"commit_approval": "manual"
},
"constraints": {
"budget_context": "startup",
"time_pressure": "moderate",
"open_source": false,
"accessibility_priority": "important"
},
"session_defaults": {
"default_purpose": "development",
"purpose_skills_map": {
"brainstorming": ["idea-refine", "architecture-analysis"],
"development": ["spec-driven-development", "test-driven-development", "incremental-implementation"],
"code_review": ["project-health-check", "code-review-and-quality"],
"pr_review": ["git-workflow-and-versioning", "code-review-and-quality"],
"debugging": ["debugging-and-error-recovery", "test-driven-development"],
"custom": []
}
}
}
`
---
Phase 3 — Quick Verify (if profile exists)
`
PROFILE DETECTED:
Name: Juan | Role: Developer | Industry: Fintech Platform: Web (React) + Node.js + PostgreSQL + Vercel Design: Minimalist, dark mode, moderate animation Communication: Detailed, proposes options Default purpose: Development
→ Still correct? (yes/sí) → Update anything? (reply with section number)
`
---
how other skills use this profile
→ **See
USAGE-EXAMPLES-GUIDE.md for 5 skill-specific examples and preference update workflow.**
Without profile: "React or Vue? What stack?"
With profile: "I see you prefer React + Tailwind. Confirm for this project?"
---
common rationalizations
| Excuse | Response | |---|---| | "Ask every time." | Repetitive questions waste time. Saved profile makes every interaction faster. | | "User might change mind." | Quick Verify and easy updates exist. Profile is default, not prison. | | "Multiple people, same machine." | Support multiple profiles:
user-profile-juan.json`, `user-profile-maria.json. |
| "Just bureaucracy." | 3 minutes onboarding saves 10+ minutes repeated questions per project. |
---
red flags
---
verification
Before any skill runs discovery: