agentleFS
HetCreepHetCreep/CoalMine/skills/testability-canary/SKILL.md

testability-canary

Skill15 starsChanged 6 days agoApache-2.0View on GitHub

Testability and design decoupling canary — checks for tight coupling, lack of Dependency Injection (DI), hardcoded constructors, Single Responsibility Principle (SRP) violations, and mockability gaps. Triggers on keywords: "/testability-canary", "testability-canary", "testability audit", "decoupling". Use when refactoring coupling, introducing DI, or making code unit-testable.

  • Reads credentials

1 other project uses a version of this.

Adopted by

Most recently taken up by

  • Other versions1 project uses a version of this.

    Word for word · 1

    1. TheColliery/CoalMine★ 15100% same

    Edited · 0

    None found.

    Wrote their own version · 0

    None found.

    How matches are found. Word for word: the exact same text. Edited: shares passages with this file (“99% same” means 99% of its five-word phrases also appear here; 10% or more counts). Their own version: similar meaning, or, weakest, the same name. We can’t tell which project had it first. Projects are counted among the 200 most-starred candidates, and mentions are links to the repository we found, up to 50 per site, so both counts are a floor.

  • In this repository8 other files it gives its agents.

The file

Files
SKILL.md

Testability Canary (Decoupling & Mockability Audit)

<!-- SHARED:LANGUAGE_HEADER -->

Audit code to ensure it is decoupled, modular, and easy to cover with automated tests.

Auditing Categories

  1. Hardcoded Constructors — instantiating deps inside classes (new DatabaseClient()) instead of injecting via constructor/factory (prevents mocking).
  2. SRP Violations — a class or method doing too many distinct duties (e.g. a service that also parses JSON and formats UI).
  3. Static Dependencies — reliance on global static methods or Singletons that make test isolation impossible.
  4. Time & Environment Coupling — direct DateTime.Now, fs, or process.env calls without an abstraction layer (fragile time/path-sensitive tests).
  5. Private Logic Gaps — complex business logic hidden in private methods that can't be tested directly (extract to testable helpers).

Per-stack patterns and the mock-strategy vocabulary: read references/checks.md before scanning.

Fix mode (choice-gated)

In Agent Context, after the report, present via ask_question:

  • Apply safe refactoring: extract hardcoded initializations into constructor params (DI) + add interface definitions. Each fix: checkpoint (copy the touched file(s) aside, or use an isolated worktree — never git stash/git commit, which can hide or include unrelated staged/unstaged user work) → record a build+test BASELINE → apply → build + tests → auto-revert only if a NEW failure appeared versus the baseline.
  • Let me pick: user selects specific refactoring moves.
  • Report only: exit unchanged.

Grants & denials (CLASSIFY-BLOCK)

classstep it powersgranton denial
readscan coupling/DI surfaces for the categories aboveRead·Grep·Globrefuse that file, name it — never a clean bill
writeFix mode's safe-refactor apply, incl. checkpoint → baseline → build+tests → auto-revert only on a NEW failureEdit·Bash (checkpoint/build/revert need exec)report the fix as NOT applied AND the checkpoint/revert as NOT available, never claim done
<!-- SHARED:CLASSIFY_BLOCK -->

Output

| file:line | coupling point | severity | finding | mock strategy |

Severity: CRITICAL (un-mockable external write/network call) · HIGH (SRP violation blocking unit testing) · MEDIUM (time/env coupling) · LOW (minor static dependency)

<!-- SHARED:REPORTING_FOOTER --><!-- SHARED:ORCHESTRATION --><!-- SHARED:ESCALATION_FOOTER -->

Download now (ZIP)

Does it work?

Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.

No reviews yet

People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.

  • It worked
  • Partly
  • It didn't
What did you use it for? e.g. Reviewing pull requests in a Rails app

Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.

Your trail

Files you open will collect here, so you can find them again.

Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.

Now do this for your own.

Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.