Getting it into your agent
One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.
npx skills add nullhack/temple8 --skill write-test-pygit clone --depth 1 https://github.com/nullhack/temple8Wrote this? Show the measurements
A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.
[](https://agentmods.dev/skills/nullhack/temple8/write-test-py)<a href="https://agentmods.dev/skills/nullhack/temple8/write-test-py"><img src="https://agentmods.dev/badge/skills/nullhack/temple8/write-test-py/github.svg" alt="Measured on agentmods" height="20"></a>Or the 80×15 button, for a site that already has a row of RSS and ATOM ones. Only the verdict fits; the numbers stay here.
<a href="https://agentmods.dev/skills/nullhack/temple8/write-test-py"><img src="https://agentmods.dev/badge/skills/nullhack/temple8/write-test-py.svg" alt="Reviewed on agentmods" width="80" height="20"></a>What it costs to keep this loaded
Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.
| Model | Per session | Once invoked |
|---|---|---|
| Fable 5.1 | $0.00024 | $0.00562 |
| Opus 5.5 | $0.00010 | $0.00225 |
| Sonnet 5.5 | $0.00005 | $0.00112 |
| Haiku 4.5 | $0.00002 | $0.00056 |
Grade A, and why
write-test-py scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 1mo ago.
A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.
Nothing flagged
None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.
What it actually says
Write Test Py
- Load [[software-craft/solid]], [[software-craft/object-calisthenics]], [[software-craft/smell-catalogue]], [[software-craft/test-design]] — the quality criteria and body patterns.
- Read
.cache/<session_id>/journal.md(always present — bootstrapped at plan entry bymodel-data-schema) and.cache/<session_id>/interview-notes.md. Two rework trigger sources feed the backlog: (a) IF the journal carries escalation findings from build THEN edit the bodies of the contracts it names to match the reworked stubs; (b) IF the interview notes flag findings that MODIFY an existing block THEN edit the bodies of those contracts to match the reworked.pyi. Either source is rework — step 9 re-applies the pending marker. Skip both if neither carries rework. - Write the test bodies — no docstrings, no comments; the body is the spec. Bodies define how entities relate, compose, and collaborate: wire classes, data, and objects following best practices.
- Apply the code-quality gate here: SOLID, DRY, KISS, YAGNI, Object Calisthenics per [[software-craft/solid]], [[software-craft/object-calisthenics]]. IF a smell is present THEN reject it per [[software-craft/smell-catalogue]].
- Mark each test with the pending marker; the conftest hook skips pending tests so the suite stays green-with-skips until source is built.
- Defer the system-under-test import into each test body so an unbuilt module collects cleanly and its pending tests skip rather than error at collection. Keep third-party and test-only imports at module top.
- Keep the .py's module-level names and method signatures in exact agreement with its .pyi — stubtest checks the pair strictly.
- Run the dev ruff check (
ruff check .) on the authored test files; fix every violation so build receives bug-clean tests. Restructure lint (SIM,RUF) andruff formatare merge-time per [[software-craft/docstring-lifecycle]] — do not format here. - Strip docstrings from the test
.pyyou just wrote:uv run python scripts/strip_docstrings.py <authored *_test.py files>. - IF reworking an existing contract THEN edit the body to match the changed .pyi and re-apply the pending marker to the affected tests so they skip until build re-selects them.
What this file has done since we first saw it
Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.
- 1mo ago First seen · 18 lines · 24 tokens per session scan A 792ae0d79c05
write-test-py is a skill published in the GitHub repository nullhack/temple8 (11 stars, last pushed 29d ago), licensed MIT. It adds 24 tokens to every session and 562 once invoked, about $0.0001 per session on Opus 5.5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-30.
Other skills, from other repositories
agentic-test-audit
Audit a pytest suite: surviving mutants and untested code, flaky, order-dependent and slow tests, and removal candidates checked on held-out mutants. Report-only.
agentic-verify
Check that a Python change is caught by tests: run every mutant of the changed lines and write tests until they catch them. Reports evidence instead of a diff to read.
test-generator
Generate pytest test cases for Python functions and classes.
python
Use when the task is Python itself, in any framework or none: PEP 695 generics, mypy --strict typing, dataclass/Protocol/TypedDict/Enum choices, asyncio.TaskGroup, stdlib idioms, src/ layout + pyproject.toml with uv, ruff+mypy+pytest gate. NOT a FastAPI/ASGI service (that is fastapi), NOT a deep pytest suite (that is…
tdd
Drive a red → green → refactor cycle for the active task.
uv-workflow
Use when a coding agent needs to run Python code, modules, one-liners, tools, tests, or standalone scripts through uv, or create and maintain PEP 723 scripts with uv init/add/remove --script. Avoid direct python/python3 shell entrypoints.