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 agentmods add skills/curtisthe/three-pillars-plugin/tp-pr-fixnpx skills add CurtisThe/three-pillars-plugin --skill tp-pr-fixgit 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/skills/curtisthe/three-pillars-plugin/tp-pr-fix)<a href="https://agentmods.dev/skills/curtisthe/three-pillars-plugin/tp-pr-fix"><img src="https://agentmods.dev/badge/skills/curtisthe/three-pillars-plugin/tp-pr-fix.svg" alt="Measured on agentmods" 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 | $0.00050 | $0.03680 |
| Opus 5 | $0.00025 | $0.01840 |
| Sonnet 5 | $0.00010 | $0.00736 |
| Haiku 4.5 | $0.00005 | $0.00368 |
Grade A, and why
tp-pr-fix scanned grade A with 1 finding 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 5d 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.
Runs shell commandslowCapability
Expected in a hook, worth knowing in a rule or an instructions file.
audit C1 (no `import anthropic` in helpers, no `subprocess.run(["claude", ...])` How it starts
The opening of the file, as written. The whole thing — 266 lines — stays where its author put it; the contents beside it link to each section on GitHub.
tp-pr-fix — Single-Round Worker
A round-shaped worker over a single <design> PR. It receives reviewer comments,
classifies them (structural / minor / unclear), filters to collaborator-authored
structural issues, generates ONE fix commit, pushes, and applies the
tp:do-not-merge-yet label. The result is a fix-envelope.v1.json dict the
caller can persist or feed into the loop driver.
Two callers:
tp-pr-iterateloop driver — polls the PR, hands a freshclassified[]totp-pr-fixeach iteration until termination.- Standalone, human-invoked —
/tp-pr-fix my-design --pr-url <url> --iteration N. You ran a review, want to apply one targeted fix round, and stop. The worker makes no assumption about being inside a loop — it produces exactly one commit per invocation (or none, withverdict="no-applicable-fixes") and exits.
Arguments
{design}— kebab-case design name, validated perskills/_shared/validate-name.md. Resolves the active branch (tp/{design}) and the design directory underthree-pillars-docs/tp-designs/.--pr-url <url>— fullhttps://github.com/<owner>/<repo>/pull/<n>URL. Required. The shipped run-statestate.v1.jsonschema does not carry apr_urlfield; the loop driver passes the URL intofix_round.run_roundfrom its own arguments, and standalone callers must supply it on the CLI.--iteration N— the iteration index recorded in the envelope and the commit prefix. Defaults to1when invoked standalone; the loop driver passes its current counter.
Prerequisites
ghCLI installed and authenticated. The worker uses it for:gh pr view <url> --json labels— label idempotency check.gh pr view <url> --json headRefName— resolve the PR head ref the commit must land on (F1; see ## Run sequence step 6).gh api repos/{owner}/{repo}/issues/{n}/labelsandgh label create <label>— label application via REST (delegated tolabel_manager.ensure_pr_label; the REST endpoint is used instead ofgh pr edit --add-label, which fails on a classic-Projects repo with a GraphQLprojectCardsdeprecation error).gh api repos/{owner}/{repo}/collaborators/{user}— identity gate (with a trusted-reviewer-bot short-circuit; see step 6).gh pr diff <url>— diff context for the classifier.
- A clean enough working tree on the PR head ref to commit and push. The head
is resolved from the PR, not assumed to be
tp/{design}— an orchestrator PR's head is the worker's candidate branch (candidate/{slug}/single), not the design branch (F1). - The repo's
.three-pillars/config.jsonis populated. The only config surface the worker honors today ispdw.comment_url_allowlist— extra netlocs (beyondgithub.comand the repo origin host) that reviewer comments may reference. Thetp:do-not-merge-yetlabel name and theclaude-sonnet-4-6model are hardcoded; there is nopr_fixconfig block.
What ships with it
10 files beside SKILL.md in the same directory: the scripts, references and assets a skill reads on demand. Not counted in the per-session cost; read them before you install if any of them is executable.
- schemas/fix-envelope.v1.json 1.5 KB
- scripts/fix_round.py 13 KB runs code
- scripts/label_manager.py 8.7 KB runs code
- scripts/structured_extract.py 4.4 KB runs code
- scripts/test_fix_round.py 16 KB runs code
- scripts/test_label_manager.py 11 KB runs code
- scripts/test_pr_fix_skill_md.py 2.6 KB runs code
- scripts/test_structured_extract.py 3.0 KB runs code
- scripts/test_url_allowlist.py 8.2 KB runs code
- scripts/url_allowlist.py 5.3 KB runs code
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.
- 5d ago First seen · 266 lines · 50 tokens per session scan A 89ed08710995
tp-pr-fix is a skill published in the GitHub repository CurtisThe/three-pillars-plugin (4 stars, last pushed 1mo ago), licensed Apache-2.0. It adds 50 tokens to every session and 3,680 once invoked, about $0.0003 per session on Opus 5. A static security scan graded it A with 1 finding (runs shell commands). No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-31.
Other skills, from other repositories
create-pr
Creates a GitHub PR with a Linear-ticket-prefixed title and a decision-led, narrative description for prisma-next. Use when the user wants to create a pull request, open a PR, or submit changes for review.
git-commit
Generate well-formatted git commit messages following conventional commit standards.
commit-push-pr
Commit selected local changes, push the branch, and create or update a GitHub pull request with BitFun attribution. Use when the user asks to 提交 PR、提代码、commit and push、开 PR、create a pull request, or wants a Claude Code-like one-command PR publishing flow from BitFun.
mcore-split-pr
Split a PR into multiple PRs to reduce the number of required CODEOWNERS reviewer groups.
commit
Commit current changes with a clear, descriptive message.
contributing
How to contribute to evlog, covering commit and PR conventions, changesets, the Definition of Done, testing rules, and the authored skills that walk through building a new adapter, enricher, framework integration, or map rule. Load this for any question about contributing, opening a PR, or adding something to the…