Agents
Agents are custom subagents that Claude Code can delegate a task to via its built-in Agent tool. Each .claude/agents/<name>.md file gives a subagent a system prompt, a description (what Claude Code matches invocations against), and a restricted tools list. Claude Code discovers agents in .claude/agents/ automatically — like skills, no separate registration step is needed once this repo is bootstrapped.
Why read-only fan-out workers
Several skills fan a task out across many independent targets — one competitor community per research pass, one dependency pin per audit, one claim per fact-check — and want each target checked in parallel without risking a stray worker writing a file, filing an issue, or running a destructive command. Every agent in this repo omits Edit and Write from its tools list, so it can never call those tools to change a file — that restriction is harness-enforced. All but one of them also keep Bash, which can run write-capable shell commands (git push, rm, a redirect); for those, staying read-only is instruction-level discipline, not a harness guarantee (see the note below the table). Each agent returns a report; only the calling session, which keeps full tool access, applies fixes or writes anything, on the user’s go-ahead.
adversarial-reviewer is the one that is not a fan-out worker but a critic — it reviews the calling session’s own diff rather than investigating the repo fresh. The read-only constraint matters for the same reason and one more: a reviewer that could edit would turn a finding into a silent fix, losing the finding and its disposition together.
Agents in this repo
| Agent | Tools | Used by | What it does |
|---|---|---|---|
adversarial-reviewer |
Bash, Read, Grep, Glob, WebFetch, WebSearch |
every self-review — push, ardi, self-review-fallback |
Scrutinizes a diff for defects, unhandled edge cases, false factual and tool-behaviour claims, and convention violations — judging it by what it says rather than by the author’s account of it — and emits a structured review ending in a verdict (Ready for merge vs Needs more work) |
community-demand-scout |
WebSearch, WebFetch, Read, Grep, Glob |
opposition-research (oppo) |
Mines one competitor community surface — an issue tracker, feature-request board, subreddit, Q&A site, forum, or review site — for user-demanded features, and reports each with demand evidence and a source link |
dependency-auditor |
Bash, Read, Grep, Glob, WebFetch |
check-dependency-updates (cdu) |
Surveys pinned GitHub Actions tags/SHAs, renv.lock versions, pre-commit revs, Quarto/tool versions in CI, and submodules for available upgrades, reads changelogs, and reports what each bump would buy |
hallucination-detector |
Bash, Read, Grep, Glob, WebFetch |
purge-hallucinations (ph) |
Verifies concrete, checkable references — files, functions, action refs, URLs, citations, config keys — against ground truth and sorts each into Resolves / Fabricated / Unverifiable |
prose-fact-checker |
Bash, Read, Grep, Glob, WebFetch, WebSearch |
fact-check-prose (fcp) |
Checks one factual claim, reasoning step, or computed value/figure against domain knowledge, an external source, or a rendered artifact, and returns a verdict naming the exact source it checked |
overlap-detector |
Bash, Read, Grep, Glob |
find-overlap |
Clusters comparable units (skills, memories, docs, code, prose) by similarity, classifies each cluster as intentional-alias / adjacent-but-distinct / genuine-duplicate, and reports each with evidence and a recommended disposition |
reproducibility-auditor |
Bash, Read, Grep, Glob, WebFetch |
reproducibility-audit |
Surveys a project for hidden dependencies, hardcoded absolute paths, undocumented prerequisites, environment assumptions, and output traceability, scoped per project type |
skill-usage-auditor |
Bash, Read, Grep, Glob |
skill-audit |
Enumerates skills, greps local session transcripts for their invocations, rolls alias counts into their canonical skill, and buckets every skill into actively-used / dormant / dead |
Every agent except community-demand-scout keeps Bash for read-only checks (grep, gh api, git submodule status, test -e) — avoiding a write-capable shell command (renv::update() without check = TRUE, pre-commit autoupdate) is instruction-level discipline for those, not a harness-enforced restriction the way the missing Edit/Write is. Each such agent’s file under .claude/agents/ says so in as many words, so the discipline is instructed where it is relied on rather than only asserted here. The .opencode/ mirrors are not all the same: opencode’s own permission block can deny bash outright, in which case the restriction is harness-enforced there and the persona says that instead.
How they’re invoked
The calling skill fans work out to one of these agents through Claude Code’s Agent tool, passing a scope line — what to check, against what — rather than letting the agent pick its own scope. To use one standalone rather than through its usual skill, invoke the Agent tool with subagent_type set to the agent’s name and describe the single target to check.