drill
Skill0 starsChanged 37 days agoMITView on GitHub
Verify the closed test loop actually reacts by injecting one intentionally failing test, running each of the five loop tools, and recording the result. Use after init-loop and after any change to a loop tool.
7 other projects use a version of this.
Adopted by
Most recently taken up by
- protokol11/skillstheir own version, first seen Nov 8, 2026
- strikersam/autonomous-ai-agencytheir own version, first seen Nov 1, 2026
- protokol11/drilltheir own version, first seen Nov 1, 2026
- Fulcrum-Governance/Fulcrum-Boundarytheir own version, first seen Oct 15, 2026
- alexiocassanifm/anthropic-certificationstheir own version, first seen Aug 16, 2026
- deividas-butkus/claude-certified-architect_foundationstheir own version, first seen Aug 13, 2026
Other versions7 projects use a version of this.
Word for word · 0
None found.
Edited · 0
None found.
Wrote their own version · 7
- alexiocassanifm/anthropic-certifications★ 36same name
- strikersam/autonomous-ai-agency★ 11same name
- lgulliver/derrick★ 2same name
- protokol11/drill★ 2same name
- protokol11/skills★ 1same name
- deividas-butkus/claude-certified-architect_foundations★ 0same name
- Fulcrum-Governance/Fulcrum-Boundary★ 0same name
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 repository11 other files it gives its agents.
- drift-checkSkill
- drillSkill
- failure-classifySkill
- init-loopSkill
- report-renderSkill
- test-loop-bootstrapSkill
- drift-checkSkill
- failure-classifySkill
- init-loopSkill
- report-renderSkill
- test-loop-bootstrapSkill
The file
We split this skill into the rules it gives an agent
8 rules. 0 are common, 3 are distinctive, and 5 are very specific to this project.
0
Common
Most of the 7 edited versions we read keep these.
3
Distinctive
This author's own choices. Worth a look.
5
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Distinctive: line 22
After editing any of the five loop tools.
- Distinctive: line 23
After a refactor that touches CI, the pre-commit hook, or the report-render script.
- Distinctive: line 26
Do not use this skill to verify a real failure.
- Very specific: line 53
Run the report renderer: Verify the JSON summary has the failures_by_class field populated and the Markdown report has a Failures by class …
- Very specific: line 85
Run swift test. Expect red.
- Very specific: line 86
Run bash scripts/render_report.sh.
- Very specific: line 88
Run bash scripts/check_drift.sh.
- Very specific: line 91
Create Sources/<Target>/DrillUndocumentedFixture.swift, stage it, run the hook.
“Common” is measured: kept by at least 6 in 10 of the 7 edited versions of this file we could read. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
drill
Prove the loop is wired correctly by breaking it on purpose.
When to use
- Right after init-loop.
- After editing any of the five loop tools.
- After a refactor that touches CI, the pre-commit hook, or the report-render script.
Do not use this skill to verify a real failure. The drill is for verifying the loop, not for triaging a regression.
Inputs
| Name | Required | Default | Description |
target_path | yes | none | The project to drill. |
language | yes | none | One of swift, python, go, rust. Picks the injection template. |
expected_failures | no | 1 | The number of distinct failing tests to inject. One is the minimum needed to exercise the failure-classify step. Two or more tests whether the classifier deduplicates duplicate failure lines. |
drill_label | no | closed-loop-drill | A short label used in test names so the drill fixture can be located later if cleanup is interrupted. |
Output
| Path | Contents |
docs/knowledge/drill-YYYY-MM-DD.md | Evidence document: the commands that ran, the output captured, the verdict per step, and any defects found. |
docs/reports/<date>/ | Rendered test report from the injected failure (this is the "real" run the loop produces). |
| working tree | Briefly contains the drill fixture file. Cleaned up on success. |
Algorithm (eight steps)
- Inject a test fixture file containing the expected number of
failing tests. Use the language-specific template. Place the file
in the project's test directory under a name ending in
DrillTests. - Run the test runner. The expected outcome is the test suite fails with the same number of failures as injected.
- Run the report renderer. Verify the JSON summary has the
failures_by_classfield populated and the Markdown report has aFailures by classsection. - Run the drift check. It should report
drift: clean ✅— the drill fixture is in the test directory, not the source directory, and so should not introduce drift. If it does, that is a finding for the drill report. - Run the pre-commit hook in dry-run mode. The fixture is intentional and should be staged to test the hook. The hook is expected to allow the test file (it only inspects the source directory), and a subsequent drill injects an undocumented source file to verify the hook blocks.
- Run the pre-commit hook with a staged undocumented public symbol. The hook should exit non-zero and print a message pointing at the knowledge base.
- Clean up the injected fixtures and verify the working tree is empty.
- Write the drill evidence document.
Worked example (Swift)
In a Swift project with the loop already installed:
Create
Tests/<Target>Tests/ClosedLoopDrillTests.swift:@Test func drillAssertsWrongValue() { #expect(SessionDuration.thirtyMinutes.endDate(from: Date(timeIntervalSince1970: 0)) == Date(timeIntervalSince1970: 100)) }- Run
swift test. Expect red. - Run
bash scripts/render_report.sh. Expect the report to list the failing test underASSERTION_FAILURE. - Run
bash scripts/check_drift.sh. Expectdrift: clean. - Stage the test file, run
.githooks/pre-commit. Expect exit 0 (test files are not in scope). - Create
Sources/<Target>/DrillUndocumentedFixture.swift, stage it, run the hook. Expect exit 1. rmthe two fixtures,git reset,swift test— back to green.- Write
docs/knowledge/drill-2026-06-02.md.
Anti-patterns
- Leaving the fixture in the working tree. The drill is supposed to be invisible. A leftover fixture corrupts the next commit.
- Drilling the loop but never reading the report. The drill produces an evidence document for a reason. If the report does not contain the expected sections, the loop is broken; the user must read the report to find that out.
- Drilling the same day, twice. Two drills on the same day
overwrite each other's evidence document. Wait until tomorrow, or
pass a custom
drill_labelto disambiguate.
Cross-references
- init-loop — runs this skill automatically on first install.
- drift-check — exercised by step 4 of the drill.
- failure-classify — exercised by step 3.
- report-render — exercised by step 3.
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
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.

