Skip to content

Skill 0.2.0: shared projects, exploration, and the agent contract - #217

Merged
shravan-lambdatest merged 12 commits into
LambdaTest:mainfrom
shravan-lambdatest:skill-0.2.0-shared-projects
Oct 24, 2026
Merged

shravan-lambdatest merged 12 commits into
LambdaTest:mainfrom
shravan-lambdatest:skill-0.2.0-shared-projects

Conversation

@shravan-lambdatest

@shravan-lambdatest shravan-lambdatest commented Oct 24, 2026 •

Copy link
Copy Markdown
Collaborator

kane-cli 0.10.0 lets a team work in one Test Manager project: folders are linked to a shared project, and what one person saves (use-cases, tests, Test Manager cases, coverage) the whole team sees. Skill 0.1.3 never mentions it. An agent following it sets up a local store, never reaches the team's project, and can't recover from the refusals a linked folder gives. This release teaches the shared-project path and the agent contract behind it.

What changes for agents

  • Where the work goes, first. In agent mode a folder that isn't set up yet goes local unless it's linked with --project <id>. The decision tree now asks where the work goes before any assurance command.
  • New reference shared-projects.md covers:
    • finding or making the project (kane-cli projects list|create --agent) and getting a folder's project id;
    • linking (context ingest|extract --project <id>);
    • the journey: add the documents, save the session, a one-question checkpoint before designing, design, save, fill the variables, run, cover;
    • approximate credit costs per step;
    • where everything lives: test files, Test Manager cases, runs, coverage, variables;
    • a teammate joining, and bringing the team's tests into a folder: kane-cli context pull where the release has it, with a check via --help, else copying only the test files and their recordings;
    • what a linked folder refuses;
    • kane-cli run in a linked folder, and "tests from two projects".
  • New reference agent-contract.md: which agent flag each command takes, the stream shapes (first and last line per command), every event in a linked folder, how to use next: [{cmd, why}], exit codes, and each refusal code with what to do and the command to run.
  • New reference explore.md, exploration together with assurance:
    • starting one into the team's project, always with --project, since explore doesn't read a folder's link; a
      project nobody has shared yet is shared by its first design job;
    • asking the person before a run that may change data (the default policy is mutating);
    • apps behind a login (--deps, --allow-domain, variables);
    • scope and work limits, a private app through a tunnel, a run from this machine;
    • watching, stopping, running again, and moving to another site;
    • checking what it designed, and turning design off or on;
    • getting its tests into a linked folder (kane-cli context pull) or a fresh one (kane-cli context pull --project <id>), then their first runs.
  • Linked-folder sections in assurance.md, testrun.md (designed tests run on their scenario's Test Manager case: first run, replay, heal, counting, the case-stop codes), cards.md (a coverage card), first-run.md, ready-check.md (getting or updating the skill with kane-cli install skill [version]; corrected sign-in and balance rows) and four short notes elsewhere.
  • Preflight: preflight.sh and preflight.ps1 print a ## link section with the linked project's name and id, none, or unreadable when kane-cli couldn't read the link either.
  • Smaller corrections: --max-steps defaults to 50; the dry run applies to testrun run; redesigning a use-case that is still proposed needs --force --allow-unreviewed; test-manager.md lists exit 1.
  • Checked against kane-cli's code. Codex and Claude reviewed every reference against the code, and each finding was
    verified before it was fixed. Outside shared projects, these references now match what kane-cli does today:
    • testmd delete needs --yes;
    • imports may name tests and modules;
    • the lock-conflict default is readonly;
    • exit codes, replay cost, the evidence merge rules, analyzer results, the parsing table;
    • coverage: one figure, --rollup ignored;
    • evolve skips a use-case whose source changed;
    • --limit is 1-200;
    • the login profile default.

What changes for people

New user-guide pages:

  • docs/user-guide/assurance/shared-projects.md: working with your team in a Test Manager project.
  • docs/user-guide/exploration.md: map your app and design tests from it. First run, whether it can change your data, an app behind a login, a private app through an LT tunnel, keeping a run in bounds, the map, stopping and re-running, the tests it designs and getting them into a folder, exit codes, troubleshooting. Linked from the guide's index, Getting started, Shared projects and Troubleshooting. Shared-project sections are added to the getting-started, agents, assurance (overview, context, design, coverage, sharing, maintain), testrun, Test Manager, variables, configuration and troubleshooting pages, and to the guide's index.

Version

skill-installer/package.json goes to 0.2.0. Its minimum kane-cli is 0.10.0. The three skill copies (skill-installer/skills/, .claude/skills/kane-cli/, .agents/skills/kane-cli/) are byte-identical.

Text that depends on a kane-cli release

Some lines in the user-guide pages need a later kane-cli release:

  • kane-cli context pull in a linked folder;
  • the "no tests here yet" refusal in a linked folder;
  • exploration.

Each of these lines carries a <!-- release: … --> comment, so it can be kept or removed when that release is cut. The skill itself checks kane-cli context pull --help before using the pull.

Tests

skill-installer/test/preflight.test.mjs and preflight-ps1.test.mjs expect the new link section in the section order, and cover link in a plain folder, a linked one, and a link file kane-cli can't read (unreadable). npm test locally: 80 tests, 75 pass, 0 fail, 5 skipped (the PowerShell ones, Windows only); the skill installer tests workflow passes on Ubuntu, macOS and Windows with Node 18 and 22.

Two agents, Codex and Claude, each did a real first run of a designed test in a linked folder with this skill, headless, and both passed.

🤖 Generated with Claude Code

https://claude.ai/code/session_01CWzoM9tH5Wua2MvuDasu94

shravan-lambdatest and others added 12 commits October 23, 2026 19:59
…uide pages for shared projects

The skill now leads with where the work goes: in agent mode a folder that isn't set up yet goes
local unless it's linked to a team's Test Manager project with --project. New references:
shared-projects.md (find or make a project and get its id, link a folder, the journey with a
one-question checkpoint and approximate costs, where tests, cases, coverage and variables live, a
teammate joining, bringing the team's tests into a folder, what a linked folder refuses, kane-cli
run and tests from two projects), agent-contract.md (agent flags, stream shapes, events, next, exit
codes, and each refusal code with the command that recovers it) and explore.md. Linked-folder
sections in assurance, testrun, cards, first-run and ready-check (getting or updating the skill
with kane-cli install skill). The preflight prints a link section with the linked project's name
and id. The installer is 0.2.0 and the three skill copies are identical. The user guide gains a
shared-projects page and shared-project sections across its assurance, testrun, Test Manager,
variables, agents, getting-started and troubleshooting pages.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01CWzoM9tH5Wua2MvuDasu94
In a folder that isn't linked, context pull with no flags stays the location pull it always was; in
a new folder its message is "no context store here", and `--project <id>` is how to join and bring
the project's tests. `--use-case` or `--overwrite` without `--project` there refuses
PULL_FLAGS_LINKED_ONLY. The pull's events and refusals carry verb "sync", and refusals at the
folder's entry carry "pull".

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01CWzoM9tH5Wua2MvuDasu94
…n, not asked for again

The pull marks a variable it can't classify as secret. When the person has already given its value
in their own words, it isn't a secret to them: the agent writes it into the variables file without
printing it, and goes on.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01CWzoM9tH5Wua2MvuDasu94
…d say why

If projects list is refused, or lists no project the person can work in and they don't want a new
one, the agent works in a local store and tells the person why in plain words. It tries the shared
path once, never in a loop.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01CWzoM9tH5Wua2MvuDasu94
…nst the code, real headless runs)

Six reviews (Codex and Claude, each over the new shared-project files, the changed references and the
unchanged ones) checked every claim against kane-cli's code; each finding was verified before it was
folded. Two real first runs (Codex and Claude, headless, in linked folders) passed with this skill.

- A linked folder's pull: `kane-cli context pull` brings the project's tests there; only sync, push,
  clone and a location pull are refused. A teammate joins with `context pull --project` where it exists.
- A folder with its own `.context/` keeps working locally; the shared path is for a folder without one.
- Exploration: the default policy is mutating, so the agent asks the person before a run that may
  change data; `explore view` takes `--exploration-id` and runs in the person's terminal; `explore list
  --all` finds finished explorations; the context sync outcomes.
- Agent contract: save's first events, PROJECT_BUSY has no `next`, redesign needs `--force`, the
  TEST_CASE_* fixes, a pull that removes its own link, PULL_LOCATION_LINKED, PROJECT_MISMATCH's two
  endings, card_verdict's design offer.
- Coverage: the computing state, run coverage only when written, use-cases with no criteria, `--rollup`
  no longer changes the figure, evolve's source_changed skip.
- Test runs: credits come from `kane-cli balance` before and after (the stream carries none), first
  runs end with testrun_authored_member_end, the --remote case check, fail-fast and cancel behaviour.
- Older references corrected to today's code: testmd delete needs --yes, imports, lock conflicts,
  exit codes, replay cost, the evidence merge, analyzer results, the parsing table; internal names removed.
- Preflight reads the link as JSON (node), prints `unreadable` for a link kane-cli can't read, and
  lists `link` in its header; tests cover both.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01CWzoM9tH5Wua2MvuDasu94
…diff)

A Codex read of the fold's 272 changed lines against kane-cli's code found 16 to tighten, each
confirmed before the change: a folder with both `.context/` and a link is refused BOTH_STORES; a
local test run's stream carries no credits total; the --from-context refusal ends on its error;
testrun_done can be "refused"; a remote crash is internal_error, exit 1; PROJECT_BUSY's wait-only
remedies; cover's pull `next` condition; the saved target applies to `kane-cli run`, a saved test
follows its own target; only unchanged recorded steps replay; designed tests run on their case only
directly in `.testmuai/tests/`; update_available also comes from generate; smaller wording.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01CWzoM9tH5Wua2MvuDasu94
The coverage-not-ready line, the ready card's results row and the first-run browser choice, in the
signed wording; the exploration question was signed as written.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01CWzoM9tH5Wua2MvuDasu94
explore.md now covers what a person exploring an app needs:
- the project is always passed with --project, since explore doesn't read a folder's link; a project
  nobody has shared yet is shared by the exploration's first design job;
- apps behind a login (--deps with --allow-domain, variables with real values);
- --allow-post, scope and work limits (--max-leases limits the explorer, not the design jobs);
- a private app through a tunnel, and a run from this machine, with its exits;
- run states, stop (and when it hasn't stopped yet), run again, and another site (whose tests then
  share the project);
- what the design jobs did, context off/on, and the map's feedback;
- getting the tests into a linked folder (`context pull`) or a fresh one (`context pull --project`),
  then their first runs.

Reviewed against kane-cli's code by Codex and Claude; every finding verified before it was folded. The
user guide's exploration subsection gains the fresh-folder pull and the project rule.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01CWzoM9tH5Wua2MvuDasu94
…nnel

w-EM's signed wording for the read_only setup note, the permission ask and the another-site note.
A new subsection explains how the cloud's browsers reach an app on localhost or a private network:
the person downloads LT, starts it in their own terminal as the same LambdaTest user (`--env ht-prod`
is required), then the run passes `--tunnel-name`; the tunnel and the machine stay up, and a tunnel
needs cloud browsers.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01CWzoM9tH5Wua2MvuDasu94
A re-run keeps the exploration's URL but not its tunnel; step 2 says what $LT_USERNAME and
$LT_ACCESS_KEY are.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01CWzoM9tH5Wua2MvuDasu94
… options

docs/user-guide/exploration.md, for a person at a terminal:
- the first run and what the terminal shows, and where to find the exploration id;
- why every run takes its options again;
- whether it can change data; an app behind a login (and where values go);
- a private app through an LT tunnel; keeping a run in bounds;
- the map and what you can do in it; stopping, re-running, another site;
- the tests it designs and getting them into a folder;
- exit codes and troubleshooting.

Linked from the index, Getting started, Shared projects and Troubleshooting. Checked against kane-cli's code by
Codex and Claude, then a second Codex pass.

The skill's explore.md gains the same findings:
- a run keeps only the URL;
- the `--allow-post` host rule;
- variables replace same-named ones and their name rules;
- an empty secret or a failed sign-in stops the run;
- the built-in run limits; `--max-parallel` defaults to 1.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01CWzoM9tH5Wua2MvuDasu94
--deps always needs --allow-domain (the URL's own host too when it signs in there); one project per URL
beside the login and tunnel examples; the Chrome line links the launch troubleshooting; the detach and
end-of-run lines; mkdir before the LT move.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01CWzoM9tH5Wua2MvuDasu94
@shravan-lambdatest
shravan-lambdatest merged commit 2f234f3 into LambdaTest:main Oct 24, 2026
6 checks passed
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