Test Guard

Granskar AI-skrivna tester mot nio regler: mock-gränser, inga duplicerade eller tomma tester

av amElnagdy · amElnagdy/guard-skills

Testad · Fungerar ★ 9.2/10

Test Guard — Granskar AI-skrivna tester mot nio regler: mock-gränser, inga duplicerade eller tomma tester

Vad den gör

Test Guard är en granskningspass för testkod som en agent just skrivit eller ändrat, och tillämpar nio regler: mocka endast vid systemgränser, mocka aldrig dataclasses eller tillståndsobjekt, parametrisera nästan-duplicerade tester, radera tester som inte fångar något, namnge tester för scenariot, och behåll produktionsregressionstester. Den laddar en stack-specifik referens för pytest, Jest/Vitest, PHPUnit/Pest, eller LLM-applikationer, och rapporterar sedan överträdelser som regelnummer plus plats, orsak och fix. Utlöses vid förfrågningar om att skriva, lägga till eller granska tester, och på diffar som berör test_*.py, *Test.php, *.test.ts, *_test.go, eller filer under tests/ och __tests__/.

Testrapport

Klonade repot till en temporär HOME och bekräftade att kopian hamnar SKILL.md på ~/.claude/skills/test-guard/SKILL.md; frontmatter parsas med name+description (815 tecken), och alla fyra filer som kroppen länkar (references/pytest.md, jest.md, phpunit.md, llm-app-testing.md) returnerade HTTP 200; ingen curl|sh, base64, eller text som rör autentiseringsuppgifter någonstans. Uppgift: Jag skrev en 30-radig Python-prismodul plus en medvetet AI-smaksatt 9-test pytest-fil (MagicMock som ersättning för Cart dataclass, @patch på den privata _tax_rate, assert_called_once på log.info), producerade sedan en baslinjegranskning utan färdighet och en andra granskning enligt SKILL.md och references/pytest.md. Baslinjen fångade parametriseringsduplikationen, svag namngivning och saknade aritmetiska påståenden, men märkte aldrig den mockade dataclassen och kallade test_cart_dataclass_sets_attributes "lågt värde men ofarligt; att behålla det kostar inget"; färdighetsgranskningen flaggade samma test som en Regel 4-radering, flaggade MagicMock Cart som Regel 8 över tre tester, och skar ner 9 tester till 4 med ett "do not merge"-utlåtande och en omskriven svit vars förväntade totaler (119.00 DE, 107.10 med en 10% kod) jag verifierade genom att köra modulen. Utlösningsfraser — ska utlösas: "Jag skrev just tester för betalningsmodulen, granska dem innan jag committar", "Lägg till enhetstester för src/parser.ts som täcker den felaktigt formaterade indata-sökvägen", "Här är en PR-diff som berör tests/test_orders.py, är något fel med dessa tester?"; ska inte utlösas: "Min pytest-svit misslyckas med ett fixture ScopeMismatch-fel, hjälp mig att felsöka det", "Granska denna refaktorering av OrderService-klassen" — 5/5 korrekt, beskrivningens explicita DO NOT USE-klausul dirigerar båda negativen bort rent.

Testad: 2026-07-21 · Claude Code 2.x (agent harness)

Installation

git clone --depth 1 https://github.com/amElnagdy/guard-skills.git /tmp/test-guard-src
mkdir -p ~/.claude/skills
cp -R /tmp/test-guard-src/skills/test-guard ~/.claude/skills/test-guard
# No dependencies, no API keys, no scripts — SKILL.md plus 4 markdown references.
# The repo also ships clean-code-guard, docs-guard, wp-guard, woo-guard in /tmp/test-guard-src/skills/.
# CLI alternative (installs a copy, same result): npx skills add amElnagdy/guard-skills --skill test-guard
# Usage: after your agent writes tests, say "Use test-guard on the tests you just wrote."

Kommandon och exempelprompter

  • /test-guardGranskar AI-skrivna tester mot nio regler: mock-gränser, inga duplicerade eller tomma tester

Skills triggas av vanliga förfrågningar — inga kommandon att memorera. Efter installationen aktiverar prompter som dessa skillen (på engelska):

  • Review these tests before I commit them
  • Write tests for this new function
  • Check this test file for common testing mistakes