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/griffinwork40/agent-afk/false-completion-gatenpx skills add griffinwork40/agent-afk --skill false-completion-gategit clone --depth 1 https://github.com/griffinwork40/agent-afkWrote 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/griffinwork40/agent-afk/false-completion-gate)<a href="https://agentmods.dev/skills/griffinwork40/agent-afk/false-completion-gate"><img src="https://agentmods.dev/badge/skills/griffinwork40/agent-afk/false-completion-gate.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.00211 | $0.01268 |
| Opus 5 | $0.00105 | $0.00634 |
| Sonnet 5 | $0.00042 | $0.00254 |
| Haiku 4.5 | $0.00021 | $0.00127 |
Grade A, and why
false-completion-gate 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 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.
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.
Copies of this mod
1 near-identical copy found in the catalogue:
- false-completion-gate — 100% identical, 0 lines differ
How it starts
The opening of the file, as written. The whole thing — 29 lines — stays where its author put it; the contents beside it link to each section on GitHub.
Sub-agent contract
/contract
This skill fires when a session (or a returning sub-agent) is about to declare a state-mutating task complete — a Done terminal state, a success summary, or a passing completion verdict. The core invariant: a completion claim must be backed by execution receipts and a fresh artifact read-back, never by the assertive language of the claim itself. Claim and evidence must be structurally separated — the base agent fuses them, narrating "done" straight from in-context memory of a tool result it never re-observed. That fusion is exactly how "silent success" propagates a false Done into downstream steps that then compound on a foundation that was never real.
Phase 1 — Claim decomposition. Before emitting the Done, decompose the pending completion into a checklist of concrete, receipt-checkable assertions. Each assertion names: (a) the deliverable ("feature X implemented", "tests green", "branch pushed"), (b) the producing action that must have fired to make it true (an Edit/Write to a specific path, a specific test command, a git push), and (c) the durable location that would prove it (file path + expected content, test-output line, commit SHA). Add a goal-substitution assertion: if the original goal was diagnostic (interrogative — "why does X", "what causes Y") but the deliverables are all implementation, the diagnostic answer is itself a required assertion — its absence is an UNBACKED completion, because the question was silently swapped for a patch.
Phase 2 — Receipts reconciliation. Dispatch one read-only reconciliation auditor (subagent_type: "awa-private:research-agent" — locked to Read/Grep/Glob; add a Bash-capable type with isolation: "worktree" only if a postcondition needs a command rerun, e.g. re-running the test). It receives ONLY the assertion checklist + the user's original goal — never the orchestrator's success narrative. For each assertion it independently establishes: ledger_match — did the producing action actually appear in this session's tool-call history? postcondition — read the durable artifact from source now (file content, fresh test output, git log/git status) and check it matches the claim. durable_location — confirm evidence is a real location, never transcript-only. The orchestrator hands the auditor this session's tool-call history as the ledger; if that history is unavailable or truncated (a hand-off, a compacted context), the auditor marks the assertion UNVERIFIABLE rather than assuming the action fired — the gate fails closed, never open. Returns a receipts table: {assertion, ledger_match: yes|no, postcondition: pass|fail|unverifiable, durable_location, verdict: BACKED|UNBACKED|UNVERIFIABLE}.
Gate verdict (merge):
- All assertions BACKED →
VERIFIED: emit the Done, attaching the receipts table as the evidence block (durable locations, not prose). - Any UNBACKED (no producing action in the ledger, or read-back contradicts the claim) →
FALSE-COMPLETION: do not emit Done. Surface the exact unbacked assertion(s) and what the read-back actually showed. - Any UNVERIFIABLE (external side-effect with no fetchable receipt) → never pass as a confident Done; surface tagged
[needs-human-review].
Phase 3 — Bounded repair. On FALSE-COMPLETION, route only the unbacked assertions to a targeted repair pass — re-execute the missing producing action or fix the failing postcondition — then re-run Phase 2 on just those assertions. Cap at 2 repair cycles. If an assertion is still UNBACKED after 2 cycles, emit a Blocked terminal state naming the exact unbacked assertion and the missing receipt — never a Done. The asymmetry is safe by construction: the gate can only ever downgrade a false Done to an honest Blocked/needs-review; it cannot manufacture a completion that wasn't real.
When to invoke: before any Done / success summary / completion verdict in state-mutating work (implementation, bug fix, refactor, migration, multi-file write, deployment) — especially when the belief that it worked rests on in-context memory of a tool result rather than a fresh read-back, or when the run spanned many steps and the early "success" was never re-observed.
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 · 29 lines · 211 tokens per session scan A 9b0d90e150a9
false-completion-gate is a skill published in the GitHub repository griffinwork40/agent-afk (54 stars, last pushed yesterday), licensed Apache-2.0. It adds 211 tokens to every session and 1,268 once invoked, about $0.0011 per session on Opus 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
ian-xiaohei-illustrations
生成 Ian 风格的中文正文配图。用于用户要求为中文文章、帖子、博客、Notion 文档、工作流文档、方法论、流程、结构、状态、隐喻或观点生成“怪诞”“小黑”“手绘”“正文配图”“文章插图”“配图建议”“shot list”“去标题/改图”等任务;默认使用小黑 IP、纯白手绘、少量红橙蓝批注、简洁清爽但天马行空的视觉风格。.
capabilities
Your capability catalog — read this at boot. Lists the temporal date-range skills and the external integrations (reached via the loopback broker) available to you as a spawned worker, and exactly how to call each. Read-only. Consult it whenever you're unsure what tools/integrations you have or how to invoke them.
temporal
Resolve ANY named time window — today, yesterday, thisWeek, lastWeek, last7Days, last30Days, last90Days, thisMonth, lastMonth, thisQuarter, lastQuarter, thisYear, lastYear, last12Months — or an arbitrary range (lastNdays / lastNweeks / lastNmonths) to a concrete ISO date range relative to your run time. Read-only: no…
last30Days
Resolve "last30Days" to a concrete ISO date range relative to your run time — a rolling 30-day window ending today. Returns inclusive civil dates plus exact UTC instants so you have temporal context without computing dates by hand. Read-only: no writes, no network. Use before a "last 30 days" / trailing-month task…
md-audit
Read-only code quality audit — scan the current working directory for common issues (bugs, dead code, security hotspots, missing error handling) and return a prioritised findings report. No files are edited. Use when asked to "audit the code", "quick audit", "find issues", "code scan", or "what's wrong with this…
thisQuarter
Resolve "thisQuarter" to a concrete ISO date range relative to your run time — this quarter so far (quarter start → today). Returns inclusive civil dates plus exact UTC instants so you have temporal context without computing dates by hand. Read-only: no writes, no network. Use before a quarter-to-date task (QTD…