Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Review a proposed AI-agent action or human-approval packet before execution. Use when an agent wants to run a consequential tool, command, deployment, message, purchase, credential operation, or data mutation; when checking whether approval still matches the exact action; or when auditing action evidence for forged results, parameter swaps, replay, correlated reviewers, missing evidence, expiry, or stale monitoring. Produce an evidence-based review only—never execute or authorize the action.
.claude/skills/github-verify-agent-action/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-02 | ✗→✓ | ▲ Improved | 130% | 0% |
| case-05 | ✗→✓ | ▲ Improved | 149% | 0% |
| case-09 | ✗→✓ | ▲ Improved | 115% | 0% |
| case-10 | ✗→✓ | ▲ Improved | 158% | 0% |
| case-14 | ✗→✓ | ▲ Improved | 142% | 0% |
Treat a plausible approval screen as a claim, not proof. Verify the complete decision path before a human or an external enforcement point decides whether to act.
INCONCLUSIVE when required evidenceis unavailable.
Set this field in every final result:
json{"execution_authorized": false}
Request only the artifacts needed for the review:
audience, issue time, expiry, and use count.
List missing fields before analysis. Do not silently substitute defaults.
Create one normalized action object without dropping fields:
json{ "operation": "git.push", "target": "owner/repository", "parameters": { "branch": "fix/example", "commit": "40-character-sha", "remote": "origin" }, "filesystem_scope": [], "network_scope": ["github.com:443"], "execution_count": 1, "not_before": "RFC3339 timestamp", "expires_at": "RFC3339 timestamp" }
Use a project-specified canonicalization and digest algorithm when provided. Otherwise, report that cryptographic identity cannot be independently verified; still compare every field structurally.
Never normalize away a security-relevant distinction such as:
Evaluate every control as PASS, FAIL, INCONCLUSIVE, or NOT_APPLICABLE.
when its implementation is available.
FAIL if the received result differs from recomputation.INCONCLUSIVE when only schema validation, an internal checksum, or anunverifiable evaluator claim is available.
FAIL if any material field changed after approval.a narrower action.
expiry, and maximum use count.
FAIL for a reused nonce, wrong audience, expired approval, future-datedapproval, excessive use count, revoked identity, or role mismatch.
INCONCLUSIVE if no trustworthy replay store or time source exists.Build a dependence table for every reviewer or evaluator:
| Dimension | Compare | |---|---| | Model | family, version, fine-tune | | Provider | account and control plane | | Prompt | shared template or ancestry | | Retrieval | overlapping sources and indexes | | Tools | shared evaluator code and runtime | | Operator | common owner or approval authority |
Do not count correlated reviewers as independent quorum members. Mark FAIL if the policy requires independent approval and the remaining independent set is too small.
and relevant to the claim.
| Support | Refutation | Epistemic state | |---|---|---| | absent | absent | UNDETERMINED | | present | absent | SUPPORTED_ONLY | | absent | present | REFUTED_ONLY | | present | present | CONFLICTED |
FAIL if evidence was removed, altered, expired, or concealed in a waythat changes the result.
CONFLICTED into a numeric average that appears safe.cadence.
policy requires continuous monitoring.
Before producing the final result, attempt these mutations mentally or with project-provided test fixtures:
If any mutation would pass the reviewed controls, record the affected control as FAIL; do not merely recommend future hardening.
Use exactly one result:
ELIGIBLE_FOR_HUMAN_DECISION: all required controls pass.ELIGIBLE_WITH_CONTROLS: no required control fails, and explicit externalcontrols can resolve the listed conditions before execution.
BLOCKED: at least one required control fails or the action exceeds thejustified scope.
INCONCLUSIVE: no required control is proven false, but evidence needed fora safe decision is missing or unverifiable.
ELIGIBLE_FOR_HUMAN_DECISION is not approval. A human authority and a separate enforcement point remain responsible for any real action.
markdown# Agent Action Review ## Result - Review result: BLOCKED | INCONCLUSIVE | ELIGIBLE_WITH_CONTROLS | ELIGIBLE_FOR_HUMAN_DECISION - Execution authorized: false - Exact action digest: <verified value or NOT_VERIFIED> ## Action - Operation: - Target: - Material parameters: - Scope: - Validity window: - Maximum uses: ## Control matrix | Control | Status | Evidence | Reason | |---|---|---|---| | Recomputed assessment | PASS/FAIL/INCONCLUSIVE/N/A | ... | ... | | Exact action binding | ... | ... | ... | | Replay and identity | ... | ... | ... | | Reviewer independence | ... | ... | ... | | Evidence completeness | ... | ... | ... | | Monitoring freshness | ... | ... | ... | ## Supporting evidence - ... ## Refuting evidence and defeaters - ... ## Required next action - State the smallest concrete step that could change the result. ## Boundaries - State what this review did not prove.
Lead with the result and the exact reason. Prefer a reproducible blocker over a confidence score.
| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-02 | fail→pass | 16,965 | 20,345 | +20% | 1 | 1 | 0% | 2,462 | 5,657 | +130% | 0 | 0 | — |
case-01 | pass→fail | 17,088 | 21,940 | +28% | 1 | 1 | 0% | 2,494 | 4,994 | +100% | 0 | 0 | — |
case-03 | pass→pass | 29,468 | 17,798 | -40% | 1 | 1 | 0% | 5,296 | 5,273 | -0% | 0 | 0 | — |
case-04 | pass→pass | 13,683 | 19,368 | +42% | 1 | 1 | 0% | 2,097 | 4,997 | +138% | 0 | 0 | — |
case-05 | fail→pass | 9,040 | 13,560 | +50% | 1 | 1 | 0% | 1,541 | 3,831 | +149% | 0 | 0 | — |
case-06 | pass→pass | 14,826 | 20,935 | +41% | 1 | 1 | 0% | 2,315 | 5,783 | +150% | 0 | 0 | — |
case-07 | pass→pass | 12,364 | 22,876 | +85% | 1 | 1 | 0% | 1,969 | 5,167 | +162% | 0 | 0 | — |
case-08 | pass→pass | 8,874 | 12,477 | +41% | 1 | 1 | 0% | 1,442 | 4,545 | +215% | 0 | 0 | — |
case-09 | fail→pass | 10,259 | 14,579 | +42% | 1 | 1 | 0% | 1,847 | 3,979 | +115% | 0 | 0 | — |
case-10 | fail→pass | 11,461 | 11,711 | +2% | 1 | 1 | 0% | 1,624 | 4,194 | +158% | 0 | 0 | — |
case-11 | pass→pass | 6,982 | 19,184 | +175% | 1 | 1 | 0% | 1,090 | 4,688 | +330% | 0 | 0 | — |
case-12 | pass→pass | 7,501 | 51,898 | +592% | 1 | 1 | 0% | 1,384 | 10,115 | +631% | 0 | 0 | — |
case-13 | pass→pass | 9,345 | 14,390 | +54% | 1 | 1 | 0% | 1,328 | 4,108 | +209% | 0 | 0 | — |
case-14 | fail→pass | 10,324 | 11,698 | +13% | 1 | 1 | 0% | 1,606 | 3,888 | +142% | 0 | 0 | — |
case-15 | pass→pass | 8,770 | 23,624 | +169% | 1 | 1 | 0% | 1,269 | 6,071 | +378% | 0 | 0 | — |
case-16 | pass→pass | 4,135 | 15,906 | +285% | 1 | 1 | 0% | 710 | 4,215 | +494% | 0 | 0 | — |
case-17 | pass→pass | 9,382 | 19,031 | +103% | 1 | 1 | 0% | 1,586 | 4,812 | +203% | 0 | 0 | — |
case-18 | pass→pass | 6,169 | 8,665 | +40% | 1 | 1 | 0% | 1,112 | 3,491 | +214% | 0 | 0 | — |
case-19 | pass→pass | 6,786 | 10,777 | +59% | 1 | 1 | 0% | 958 | 3,777 | +294% | 0 | 0 | — |
case-20 | pass→pass | 11,066 | 42,415 | +283% | 1 | 1 | 0% | 2,289 | 8,764 | +283% | 0 | 0 | — |
case-21 | pass→pass | 9,138 | 19,892 | +118% | 1 | 1 | 0% | 1,457 | 5,816 | +299% | 0 | 0 | — |
case-22 | pass→pass | 21,174 | 48,618 | +130% | 1 | 1 | 0% | 3,214 | 6,902 | +115% | 0 | 0 | — |
case-23 | pass→pass | 6,721 | 10,424 | +55% | 1 | 1 | 0% | 1,074 | 3,369 | +214% | 0 | 0 | — |
case-24 | pass→pass | 13,719 | 16,025 | +17% | 1 | 1 | 0% | 2,031 | 4,929 | +143% | 0 | 0 | — |
DecimalAI ran this skill against gemini-3.6-flash twice over the same eval suite — once with the skill loaded and once without — and compared the two runs case by case. 24 cases were attempted. The headline lift of +17 percentage points is the difference between those two pass rates over the 24 comparable cases. 1 case got worse with the skill loaded, and it is included in that figure.
Without the skill loaded, the model failed this case. With it loaded, the same prompt on the same model passed. This is one improved case from the latest verified run; every case, including any that regressed, is in the table above.
Other measured skills in the registry, with their headline benchmark lift.