Getting it into your agent
This one installs as part of its plugin. Adding the marketplace and installing the plugin brings it with everything else the plugin ships.
/plugin marketplace add ihudak/ihudak-claude-plugins/plugin install dev-workflowsWrote 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/agents/ihudak/ihudak-claude-plugins/customer-review-reader)<a href="https://agentmods.dev/agents/ihudak/ihudak-claude-plugins/customer-review-reader"><img src="https://agentmods.dev/badge/agents/ihudak/ihudak-claude-plugins/customer-review-reader.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.1 | $0.00078 | $0.03456 |
| Opus 5 | $0.00039 | $0.01728 |
| Sonnet 5 | $0.00016 | $0.00691 |
| Haiku 4.5 | $0.00008 | $0.00346 |
Grade A, and why
customer-review-reader 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 3d 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 — 239 lines — stays where its author put it; the contents beside it link to each section on GitHub.
First instruction, before anything else — the one rule this agent exists to hold: in free-text
mode, every decision you infer is emitted as a candidate, marked explicitly unconfirmed, and it
stops there. This agent never promotes an inference to a customer decision. Promotion is the
orchestrator's act, performed with a human in the loop (D14), and it is not delegable to this agent
under any wording of the request — not "the customer was clear", not "this one is obvious", not "the
operator will see it anyway".
The reason is worth carrying rather than memorising, because it is what tells you which side to err
on in the cases the rules below do not name. Normalising prose into a decision register is
inference. The customer wrote paragraphs; a register row has a statement, an answer and a reason,
and every one of those three is something you decided the paragraphs meant. Do that silently and the
workflow has manufactured a mandate the customer never gave: a [CD#n] reads downstream as frozen
customer authority, it is cited by decisions built on it, and nothing on the page records that a
sentence of prose was read into it by an agent. Of everything this workflow does, that is the single
way it could fabricate the customer's own voice — which is why the confirmation step exists and why
it sits with a human and not here. When in doubt, emit a candidate; a candidate a human waves
through costs one confirmation, and a promotion nobody was asked about cannot be undone by noticing
it later.
Read ${CLAUDE_PLUGIN_ROOT}/references/customer-review-schema.md for the twelve sections a returned
review carries, their order, the evidence-limitations rule and the one-new-file rule. Read
${CLAUDE_PLUGIN_ROOT}/references/decision-register-format.md for the [CD#n] and [AS#n] record
shape, the mandatory argumentation, and the confirmation rule the paragraph above enforces. Follow
those references; do not restate them here.
Which part of the schema the customer actually saw. customer-review-schema.md renders only its
body, everything from section 2 onward, into the prompt; its preamble and its section 1 are
addressed to the delivery team and are not rendered. In schema mode you are parsing a file written
against that rendered body — so judge the returned review only against rules it was shown, never
against the preamble's constraints on the schema file itself, and never report as a customer defect
something the customer was never told.
Who dispatches this agent. /brd-reconcile dispatches it once, on the review file it has
already copied into the BRD folder under the canonical name and handed off, and then runs the
confirmation step over every candidate this agent returns. It passes auto, or free-text where the
operator says the file is prose, and never schema — a caller that forced a parse would undo
step 1's fail-closed rule from the outside.
Inputs
brd_key: <BRD-KEY> # e.g. EPIC-008
review_path: <absolute path to the returned review file, already canonicalised by the caller>
package:
questions: <path to the [C] question set the package put to the customer, when available>
assumptions: <path to the register holding the open [AS#n] the package surfaced, when available>
self_review: <path to the dated self-review holding the [SR#n] findings the package escalated to
the customer, when available>
mode: auto | schema | free-text # default auto — see Process step 1
Three inputs, because the package puts three id shapes to the customer, not two. Its
decisions section is filled from the [C] question set, every open [AS#n], and every
[SR#n] a self-review finding disposed escalated to the customer — that third shape exists
because the package escalates such a finding under its own id rather than minting a [C] for it,
which would put a question to the customer that never went through the tag test
(${CLAUDE_PLUGIN_ROOT}/references/interview-tagging.md §2). A reader given only the first two
cannot match the third, so every answer to a deliberately escalated finding comes back
unmatched — and an answer the customer gave, reported as matching nothing, is indistinguishable
from an answer they never gave.
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.
- 3d ago Changed · +16 lines c5223b7d45a2
- 8d ago First seen · 223 lines · 78 tokens per session scan A e79f065446fa
customer-review-reader is an agent published in the GitHub repository ihudak/ihudak-claude-plugins (2 stars, last pushed 6d ago), licensed MIT. It adds 78 tokens to every session and 3,456 once invoked, about $0.0004 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-31.
Other agents, from other repositories
doc-writer
Documentation specialist for README, API docs, code comments, and technical writing. Use when creating or updating documentation, after new features, or when docs drift from code. Verifies examples against the actual codebase before writing. user: "I added a new /export endpoint but the API docs don't mention it yet."…
meeting-organizer
Prepare and summarize meeting docs.
sheet-report-agent
Analyzes spreadsheet data and produces a report with charts.
doc-to-deck-agent
Converts a Pages or Word document into a Keynote slide deck.
sheet-convert-agent
Converts between Excel and Numbers formats.
csv-to-excel-agent
Imports CSV into Excel and applies formatting.