Agent skill

Test Writer

by hex in hex/claude-council

The task is to add or extend tests for existing behaviour that has a spec, a documented contract, or a confirmed expected output.

MITAuto-check passed

Install Test Writer

skills CLI
$ npx skills add hex/claude-council --skill test-writer -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install hex/claude-council test-writer --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/hex/claude-council.git skills-src && mkdir -p .claude/skills && cp -r skills-src/mods/council-pane/specialists/test-writer .claude/skills/test-writer && rm -rf skills-src

Use ~/.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/

Facts

Skill name
test-writer
GitHub stars
848
Token cost
~1.1k tokens
SKILL.md length
712 words
Files
1
Skills in repo
10
Repo updated
First seen
Licence
MIT

At a glance

The task is to add or extend tests for existing behaviour that has a spec, a documented contract, or a confirmed expected output.

  • Works in 4 steps: What observable behaviour, invariant or… → What credible regression would make it… → Why does existing coverage not catch… → …
  • SKILL.md covers Authoring gate, Where expected values come from, Reject these patterns and Prefer real boundaries, plus 4 more sections
  • Instructions only: no scripts, shell commands, URLs or credentials in SKILL.md

What it does

Test Writer is an agent skill from hex/claude-council. The task is to add or extend tests for existing behaviour that has a spec, a documented contract, or a confirmed expected output.

Its SKILL.md is about 1.1k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.

The repository describes itself as: Claude Code plugin that asks several AI coding agents the same question and shows their answers side by side. Gemini, OpenAI, Grok, Perplexity, Kimi and any model OpenRouter… The licence is MIT.

Example prompts

  • “/test-writer”

Workflow steps

4 steps, taken from the first numbered list in SKILL.md.

  1. What observable behaviour, invariant or contract does it protect?
  2. What credible regression would make it fail? Name the plausible bug.
  3. Why does existing coverage not catch that already? Each contract should
  4. Does it need a production seam that no production caller needs, such as an

What it can do on your machine

Read from SKILL.md and the folder at commit 23867e1. It shows what the files ask for, not the result of running them.

  • Tool permissions

    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.

  • Runs code

    No scripts in the folder and no shell commands in SKILL.md.

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    No URLs in SKILL.md.

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

Test Writer loads about 1.1k tokens when it runs. Until then it costs about 35 tokens; SKILL.md has 712 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~35
When it runs · the whole SKILL.md, loaded when a task matches
~1.1k

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.

Safety

Auto-check passed

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.

SKILL.md

The full file from hex/claude-council at commit 23867e1, republished under its MIT licence (© hex). 712 words, ~1,133 tokens.

Download SKILL.mdSave it as .claude/skills/test-writer/SKILL.md (or your agent's skills folder).
name
test-writer
description
The task is to add or extend tests for existing behaviour that has a spec, a documented contract, or a confirmed expected output.

Test Writer

Add tests that protect behaviour a user or caller relies on. Every test must be able to fail for a real regression, and every expected value must come from somewhere other than the code under test.

Authoring gate

Before writing any test, answer these four questions in your notes. If one has no answer, do not write that test; list it in the report instead.

  1. What observable behaviour, invariant or contract does it protect? Observable means a caller can see it: a return value, output, file, HTTP response, error message, state change.
  2. What credible regression would make it fail? Name the plausible bug.
  3. Why does existing coverage not catch that already? Each contract should have one primary test at the strongest boundary that owns it. Another layer needs a distinct risk that the owner cannot reach. Prefer adding a case to an existing table or fixture over a near-duplicate test.
  4. Does it need a production seam that no production caller needs, such as an extra export, a flag or an injection hook? If yes, test at the real boundary instead.

Where expected values come from

In order of preference:

  • the spec, API docs, RFC or file-format definition;
  • a worked example in the docs or the task;
  • a known-good literal confirmed by the task author;
  • a real recorded output that a human has confirmed is correct.

Never compute the expected value with the function under test, a helper it uses, or the same algorithm restated. expect(add(a, b)).toBe(a + b) proves nothing. If the only source for a value is the current code, say so in the report and do not assert it as correct.

Reject these patterns

  • tests with no assertion, or assertions that cannot fail;
  • a value compared with itself or with a copy made by the code under test;
  • copied fixtures, inventories or export lists that just mirror the source;
  • asserting source text, import paths or private function names;
  • private helper tests that duplicate a test at the public boundary;
  • the same contract invoked twice in different files;
  • mocks that implement the behaviour being asserted;
  • negative tests that pass for an unrelated reason, such as a different validation rejecting the input first;
  • names that promise more than the test checks.

A test that would break under a behaviour-preserving refactor is asserting implementation, not behaviour. Rewrite it at the owning boundary.

Show full SKILL.md (316 more words)Show less

Prefer real boundaries

  • Test through the public interface the caller uses: CLI, HTTP handler, library entry point, file reader.
  • Use real dependencies where they are cheap and deterministic, such as a temp directory, in-memory database or local server. Fake only what is slow, paid or non-deterministic, and never fake the thing being tested.
  • Follow the repository's existing test layout, helpers, naming and runner. Do not add a new test framework.

Write and check each test

For each test, one at a time:

  1. Write it.
  2. Run it and see it pass.
  3. Prove it can fail. Temporarily break the behaviour it protects, for example by returning a wrong value or removing a branch, and confirm the test fails with a message that points at the problem. Then restore the code exactly. A test you have never seen fail proves nothing.
  4. If the test fails on the unmodified code, you may have found a bug. Do not change the expected value to match the code. Record the input, expected and actual, and the source of the expected value, and report it.

Change production code only when a test cannot be written otherwise, and explain why in the report.

Evidence to record

  • For each test: the four gate answers, the source of each expected value, and the mutation you used to see it fail.
  • The test command and its full result.
  • Tests considered and rejected, and which gate question failed.

Stop conditions

Stop and report when the expected behaviour has no independent source, when the test would need a production seam, or when the code appears to contradict its own spec.

Handoff

Report the tests added or extended, with the contract each protects; the proof that each can fail; suspected bugs found; rejected candidates; and any production change with its reason.

Authoring gate and junk patterns adapted from openclaw's test-audit skill (MIT, OpenClaw Foundation); see ../LICENSE-openclaw.

© hex, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

Just SKILL.md in mods/council-pane/specialists/test-writer of hex/claude-council.

Open the folder on GitHubat commit 23867e1

Compare with similar skills

Test Writer 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.

Test Writer compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Test Writer this skillhex/claude-council848—~1.1kAutomated safety check: PassMIT
Writerjeremylongshore/tons-of-skills-marketplace2.8k—~2.1kAutomated safety check: PassMIT
Skill Writersickn33/agentic-awesome-skills47k2 repos~1.3kAutomated safety check: PassMIT
PR Writersickn33/agentic-awesome-skills47k2 repos~1.4kAutomated safety check: PassMIT
Social Post Writer SEOsickn33/agentic-awesome-skills47k1 repos~1.3kAutomated safety check: PassMIT
Documentation Writergithub/awesome-copilot40k7 repos~686Automated safety check: PassMIT

Similar skills

  • Writer

    jeremylongshore/tons-of-skills-marketplace

    Professional writing assistant for PM documents. An agent skill from jeremylongshore/tons-of-skills-marketplace.

    2.8k GitHub stars~2.1k tokensUpdated today
    Auto-check passed
  • Skill Writer

    sickn33/agentic-awesome-skills

    Create and improve agent skills following the Agent Skills specification.

    47k GitHub starsUsed in 2 repos~1.3k tokens
    Auto-check passed
  • PR Writer

    sickn33/agentic-awesome-skills

    Create pull requests following Sentry's engineering practices.

    47k GitHub starsUsed in 2 repos~1.4k tokens
    DevelopmentAuto-check passed
  • Social Post Writer SEO

    sickn33/agentic-awesome-skills

    Social Media Strategist and Content Writer. An agent skill from sickn33/agentic-awesome-skills.

    47k GitHub starsUsed in 1 repo~1.3k tokens
    Writing & ContentAuto-check passed
  • Documentation Writer

    github/awesome-copilot

    Official

    Diátaxis Documentation Expert. An agent skill from github/awesome-copilot.

    40k GitHub starsUsed in 7 repos~686 tokens
    Writing & ContentAuto-check passed
  • Official

    Design, extend, review, or debug PostHog Hobby end-to-end smoke tests in bin/hobby-ci.py and .github/workflows/ci-hobby.yml.

    40k GitHub stars~1.5k tokensUpdated today
    Testing & QAAuto-check passed

More from hex/claude-council

All 10 skills in this repo
  • Local Council Execution

    hex/claude-council

    Runs a local council when no external AI providers are configured.

    848 GitHub stars~1.6k tokensUpdated yesterday
    Auto-check passed
  • Council Execution

    hex/claude-council

    Executes council queries by running the query pipeline across selected AI providers (Gemini, OpenAI, Grok, Perplexity), displaying formatted responses verbatim, and generating a synthesis of…

    848 GitHub stars~824 tokensUpdated yesterday
    Auto-check passed
  • Deep Execution

    hex/claude-council

    Executes agent-enhanced council queries as one Workflow of parallel Claude analyst agents that each query a provider, evaluate response quality, ask follow-up questions, and return a schema-enforced…

    848 GitHub stars~2.5k tokensUpdated yesterday
    Auto-check passed
  • Provider Integration

    hex/claude-council

    Adds new AI providers to claude-council, configures provider API settings, troubleshoots provider connections, and documents the provider script interface.

    848 GitHub stars~635 tokensUpdated yesterday
    Auto-check passed
  • Bug Fixer

    hex/claude-council

    A bug reproduces, the expected behaviour is clear, and the fix stands apart from the current work.

    848 GitHub stars~991 tokensUpdated yesterday
    Auto-check passed
  • CI Fixer

    hex/claude-council

    A CI job fails on a named revision and the fix belongs in code, config or tests, not in the CI provider.

    848 GitHub stars~941 tokensUpdated yesterday
    Auto-check passed

Questions about Test Writer

What does Test Writer do?

The task is to add or extend tests for existing behaviour that has a spec, a documented contract, or a confirmed expected output. Test Writer is an agent skill from hex/claude-council. The task is to add or extend tests for existing behaviour that has a spec, a documented contract, or a confirmed expected output.

How do I install Test Writer in Claude Code?

Run `npx skills add hex/claude-council --skill test-writer -a claude-code`. Or copy the skill folder (mods/council-pane/specialists/test-writer in hex/claude-council) into .claude/skills/test-writer in your project. Claude Code loads it when a task matches its description.

How do I install Test Writer in Codex?

Run `npx skills add hex/claude-council --skill test-writer -a codex`. Or copy the skill folder (mods/council-pane/specialists/test-writer in hex/claude-council) into .agents/skills/test-writer in your project. Codex loads it when a task matches its description.

Can I use Test Writer in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add hex/claude-council --skill test-writer -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/test-writer, .gemini/skills/test-writer, .github/skills/test-writer and .opencode/skills/test-writer in your project.

What does Test Writer need to run?

SKILL.md names no scripts, command-line tools or credentials: Test Writer is instructions for the agent only.

Does Test Writer access the network?

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.

Is Test Writer safe to install?

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.

What licence does Test Writer use?

Test Writer is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Test Writer use?

About 1.1k tokens (SKILL.md is roughly 4.5k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.

What are the alternatives to Test Writer?

Skills that share tags, products or a category with Test Writer: Writer (jeremylongshore/tons-of-skills-marketplace, 2.8k stars), Skill Writer (sickn33/agentic-awesome-skills, 47k stars), PR Writer (sickn33/agentic-awesome-skills, 47k stars) and Social Post Writer SEO (sickn33/agentic-awesome-skills, 47k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Test Writer?

hex (a GitHub user) maintains it in hex/claude-council, which has 848 GitHub stars. The repository holds 10 skills in this directory. The repository was last updated on October 6, 2026.

Source: hex/claude-council on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.