feat(onboarding): first-run CTA and workflow-routing handoff - #1488
Conversation
Assistant-model: GPT-5.5
Implementation NotesTask: Objective: Context: Scope:
Non-goals:
Done criteria:
Validation command: Reporting requirements:
Stop conditions: Running Notes
Iteration 1 Preflight
Iteration 1 Implementation Notes
Iteration 1 Validation
Iteration 1 Final Validation
Iteration 1 Implementation
Iteration 1 Follow-up
Iteration 1 Validation
QA E2E Video
Final State Clarification
Iteration 2 Reviewer Fixes
Iteration 2 Validation
Iteration 2 Orchestrator Validation
Iteration 3 Review-Round-2 Fixes
Iteration 3 Validation
Iteration 4 Review-Round-3 Fixes
Iteration 4 Validation
Iteration 5 Review-Round-4 Fixes
Iteration 5 Validation
Iteration 6 Reviewer-B Fixes
Iteration 6 Review Follow-up
Iteration 6 Follow-up Hardening
Iteration 6 Second Follow-up Hardening
Iteration 6 Validation
Iteration 7 Fixes
Iteration 7 Validation
Iteration 8 Review-Round-7 Fixes
Iteration 8 Validation
|
|
Preview deployment for your docs. Learn more about Mintlify Previews.
💡 Tip: Enable Workflows to automatically generate PRs for you. |
|
Review: feat(onboarding): route first-run work to workflows Thorough, well-tested change — the scope-routing fallbacks (timeout/abort/invalid-JSON to heuristic), the cwd-contained spec reading with symlink-escape protection, and the conservative reconciliation all look carefully thought through, and the test matrix (in-flight dedup, URL-only seeds, symlink escape, copied-settings re-arm) is impressive. A few items worth addressing before merge. Bugs / correctness 1. 2. Shared 10-minute timeout budget across both probes. Code quality / DRY 3. Duplicated helpers between Minor / nits
What is good
Nice work overall — items 1 and 3 are the ones I would want resolved; 2 is a judgment call. 🤖 Generated with Claude Code |
Add first-run onboarding behavior that stashes pre-login seeds, hands ready seeds to normal workflow routing, and documents the updated flow. Assistant-model: GPT-5.5
…te-atomic-onboarding # Conflicts: # packages/coding-agent/CHANGELOG.md
Review: first-run onboarding workflow routingNice, well-tested feature overall — the path-safety handling and edge-case coverage are genuinely thorough. A few things worth addressing before merge, the first of which is significant. 🔴 The scope-probe subsystem is no longer wired into the runtime flowThe actual onboarding submit path is:
I grepped `packages/coding-agent/src` for callers and found none outside the definitions themselves and the `interactive-mode-surface.ts` declarations. So ~300 lines of probe/reconciliation logic plus three of the test files (`round4/5/7`) exercise behavior that no longer ships in the user flow. This bloats the bundle and creates a maintenance trap (tests stay green while testing dead code). Recommendation: either re-wire `handleOnboardingWorkflowSeed` to call `runOnboardingRoutingAssessment` + `launchOnboardingWorkflow`, or delete the probe subsystem (and its tests) and keep the simpler prompt-handoff design. Right now the PR ships both and uses only one. 🟠 PR description / spec no longer match the implementationThe description says the flow "runs a bounded read-only scope probe… and routes to `goal` or `ralph` based on probe output," and the `specs/` doc describes the same. The shipped behavior instead delegates routing to the LLM via the handoff prompt (`buildOnboardingHandoffPrompt`). Please reconcile the description/spec with what actually executes so reviewers and future readers aren't misled. (The last commit, "update first-run workflow handoff," appears to be where the approach changed.) 🟡 Slash-path interception can capture real filesystem pathsIn `interactive-input-handling.ts:147`, during onboarding any `/`-prefixed input that resolves to an existing file/dir is treated as a seed before the command handlers run. Typing something like `/tmp` or `/etc` (which exist as directories) during onboarding would be swallowed as a task seed. Impact is low since those aren't real commands, but the precedence is surprising. Worth confirming it can't shadow a real slash command that also happens to exist as a path, and perhaps restricting to files (not directories) or requiring a recognizable spec extension. 🟡 `firstRunOnboardingStartedVersion` is persisted before any interaction`interactive-startup.ts` writes `setFirstRunOnboardingStartedVersion(this.version)` during `init()` on a fresh install, before the user does anything. If that's intentional (distinguishing a fresh-but-immediately-quit session from a genuinely new one), fine — but it means the very first `atomic` launch always incurs a settings write. Please confirm this is the intended semantics. 🟢 Things that look good
Minor
Overall: solid groundwork and excellent test discipline. The main blocker is deciding whether the probe path is in or out and aligning the code + description accordingly. 🤖 Generated with Claude Code |
Code Review — first-run onboarding with workflow routingThanks for this — the feature is cleanly modularized, the new A few things worth addressing before merge: 🔴 1. PR description is significantly out of sync with the implementationThe summary describes a "lightweight read-only scope probe" in 🟠 2. Dead field
|
Raise onboarding handoff routing to high reasoning when supported, expand scope-routing guidance, and keep docs/changelog aligned. Fix @ file-reference autocomplete during first-run onboarding by falling back to synchronous path completion before fd readiness. Assistant-model: GPT-5.5
Assistant-model: GPT-5.5
Assistant-model: GPT-5.5
Assistant-model: GPT-5.5
Assistant-model: GPT-5.5
…te-atomic-onboarding Assistant-model: GPT-5.5 # Conflicts: # packages/coding-agent/CHANGELOG.md # packages/coding-agent/docs/quickstart.md # packages/workflows/CHANGELOG.md
PR Review: first-run onboarding CTA + workflow-routing handoffThanks for this — it's a well-structured feature. The onboarding logic is cleanly isolated in a new Correctness / bugs
Security / framing
Code quality
Process / docs nits
Smaller observations
Nothing here is blocking except possibly #2 (depends on intent). Nice work overall. 🤖 Generated with Claude Code |
Assistant-model: GPT-5.5
Review: first-run CTA and workflow-routing handoffReviewed the full diff (38 files). Overall this is a well-structured, well-tested feature. The settings-driven state machine ( A few things worth a look before merge: Substantive1. The handoff permanently changes the user's default thinking level. Minor2. 3. In-memory stash vs. "Task saved for after login" copy. 4. 5. Silent in-flight guard. Questions / nits6. Redundant declaration. 7. 8. Spec artifact in tree. Verified
🤖 Generated with Claude Code |
* feat(onboarding): route first-run work to workflows Assistant-model: GPT-5.5 * fix(onboarding): preserve isolated workflow setup * feat(onboarding): update first-run workflow handoff Add first-run onboarding behavior that stashes pre-login seeds, hands ready seeds to normal workflow routing, and documents the updated flow. Assistant-model: GPT-5.5 * refactor(onboarding): hand first-run tasks to normal session * feat(onboarding): improve first-run routing and file mentions Raise onboarding handoff routing to high reasoning when supported, expand scope-routing guidance, and keep docs/changelog aligned. Fix @ file-reference autocomplete during first-run onboarding by falling back to synchronous path completion before fd readiness. Assistant-model: GPT-5.5 * feat(workflows): clarify first-run run controls Assistant-model: GPT-5.5 * fix(onboarding): detect returning users from startup state Assistant-model: GPT-5.5 * fix(onboarding): clear pending seed on new session Assistant-model: GPT-5.5 * fix(onboarding): resume pending first-run seeds Assistant-model: GPT-5.5 * fix(workflows): simplify onboarding dispatch confirmation Assistant-model: GPT-5.5
Summary
Implements a one-time first-run onboarding flow for fresh Atomic installs. On the first session with no prior history, the editor shows a bordered CTA header and placeholder guiding the user to paste a ticket, spec, or task prompt, then hands the seed to the normal coding-agent session with
goal/ralphrouting guidance. Also fixes workflow config/discovery isolation soATOMIC_CODING_AGENT_DIRis honored consistently.Key Changes
Onboarding flow (
interactive-onboarding.ts— new)firstRunOnboardingStartedVersion/onboardedVersionONBOARDING_COPY) and editor placeholder (ONBOARDING_PLACEHOLDER) on fresh installs/chatescape hatch transitions immediately to a normal coding-agent session with guidance copy; an initial message after the slash is forwarded as-isbuildOnboardingHandoffPrompt, which includesgoal/ralphrouting guidance inline — no separate probe stepcompleteProviderAuthenticationor after a/modelselection step/newduring onboarding resets the flow and discards any previously stashed seedInput routing (
interactive-input-handling.ts)/chat [message]during onboarding for immediate mode transition:line[:col]suffixes) and non-command text through onboarding when activefirstRunOnboardingSeedInFlightflag/import <jsonl>exits onboarding UI state so the next message is not treated as a fresh seedSettings (
settings-types.ts,settings-manager-basic-accessors.ts)firstRunOnboardingStartedVersionandonboardedVersiontoSettingsget/set) with persistent save via the existing settings internals patternStartup integration (
interactive-startup.ts,interactive-auth-login.ts)initdetects first-run eligibility and setsfirstRunOnboardingStartedVersionbefore header render; trackshadLastChangelogVersionAtStartupto distinguish changelog-aware returning users from true first-timersDynamicBorder,Text,Spacer) into the header container on eligible sessionscompleteProviderAuthenticationcallsresumePendingFirstRunOnboardingSeedto replay a stashed seed post-login@mentionautocomplete fallback (interactive-autocomplete.ts)AtMentionFallbackAutocompleteProviderthat extracts@<path>tokens (including quoted paths) and delegates to the path-autocomplete provider when the primary provider returns no results — improves file-completion ergonomics during onboarding seedsWorkflow config/discovery isolation fix (
@bastani/workflows)config-loader.tsanddiscovery.tsto usegetAgentDir/getAgentDirsinstead of hardcodedos.homedir()ATOMIC_CODING_AGENT_DIRnow correctly prevents home-global workflows from shadowing the bundledgoal/ralphtargetshomeDiroption preserved for legacy test/compat resolution; newagentDirsoption added for explicit overrideDocs
docs/quickstart.md,docs/settings.md, anddocs/workflows.mdwith first-run onboarding referencesTests
Six test files (42+ tests) covering:
/chat, slash-command paths,/import, and/new:line[:col]notes preserved on handoff/modelwait,/newreset)ATOMIC_CODING_AGENT_DIRprecedence over home-global)Validation
bun run typecheck— passedbun run test:unit(incl. all onboarding and isolation tests) — passedbun run check:file-length— passedNotes
/chatsubmitted while an onboarding seed is in flight can still allow the pending workflow handoff to complete. Non-blocking; tracked for a follow-up.research/docs/spec artifact is included for traceability but contains intermediate review notes not intended as user-facing docs.