Skip to content

feat: /baton:start — the Conductor front porch (slice 1)#71

Merged
Ryfter merged 9 commits into
masterfrom
start-front-porch
Jul 1, 2026
Merged

feat: /baton:start — the Conductor front porch (slice 1)#71
Ryfter merged 9 commits into
masterfrom
start-front-porch

Conversation

@Ryfter

@Ryfter Ryfter commented Jul 1, 2026

Copy link
Copy Markdown
Owner

/baton:start — the Conductor front porch (slice 1)

The missing entry point: one guided, teaching, plain-language command to begin or resume a project, for a user who may not know what git is. /baton:start (aliases /baton:init, /baton:initialize) sits alongside /baton:go (autonomous execution) and /baton:idea (idea → backlog) as the third front door — the one that asks questions instead of assuming you already have a goal.

Flow

  • New project: adaptive interview (name, goal, audience, "done", folder) → detect-&-branch folder setup with git init narrated in plain language → writes a user-owned CHARTER.md in the project folder recording the goal and why → hands off to /baton:go full-auto under its existing two guards (budget cap + destructive action).
  • Resume: loads the box-private project record, reports plain-language status, and recommends the single best next command — and why.
  • Adaptive depth + teaching: interview depth and explanation verbosity read from (and, on first run, write to) a minimal box-private user-profile.json — the seam slice 2 will grow into a Grimdex-backed learning loop.

Surface

  • scripts/start-lib.ps1 (new): pure resolvers (Resolve-StartMode, Resolve-InterviewDepth, Resolve-TeachingLevel, New-CharterContent, Format-ResumeStatus, Get-NextCommandRecommendation) + seamed I/O (Read-/Write-ProjectRecord, Read-/Write-UserProfile).
  • commands/start.md (new): the brain — state machine, onboarding, folder setup, /baton:go hand-off, seam legibility. commands/init.md / commands/initialize.md: thin delegators.
  • scripts/bootstrap.ps1 / test-bootstrap.ps1: deploy start-lib.ps1.
  • docs/COMMANDS.md / docs/getting-started.md: /baton:start documented as the recommended on-ramp; /baton:job-start remains for manual, phase-driven work.

Box-private boundary

project.json and user-profile.json live under $BATON_HOME, never the knowledge repo. CHARTER.md is the exception — the user's own doc, in their project folder.

Review

Final adversarial review → With fixes (0 Critical, 2 Important, 5 Minor). Both Important issues lived in start.md's interview prose, not the tested library: (1) the flagship no-name onboarding path could reach New-CharterContent with an empty, mandatory -Name and hard-throw — fixed by capturing/deriving a name in the interview; (2) $depth was unbound on a resume-with-no-prior-profile path, silently writing a null into user-profile.json — fixed by gating the first-run profile write on the new-project path. Three Minor test-coverage gaps backfilled; one dropped doc line restored. Fix wave self-verified against the diff and both test suites (green).

Tests

test-start-lib.ps1 (8 sections, all pure resolvers + I/O stores + CHARTER/resume-status templating) and test-bootstrap.ps1 (43 assertions incl. start-lib.ps1 deploy) both green.

Plugin 1.4.1 → 1.5.0-rc.1 (minor bump — new user-facing commands).

Design: docs/superpowers/specs/2026-07-01-baton-start-front-porch-design.md
Plan: docs/superpowers/plans/2026-07-01-baton-start-front-porch.md

🤖 Generated with Claude Code

Ryfter and others added 9 commits July 1, 2026 03:11
Guided, teaching, user-adaptive entry point that starts or resumes a
project (incl. for non-technical users), captures the why in a CHARTER,
then hands the goal to /baton:go full-auto. Wrapper over existing front
doors; minimal box-private user profile anchors the personalization seam.
Slices 2 (Grimdex learning loop) and 3 (mid-stream idea injection) named,
out of scope.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
6 tasks: pure resolvers, project/profile stores, CHARTER templating,
command brain + aliases, bootstrap wiring + version bump, docs.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
…, test backfill, doc restore

- commands/start.md step 4: ask for a project name in the interview (or
  derive a title-cased default from the folder/projectId) when no name
  arg was supplied, so $name is never empty going into New-CharterContent
  at step 6.
- commands/start.md step 10: gate the first-run profile write on
  ($mode -eq 'new' -and -not $profile) so a resume with no prior profile
  never writes an unbound $depth into user-profile.json.
- scripts/test-start-lib.ps1: add the missing Resolve-TeachingLevel
  profile-present-but-unset case, a Read-UserProfile corrupt-file case,
  and a Get-NextCommandRecommendation unknown-status fallback case.
- docs/getting-started.md: restore the dropped "hook auto-tags every
  model dispatch..." line into the new step 1 section.
Copilot AI review requested due to automatic review settings July 1, 2026 14:42
@Ryfter
Ryfter merged commit 1aaf4b6 into master Jul 1, 2026

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Adds the new “front porch” command /baton:start (plus /baton:init and /baton:initialize) and its supporting PowerShell library/tests, positioning it as the recommended guided entry point for starting or resuming a project and then handing off to /baton:go.

Changes:

  • Introduces scripts/start-lib.ps1 with pure resolvers + thin JSON I/O (project record + user profile), plus unit-style tests.
  • Wires start-lib.ps1 into bootstrap.ps1 deploy output and bumps the plugin version to 1.5.0-rc.1.
  • Documents /baton:start across command docs and getting-started, and adds design/plan docs for the feature.

Reviewed changes

Copilot reviewed 12 out of 12 changed files in this pull request and generated 3 comments.

Show a summary per file
File Description
scripts/start-lib.ps1 New shared library for /baton:start (resolvers, templating, and JSON stores).
scripts/test-start-lib.ps1 New unit-style tests covering the new library functions.
commands/start.md New canonical command procedure (“brain”) for /baton:start.
commands/init.md New alias delegator to /baton:start.
commands/initialize.md New alias delegator to /baton:start.
scripts/bootstrap.ps1 Adds start-lib.ps1 to the deployed script list.
scripts/test-bootstrap.ps1 Asserts start-lib.ps1 appears in bootstrap dry-run output.
docs/COMMANDS.md Documents /baton:start as the recommended on-ramp; updates cheat sheet.
docs/getting-started.md Updates the recommended flow to start with /baton:start.
docs/superpowers/specs/2026-07-01-baton-start-front-porch-design.md New design spec for slice 1.
docs/superpowers/plans/2026-07-01-baton-start-front-porch.md New detailed implementation plan.
.claude-plugin/plugin.json Version bump for the new user-facing command(s).

Comment thread commands/start.md
$folderFlag = '<FOLDER_FLAG_OR_EMPTY>'
$targetFolder = if ($folderFlag) { $folderFlag } else { (Get-Location).Path }

$projectId = if ($name) { ConvertTo-JobSlug $name } else { Resolve-ProjectId -Override $null }
Comment thread scripts/start-lib.ps1
[Parameter(Mandatory)][string]$ProjectId,
[string]$ProjectsRoot = (Join-Path (Get-BatonHome) 'projects')
)
$path = Join-Path (Join-Path $ProjectsRoot $ProjectId) 'project.json'
Comment thread scripts/start-lib.ps1
[Parameter(Mandatory)][hashtable]$Record,
[string]$ProjectsRoot = (Join-Path (Get-BatonHome) 'projects')
)
$dir = Join-Path $ProjectsRoot $Record.id
Ryfter added a commit that referenced this pull request Jul 1, 2026
…ook updated

PR #71 merged; decisions d061-d065 captured. Also logs the parked
GEPA/DSPy prompt-optimization idea (memory-only, not yet spec'd) so it
survives to the next session.

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.

2 participants