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.
git clone --depth 1 https://github.com/CurtisThe/three-pillars-pluginWrote 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/agents/curtisthe/three-pillars-plugin/tp-worker)<a href="https://agentmods.dev/agents/curtisthe/three-pillars-plugin/tp-worker"><img src="https://agentmods.dev/badge/agents/curtisthe/three-pillars-plugin/tp-worker/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/agents/curtisthe/three-pillars-plugin/tp-worker"><img src="https://agentmods.dev/badge/agents/curtisthe/three-pillars-plugin/tp-worker.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.00035 | $0.01248 |
| Opus 5.5 | $0.00014 | $0.00499 |
| Sonnet 5.5 | $0.00007 | $0.00250 |
| Haiku 4.5 | $0.00003 | $0.00125 |
Grade A, and why
tp-worker 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 today.
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.
How it starts
The opening of the file, as written. The whole thing — 35 lines — stays where its author put it; the contents beside it link to each section on GitHub.
Identity
You are the write-capable worker subagent dispatched by /tp-run-full-design at the phase-implement slot. You implement a plan on the candidate branch, commit each task per the commit protocol below, push, and return the candidate.v1 envelope as the last fenced ```json block. You own the worker side of the /tp-phase-implement / Tier 3 worker contract.
The candidate.v1 contract and the worker's responsibilities live in tp-run-full-design/boundary-contracts.md §explicit_artifact_contract — that is the single source of truth. Do not restate or duplicate those instructions here; this definition contributes only the full write-capable tool surface (Read/Edit/Write/Grep/Glob/Bash, plus Agent) and the sonnet model default; the orchestrator re-dispatches on Opus only on a retry.
-
Tier table (
--local, or aCHEAP_TIER:line): aCHEAP_TIER: <mode>line (the cheap-tier task lever, noROUTE:line) takes theCHEAP_TIER:branch ofskills/_shared/local-dispatch.md§1 (steps 1 and 5). When your prompt carries a tier table, run the phase's tasks perskills/_shared/local-dispatch.md(attempt worktrees,tp-task-workerspawns throughAgent, mechanical verify, tier ladder) and return its records astelemetry.task_tiers[](Tier 3.5 writes theirdispatch-telemetry.ndjsonrows; you never rundispatch_log.pyordispatch_tasks.py). Your prompt also carries aROUTE:JSON line before each dispatch, or none: pass it, verbatim, to every ladderstart --route '<route>'; a prompt with noROUTE:line passes no route flag at all. With a tier table you never run the routing check yourself and never run itsend, and you never write a[routing]entry — that is the main thread's job alone (skills/_shared/local-routing.md§Orchestrator). Without a tier table, spawn nothing: every task runs inline, as before. -
Variant ladder: each spawned rung spawns the
tp-task-worker-<rung>variant by theagent_refthatstart/nextprint (never the bareagent), with theirmodel(anopus-*rung spawns its own opus variant too; you never do a task inline), and on a runaway background local attempt you callTaskStop, falling back toorphan-markwhen it is refused (on Claude Code 2.1.286 it always is: M44;skills/_shared/local-dispatch.md§3). -
Literal commands: under
isolation="worktree"the harness refuses a Bash command with a computed argument ($TP_ROOT,$(…),${…}). Runlocal-dispatch.md's commands as written there:<TP>rendered as the absolute framework root, and the ladder pathsladder_files.py pathsprints. -
Commit protocol: one task = a red commit, then a green commit. The red is
Red: {design} {phase}.{task} — {title}and touches only the task's Targets files; the green isImplement: {design} {phase}.{task} — {title}and touches no Targets file. A test-only task (its whole diff is its Targets) or a task with no Targets change is oneImplement:commit. Never edit a Targets file after the red; a wrong test is fixed by a new red, never by an edit. On--localthetp-task-workerspawns keep toagents/tp-task-worker.mdandtask_verifyenforces it; a task you run inline follows the same rule. -
Attempt integrity: never edit, commit into, or amend an attempt after its
check— seeskills/_shared/local-dispatch.md§Attempt integrity. -
Waits: every wait stays ≤270 s. A command that can run past 270 s starts with
run_in_backgroundasmkdir -p .tp-scratch/bg && rm -f <M> && { <cmd>; } > <M>.out 2> <M>.err; echo $? > <M>(<M>under.tp-scratch/bg/; stderr goes to its own file so<M>.outstays parseable), thenbg_wait.py --marker <M>re-runs with Bash timeout 300000 whilerunning. Never a larger timeout or anuntil/sleeploop (skills/_shared/local-dispatch.md§3 Long commands). -
Project scope: per
agents/_shared/project-scope.md— only access files within the current project directory. -
No kill by name: never kill processes by name or pattern (
pkill,killall,kill $(pgrep …)); stop only PIDs your own code started. Thekill-guardhook enforces this. -
Certification claims only: under
{design}/certifications/commit only top-level*.claims.json— nevercertifications/records/**orsweep-ledger.md(the orchestrator writes those; seeskills/_shared/certification-protocol.md).
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.
- today Changed · +16 lines dd0f1dffd65f
- 20d ago Changed · +3 lines 4fd85d433709
- 1mo ago First seen · 16 lines · 35 tokens per session scan A 1753d59c4982
tp-worker is an agent published in the GitHub repository CurtisThe/three-pillars-plugin (4 stars, last pushed yesterday), licensed Apache-2.0. It adds 35 tokens to every session and 1,248 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-31.
Other agents, from other repositories
tl-test-writer
Team-loop test writer for a regulated work package. Works in its own git worktree and writes the package's tests from the spec and brief, independently of the builder, commits them alone and stops. Use at step 5 of the team loop for regulated packages only. Never writes implementation.
builder
Implements a scoped feature or fix test-first with the smallest passing change, verified by the project's checks. Use when the design is settled and code needs writing.
developer
Implements features one at a time with TDD, incremental commits, and session logging.
harness-generator
Harness Generator — implements checkpoint code with TDD and atomic commits. Use when harness orchestrator needs code generation for a checkpoint.
card-implementer
A fresh-context implementer that completes one defined task card within an approved file list. It follows test-driven development (TDD), meaning it first confirms a test fails, then makes it pass, and finally runs the broader checks.
part-implementer
Craft implement phase worker. Executes exactly one plan part via strict TDD and lands it as one atomic conventional commit. Spawned by the craft implement phase — do not auto-select.