Repository navigation
fix(vibe): Cut setup friction and repeated questions in vibe sessions - #292
Merged
Merged
Conversation
Bind Claude workers to the installed plugin root, check the Claude sign-in and each worker's granted connections before work starts, record every question and answer on the session, add a portable time limit for macOS, and keep person-facing text in plain words from one shared list.
Take 1.0.41, relay any expired Claude sign-in with the preflight's claude auth login step, keep the ending vocabulary from #291 in the plain words list, and add the setup, sample-data and question eval cases for both personas.
Collaborator
Author
|
The last case does not discriminate: 1.0.39 also keeps quiet when the recorded answer is in the prompt. Cost was about $2 per arm. CI does not run the suite. |
…ection test The brief is piped at spawn, so on Linux the fixture can record it before the launcher stops the worker. Assert the process is gone instead.
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.
A product manager's
$vibesession in Claude Code spent about 15 of its first 19 minutes on setup, asked the page-wording question three times, put her email in as a company name, and showed her engineering words (operator ruling, 2026-10-15). This fixes what the plugin owns and says what it doesn't.agentRoot: <root>/agents, soclaude-worker.mjslooked for<root>/agents/agents/...and every launch failed with a genericWORKER_TURN_FAILED. The launcher now binds its own installed plugin root whenagentRootis left out, reads<root>/agentsas<root>, keeps a resumed writer on its recorded root, and refuses another release's root (STALE_PLUGIN_ROOT).writer-state.mjs registerandacquire-recordresolve the root the same way for Codex.claudefailed with "OAuth session expired". The launcher now asksclaude auth status(from the home folder) before any writer state changes and classifies a sign-in the CLI rejects at start; both returnCLAUDE_SIGN_IN_NEEDEDwith one plain step:claude auth loginin the Terminal app. The Claude preflight reports the same asclaude-login. Nothing tells the person to runclaude /loginany more, which started a full Claude session in her repo that printed the permission-rule dump and the project MCP prompt.BLOCKED; the verify worker likewise could not reach the graph. The skill now says every Claude worker launches through the launcher with the exact JSON (noagentRoot), the launcher refuses a requirements or ticket launch without its ClosedLoop reads (MISSING_CAPABILITIES), and it stops a worker as soon as its own start event shows a granted connection did not load, before it does any work (MCP_TOOLS_MISSING).timeout; the verify worker and the orchestrator improvised it and macOS has none. Newscripts/run-bounded.mjs <seconds> <command>stops the command and its children and exits 124. The skill, setup and verify workers point to it, and a contract test fails on anytimeout <n>in the plugin.scripts/session-questions.mjsrecords every question and answer on the session (pre-session answers move onto it atnew), and the skill asks only for a key never asked, never repeats a waiting one, and briefs every worker, relaunch and resumed conversation with the recorded answers.references/plain-words.mdis the one banned-terms list with replacements, referenced by both skills and the setup worker, and aligned with fix(vibe): End sessions with a PR or a plain pass-on #291's approved ending words. Setup, progress, the component-gallery notice, sample-data and error messages use it.Outside the plugin:
<email> Co(symphony-alphaapps/api/app/preview-schemas/vibe-environment/service/seed-load.ts:115, from an earlier ruling); the dispatch has no org-name input, so the plugin can only stop saying it.prefers-color-scheme, so neither the plugin nor the product page caused it.Tests:
claude-worker-preflight.test.ts): root resolution, stale root, Codexregister, signed out, expired at start, missing connection, missing reads. 9 of 10 fail on 1.0.39 (the tenth unit-tests the new resolver).run-bounded,session-questions(including relaunch and pre-session adoption) and the Claude preflight check; none can pass on 1.0.39.test_vibe_session_friction_contract.py, 7 tests, all fail on 1.0.39. One pinned string intest_vibe_no_plugin_changes_contract.pymoves from "with the session slug" to naming the work by its summary.exec-/pm-cases (tagssetup,sample-data,questions). Scores in a comment below.Bumps vibe to 1.0.41 (both manifests; 1.0.40 is claimed by the visual-cues change) with a CHANGELOG entry.