feat(skill): agent first-run experience and the Claude Code live strip - #195
Open
siddhant573 wants to merge 11 commits into
Open
siddhant573 wants to merge 11 commits into
siddhant573 wants to merge 11 commits into
Conversation
Every session now starts with a ready check: one preflight script call (scripts/preflight.sh, preflight.ps1) and one ready card. A first session runs with nothing asked first, sends a short tour with the launch line, and asks three choices once, after the first result. Preferences live in ~/.testmuai/kaneai/agent-config/, read and written by the agent through the shell, with no kane-cli change. - SKILL.md section 1 rewritten as "Every session: ready check, launch, result card". The agent tag goes inline on every command, because an exported variable does not survive between shell calls in agent hosts. - New references: ready-check, first-run (tour text, verbatim), agent-config, cards (every emoji-table card), live-strip. - Existing references brought up to the real kane-cli 0.8.17 stream: stream_start, v and ts on every line, credits_consumed, the saved-test event table, suite member log_path and failure, testrun_progress, and "do not pass --stream-members by default". - test-manager: folders list and create require --project, plus the global flow for changing where results go. - Sign-in: the agent runs the browser flow itself and never asks for an access key in chat. The three skill roots are byte-identical. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01DAoyR4RZRwM2d81a9MCKuU
…der, tests - install now seeds the agent config folder and ends with a welcome. - prefs --watch --purpose [--narration] is the fallback setter for hosts that refuse a write outside the project. - strip enable|disable|status turns the Claude Code live strip on and off. Enable backs up settings.json, remembers the person's own status line and wraps it. Disable restores it exactly. - strip/kane-strip.mjs is the reader: it finds live runs through the active-run pointer, tails events.ndjson, and prints one line for run, test and suite. Typed text is never echoed. Needs kane-cli 0.8.17+. - 64 tests on node:test with zero dependencies, driven by sanitized captures from kane-cli 0.8.17-beta.1. The publish workflow runs them before publishing. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01DAoyR4RZRwM2d81a9MCKuU
- New user guide page: what the agent does on a first run, saved preferences, where results are saved, the live status strip, and what leaves the machine. Linked from the guide index and the README. - Kiro power mirrors the canonical skill: every-session ready check, first-run steering file, emoji-table cards, the 0.8.17 stream, and the folders --project fix. The live strip is noted as Claude Code only. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01DAoyR4RZRwM2d81a9MCKuU
…arted the run The reader matched runs by project folder, so every Claude Code session open in the same project showed the strip. Each session is its own process, and it starts both its status line command and, through its shell, kane-cli. The reader now reads the process table once per refresh (only when a live run for the project has to be checked), finds its own host process as the first ancestor that is not a shell, and keeps a run only when the run descends from that same process. Finished runs are remembered per session id instead of per project, so the "passed" line also stays in the session that ran it. Where the process table cannot be read (no ps, as on Windows) the reader falls back to project matching. A run started by hand in a terminal is no longer shown. Verified live: with a real run in flight, the launching session showed the strip through to "passed" while a reader under a different host process showed only the person's own status line. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01DAoyR4RZRwM2d81a9MCKuU
With purpose "suite" or "ask" the skill offered to keep passing runs as saved tests, but only the first run was launched with --name. A run launched without a name is not recorded, so keeping it meant running it again. The skill now says to add --name to every one-off run for those two purposes, and to remove the test file when the person declines. Mirrored to the Kiro first-run steering file. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01DAoyR4RZRwM2d81a9MCKuU
…n by default The strip stays off until the person says yes. In Claude Code it is now the fourth choice after the first result, with "Turn it on (Recommended)" first and a plain description of what changes. The agent records that it asked, so it never asks twice. The installer asks the same question when a person runs it by hand in a terminal (Enter takes the recommended yes, a missing answer is a no). An unattended install never asks and never turns it on: no TTY, CI, no Claude Code, or already asked all skip it. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01DAoyR4RZRwM2d81a9MCKuU
New workflow runs the skill installer suite on ubuntu, macos and windows with Node 18 and 22, checks that the three skill copies are identical, and checks the npm package contents. preflight.sh tests skip on Windows, where a new Windows-only test runs preflight.ps1 for real against a stand-in kane-cli.cmd: section order, a missing CLI, the mobile and grid flags, saved preferences, and the saved-test count. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01DAoyR4RZRwM2d81a9MCKuU
…nual host matrix Lists what the cross-OS workflow covers, and gives the manual matrix a person walks before a release: hosts (how each finds the skill, how it asks, sandbox notes), the reset to a first session, and numbered cases for install, ready check, first run, later sessions, result cards, changing where results go, the live strip, and sessions with nobody present. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01DAoyR4RZRwM2d81a9MCKuU
…s last Found with Codex: its question tool posts the questions and returns straight away with no answers. The skill only saved preferences after answers, so the turn ended with nothing written, the next session would have repeated the tour, and the questions sat above the result card where they were easy to miss. The first run now saves twice. Right after the result card it writes the config with the defaults that run used, so the tour and the choices never repeat whatever happens next. When answers arrive, in the same turn or as the person's next message, it writes again. The choices are now the last thing in the turn, and a host that hands control back early ends its turn there. If the next message is about something else, the defaults stay and nothing is asked again. Mirrored to the Kiro first-run steering file. TESTING.md gains cases for both saves and for ignoring the choices. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01DAoyR4RZRwM2d81a9MCKuU
…ot only the first Found by running Codex first and Claude Code second. Onboarding is shared by every agent, but the live strip exists only in Claude Code. The strip question was tied to the first session, so once another agent had completed onboarding, Claude Code took the later-session path and never asked. The question now has its own once-only trigger in SKILL.md section 1, where every session reads it: in Claude Code, whenever the agent config has no strip.claude-code.offered_at and the strip's needs are met, ask once after that session's first result card. On a first session it still rides along as the fourth choice. TESTING.md gains case G1b. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01DAoyR4RZRwM2d81a9MCKuU
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.
Summary
Makes the first agent-driven kane-cli run feel watched instead of waited on. Today the skill launches kane-cli with one blocking call, so a first-time user sees one line and then silence for 30 seconds to several minutes. This change adds a ready check, a run with nothing asked first, a short tour read during the wait, richer result cards, three choices asked once afterwards, and a live status strip for Claude Code.
Everything ships from this repo (skill, scripts shipped with the skill, npm installer). No kane-cli change is needed. The live strip needs kane-cli 0.8.17 or newer.
#194 is merged and
mainis merged into this branch, so the diff shows only this work.What changes for the person
~/.testmuai/kaneai/agent-config/config.json, read and written by the agent through the shell. Changing where results go is global, and the question says so.npx @testmuai/kane-cli-skill strip enableturns it on, andstrip disableundoes it exactly.What is in the diff
skill-installer/skills/, mirrored byte for byte to.claude/and.agents/):SKILL.mdsection 1 rewritten, five new references (ready-check,first-run,agent-config,cards,live-strip),scripts/preflight.shandpreflight.ps1. The agent tag is now inline on every command, because an exported variable does not survive between shell calls in agent hosts.stream_start,vandtson every line,credits_consumed(was documented ascredits), the saved-test event table (step headings, replay versus authoring), suitelog_pathandfailure,testrun_progress, and "do not pass--stream-membersby default".folders listandfolders createrequire--project(the reference said otherwise).prefs,strip enable|disable|status, a welcome at the end of install, seeding of the agent config folder, the strip reader (strip/kane-strip.mjs). Zero dependencies.docs/user-guide/agents.md, linked from the guide index and the README.npm testbefore publishing.skill-installer/TESTING.mdlists what CI covers and gives the manual matrix of hosts, operating systems and numbered cases to walk before a release.Test plan
cd skill-installer && npm test: 73 tests pass on macOS and Linux, 63 plus 14 POSIX-only skips on Windows (strip reader, installer helpers, preflight), driven by sanitized captures from kane-cli 0.8.17-beta.1 (run, saved test authored and replayed, two-test suite with a failure)✓ passed · 5 steps · 0:54 · 16 credits, and showed nothing for a different projectstrip enablethenstrip disablerestores settingsstrip enablewrapping an existing custom status line, ready card, tour, named run, result card with evidence viewer and test case links, three choices saved, project change flow (new project and folder created, next run landed in it)npm pack --dry-run:lib/,strip/,skills/scripts/included, tests excludeddiff -r)preflight.ps1on real Windows: four Windows-only tests run it under PowerShell against a stand-inkane-cli.cmdin CI, all six OS and Node jobs greennleaves settings untouched and records that the person was asked, Enter turns the strip on with a backup, an unattended install never asksNotes for reviewers
SKILL.mdsection 1 instead of riding on the first session.kane-cli config project <id>andconfig folder <id>save the new ids but leave the oldproject_nameandfolder_namein the config, even after a run.config showthen names the wrong location, and so would the ready card. Runs do land in the new project.ps. On Windows the reader falls back to matching by project folder.--retryflag.🤖 Generated with Claude Code
https://claude.ai/code/session_01DAoyR4RZRwM2d81a9MCKuU