Skip to content

docs: add onboarding design guideline (goal-over-role framing) - #2066

Open
kasiazjc wants to merge 4 commits into
mainfrom
docs-onboarding-design-guideline
Open

docs: add onboarding design guideline (goal-over-role framing)#2066
kasiazjc wants to merge 4 commits into
mainfrom
docs-onboarding-design-guideline

Conversation

@kasiazjc

Copy link
Copy Markdown
Contributor

Context / Problem

Agor's onboarding wizard (shipped in #1609) opens with a persona step: four role-based cards (Developer / PM / Lead / Solo builder) that single-select into a hardcoded PERSONA_MCP_RECS map and the first teammate's bootstrap prompt.

The product owner has decided (pending final stakeholder review) this framing is wrong:

  • It asks "who are you" (role/identity) instead of "what do you want AI to do for you" (goal/outcome).
  • Tester interviews found role single-select doesn't fit hybrid users — someone who is both a PM and a lead gets forced into one box.
  • The hardcoded rec map has no visible logic, so it reads as opaque ("how does it know what's best for me?", agor#1956).

That decision currently lives only in scattered chat and KB docs, so any future implementation PR would have to re-derive it.

Goal

Pin the decision as house style so a future implementation PR (not this one) has one fixed reference before touching the wizard. This is docs-only — no wizard/persona code is touched.

The new guideline covers:

  • Goal-over-role principle and why (goals cut across job titles; no identity box).
  • The four locked goal cards (exact copy, not to be rewritten).
  • Multi-select up to 2, still skippable — not forced single-select.
  • Composable-block mechanism — per-goal blocks (MCP recs + one bootstrap line) merged by one shared rule (deduped union capped at 4, concatenated bootstrap lines + a bridging instruction), instead of hardcoding all 10 combinations — the "persona explosion" this redesign avoids.
  • Brand-voice rules for the surface (concrete artifacts, plain first-person register, no hedging adjectives).
  • Known gap flagged as an open follow-up: card 1 promises reading inbox/news but no email/news MCP connector exists yet.

Changes

  • Add context/guidelines/onboarding-design.md.
  • Add a pointer to it in context/README.md under guidelines/.

🤖 Generated with Claude Code

kasiazjc and others added 4 commits July 28, 2026 15:51
Capture the decision to reframe the onboarding wizard's first question
around goals/outcomes instead of roles/personas, plus the locked goal
cards, composable-block rec mechanism, brand-voice rules, and the known
connector gap.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
- MCP-rec merge: replace ambiguous "union, dedup, cap at 4" with an ordered
  4-slot rule (2 primary, 2 secondary, dedup, refill from primary) since the
  union routinely exceeds 4.
- Bootstrap merge: the user already picked both goals, so lead with a concrete
  action on the primary goal instead of reopening with "which matters more" —
  surface the secondary only after the first win. Aligns with the "prove value
  fast, conversation-driven" onboarding thesis and a recorded tester complaint.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Max decided the product noun is "teammate", not "assistant". Update card 1's
title from "Finally, a personal assistant" to "Finally, a personal teammate",
turn the flagged open naming question into a resolved note, and adjust the
locked-copy framing + review checklist to match.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
- Data model: new preferences.onboarding.goals: string[] for redesigned
  completions; leave legacy persona string untouched (no clean mapping, read
  once at completion so absent value is harmless).
- Order: selection state must be an order-preserving array (append/splice),
  not a Set, so first-picked = primary holds.
- Step label: change the badge from "You" to "Goals".
- Skip path: 0-goal selection falls back to a generic default block
  (PERSONA_MCP_RECS['_default'] spirit); 0/1/2-goal cases now all covered.
- Propagate the resolved "teammate" rename to the reference table and known-gap
  section, and add matching review-checklist items.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant