Testing Strategy logo

Testing Strategy

Community
AnastasiyaW
testing-strategy

Use when planning or reviewing tests for a code change, choosing between unit, focused regression, integration, contract, end-to-end, performance, security, property-based, or agent-evaluation checks; classify change risk first and select the smallest evidence set that proves the behavior. Do not use for a single obvious test command, pure documentation changes, or a full security audit without a testing question.

Overview

PublisherAnastasiyaW
Repositorycodex-claude-code-config
Skill nametesting-strategy
Stars
212
Forks
32
Bundled files
Instructions only
LicenseMIT
Links
  • Markdown instructions

    A SKILL.md file the model loads on demand, so it only costs tokens when a request actually matches.

  • Works with any LLM

    AI skills are plain Markdown, not provider-specific code, so this works with GPT, Claude, Gemini, Grok, or a local model.

  • Self-contained

    Everything the model needs lives in the instructions — no extra files to sync.

  • Open source

    Published by AnastasiyaW on GitHub. Read the source before you install it.

Installation

Install the Testing Strategy AI skill in TypingMind to use it with any LLM, or drop it into another agent that reads SKILL.md.

1

Install in TypingMind

TypingMind installs a skill straight from its GitHub folder — it reads SKILL.md, bundles the resource files, and stores the result locally.

  1. Open the app and go to Plugins → Skills.
  2. Choose "Install from GitHub".
  3. Paste the skill folder URL below and confirm.
    https://github.com/AnastasiyaW/codex-claude-code-config/tree/main/skills/development/testing-strategy
  4. Enable the skill in any chat where you want it available.
Plugins → Skills → Add skill → From GitHub URL, then paste the folder URL and press Continue.
2

Install in another agent

Any agent that reads the Agent Skills format can use this skill — copy the folder into that agent's skills directory.

Claude Code — .claude/skills
git clone --depth 1 https://github.com/AnastasiyaW/codex-claude-code-config.git /tmp/codex-claude-code-config
mkdir -p .claude/skills
cp -r /tmp/codex-claude-code-config/skills/development/testing-strategy .claude/skills/testing-strategy
Restart Claude Code after copying so it picks up the new skill.

Use it in TypingMind

Enable Testing Strategy in any TypingMind chat and the model takes it from there. Its name and description sit in the system prompt, and the moment a request matches, the model loads the full instructions itself — you never invoke it by hand, and it costs no tokens until it is actually used.

The model loads Testing Strategy on its own as soon as a request matches it.

Works with any AI model

AI skills are plain Markdown instructions rather than provider-specific code, so Testing Strategy is not tied to the model it was written for. Install it once in TypingMind and use it with GPT-5, Claude, Gemini, Grok, DeepSeek, Mistral, Llama, or a local model you run yourself — all on your own API keys.

  • Loaded only when it is needed

    The system prompt carries just the name and description. The instructions are fetched on the first matching request, so an idle skill costs nothing.

  • Switch models mid-chat

    Because the skill is instructions rather than code, changing model does not break it — the next model reads the same SKILL.md.

Skill instructions

This is the SKILL.md content the model loads. Read it before installing — a skill is instructions your model will follow.

Testing Strategy

Testing is an evidence-selection problem, not a contest to run the largest suite. Choose the smallest set that can falsify the changed behavior, then add one higher-level check only when it covers a boundary the lower level cannot. Keep execution environments reusable, but separate their evidence profiles: staging-smoke, security-proof, release-attestation, and nightly-stress. Use harness-feedback when a gate is reported as overloaded or misplaced.

Workflow

  1. Freeze the acceptance criteria as observable outcomes.
  2. Inspect the changed files and classify the risk.
  3. Select the lowest useful test level from the matrix below and name the profile.
  4. Run the fast gate first. If it fails, fix the cause before adding more tests.
  5. Add a focused regression test for a confirmed bug or a changed invariant.
  6. Test real boundaries only when the change crosses them.
  7. Keep security-proof and release-attestation checks out of staging-smoke unless the acceptance criteria explicitly require that evidence.
  8. For high-risk or long-horizon work, use a fresh-context verifier and store the command, revision, result, and skipped checks in a durable artifact.
  9. When a verified stage becomes the input to another stage, seal that boundary with commit/tree, contract, input/output digests, and a fresh verdict. Mark an unavailable external prerequisite as BLOCKED; do not rerun unrelated accepted code merely because the following environment is unavailable.

Compact Matrix

ChangeRequired evidenceUsually deferred
Docs, comments, formatting onlyLink/lint check when relevantRuntime suite
Pure function, local refactorFast checks + focused unit/regression testsFull E2E, mutation
Parser, serializer, file, DB, API adapterFast + focused + one real boundary/integration checkBrowser E2E unless user flow changes
Auth, permissions, migrations, concurrency, public API, deploymentFast + focused + integration/contract + targeted smoke; independent review for non-trivial changesFull load test unless performance is in scope
UI or user journeyFast + component/focused checks + one stable E2E smokeLarge browser matrix
Release or performance claimAll applicable lower levels + fixed benchmark/security/release evidenceNothing that is part of the claim

The Stop hook runs the project's fast/default suite only when the working tree contains code or test changes. Projects with a complex suite may declare .claude/test-policy.json:

json
{
  "fast": ["python", "-m", "pytest", "-q", "tests/unit"],
  "integration": ["python", "-m", "pytest", "-q", "tests/integration"],
  "release": ["python", "-m", "pytest", "-q"]
}

fast is the automatic Stop gate. integration is additionally selected for high-risk changes when present. release is explicit or CI-only; do not make every edit pay the release-suite cost. Optional profiles make the separation explicit; a staging profile must not contain release-signing requirements.

Test Kinds

  • Unit: isolated behavior and invariants; fast and numerous.
  • Focused regression: a minimal test that was red before a fix and green after it. Keep it when it protects a real contract.
  • Integration: one real boundary such as a database, filesystem, queue, or external adapter. Use a local/test dependency, never production.
  • Contract: provider/consumer schema and serialization expectations.
  • Smoke/E2E: a small number of real user or release paths; keep them stable.
  • Property/fuzz: invariants over generated inputs; use for parsers, normalizers, state machines, and edge-heavy algorithms.
  • Performance/security: only when the change or release claim needs it; preserve a fixed workload and baseline.
  • Agent eval: test task completion, tool selection, recovery, and safety on a versioned golden set. Deterministic assertions come first; an LLM judge is an additional signal, never the sole proof of code correctness.

Agent Evidence Contract

An agent must report: revision, changed scope, commands actually run, exit status, relevant counts, environment constraints, and checks not run with a reason. “Tests passed” without command output or a durable evidence file is not proof. A generated test is a candidate until it reproduces the failure or asserts a stable contract; do not add broad snapshot tests merely to inflate coverage.

For a confirmed bug use bug-reproducer: reproduce first, then fix, then run the same test again. For a large/high-risk change use proof-verify: a fresh context must produce the final verdict. For a safe structural refactor use refactoring-safely and characterization tests before the transformation.

Anti-Duplication Rules

  • If a higher-level test finds a failure with no lower-level failure, add the smallest lower-level reproducer and keep the higher-level test only if it proves a distinct boundary.
  • Do not run unit, integration, E2E, benchmark, and security suites by default just because they exist. Route by changed boundary and risk.
  • Do not use retries, sleeps, snapshots, or skip/xfail to make red tests look green. A flaky test needs a cause, a bounded quarantine reason, or a fix.
  • Do not claim release readiness from a fast suite alone.
  • Do not treat a new external blocker as a failed upstream candidate. Verify the stage that changed; promote the same sealed input when the prerequisite arrives.

Gotchas

  • A green test suite proves only the exercised behavior; it does not prove absence of defects.
  • Mocks can hide serialization and wiring failures. Keep one real boundary test for each important adapter.
  • End-to-end tests are valuable but expensive and flaky; they should protect journeys, not duplicate every branch already tested below.
  • Mutation testing is a periodic test-quality audit, not a per-edit gate. On Windows, verify the tool's runtime requirements before adding it to CI.
  • Agent trajectories need task-outcome checks and tool-call checks, not only final-text similarity.
  • A VM harness is an execution environment, not a release profile. Reuse the VM for staging and security checks, but attach signing and artifact identity checks only to release-attestation.

Troubleshooting

SymptomLikely causeAction
Stop gate runs in a docs-only changeProject has no Git-visible status or a broad overrideCheck git status; keep the default command scoped in .claude/test-policy.json
Fast suite passes, integration failsA real boundary was changed or mocked awayAdd/fix the boundary test; do not weaken the fast gate
E2E is flakyTiming, shared state, browser/environment dependencyMake state isolated and waits explicit; reduce E2E to a stable smoke
Generated test passes without exposing the bugTest asserts implementation details or never goes redReproduce the pre-fix failure and assert the user-visible invariant
Agent claims completion with skipped checksMissing evidence contract or verifierRecord the skip reason and run proof-verify for high-risk work
Agent says the harness is too strict or blocks smokeProfiles are coupled or a gate is misplacedInvoke harness-feedback; capture the blocker, split profiles, and rerun the reduced smoke
A later audit asks to repeat a green earlier stageProof identity was not recorded, or its source/input changedCheck the stage receipt; reuse a sealed matching receipt or record a superseding stage

Frequently asked questions

What does the Testing Strategy AI skill do?

Use when planning or reviewing tests for a code change, choosing between unit, focused regression, integration, contract, end-to-end, performance, security, property-based, or agent-evaluation checks; classify change risk first and select the smallest evidence set that proves the behavior. Do not use for a single obvious test command, pure documentation changes, or a full security audit without a testing question.

Why use Testing Strategy on TypingMind?

Because you install it once and use it with any model. Testing Strategy is plain Markdown rather than provider-specific code, so the same skill runs on GPT-5, Claude, Gemini, Grok, or a local model — and you can switch model mid-chat without it breaking. TypingMind runs on your own API keys, so you pay providers directly instead of a per-seat subscription, and your skills and chats stay in your own storage.

How do I install Testing Strategy in TypingMind?

Open Plugins → Skills → Install from GitHub in TypingMind and paste https://github.com/AnastasiyaW/codex-claude-code-config/tree/main/skills/development/testing-strategy. TypingMind reads its SKILL.md and installs it as a skill you can enable per chat.

Which AI models can use Testing Strategy?

Any model you connect in TypingMind. AI skills are plain Markdown instructions rather than provider-specific code, so GPT, Claude, Gemini, Grok, and local models can all load this skill when a request matches it.

How many AI models can I use with Testing Strategy?

As many as you like. As long as a model supports skills, you can use Testing Strategy with it — GPT, Claude, Gemini, Grok, DeepSeek, Mistral, Llama and more — all on TypingMind with your own API keys.

Is the Testing Strategy AI skill free?

Yes. It is published on GitHub by AnastasiyaW under the MIT license. You only pay your own AI provider for the tokens you use.

What are AI skills?

An AI skill is a reusable instruction bundle that teaches an AI model how to do one specific task. It follows the open Agent Skills format: a SKILL.md file with a name and description, plus any scripts, templates or reference files the model may need. The model reads the instructions only when your request matches the skill, so an installed skill costs nothing until it is used.

How are AI skills different from plugins or MCP servers?

A plugin or MCP server gives a model new tools to call — code that runs somewhere and returns a result. An AI skill gives the model knowledge and process instead: how to approach a task, which steps to follow, what good output looks like. Skills are plain Markdown, so they need no server, no API key and no runtime, and they work with any model.

View all

Set up your own AI workspace now

Get notified about new features and future giveaways by subscribing to our newsletter 👇