agent-qa-authoring — Claude Code skill: tests and setup
This skill guides agents through creating, checking, and running agent-qa tests, suites, and hooks. Use it when you want changes to follow agent-qa’s schema and workflow.
npx skills add vostride/agent-qa --skill agent-qa-authoring -a claude-codeWhat agent-qa-authoring does
The skill lays out an agent-qa workflow: inspect the available MCP tools and workspace posture, consult the bundled contracts when exact fields matter, then verify a draft before writing it. It routes new tests and suites through agent_qa_write_test, test edits through agent_qa_refine_test, and configuration changes through agent_qa_change_config. Each write takes effect during the tool call.
IDs must come from the host system; the agent should read them from the returned entity rather than inventing or checking them by hand. Runs start with agent_qa_start_run and file patterns passed as patterns. The local server rejects scope, so leave it out. A run targeting environment: production is blocked unless agent-qa.config.yaml has top-level allowProduction: true. Deleting tests and editing an existing hook remain manual repository changes.
Only values from the file named by workspace.secretsFile are masked. Environment variables, workspace.envFile values, cookies, and screenshots are not, so use temporary credentials with limited access. Test and suite paths must also match workspace.testMatch or workspace.suiteMatch.
What it helps with
- author an agent-qa test or suite
- verify a draft before writing it
- change configuration to add a hook
- run tests using file paths or globs
- inspect recent runs and retrieve a digest
Example prompts for the agent
- Create an agent-qa test for the login flow and place it in a suitable suite.
- Check this test draft against the agent-qa contract, then write it if verification passes.
- Run the agent-qa tests matching
tests/login*and report the run result.
How to install agent-qa-authoring
1Skills CLI (Vercel)
npx skills add vostride/agent-qa --skill agent-qa-authoring -a claude-code2Manually: put the files in place
~/.claude/skills/agent-qa-authoring/SKILL.mdCopy the whole skill folder; for one project use .claude/skills/agent-qa-authoring/
1Skills CLI (Vercel)
npx skills add vostride/agent-qa --skill agent-qa-authoring -a codex2Manually: put the files in place
.agents/skills/agent-qa-authoring/SKILL.mdFor all projects use ~/.agents/skills/
1Skills CLI (Vercel)
npx skills add vostride/agent-qa --skill agent-qa-authoring -a cursor2Manually: put the files in place
.cursor/skills/agent-qa-authoring/SKILL.mdCursor also reads .agents/skills/ and .claude/skills/
1GitHub CLI
gh skill install vostride/agent-qa agent-qa-authoring2Manually: put the files in place
.github/skills/agent-qa-authoring/SKILL.md1Skills CLI (Vercel)
npx skills add vostride/agent-qa --skill agent-qa-authoring -a gemini-cli2Platform CLI
gemini skills install https://github.com/vostride/agent-qa --path skills/agent-qa-authoringManually: put the files in place
.devin/skills/agent-qa-authoring/SKILL.mdThe legacy .windsurf/skills/ path still works
Skills CLI (Vercel)
npx skills add vostride/agent-qa --skill agent-qa-authoring -a opencodeClaude.ai
Zip the folder and upload it in Settings → Capabilities → Skills
Step by step, with commands for each platform: How to install skills in Claude Code: five ways
Questions about agent-qa-authoring
How do I install agent-qa-authoring in Claude Code?
Run npx skills add vostride/agent-qa --skill agent-qa-authoring -a claude-code. The skill file is placed at ~/.claude/skills/agent-qa-authoring/SKILL.md.
What does agent-qa-authoring do?
It guides agents in authoring, verifying, and running agent-qa tests, suites, and hooks. It directs changes through agent-qa MCP tools and the bundled schema contracts.
Which values does agent-qa mask as secrets?
It masks only values from the file named by workspace.secretsFile. Environment variables, workspace.envFile values, cookies, and screenshots are not masked.
Source text
SKILL.md · Apache-2.0
---
name: agent-qa-authoring
description: Use when creating, editing, validating, or running agent-qa tests, suites, or hooks. Prefer agent-qa MCP tools, enforce canonical agent-qa IDs, and use the bundled schema reference to avoid hallucinated config keys or YAML fields.
metadata:
short-description: Author agent-qa tests safely
---
# agent-qa Authoring
## Workflow
1. Discover the surface from the protocol itself: `tools/list` names every tool, and every caller
sees and may call the same set. For the full picture — the capability catalog, the v1 to v2
tool-name migration map, and this workspace's posture — run `npx agent-qa init --agent`, which
prints one JSON document and writes nothing.
2. Read the workspace posture from that same manifest: whether this workspace has a configuration
that reads. No MCP tool reads configuration.
3. Load `references/agent-qa-contracts.json` when you need exact schema fields or ID contracts.
4. Never mint an ID and never hand-write one. IDs are minted host-side where the entity is written:
name what you want, then read the id back off the entity card `agent_qa_get_entity` returns.
5. Never validate an ID by hand either. The one URI codec validates every `agentqa://` reference as
it is parsed, including the one `agent_qa_get_entity` resolves — a reference that comes back
resolved is a reference that was well-formed.
6. Validate before you write. `agent_qa_refine_test`'s verify arm returns the same verdict that
gates the write; there is no standalone linter over pasted text, on purpose, because a second
validator can disagree with the one that gates.
7. Authoring changes apply in the call, and each answer names what it wrote:
- A new test or suite file: `agent_qa_write_test`, which names the suite file the draft joins and
writes it unless a keep-gate rejected it. Its `written` receipt names the file it wrote, or why
none was written, with the draft's disposition and the four keep-gate results: that is how well
the written test was verified.
- If it answers `refused` with `statedValueRefusal`, the draft lost a value the request stated
(a quoted string, number, price or date): show the user its `stage` and each of its
`missingValues`, and stop. Never reword the request to get past the check; asking again in
their own words is the user's call.
- An edit to a test: `agent_qa_refine_test`.
- A new hook or another configuration change: `agent_qa_change_config`, which writes the change
and answers the files and fields it changed.
- Each change is on disk when the call answers; nothing waits for a second call. `git status`
and `git diff` show what changed, and `git restore` reverts a file.
8. There is no delete verb on any surface, by rule rather than by omission. Removing a test, a suite
or a hook is a repository edit a person makes.
9. Editing an existing hook has no tool yet: it is an edit to `workspace.hooksFile` in the workspace
until the owning milestone rules on the verb.
10. Keep file paths matched by `workspace.testMatch` or `workspace.suiteMatch`.
## Required ID Contracts
- Test IDs: `t_` + 10 id-agent words.
- Suite IDs: `s_` + 10 id-agent words.
- Hook IDs: `h_` + 10 id-agent words.
- Run IDs: `r_` + 10 id-agent words.
- Observation IDs: `obs_` + 10 id-agent words.
## Before Running
- Verify the draft first (step 6).
- Start runs with `agent_qa_start_run` rather than shelling out, and name the test files to run
with `patterns` (paths or globs). Its input also lists `scope`, which the local agent-qa server
refuses, so never pass it.
- A run starts in the call, with no prompt. A run that drives a target declared
`environment: production` is refused, naming the target, unless `agent-qa.config.yaml` has
`allowProduction: true` at the top level. No argument or flag allows it.
- `agent_qa_list_runs` enumerates recent runs; `agent_qa_get_run_digest` reports one.
## Secrets
- Only the values in the file `workspace.secretsFile` names are secrets. agent-qa replaces each one
with `[secret:<name>]` in the text it sends to a model and in the records, logs and output it
writes, and never restores it.
- To type a secret in a step, write `{{secret:<name>}}`. Never write `[secret:<name>]` in a step: it
would type the placeholder, so the action is refused.
- Nothing else is masked: not `workspace.envFile` values, environment variables, cookies, saved auth
state or emails, and not screenshots or recordings. The one exception: the dashboard's model
connection check keeps the key or header value it is testing out of the provider's error message.
Use temporary, limited test credentials.
## Do Not
- Do not invent config keys.
- Do not use legacy root config buckets.
- Do not hand-write IDs.
- Do not mutate files outside the configured workspace patterns.
- Do not call a v1 tool name. Every retired name and what answers its need instead is carried by the
migration map in `npx agent-qa init --agent`; calling one returns that ruling rather than a
result.
© vostride · Apache-2.0 · vostride/agent-qa