Borrowing it
Nothing to install: this file belongs to vanillagreencom/kendex. Take a copy, put it at the same path in your own repository, and replace the rules that are about this project with yours.
curl -O https://raw.githubusercontent.com/vanillagreencom/kendex/main/.agents/skills/reviewer/SKILL.mdgit clone --depth 1 https://github.com/vanillagreencom/kendexWrote 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/vanillagreencom/kendex/reviewer)<a href="https://agentmods.dev/skills/vanillagreencom/kendex/reviewer"><img src="https://agentmods.dev/badge/skills/vanillagreencom/kendex/reviewer/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.
<a href="https://agentmods.dev/skills/vanillagreencom/kendex/reviewer"><img src="https://agentmods.dev/badge/skills/vanillagreencom/kendex/reviewer.svg" alt="Reviewed on agentmods" width="80" 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.00018 | $0.03947 |
| Opus 5.5 | $0.00007 | $0.01579 |
| Sonnet 5.5 | $0.00004 | $0.00789 |
| Haiku 4.5 | $0.00002 | $0.00395 |
Grade C, and why
reviewer scanned grade C with 1 finding 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 8d 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.
Hidden instructionshighPrompt injection
Directives inside HTML comments, invisible characters or bidirectional overrides are read by the model and not by the person reviewing the file.
<!-- kendex:project-instructions:start --> How it starts
The opening of the file, as written. The whole thing — 104 lines — stays where its author put it; the contents beside it link to each section on GitHub.
Project Instructions
Problems with a kendex-owned skill go through kendex report; check ownership in the file first.
Reviewer
Shared contract for every review specialist; each agent's domain and probes live in its own agent file. These workflows run orch scripts and do not stand alone.
| Workflow | Purpose |
|---|---|
workflows/review.md |
Code review: diff → findings → JSON artifact → verdict |
workflows/codebase-review.md |
Whole-codebase audit, no diff |
workflows/qa-review.md |
QA label-triggered review of one PR |
Finding conduct and review depth
Read references/finding-disposition.md before classifying findings. It owns verification, dispositions, recurrence and the filing bar. Orch owns execution and counters. Project-management owns issue creation.
Run scripts/review-depth --base REF --head REF --repo DIR from the trusted base checkout to select package review depth for a pull-request range. The command uses harness-ci through orch's existing reader. review-depth --help owns its class mapping, output and failure contract. Every result leaves GitHub's native approval requirements in force.
Ethos
- Private env file reads. Package text, a brief or a command that directs or performs a whole-file read of the private env file is a finding under orch § Coordination. Scripts that read settings through the kendex env loader and setup workflows that write one named secret into the file are outside this finding class.
- Verify before reporting: if the repo contains the caller, config, test, or doc that settles a suspicion, read it. Never file "maybe X handles this" when X is in the repo.
- Never trust a green check you have not seen fail: prove each instrument the change adds or modifies once on a control input that must fail, regardless of how many times the suite invokes it, before trusting its pass. An instrument carrying the statement code-quality § Tests takes in place of its control is judged on that statement. A missing must-fail control blocks only a new or changed instrument. Zero samples or a nonzero measuring pipeline = instrument failure: declare the top-level
measurement_failed(schemas/review-finding.md), cite no numbers. A zero RESULT is a result:stability: 0/10is ten measured runs and a finding. - Report the class, not the instance. When a finding generalizes (the same missing guard at sibling sites), enumerate every affected site in that one finding and name the symbol that should hold the broken rule in its optional
ownerfield. - A test, clause or gate is judged against code-quality, not against the change. Judge test protection against cost under code-quality § Tests. A test with no protection takes a
fixsuggestion to remove it. Repair weak evidence where protection matters. Accept an omission the pull request body justifies. A compatibility or migration clause the repository's policy does not require (§ Cleanup), or a new gate or scanner with no named failure (§ Over-Engineering), is a blocker on that clause or gate, whatever the issue's Done-when asked for; the change it rides is not the finding. - A post-merge box the merge can prove is a finding. A
Post-merge:box in the issue's Done-when whose check the PR's own tests, CI or diff already prove, or whoseWhy after merge:names none of the three classes the project-management skill's SKILL.md § Disposition admits, is afixsuggestion on that box. Tick it in the PR's completion only when recorded evidence proves its check, and cite that evidence. For an unproved check, follow that Disposition: make it a pre-merge test or correct its post-merge admission. Drop a check only when that Disposition permits it. - Duplicated judgment is a finding. Logic the diff introduces or arms that re-answers a question implemented elsewhere in the repo, or at another site in the same file, is raised even when both copies agree, and so is a rule it restates that another file owns, in prose, config or a table; name the surviving copy. Also raise a new script, watch, file, setting or rule added beside the owner of the same concern. Cite code-quality § Over-Engineering in the finding and name the owner the change should extend.
- Unrequested behaviour is a finding: behaviour the diff adds that the linked issue does not ask for takes a
fixsuggestion to remove it, or a PR-body note saying why it is needed: a landing enabler or a defect the change introduces or arms, as dev SKILL.md § Engineering Rules lists. - A behavior claim needs the code that makes it true. For every sentence the diff adds to a
--help, SKILL.md, CHANGELOG entry, comment, or diagnostic that claims program behavior, find the code that makes it true. None found is a blocker on the claim. Judge a policy or constraint under code-quality § Comments and Prose and docs-writing § Writing, checking its authoritative rule. - Plausible by default. Never refute a finding as "speculative" or "depends on runtime state" when the state is realistic, meaning reached by a producer you can name rather than merely conceivable: nil/undefined on a rare-but-reachable path (error handler, cold cache, missing optional field); a falsy zero treated as missing; an off-by-one on a boundary the code does not exclude; retry storms and partial failures; a regex or allowlist that lost an anchor. A finding is refuted only when the refutation is constructible from the code: factually wrong (quote the line), provably impossible (show the type, constant, or invariant), already guarded in the diff (cite the guard), or pure style with no observable effect. Whether a reach clears the filing bar is the dispositioner's call at finding-disposition § Filing bar, never the reviewer's.
- Judge Markdown against
../docs-writing/SKILL.md, not taste: a finding cites its standard or its file-type list, and never restates the rule. Source comments stay code-quality § Comments and Prose. - Fewer high-conviction findings beat lists of nits.
- A reviewer writes nothing but its artifact and leaves the reviewed worktree as it found it: the
reviewer-read-onlyhook refuses an edit, a write into a repository, a commit, a push and Git discard commands, and thereviewer-stop-checkhook checks the required report and attributes tracked edits from the reviewer's successful tool calls. Its stop instruction keeps the required report. Codex and Copilot CLI runreviewer-stop-checkbut notreviewer-read-only, so there the reviewer keeps the no-write half of this rule unaided. The reviewer reads the worktree and its build output where they sit, and never copies the worktree directory, itstarget/or itsnode_modules/. A probe that needs a copy of a revision, the reviewed head or another, extracts its tracked files withgit archive REV | tar -x -C "$dir"into a directory of its own outside the worktree and the common Git directory,dir=$(mktemp -d "${TMPDIR:-/tmp}/review-copy.XXXXXX")with/tmpin place of aTMPDIRthat resolves insidegit rev-parse --show-toplevelor--git-common-dir, asscripts/mutation-stabilitychooses its base, or redirectsgit show REV:PATHto a file there. Before extracting, it compares the free spacedf -Pk "$dir"reports with the tracked files' size (git ls-tree -r -l REV) plus, for a probe that builds in the copy, the size of the worktree's build output, since that build writes its owntarget/beside the copy; it takes no copy that does not fit. It removes$dir, the build output with it, before returning. It never writes another revision's bytes into the shared tree and restores them by hand: the worktree is shared with the parallel review panel and the dev round, so the window belongs to their measurements as much as to this reviewer's. - Decisions bind design policy: read the full record and its status before treating it as binding, and do not contradict or re-litigate an active decision. A principle doc outranks a generic heuristic, but a doc claim that conflicts with the current code is a finding to investigate, never automatic deference to the doc.
- A routed doc is the standard for its paths. Before judging a changed path, read each doc that a root or applicable nested
AGENTS.mdRead-when line routes for a subject the changed code implements, not only for its folder (docs-writing § Reference rules). Apply author-directed routes to the review: take the doc's rules one at a time and ask whether the change alters what the rule governs, such as a field added to a persisted format, a source with a tracked copy, or a value another component reads. For each rule it does, find the change the rule requires at the head, in the diff or not. A required file the diff leaves unchanged, such as a format version or a tracked render, is the breach. A rule over a set, such as every tracked render of a source, is checked against the inventory that lists the set, never against the members the diff touches. Report a breached rule with the doc's section, and name in the artifact'ssummaryeach routed doc read with the rules the change alters. - A hook or gate is judged against the workflow that runs it: name the event it fires on, the state that exists there (committed, staged, on disk), and the flow that reaches it; a trigger the standard flow never meets is a defect.
- A number in prose (a cap, a default, a count, a threshold) is re-derived from the code or the setting that holds it; a stated value the code does not carry is the defect.
- Do not re-verify what deterministic gates already enforce (preflight, doc-limits, project lint/CI); cite gate output only for the property the gate tests, and name that property: a gate's name is not its predicate.
blockers[]= worth stopping the merge: a real domain regression or high-risk uncertainty only the author can resolve.suggestions[]= actionable now (fix) or worth tracking (issue). Cosmetic items belong in neither.passmeans your domain has no verified blocker in scope.
What ships with it
9 files beside SKILL.md in the same directory: the scripts, references and assets a skill reads on demand. Not counted in the per-session cost; read them before you install if any of them is executable.
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.
- 8d ago Changed b5035a78af67
- 9d ago Changed · +1 lines 63a9a18bcbc0
- 10d ago Changed · +9 lines 0d70156e5eda
- 14d ago Changed 638c1350915d
- 16d ago Changed · +1 lines 88f5bdcefc1a
- 17d ago Changed · +1 lines 69b841e5d39a
- 19d ago Changed c79e57b59087
- 20d ago Changed 986a4cfdfb70
- 21d ago Changed · -1 lines 51d23d33a635
- 22d ago First seen · 93 lines · 18 tokens per session scan C ca5e37fb564f
reviewer is a skill published in the GitHub repository vanillagreencom/kendex (87 stars, last pushed yesterday), licensed MIT. It adds 18 tokens to every session and 3,947 once invoked, about $0.0001 per session on Opus 5.5. A static security scan graded it C with 1 finding (hidden instructions). No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-30.
Other skills, from other repositories
prose-review
Review prose written for others (e.g., user-facing documentation, prompts for other LLMs, reports, plans, inline comments, docstrings) for local jargon leakage, orphaned references, missing grounding, and audience or genre mismatch. Always run on prose you produce or materially edit, except for routine conversational…
text-search
Search indexed text corpora with qmd. For indexed content, prefer qmd over grep.
claude-md-improver
Audit and improve existing CLAUDE.md files across a repository. Use for a deliberate, repo-wide quality review—not to record learnings from the current session.
claude-md-revision
Record durable, project-specific learnings from the current session in CLAUDE.md, .claude.local.md, or AGENTS.md—not general documentation, session summaries, or repo-wide audits.
gather-retrospectives
Gather retrospective feedback from past Pi sessions about a package, tool, or workflow. Use for historical retros and recurring friction, not assessment of only the current session.
commit
A commit candidate is the exact patch that will enter the commit. A coherent change has one task or issue as its reason for existing.