Agent Substrate is a runtime system for running many isolated applications or AI agents on shared computing infrastructure. It manages agent sandboxes throughout their lifecycle, places them on available workers, and routes traffic to them while using technologies such as Kubernetes, microVMs, and gVisor. Its catalogue skills and instructions support operating and developing workflows around this agent runtime.
Borrowing it
Nothing to install: this file belongs to agent-substrate/substrate. Take a copy, put it at the same path in your own repository, and replace the rules that are about this project with yours.
curl -O https://raw.githubusercontent.com/agent-substrate/substrate/main/.agents/skills/post-draft-review/SKILL.mdgit clone --depth 1 https://github.com/agent-substrate/substrateWrote 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/agent-substrate/substrate/post-draft-review)<a href="https://agentmods.dev/skills/agent-substrate/substrate/post-draft-review"><img src="https://agentmods.dev/badge/skills/agent-substrate/substrate/post-draft-review/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/agent-substrate/substrate/post-draft-review"><img src="https://agentmods.dev/badge/skills/agent-substrate/substrate/post-draft-review.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.00072 | $0.02850 |
| Opus 5.5 | $0.00029 | $0.01140 |
| Sonnet 5.5 | $0.00014 | $0.00570 |
| Haiku 4.5 | $0.00007 | $0.00285 |
Grade A, and why
post-draft-review 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 14d 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.
How it starts
The opening of the file, as written. The whole thing — 231 lines — stays where its author put it; the contents beside it link to each section on GitHub.
Post Draft Review Comments
A "draft review" on GitHub is a review left in the PENDING state. It is visible
only to its author, accumulating comments, until the author explicitly submits
(publishes) or discards it.
Findings go in as pending inline comments rather than individually published comments, so a human reviews them before anything reaches the PR author.
gh pr review can not create one — it always submits immediately
(--approve / --comment / --request-changes). To stay in draft, hit the REST API:
POST .../reviews with no event field creates the review PENDING rather than
submitting it.
Inline comments only — the human authors the summary
Contribute inline comments only, created with an empty body (body: ""). The
top-level summary is written by the human in the UI's "Finish your review" box when they
submit. Rationale:
- The high-level overview (praise, verdict, framing) is the human's voice, not the agent's.
- The UI's summary box does not prefill an API-set body, so an agent-authored body
is silently dropped on UI submit anyway, and can't be restored afterwards:
PUTon a submitted review with an empty body is rejected with 422. An empty body sidesteps the whole failure mode. - Don't smuggle summary-level content into an inline comment. Top-level content anchored to a code line is poor UX for the reader.
Anything with no inline anchor — what was checked and found clean, issues in files outside the diff — goes in the chat hand-off, for the human to draw on when they write the summary.
Disclose that an agent found it
Each inline finding leads with :robot: followed by the bolded severity name and color
(e.g. 🤖 **should-fix** 🟡 – …) to mark it as an AI finding. Keep it generic: don't
name the agent, vendor, or model. Disclose only that an agent was involved. The human
who finishes the review is accountable for what gets submitted.
Keep it tight
Bias toward brevity. A human reads this, then decides. Concretely:
What ships with it
1 file 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.
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.
- 14d ago Changed d24a2b235bb4
- 1mo ago First seen · 231 lines · 72 tokens per session scan A b511b6f46370
post-draft-review is a skill published in the GitHub repository agent-substrate/substrate (5,957 stars, last pushed today), licensed Apache-2.0. It adds 72 tokens to every session and 2,850 once invoked, about $0.0003 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-09-22.
Other skills, from other repositories
migration-review
Review database migration files when a change adds or modifies paths under migrations/. Use it before merge to collect forward, rollback, locking, and data-safety evidence.
otto-pr-review-loop
Run Polly and OCR on a PR until all findings settle.
adk-go-self-review
Review an ADK Go change the way a maintainer will — a fresh-context pass over the whole diff, five lenses (correctness and tests, scope, simplicity, style, adk-python parity), and the mutation check that proves your tests pin the change. Use before opening a PR, before any later push that changes code, and when asked…
learn-from-sage
Detection-gap (miss) analysis for Code Review Sage. Learn from shipped fixes, acted-on human comments, and design outcomes to close reviewer blind spots. Inline during review stages a candidate; a human triggers a one-shot AI consolidation into the live ruleset.
no-mistakes
Validate committed feature-branch changes through the no-mistakes pipeline: intent, rebase, review, test, docs, lint, push, PR, and CI. Use when the user asks to run no-mistakes, ship safely, validate before pushing, or gate a change before it reaches upstream.
factory-gitlab-rereview
Re-review a GitLab merge request after new commits and reconcile the previous review.