Skip to content

Commit f198eae

Browse files
committed
feat(agent)!: align skill install with the Agent Skills standard
Replace the per-agent bespoke install formats with the Agent Skills open standard: one canonical .agents/skills/<skill>/SKILL.md per project, read directly by universal agents (Codex, Cursor, Cline, Gemini CLI, Copilot, …) and via a relative symlink by every other agent. The bundled registry grows from 8 hand-wired targets to the full standard set (72 agent ids). BREAKING CHANGE: agent install no longer writes per-agent bespoke formats. Codex no longer receives a managed section in AGENTS.md and Windsurf no longer receives a size-capped compact body — both now read the canonical .agents/skills/. The install result schema gains a `mode` (canonical | symlink) field and `path` reflects the new model. Skills written in the old format report stale/modified under `agent status` until refreshed (re-run `agent install`, add --force where needed). The legacy aliases (claude, kiro, copilot) and the claude-code default are preserved, so existing commands keep working.
1 parent 2708a40 commit f198eae

19 files changed

Lines changed: 2174 additions & 5403 deletions

DOCUMENTATION.md

Lines changed: 14 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -106,30 +106,27 @@ Every artifact in the bundle shares one `snapshotId`; the CLI will not mix a fai
106106

107107
## Agent onboarding (`agent install`)
108108

109-
`testsprite agent install` writes a ready-made skill/instruction file into your project so your coding agent knows the commands, the exit codes, and the failure-bundle layout — no prompt engineering required. It's a pure-local command: no network, no credentials.
109+
`testsprite agent install` writes the TestSprite skills into your project so your coding agent knows the commands, the exit codes, and the failure-bundle layout — no prompt engineering required. It's a pure-local command: no network, no credentials.
110110

111111
```bash
112-
testsprite agent install claude # install the skill for Claude Code
113-
testsprite agent install codex # install into AGENTS.md for Codex (managed-section)
114-
testsprite agent install cursor # .cursor/rules/testsprite-verify.mdc
115-
testsprite agent install cline # .clinerules/testsprite-verify.md
116-
testsprite agent install windsurf # .windsurf/rules/testsprite-verify.md
117-
testsprite agent install antigravity # .agents/skills/testsprite-verify/SKILL.md
118-
testsprite agent install kiro # .kiro/skills/testsprite-verify/SKILL.md
119-
testsprite agent install copilot # .github/instructions/testsprite-verify.instructions.md
120-
testsprite agent list # list all 8 targets with status + mode + path
121-
testsprite agent status # check installed skills against this CLI version
112+
testsprite agent install claude-code # .agents/skills/<skill>/SKILL.md + .claude/skills/<skill> symlink
113+
testsprite agent install codex # writes the canonical copy (Codex reads .agents/skills directly)
114+
testsprite agent install cursor # universal — reads the canonical copy
115+
testsprite agent install gemini-cli # universal
116+
testsprite agent install github-copilot # universal
117+
testsprite agent install kiro-cli # .kiro/skills/<skill> symlink → canonical
118+
testsprite agent install windsurf # .windsurf/skills/<skill> symlink → canonical
119+
testsprite agent list # every supported agent, its skills folder, and universal vs symlink
120+
testsprite agent status # check installed skills against this CLI version
122121
```
123122

124-
Supported targets: `claude` (GA), `codex` (experimental), `cursor` (experimental), `cline` (experimental), `antigravity` (experimental), `kiro` (experimental), `windsurf` (experimental), `copilot` (experimental).
123+
`--target` accepts any agent id from the standard registry (70+), plus the legacy short aliases (`claude`, `codex`, `cursor`, `cline`, `antigravity`, `kiro`, `windsurf`, `copilot`). Omitting `--target` in a non-interactive shell defaults to `claude-code`; in a terminal the CLI prompts.
125124

126-
Omitting `--target` in a non-interactive shell (CI, agent subprocess) defaults to `claude` with an `[info]` note on stderr; in a terminal the CLI prompts (empty answer = `claude`).
125+
Because every universal agent reads the same `.agents/skills/` folder, **installing for one universal agent makes the skill available to all of them**`agent install --target codex` also serves Cursor, Cline, Gemini CLI, Copilot, etc.
127126

128-
`agent status` checks every installed skill file against the current CLI version and reports one of `ok`, `stale`, `modified`, `unmarked`, `absent`, or `corrupt` per target. It exits `1` when anything needs attention, so `testsprite agent status && …` can gate a CI step; `--dir <path>` inspects a different project root.
127+
`agent status` checks the canonical skill file (and each symlinked landing) against the current CLI version and reports `ok`, `stale`, `modified`, or `unmarked` for every agent that has an install (absent agents are omitted to keep output focused). It exits `1` when anything needs attention, so `testsprite agent status && …` can gate a CI step; `--dir <path>` inspects a different project root.
129128

130-
The `codex` target uses **managed-section mode** — it writes only a sentinel-delimited section inside your existing `AGENTS.md`, so your project instructions are never clobbered. Re-running without `--force` replaces the section in-place; user content outside the sentinels is always preserved.
131-
132-
Re-running with `--force` on **own-file targets** (claude, cursor, cline, antigravity, kiro, windsurf, copilot) backs up the existing file to `<path>.bak` first.
129+
Re-running with `--force` overwrites a canonical file that has drifted, backing up the existing bytes to `<path>.bak` first; for symlinked landings it replaces a link that points elsewhere.
133130

134131
## Command reference
135132

README.md

Lines changed: 111 additions & 32 deletions
Large diffs are not rendered by default.

package-lock.json

Lines changed: 2 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

skills/testsprite-onboard.skill.md

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,7 @@
1-
<!--
2-
User-facing content for `testsprite agent install` (skill: testsprite-onboard).
3-
Body only — name + description frontmatter is emitted by the install wrapper.
4-
The cursor (.mdc), cline (.clinerules), and antigravity (experimental)
5-
wrappers reuse this body verbatim and swap only the frontmatter/header.
6-
-->
1+
---
2+
name: testsprite-onboard
3+
description: Stand up a complete, runnable TestSprite test suite for the current repo at first use — create a project (with a target URL and auth), derive a coherent set of tests from the codebase, batch-create them, and smoke-run a few to a green verdict so the user immediately has something worth running. Use ONLY when a repo has no TestSprite tests yet (a fresh project), right after `testsprite setup`, or when the user asks to "set up / bootstrap / seed tests". This is first-run setup, NOT change verification — once a project already has tests, use the testsprite-verify skill instead.
4+
---
75

86
# TestSprite: onboard a repo with a seed test suite
97

skills/testsprite-verify.codex.md

Lines changed: 0 additions & 127 deletions
This file was deleted.

skills/testsprite-verify.skill.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,8 @@
1+
---
2+
name: testsprite-verify
3+
description: TestSprite verification loop — after finishing a feature or fix in a TestSprite-tested repo, use the `testsprite` CLI to run the relevant TestSprite tests against the change and inspect any failure artifacts before reporting the work as done. Use whenever code has changed outside docs/config and is about to be reported complete — by running an existing test that covers the change, or by creating a new TestSprite test (a frontend plan, or a backend Python assertion) and running it to a terminal verdict.
4+
---
5+
16
# TestSprite Verification Loop
27

38
The verification loop that flies your just-shipped feature through the

0 commit comments

Comments
 (0)