Test Writing Workflow
iOfficeAI/AionUi
Sets the test-writing workflow for the repository: risk-first scenario lists, behavior-focused Vitest tests, a full run before each commit and a coverage target.
Run a live-instance verification of traceway-cli that goes beyond the Go smoke suite — exercises real-data detail endpoints, TTY-default rendering, adaptive metric-name discovery, and emits a…
$ npx skills add tracewayapp/traceway --skill integration-test -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install tracewayapp/traceway integration-test --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/tracewayapp/traceway.git skills-src && mkdir -p .claude/skills && cp -r skills-src/cli/.claude/skills/integration-test .claude/skills/integration-test && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "integration-test" agent skill from https://github.com/tracewayapp/traceway/tree/main/cli/.claude/skills/integration-test into .claude/skills/integration-test/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "integration-test", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/tracewayapp/traceway/tree/main/cli/.claude/skills/integration-testType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add tracewayapp/traceway --skill integration-test -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install tracewayapp/traceway integration-test --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/tracewayapp/traceway.git skills-src && mkdir -p .agents/skills && cp -r skills-src/cli/.claude/skills/integration-test .agents/skills/integration-test && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "integration-test" agent skill from https://github.com/tracewayapp/traceway/tree/main/cli/.claude/skills/integration-test into .agents/skills/integration-test/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "integration-test", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add tracewayapp/traceway --skill integration-test -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install tracewayapp/traceway integration-test --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/tracewayapp/traceway.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/cli/.claude/skills/integration-test .cursor/skills/integration-test && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "integration-test" agent skill from https://github.com/tracewayapp/traceway/tree/main/cli/.claude/skills/integration-test into .cursor/skills/integration-test/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "integration-test", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/tracewayapp/traceway.git --path cli/.claude/skills/integration-test--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add tracewayapp/traceway --skill integration-test -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install tracewayapp/traceway integration-test --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/tracewayapp/traceway.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/cli/.claude/skills/integration-test .gemini/skills/integration-test && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "integration-test" agent skill from https://github.com/tracewayapp/traceway/tree/main/cli/.claude/skills/integration-test into .gemini/skills/integration-test/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "integration-test", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install tracewayapp/traceway integration-testInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add tracewayapp/traceway --skill integration-test -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/tracewayapp/traceway.git skills-src && mkdir -p .github/skills && cp -r skills-src/cli/.claude/skills/integration-test .github/skills/integration-test && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "integration-test" agent skill from https://github.com/tracewayapp/traceway/tree/main/cli/.claude/skills/integration-test into .github/skills/integration-test/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "integration-test", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add tracewayapp/traceway --skill integration-test -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install tracewayapp/traceway integration-test --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/tracewayapp/traceway.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/cli/.claude/skills/integration-test .opencode/skills/integration-test && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "integration-test" agent skill from https://github.com/tracewayapp/traceway/tree/main/cli/.claude/skills/integration-test into .opencode/skills/integration-test/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "integration-test", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
integration-testRun a live-instance verification of traceway-cli that goes beyond the Go smoke suite — exercises real-data detail endpoints, TTY-default rendering, adaptive metric-name discovery, and emits a…
Integration Test is an agent skill from tracewayapp/traceway. Run a live-instance verification of traceway-cli that goes beyond the Go smoke suite — exercises real-data detail endpoints, TTY-default rendering, adaptive metric-name discovery, and emits a human-readable coverage report. Invoke ONLY when the user explicitly asks (e.g. "run integration tests", "verify the CLI against stormwind"). Never invoke automatically after edits or commits. Assumes the user is already authenticated and a default project is configured.
Its SKILL.md is about 2.4k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.
It sits in Testing & QA, covering Integration testing and Test coverage. It works with OpenTelemetry. The repository describes itself as: The only tool you need to know what is happening and how to fix it. The licence is MIT.
5 steps, taken from the first numbered list in SKILL.md.
Read from SKILL.md and the folder at commit 3e5ca7d. It shows what the files ask for, not the result of running them.
Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.
From allowed-tools in the SKILL.md frontmatter.
Shell commands in SKILL.md call:
jqjustnixFrom the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md.
From URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Integration Test loads about 2.4k tokens when it runs. Until then it costs about 120 tokens; SKILL.md has 1,065 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check found no risky patterns in SKILL.md.
Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.
The full file from tracewayapp/traceway at commit 3e5ca7d, republished under its MIT licence (© tracewayapp). 1,065 words, ~2,381 tokens.
.claude/skills/integration-test/SKILL.md (or your agent's skills folder).A repeatable protocol for verifying the CLI end-to-end against a live Traceway server, focused on the things the Go smoke suite can't easily cover.
Invoke ONLY when the user explicitly asks. Never run as a side effect of edits, commits, or builds.
The just smoke-test target (test/smoke/*_test.go, build tag smoke) is the primary regression check. Against a live instance it already covers:
profiles list.--search-type, --order-by, --sort-direction, --aggregation, --tag).--since 7D, missing --to, --since + absolute mix, far-future windows).metrics query missing --name, bogus name → empty series, malformed tag.exceptions show <zeros> → exit 5 not_found.--profile no-such-profile → exit 4; --project 0…0 → non-zero, no panic, no connection_failed.Do not re-implement these here. If they regress, that's a Go-test bug, not a skill failure.
What this skill adds beyond just smoke-test:
exceptions show <captured-hash>, populated metrics query --name <real> with every aggregation + group-by.confirmMutation env hygiene, applied to every probe.Read-only. No exceptions. Even if a subcommand looks safe by name, check --help for mutating flags before running.
Skip any subcommand whose name or --help mentions:
archive, unarchive, resolve, unresolve, mute, ack, acknowledgecreate, delete, update, set, put, post, add, remove, rmassign, claim, close, reopenlogin, logout, token, rotate, regenerate--archive, --resolve, --delete, --write, --mutate, --apply, --commitIf a new subcommand is ambiguous (sync, refresh, replay, export), do not run it — list it under "skipped — manual review". If --dry-run exists, still skip write-shaped subcommands.
The CLI gates mutations via confirmMutation (cmd/traceway/querycommon.go). The harness MUST:
--yes.unset TRACEWAY_ASSUME_YES at the top of the script./dev/null.So that if a forbidden verb slips through, the gate refuses with exit 2 usage_error instead of hanging on a prompt.
Run in order. Stop if any fails.
nix develop --command go build -o ./bin/traceway ./cmd/traceway.test -f "${XDG_CONFIG_HOME:-$HOME/.config}/traceway/config.json".TW_PROJECT_ID:./bin/traceway projects list --output json | jq -e 'type=="array" and length>=1' >/dev/null
TW_PROJECT_ID=$(./bin/traceway projects list --output json | jq -r '.[0].id')projects list --output json returns a bare array, not a {data, pagination} envelope.
exceptions show <captured-hash>HASH=$(./bin/traceway exceptions list --since 720h --page-size 1 --output json | jq -r '.data[0].exceptionHash // empty')--project <id>. If still empty, skip with reason no exception found across all projects.--help. JSON shape: {group: {...}, occurrences: [...], pagination: {...}} — assert .group and .occurrences..occurrences[0].traceId if present for the logs probe below.metrics query --name <real-metric> (adaptive)Probe these names in order until one returns a populated series:
system.cpu.utilization
system.network.io
system.network.errors
system.network.dropped
http.server.duration
traceway.requestsIf none populates, skip the live block with reason no live metric name found.
For the first metric that populates:
--help.avg, sum, count, min, max, p50, p95, p99.--interval-minutes 15.--group-by direction for network metrics (splits __all__ into receive/transmit).JSON shape: {results: [{name, unit, series: {<tag-key>: [{timestamp, value}, ...]}}]} — series is a map keyed by group tag, default key __all__.
logs query --trace-id <captured>If a real trace id was captured above, run logs query --trace-id $TRACE --since 720h. Assert exit 0 and {data, pagination} shape.
These all require a timestamp flag; capture the id and its recordedAt together from exceptions show, then exercise them. All read-only.
OCC=$(./bin/traceway exceptions show "$HASH" --output json | jq -c '.occurrences[0]')
OID=$(jq -r '.id' <<<"$OCC")
OTS=$(jq -r '.recordedAt' <<<"$OCC")
DT=$(jq -r '.traceId // empty' <<<"$OCC")
SID=$(jq -r '.sessionId // empty' <<<"$OCC")exceptions occurrence $OID --recorded-at $OTS — assert exit 0 and .exception.id == $OID.exceptions occurrence $OID with no --recorded-at → exit 2 usage_error; --recorded-at notadate → exit 2 invalid_timestamp; endpoints show not-a-uuid --recorded-at $OTS → exit 2 usage_error.$DT is non-empty: traces show $DT --recorded-at $OTS → exit 0, .nodes is an array. If $SID is non-empty: sessions show $SID --started-at $OTS → exit 0, .session present.endpoints show / tasks show / ai-traces show need an id of their own type — capture one from a traces show node when available (.nodes[].endpoint.id + .endpoint.recordedAt, etc.); otherwise skip with reason no <type> id captured.If script is available:
script -q /dev/null ./bin/traceway projects list | head -20Expect a table. Piping without script should yield JSON. Mark as "not verified" if script is absent.
Mutating (skip with reason forbidden verb):
exceptions archive, exceptions unarchive, login, logout, profiles use (local mutation), projects use (local mutation of state.json).
Not in the CLI (skip with reason subcommand not in CLI) — kept so the report shows the gap if they ship:
tasks list, sessions list, ai-traces list, traces list, metrics discover.
Classify each invocation:
| Result | Classification |
|---|---|
| exit 0, valid JSON, expected keys present | pass |
| exit 0 but stdout empty when data expected, or JSON invalid / missing keys | fail — schema |
| exit non-zero, clean message, expected error | pass — error case |
| exit non-zero with panic or stack trace | fail — crash |
| exit non-zero on a happy path | fail — unexpected error |
| stderr non-empty on a passing command | warn — noisy |
| > 10s on a list call | warn — slow |
Drive the run from one ephemeral /tmp/*.sh script (not committed). Top of script:
#!/usr/bin/env bash
set -u # never set -e
unset TRACEWAY_ASSUME_YES
exec </dev/null # no TTY for the suite
LOG=$(mktemp /tmp/traceway-it.XXXXXX.log)Capture exact invocation, exit code, and first 20 lines of stdout/stderr per probe to $LOG.
End-of-run markdown report:
N pass, M fail, W warn, S skipped + wall-clock.— for not exercised).just smoke-test was run in this session and its result, so the report stands alone.$LOG.Do not inline the full log.
just smoke-test. Assume that suite's coverage is green; if you suspect regressions there, run smoke separately.If a new read subcommand ships, add a probe block. If a new mutating subcommand ships, add it to the forbidden list. If a regression pattern shows up that is deterministic and stateless, push it down to test/smoke/*_test.go — not into this skill.
© tracewayapp, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
Just SKILL.md in cli/.claude/skills/integration-test of tracewayapp/traceway.
Open the folder on GitHubat commit 3e5ca7d
Integration Test next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Integration Test this skilltracewayapp/traceway | 1.6k | — | ~2.4k | Automated safety check: Pass | MIT | |
| Test Writing WorkflowiOfficeAI/AionUi | 33k | 1 repos | ~1.2k | Automated safety check: Pass | Apache-2.0 | |
| OpenROAD Module Test AdderThe-OpenROAD-Project/OpenROAD | 3.2k | — | ~1.8k | Automated safety check: Pass | BSD-3-Clause | |
| Write Testsgrafana/synthetic-monitoring-app | 171 | — | ~1.2k | Automated safety check: Pass | AGPL-3.0 | |
| Benchflow Experiment Reviewbenchflow-ai/benchflow | 353 | — | ~4k | Automated safety check: Pass | Apache-2.0 | |
| NIC Testing Patternsnginx/kubernetes-ingress | 5.1k | — | ~2.8k | Automated safety check: Pass | Apache-2.0 |
iOfficeAI/AionUi
Sets the test-writing workflow for the repository: risk-first scenario lists, behavior-focused Vitest tests, a full run before each commit and a coverage target.
The-OpenROAD-Project/OpenROAD
Adds integration or unit tests to an OpenROAD module: writes the Tcl test, generates golden files and registers it in both CMake and Bazel.
grafana/synthetic-monitoring-app
Write Jest integration and unit tests for the Grafana Synthetic Monitoring app using React Testing Library, MSW, and src/test helpers.
benchflow-ai/benchflow
Review Benchflow or SkillsBench task-run trajectories and integration-test Benchflow code changes.
nginx/kubernetes-ingress
Testing conventions for the NGINX Ingress Controller repo: Go table-driven tests, mandatory snapshot regeneration, Helm tests and Python pytest integration tests.
biersoeckli/QuickStack
Create and review QuickStack backend unit and integration tests using the project's Vitest, Prisma, SQLite, and k3s conventions.
tracewayapp/traceway
Analyze and instrument repositories for Traceway observability.
Works with
Categories
Run a live-instance verification of traceway-cli that goes beyond the Go smoke suite — exercises real-data detail endpoints, TTY-default rendering, adaptive metric-name discovery, and emits a…. Integration Test is an agent skill from tracewayapp/traceway. Run a live-instance verification of traceway-cli that goes beyond the Go smoke suite — exercises real-data detail endpoints, TTY-default rendering, adaptive metric-name discovery, and emits a human-readable coverage report.
Integration Test fits situations like: explicitly asks (e.g; tasks that involve Integration testing; tasks that involve Test coverage.
Run `npx skills add tracewayapp/traceway --skill integration-test -a claude-code`. Or copy the skill folder (cli/.claude/skills/integration-test in tracewayapp/traceway) into .claude/skills/integration-test in your project. Claude Code loads it when a task matches its description.
Run `npx skills add tracewayapp/traceway --skill integration-test -a codex`. Or copy the skill folder (cli/.claude/skills/integration-test in tracewayapp/traceway) into .agents/skills/integration-test in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add tracewayapp/traceway --skill integration-test -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/integration-test, .gemini/skills/integration-test, .github/skills/integration-test and .opencode/skills/integration-test in your project.
Going by SKILL.md and its folder, Integration Test needs the command-line tools its instructions call (jq, just and nix).
SKILL.md contains no URLs. Any network use would come from the scripts or tools the agent runs. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.
Integration Test is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 2.4k tokens (SKILL.md is roughly 9.5k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.
Skills that share tags, products or a category with Integration Test: Test Writing Workflow (iOfficeAI/AionUi, 33k stars), OpenROAD Module Test Adder (The-OpenROAD-Project/OpenROAD, 3.2k stars), Write Tests (grafana/synthetic-monitoring-app, 171 stars) and Benchflow Experiment Review (benchflow-ai/benchflow, 353 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
tracewayapp (a GitHub organization) maintains it in tracewayapp/traceway, which has 1,600 GitHub stars. The repository holds 2 skills in this directory. The repository was last updated on October 5, 2026.
Source: tracewayapp/traceway on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.