plugins/documenting-test-suites/skills/documenting-test-suites/SKILL.md
Writes the documentation a test suite needs to be usable by someone who did not build it: run instructions, environment setup, tag glossary, ownership, fixture and data notes, and architecture decision records. Use when onboarding someone into a suite, when "how do I run these" keeps being asked, when a test architecture decision needs recording, or when a suite is inherited with no documentation.
npx skillsauth add jaktestowac/awesome-copilot-for-testers documenting-test-suitesInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Use this skill when a test suite is understandable only to the person who wrote it.
Test documentation has one job: get a competent stranger from a fresh clone to a passing local run, and then let them change something without breaking a convention they could not have known about. Everything that does not serve that is decoration.
The discipline that keeps it useful is knowing what not to write. A document that restates what the code already says goes stale within a sprint and then actively misleads. Document what the reader cannot find by looking: the unwritten convention, the reason behind a choice, the gotcha no config file confesses.
package.json; the reason two of them exist belongs in the README.Different readers need different documents. Name them before writing:
| Reader | Needs | Document | | --- | --- | --- | | New joiner | Clone to green run | README quickstart | | Developer adding a test | Conventions, fixtures, where things go | README conventions plus the architecture record | | Someone debugging CI | Environment, secrets, artifacts, how to reproduce locally | README CI section | | Reviewer | Tag meanings, what is expected in a pull request | Tag glossary, contribution notes | | Future maintainer | Why the suite is like this | Architecture decision records |
A single document serving all five serves none. Split by reader, and link.
The highest-value section, and the one to validate hardest.
It contains, in order:
Point six is skipped almost always and it is what tells a stranger whether their run went right.
Validation gate for this phase: follow your own quickstart on a clean clone, in a fresh shell, with no environment variables set, and record every place you had to know something the document did not say. That list is the actual content of the section.
Only the ones a reader would otherwise get wrong.
Each entry answers a question a reviewer has asked more than once. If no one has ever asked, it probably does not need writing.
Tags are a control surface. When their meanings are undocumented, they decay into personal shorthand and CI filters start excluding things nobody intended.
./resources/tag-glossary-template.md gives one row per tag: what it means, who runs it, where it runs, and who may add it.
For each significant choice, write a short record using ./resources/test-adr-template.md:
Candidates worth a record: runner choice, page objects versus fixtures, mocking policy, parallelization strategy, environment strategy, why a suite was split, why a whole approach was abandoned.
The alternatives section is the load-bearing part. A record that lists only the chosen option gets overturned by the next person who thinks of an alternative, because nothing tells them it was already considered and rejected.
What someone needs when a run is red and they were not the one who broke it:
A short, honest section:
This is the section that stops the suite from being trusted for more than it does. It also feeds assessing-release-readiness directly.
Documentation rots. Before finishing, delete:
Then add a line saying when the document was last verified against a real run, and by whom.
./resources/test-readme-template.md - full README structure with a worked example and the validation gate./resources/test-adr-template.md - decision record format, worked examples, and the list of decisions worth recording./resources/tag-glossary-template.md - tag table, naming rules, and the CI filter mapping./resources/onboarding-path.md - a staged first-week path for someone joining the suite, with checkpointsdesigning-test-automation-architecture (planned) - when the structure being documented should be redesigned firstcreating-instructions - when a convention should be enforced by agent instructions rather than only written downanalyzing-quality-metrics - when metric definitions need a permanent home the team can citeassessing-release-readiness - which consumes the coverage gaps section directlytesting-api-contracts - when spec gaps found during contract testing need writing uphandling-sensitive-test-data - when the data rules being documented involve personal dataThis skill is complete when:
testing
Tests the customization assets themselves - skills, prompts, custom agents, instructions - the way a product is tested: activation cases that check an asset fires when it should and stays quiet when it should not, output-contract cases, safety cases, collision cases between assets competing for the same trigger, a weighted rubric scored blind, and a baseline-versus-candidate gate before an edit ships. Use when a skill is edited and nobody knows whether behaviour changed, when two skills fight over the same request, when a description is being tuned for discoverability, when a collection has grown past manual spot-checking, or when the request mentions skill evals, prompt regression, or "does this skill actually work".
development
Shapes QA output for the person who has to act on it: result and blocker in the first two lines, one decision per report, findings ordered by what they cost, the long artifact in a file and the decisions in the message, and magnitude stated in units the reader can count. Use when a report is accurate but nobody acts on it, when a finding set is too long to read under time pressure, when the same findings must be retold for a developer, a release manager, and an on-call engineer, or when the request mentions "too long", "make this readable", "just tell me what to do", "so what", or "summarize this for stakeholders". Pairs with unslop-answers, which makes the same report honest.
testing
Verifies that the lines and branches a change actually touched are executed by tests, using LCOV or Cobertura diff coverage instead of whole-repo percentages, and escalates uncovered high-risk changes into a blocking finding. Use when a pull request needs a coverage gate that unrelated tests cannot satisfy, when total coverage looks healthy but the diff is untested, when wiring diff coverage into CI, or when someone claims a change is covered because the suite is green.
development
Cuts AI tells from test code: tests that pass without proving anything, tautological assertions, mock-only tests, hardcoded waits, coverage theater, vague names, swallowed errors, retries used as fixes. Use whenever test code is written, changed, or reviewed, including tests produced as a side effect of a feature task, and when the request mentions "review these tests", "are these tests any good", "this test always passes", "this suite is flaky", or "clean up these tests". Must always apply to test code.