Skip to content

Rework onboarding to a two-question wizard, add the Tod persona and a TOD_HOME sandbox - #8

Merged
tylerhogarth merged 2 commits into
mainfrom
feat/operator-writing-style
Sep 1, 2026
Merged

Rework onboarding to a two-question wizard, add the Tod persona and a TOD_HOME sandbox#8
tylerhogarth merged 2 commits into
mainfrom
feat/operator-writing-style

Conversation

@tylerhogarth

Copy link
Copy Markdown
Owner

Reworks initialization and the generated operator harness around a fixed two-question onboarding, replacing the four-dimension communication profiling from the first prototype. Also adds a sandbox mode for testing the CLI with an agent without touching the real home directory.

Changes

  • Config (src/config.ts): version-2 schema with two 1-5 scales, requirementGathering and responseDetail, replacing the technicality/detail/focus/tone enums. tod config set takes requirement-gathering and response-detail. No migration: a v1 config fails validation with the standing repair-or-delete fix.
  • Onboarding (src/commands/init.ts): every init run ends with a predefined script the agent delivers verbatim as Tod, both questions in a single message, then records answers via tod config set and tod sync. The CLI stays non-interactive; reconfiguration is re-running init.
  • Template (src/template.ts): rewritten as a concise deterministic block (under 4KB, budget enforced in tests). New sections: Tod persona, session opt-in ("Are we building with Tod today?"), instruction precedence, non-technical operator assumption, and reconfiguration discoverability (offer tod init on repeated conflict, never silently change config). Operator-facing writing rules (lead with the answer, no em dashes) render into the block and CLI output.
  • Sandbox mode (src/paths.ts, src/boundary.ts): TOD_HOME redirects every tod path (state, instruction files, boundary allowlist) into an alternate root mirroring the home layout; bun run sandbox <cmd> targets a gitignored output/. Resolved once in resolveHome() and used as the default by every path helper so no code path bypasses it.
  • Agent-feedback fixes: work item ids accept the # prefix tod itself prints, and non-numeric ids get an explicit reason; repeat init/sync report untouched state files as unchanged; tod status --all shows the done count in its header.

Why

Profiling the operator's technical depth added onboarding friction without changing behaviour much; the two scales map directly to the two behaviours operators actually push on (how much tod asks upfront, how much it explains after). The wizard script is predefined because agent-improvised onboarding proved inconsistent in testing. TOD_HOME is an env var rather than a flag so a test session is redirected once at launch; a per-command flag forgotten mid-session would write into the real ~/.claude.

🤖 Generated with Claude Code

tylerhogarth and others added 2 commits September 1, 2026 13:15
The instruction block's Communication section gains a Writing style
subsection: lead with the answer, one idea per sentence, plain verbs,
and never em dashes. CLI help headers switch from em dashes to colons.
Tests pin the new section and guard all rendered configurations and
help output against em and en dashes.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
- Replace the four communication enums with requirement-gathering and
  response-detail (1-5 scales) in a version-2 config schema
- tod init always ends with a predefined onboarding script, delivered
  verbatim in the new Tod persona as a single message
- Rewrite the instruction-block template: deterministic, under 4KB, with
  persona, session opt-in, precedence, non-technical operator, and
  reconfiguration sections
- Add TOD_HOME to redirect every tod path into a local folder for agent
  test sessions (bun run sandbox); boundary roots follow the override
- Accept '#'-prefixed work item ids, report unchanged state files on
  repeat init/sync, and show the done count in status --all

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@tylerhogarth
tylerhogarth merged commit 8053464 into main Sep 1, 2026
1 check passed
@tylerhogarth
tylerhogarth deleted the feat/operator-writing-style branch September 1, 2026 13:06
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