chore(onboarding): smart install + simplify wizard (4 dialogs, skip/upgrade/install)#113
Merged
Conversation
Removes 7 questions that either don't matter or can be auto-derived:
- Welcome / Start / Cancel → install starts immediately on paste
- Pick role (engineer/business/ → universal config; backends default to
content/ops) "engineer" (role is a label only)
- Claude Pro/Max? → Act 3 Desktop dialogs now gate on
/Applications/Claude.app existing
- Full name (text input) → auto-derived from `gh api user --jq
- Email (text input) '.name // .login'` after Phase 3 auth
(email = <login>@users.noreply.github.com)
- Secrets Gist ID → install completes without; final dialog
reminds teammate to run secrets.sh later
- Set up hogwarts local dev? → defaults to off; --hogwarts-dev /
-HogwartsDev CLI flag still opts in
Anthropic dialog kept but reworded for company-account + HR/OTP context:
"Anthropic — company account (HR shares credentials + sends OTP).
Install proceeds in parallel while you wait." Non-blocking by design;
sign-in completes in Act 3 manual finishing or via `claude` post-install.
Backends (onboarding-{mac,linux}.sh + onboarding-windows.ps1):
- ROLE positional becomes optional; defaults to "engineer"
- Phase 3 git config restructured: SSH key gen + gh auth first, THEN
set git identity (priority: --name/--email arg → existing config →
gh api user → $(whoami) fallback). Lets the wizard skip name/email
questions entirely while still attributing commits to the real user.
Installers (installer.sh + installer-linux.sh + installer.ps1):
- Drop state reads for role/gitName/gitEmail/gistId/proMax
- Drop ask_role / Ask-Role helper definitions (dead code)
- Backend invocation simplified: just role positional + --quiet + opt-in
flags. No --name/--email, no GIST_ID positional.
- Act 3 Desktop sign-in dialog rephrased to mention company creds + OTP
- Act 3 dialog gates: replace `proMax == 1` with `Claude.app exists`;
replace `role == engineer` with `WebStorm installed`
- Final dialog message: drop role mention; add "load secrets later"
and "finish Anthropic sign-in when OTP arrives" reminders
wizard-steps.json:
- Act 1 steps: 7 removed entries replaced with the 4 that remain
(hasGithub, hasDatabaytInvite, hasAnthropic, reposDir); each carries
a note explaining the new behavior
- New `removedAsOf2026_05_25` block documents what was cut + why
- Phase 3 label mentions git-identity auto-set
- Act 3 gate descriptions updated for the proMax/role removals
- stateFile schema: drop role/gitName/gitEmail/gistId/proMax fields
content/docs/onboarding.mdx Act 1 table: rewritten to 4 dialogs + a
"What's no longer asked" table explaining the auto-derivation paths.
Act 2 Phase 3 description mentions git-identity auto-set.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
…backends
Most teammates already have Chrome, WebStorm, VS Code, git, Node, etc.
The previous "if missing { install } else { skip }" pattern left tools
stale on long-lived machines and reinstalled nothing when present. New
pattern: detect → upgrade-if-outdated → install-if-missing → skip-if-fresh.
Helpers added:
- onboarding-mac.sh: `brew_smart <pkg> [--cask]` + `npm_global_smart <pkg>`
- onboarding-linux.sh: `apt_smart <pkg>` + `snap_smart <pkg> [--classic]` +
`npm_global_smart`
- onboarding-windows.ps1: `Winget-Smart <pkgId>` + `Npm-Global-Smart <pkg>`
All helpers report install vs upgrade vs already-latest distinctly, so
re-runs are honest about what changed.
Refactored install sites:
- Phase 1 (every script): git, gh CLI, Node (mac=brew node@24, linux=nvm
install --lts, win=winget OpenJS.NodeJS.LTS), pnpm, vercel
- Phase 2: WebStorm, VS Code, Chrome — all skip-if-present-and-fresh,
upgrade-if-outdated
- Phase 5: Claude Desktop (Mac brew_smart claude --cask; Win Winget-Smart
Anthropic.Claude)
Latest stable versions confirmed:
- Node 24.16.0 Krypton (Active LTS) — already pinned in PR #111
- nvm v0.40.4 (Jan 29 release; was v0.40.3) — bumped in linux script +
onboarding.mdx
- Claude Code CLI — native installer (curl install.sh / irm install.ps1)
per code.claude.com/docs/en/setup; auto-updates in background
- pnpm, vercel, gh, WebStorm, VS Code, Chrome — package managers always
pull latest stable; @latest pin added to npm globals for explicitness
Net: each re-run of the bootstrap upgrades stale tools without reinstall
churn. Fresh machines get the same install paths as before.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
7 tasks
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Two-part install polish
Part 1 — Dialog simplification (
b458ef6): wizard friction down from 11 dialogs to 4. Role, Pro/Max, name/email, Gist ID, hogwarts-dev, welcome — all removed. Anthropic dialog kept and reworded for company-account + HR/OTP flow (non-blocking).Part 2 — Smart install (
797462b): every install becomes skip-if-fresh / upgrade-if-outdated / install-if-missing. Most teammates already have Chrome, WebStorm, VS Code, git — the oldif missing { install }left their tools stale on re-runs.Why
After both: re-running the bootstrap on a 6-month-old machine upgrades stale tools without reinstalling everything and asks only the 4 dialogs the wizard can't auto-detect.
What gets asked (4 dialogs)
Yes/No, create one(opensgithub.com/join) /SkipYes/Open invite page/Skip — I'll handle laterI have creds/Open Claude login/Skip — finish later. Non-blocking: install proceeds while HR sends OTPHome root/~/databayt//Custom…What's no longer asked
engineergh api user --jq '.name // .login'+ email =<login>@users.noreply.github.comClaude.appexisting insteadsecrets.sh--hogwarts-devflag still opts inSmart install helpers
brew_smart <pkg> [--cask]brew list→brew outdated→ upgrade or skip; install if missingapt_smart <pkg>dpkg-query→apt list --upgradable→ upgrade or skipsnap_smart <pkg> [--classic]snap list→snap refreshor installWinget-Smart <pkgId>winget list→winget upgradeorwinget installnpm_global_smart <pkg>npm install -g <pkg>@latest(idempotent); prints before→afterAll helpers report install vs upgrade vs already-latest distinctly, so re-runs are honest about churn.
Refactored install sites
curl install.sh/irm install.ps1) per code.claude.com/docs/en/setup — auto-updates in backgroundLatest stable versions confirmed
@latest/ package-manager latestBackend changes
ROLEpositional now optional, defaults toengineer(mac/linux); PowerShellValidateSetkept for backward compat with explicit callers--name/--emailarg → existing~/.gitconfig→gh api user→$(whoami)fallback. Lets the wizard skip name/email entirely while still attributing commits to the real user.Test plan
--quietmode + nogh: git identity falls back to$(whoami)@$(hostname -s).localgit config user.name/user.emailreflect the GitHub loginpnpm buildof docs site greenNet diff
12 files changed, +492 / -683 lines (net -191 lines).
🤖 Generated with Claude Code