davekilleen / reset
Re-run the setup questions over an existing Dex vault when preferences or setup answers changed, without losing data. Use when the user says 'restructure my Dex', 'redo my setup', 'my pillars are wrong now'. Not for a job or role change; use `change-job` — it runs this same reset plus the people, archive and task passes. Not for first-time setup; use `setup`. Not for just toggling one feature; use `manage-capabilities`.
Reset Dex for changed answers
If 04-Projects/ does not exist, this vault was never set up. Use setup instead.
If the user actually changed jobs or roles — new employer, new email domain, an
old identity to archive — use change-job instead: it runs this same reset and
then guides the passes a reset alone never touches (re-sorting people for the
new domain, archiving old-role goals, priorities and projects, re-pointing open
tasks). A reset by itself is the right lever only for changed preferences or
answers within the same working life.
To turn a single room on or off, use manage-capabilities — it is a much smaller
change than a full reset and never touches the rest of the profile.
Otherwise:
Tell the user what a reset does and does not do, and get an explicit yes before
calling anything:"I'll walk you through the same questions as first-time setup and rewrite your
profile — role, company, pillars, communication style, working week and rooms.
Every setting you don't re-answer carries forward unchanged, and nothing
you've written is deleted or moved: your notes, people, meetings and
projects all stay exactly where they are. Want to go ahead?"Stop here if they decline.
Call
start_onboarding_session(force_new=True)fromonboarding-mcp. Theforce_newflag is what makes this a reset rather than resuming a half-finished
setup. Know what it re-arms: the fresh session clears the calendar answer and
the harness confirmation, so the flow's calendar step and harness-selection
confirmation must both be replayed —finalize_onboardingrefuses to run
until each has been addressed again. Do not skip past them expecting the old
answers to still count.Read
.claude/flows/onboarding.mdand follow it as the single source of the
conversation, exactly assetupdoes.Before finalizing, call
finalize_onboarding(dry_run=True)and show the user
what it reports it would create, plus theprofile_changeslist — every
profile setting that will change, old value → new value. Settings not in that
list carry forward. Tell the user that on a vault that already completed
onboarding, finalizing first takes a snapshot of the current profile, pillars
and room choices — before anything is rewritten — so the reset can be checked
afterwards and undone if it went wrong. Then callfinalize_onboarding().After finalizing, show the user the
transition_verificationsummary from the
finalize response — it reads "Changed (you chose): … Carried forward: N
settings. Lost: none." Read it before relaying it: if it reports anything
lost or changed outside their answers, say so plainly instead of declaring
success, and offerrestore_transition_capsule— preview first (it defaults
to a dry run), then rerun it withdry_run=falseif they want the two
settings files put back exactly as they were.verify_transitionre-runs the
same check anytime against the snapshot named in the response.
What a reset actually changes
Say this honestly — do not promise more:
Rewritten:
System/user-profile.yaml,System/pillars.yaml, and the room
set, through the onboarding MCP andcore/capabilities.py.Carried forward: on a vault that completed onboarding, every profile
setting the user does not re-answer keeps its current value — calendar
connection, work email, working context, journaling, meeting sources,
timezone, quarterly planning, entity-creation mode, analytics identity, and
the rest. Rooms the user disabled stay disabled unless they are re-answered.
InSystem/pillars.yaml,priority_limitssurvives, and a pillar kept under
the same name keeps its keywords and description. Only a vault that never
finished onboarding is rebuilt from the answers alone.Added if missing: any folders and starter files the new role needs.
Finalizing only creates what is not already there.Left alone: every existing folder and file. A reset does not rename, merge
or move your content. If the new role means you wantPipeline/renamed toPortfolio/, that is a manual choice the user makes afterwards — offer to help,
do not do it silently as part of the reset. The completion marker keeps its
original setup date; the reset is recorded alongside it, not over it.Snapshotted and checked: before rewriting anything, finalize captures the
currentuser-profile.yaml,pillars.yamland room states, then verifies the
result against the keys the re-answered steps were allowed to change. The
snapshot stays inSystem/.dex/transition-capsules/and can restore those two
files exactly — it is not a backup of anything else.
Rules
This file deliberately contains no question script, no role list and no company-size
list, so reset cannot fork away from setup. The roles, the area→role picker and every
other question live in .claude/flows/onboarding.md; change them only there.
Never create folders, move files, or edit CLAUDE.md or System/user-profile.yaml
by hand in this skill. core/provision.cjs, core.lifecycle.service andcore/capabilities.py own all vault mutation, and the onboarding MCP owns all
profile writes and their validation.
Track Usage (Silent)
Call the mark_feature_used tool on the dex-analytics MCP server with reset. This ticks the feature's box in System/usage_log.md, which is what /dex-level-up reads to recommend features that have not been tried. It writes locally and sends nothing, so it runs whether or not analytics is enabled.
Analytics (Silent):
Call track_event with eventname `vaultreset` and properties:
- (no properties)
This only fires if the user has opted into analytics. No action needed if it returns "analytics_disabled".