Adept writing tests
Skill itaywol/adeptability/.adeptability/staging/.claude/skills/adept-writing-tests
Cross-harness AI skill portability CLI. Author an agent skill once, sync it into Claude Code, Cursor, Copilot, Codex, OpenCode & 45+ AI coding agents. Safety scanner, content-hash drift detection. A package manager / dotfiles for AI coding agent skills.
npx -y skills add itaywol/adeptability --skill adept-writing-testsAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
One thing to look at
- 8 stars8 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
What its author says it does
Copied from the file, not written here
How to write tests in the adept Go codebase — table-driven tests with testify, golden fixtures under testdata/, the cmd/adept e2e harness, temp-dir/HOME isolation, and coverage gates. Apply when adding or changing Go tests here. (matches: **/*_test.go)
SKILL.md
2.3 KB, as published. Nobody here has run it
Writing tests for adept
Defaults
- Table-driven tests with
github.com/stretchr/testify/require. Onet.Run(tc.name, …)per case; name cases for the behavior they pin. - Put unit tests in the same package (
package foo) for white-box access; usepackage foo_testwhen you want to assert only the public surface. - Use
t.TempDir()for any filesystem work — never write into the repo or a shared path. - No network in unit tests. Use
net/http/httptestfor HTTP clients, and the package's interfaces + fakes forgit, the registry, and the LLM provider (see howDepsis wired).
Golden fixtures
Renderers are pinned by golden files in each internal/render/<id>/testdata/. When you
change rendered output on purpose:
- Update the fixture in the same PR.
- Explain why in the commit message.
Never loosen an assertion to make a diff pass — fix the code or update the golden deliberately.
End-to-end tests
cmd/adept/*_test.go build the real binary and drive commands against temp dirs with an
isolated environment:
env := []string{
"PATH=" + os.Getenv("PATH"),
"HOME=" + t.TempDir(), // isolate user config
"ADEPT_LIBRARY=" + libRoot, // isolate the library
}
Guard the slow ones so go test -short skips them:
if testing.Short() { t.Skip("skipping e2e under -short") }
Assert on observable behavior — exit codes, files on disk, stdout/JSON — not internals.
Exit codes: 0 clean · 1 error · 2 drift/dirty or merge conflict.
Run them
go test ./... # fast
go test -race ./... # CI gate
go test -run E2E ./cmd/adept # e2e only
go test -cover ./... # per-package coverage
Coverage gates
Keep ≥80% on internal/render, internal/status, internal/budget, internal/locks, and
internal/canonical. Prefer tests that would actually catch a regression (error paths, edge
cases, round-trips) over coverage-padding happy-path calls.