duet-agent: Skill for Claude Code

.agents/skills/audit-choices/SKILL.md

audit-choices is a skill for Claude Code, Codex from dzhng/duet-agent. It costs 110 tokens per session (2,328 once invoked), scanned A, a copy of audit-choices, Apache-2.0.

A review of the design and implementation choices an agent made during a software task, rather than only a review of its code changes.

In plain words
What is it for?
It is for tracing a session's decisions, judging them, and recording which choices should be accepted, changed, or discussed.
Why use it?
It reveals important decisions the user did not explicitly make, such as where data is stored, which dependency is used, or how an interface works.

Skill for Claude CodeCodex

Written for no agent in particular: nothing here depends on one. Also seen: mentions subagents; installed under .agents/ (shared by several agents).

This is dzhng/duet-agent's own configuration. It tells Claude Code and Codex how to work on duet-agent itself, so it is not a mod to install elsewhere. Copy it as a starting point and replace the rules that are about this project. Everything duet-agent configures →

Reuse

Borrowing it

Nothing to install: this file belongs to dzhng/duet-agent. Take a copy, put it at the same path in your own repository, and replace the rules that are about this project with yours.

Copy the file
curl -O https://raw.githubusercontent.com/dzhng/duet-agent/main/.agents/skills/audit-choices/SKILL.md
Clone the repo
git clone --depth 1 https://github.com/dzhng/duet-agent

Made for: Claude Code, Codex.

Wrote 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.

agentmods badge for audit-choices

README.md
[![agentmods](https://agentmods.dev/badge/skills/dzhng/duet-agent/audit-choices/github.svg)](https://agentmods.dev/skills/dzhng/duet-agent/audit-choices)
Your own site
<a href="https://agentmods.dev/skills/dzhng/duet-agent/audit-choices"><img src="https://agentmods.dev/badge/skills/dzhng/duet-agent/audit-choices/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.

agentmods 80×15 button for audit-choices

Your own site · 80×15
<a href="https://agentmods.dev/skills/dzhng/duet-agent/audit-choices"><img src="https://agentmods.dev/badge/skills/dzhng/duet-agent/audit-choices.svg" alt="Reviewed on agentmods" width="80" height="20"></a>
Per session 110 Skills are progressive disclosure: only the name and description are preloaded; the body loads when the skill is used.
When invoked 2,328 The whole file, excluding the scripts and references it only reads on demand.
Security scan A 0 findings. A grade says what 26 rules found in the file — not that it is safe.
Origin 100% copy Near-identical to another mod in the catalogue.
Token cost

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.

ModelPer sessionOnce invoked
Fable 5.1 $0.00110 $0.02328
Opus 5 $0.00055 $0.01164
Sonnet 5 $0.00022 $0.00466
Haiku 4.5 $0.00011 $0.00233

Measured 10d ago against content hash 93410f8d91b5, method: parsed. Prices are Anthropic first-party input rates as of 2026-09-09, from the pricing page.

Security

Grade A, and why

audit-choices 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 10d 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.

Origin

This is a copy

100% identical to audit-choices — 0 lines differ, which has more behind it and is treated as the original. This page carries a canonical link to it rather than competing with it.

.agents/skills/audit-choices/SKILL.md · 167 lines

How it starts

The opening of the file, as written. The whole thing — 167 lines — stays where its author put it; the contents beside it link to each section on GitHub.

Audit Choices

Given a good decision, an agent implements it faithfully; wherever the task is underspecified, it makes the decision itself — silently, and the diff won't flag it. Reviewing thousands of changed lines doesn't scale, and it inspects the execution, which was probably fine. The audit that scales is of the choices: surface every decision the implementer made on its own, judge that list, and record the verdicts.

This is about architecture more than bugs. An implementation can work perfectly and still rest on decisions the user never made — a data shape, a storage location, a dependency, an API contract, a tradeoff of memory for speed — and every one of them is load-bearing for future work. The user needs to know them not because they're wrong, but because they now own them.

This is purely a decision audit — it is not about modifying code, and it can be called at any time. The job is to trace back: walk every step this session has taken, and every step each subagent took (a live implementer traces its own; otherwise reconstruct from its reports, transcripts, and diffs), and surface every single decision that was made on the user's behalf that was not in the original spec or prompt. The ledger of those decisions replaces reading the code as the user's review surface — that is the whole point. Acting on the verdicts (redoing an unsound choice, applying a provisional call) belongs to the caller: the implementing workflow mid-run, or the user after reading the report.

Two ways in, same audit:

  • Called by a workflow (per pass or per slice): audit that pass, append its entries to the ledger, and return; the workflow presents the accumulated ledger when it hands back.
  • Called directly by the user: audit the whole body of work in front of you (session, branch, or named change) and present the report immediately. Recommend; change nothing.

Workflow

  1. Elicit and trace back. When an implementer reports done, ask: "While working on this, which choices did you make that you're not confident of? List all." — but treat the self-report as a starting point, not the boundary: agents under-report. Trace the history yourself — the session's steps, subagent reports, diffs, commits — and collect every decision that is in the work but not in the original spec or prompt. Sweep the architectural categories, not just the suspect fixes: data shapes and formats, storage and naming schemes, API contracts and their error behavior, dependencies added, concurrency/perf tradeoffs, scope interpretations, patterns future code will imitate. Auditing your own session, trace your own steps the same way. Choices the plan explicitly delegated to the implementer are discretion, not audit items.
  2. Triage each choice on evidence. Forced by the plan, or invented? Invented ones get the scrutiny: is this the general solution, or a fix shaped to the one failing case? Verdict per choice: sound, unsound, or needs-user — and alongside the verdict, a confidence: how sure the audit is that the user would have made this same call. Confidence is what ranks the report. Reserve needs-user for genuinely user-only calls (taste, product direction, external cost); every needs-user entry records a recommended provisional call that is reversible, so an unsupervised caller can proceed without waiting. The audit never stalls a run: each entry is a judgment handed over for action or review, not a question that halts.
  3. State the corrected decision, don't sketch a patch. For each unsound choice, the entry names the decision the work should be redone from — the property that must hold in general — not an edit to layer on top. A patch on top of a bad decision preserves the decision; the redo itself is the caller's, after the ledger is reviewed.
  4. Bank every choice in the ledger (below), and promote load-bearing sound ones into the plan's handoff so later passes inherit them as givens instead of re-deciding.
  5. Present the ledger: grouped by verdict, ranked by confidence. The audit's deliverable is the ledger, handed to whoever acts next — the calling workflow mid-run, the user at run's end. Each verdict group maps to an action — needs-user (decide, with the provisional calls), unsound (redo, with the corrected decisions), sound (acknowledge: the architecture the user now owns) — and within each group choices are ranked by confidence, least confident first. When the ledger is long, open the report with the two or three least-confident choices overall, whatever their group: the "review these first" line. Sound is not skippable. Only trivial discretion (internal naming, cosmetic calls) compresses to a one-line count.

Read the full file on GitHub · 167 lines

Changes

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.

  1. 10d ago First seen · 167 lines · 110 tokens per session scan A 93410f8d91b5

Subscribe to this mod's changes

audit-choices is a skill published in the GitHub repository dzhng/duet-agent (42 stars, last pushed today), licensed Apache-2.0. It adds 110 tokens to every session and 2,328 once invoked, about $0.0006 per session on Opus 5. A static security scan graded it A with 0 findings. It is 100% identical to audit-choices, differing in 0 lines, and is treated as a copy.

Related

Other skills, from other repositories

evaluator-review-contract

Internal Auto-Harness evaluator skill for sprint contract review before implementation. Use only inside the Evaluator subagent during review mode.

redker56/auto-harness · 30 tokens

open-code-review-delegate

Delegation mode for open-code-review (OCR). Instead of OCR calling an LLM endpoint, this skill instructs the host agent to perform the code review itself, using OCR only for deterministic engineering: file selection and rule resolution. Use when the host agent should drive the review with its own LLM capabilities.

alibaba/open-code-review · 68 tokens

open-code-review

Performs AI-powered code review on Git changes using the ocr CLI from alibaba/open-code-review. Use when the user asks to review code, review a pull request, review staged/unstaged changes, review a commit, or compare branches for code quality issues. Produces line-level review comments and can automatically apply…

alibaba/open-code-review · 98 tokens

harness-creator

Build, audit, and improve harnesses that make AI coding agents reliable: AGENTS.md/CLAUDE.md instruction files, feature/state tracking, verification gates, scope boundaries, session handoff, memory persistence, context budgets, tool-permission safety, and multi-agent coordination. Use this whenever a coding agent is…

walkinglabs/learn-harness-engineering · 142 tokens

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…

chaitanyagiri/munder-difflin · 85 tokens

code-review

Paranoid architect review of code changes for bugs, security, missing tests, and undocumented assumptions. Works on local git diffs OR a GitHub pull request (e.g. owner/repo N). For PRs, can post findings as line-level review comments.

suyoumo/ClawProBench · 57 tokens