Run every knackpack reviewer that applies to one target together, then merge what they report into one triaged report: duplicates grouped under one ID with every source kept, severities reconciled, each serious merged finding checked once by the adjudicator, including whether its fix works, and every issue sorted into fix now, decision needed or won't fix, with how each fix would be verified. Report-only: it never edits the project's files, and it saves the report to a private temporary folder and gives the path. Use only when the user asks to run several or all of knackpack's reviewers together, or for one review by every reviewer, never automatically after a change; for a single reviewer, start that reviewer instead. It starts many agents, and on a large code base it can use more than a million tokens.
91%
Does it follow best practices?
Run evals on this skill
Adds up to 20 points to the overall score
Low
Low-risk findings worth noting
Run knackpack's reviewers side by side on one target, check their most serious findings once each, and turn their reports into one list of issues the developer can act on. You coordinate and report. You don't review the code yourself, and you don't fix it.
printenv TMPDIR once (use /tmp if it prints nothing) and use the folder claude-${CLAUDE_SESSION_ID} inside it, writing its full path literally in every later command. Create it with mkdir -p -m 700 <folder>, then check it with [ -d <folder> ] && [ ! -L <folder> ] && [ -O <folder> ] && chmod 700 <folder>; if the check fails, stop and tell the user. Save the report there as orchestrate-review.md, or orchestrate-review-2.md and so on when that name is taken, so a later run doesn't replace an earlier one. With intent tracking on, add the file to the record's Files line.Use the target the user named. Without one, the target is the current change: everything on the branch that its target branch doesn't have, plus uncommitted and untracked work, as each reviewer's protocol finds it. A repository with no commits, or a request about the whole code base, means every file. For a pull request, read its headRefOid with the forge's CLI and give every reviewer that exact revision.
Before starting anyone, note what git rev-parse HEAD and git status --porcelain | shasum print. Run them again after the last report arrives; if they changed, say in the report that the reviewers may have seen different states.
Start every reviewer that applies to the target, even when a change touches only one area, unless the user excludes one by name:
go.mod or *.go files in what it covers);pyproject.toml, setup.py, requirements*.txt or *.py files);Judge that from every file the target covers, the same target the reviewers get. For the current change, list the committed, staged and unstaged changes against the merge base with its target branch (git diff --no-ext-diff --no-textconv --name-only <merge-base>) and the untracked files (git ls-files --others --exclude-standard); a plain git diff --name-only shows only unstaged edits, so a committed branch would list nothing. For a pull request, use its files from the forge's CLI (gh pr view <n> --json files); for a code base, git ls-files. The adjudicator isn't one of these: you start it later, once per merged finding.
Before starting them, tell the user in one line which reviewers you are starting, which you skipped and why, and that the run can take half an hour or more and use a large number of tokens.
Each reviewer starts with nothing but its brief, so give each one the same facts and none of your opinions. Every brief has:
go version, python3 -I -S -V), the check commands the project documents, quoted from where it documents them, and environment limits such as no network. It saves each reviewer rediscovering them. Never include a suspected problem, an area you think is weak, or anything another reviewer reported: each review must stay independent.Start them all in one message, each with subagent_type: knackpack:<name>, without a model override, so they run at the same time.
When every report has arrived, read each one in full. Then build one list:
## Findings table (sed -n '/^## Findings table$/,/^## /p' <report>), plus its open risks and questions, which stay apart from findings. Prefix each ID with its reviewer so IDs stay distinct: ADV-F1, ARCH-F1, SEC-F1, SLOP-F1, DP-F1, GO-F1, PY-F1, UI-F1.M1, M2 and so on, and keep every source ID.Don't pass one reviewer's findings to another to ask "is this the same as yours?": that costs their independence and another run.
For every merged issue that is Critical or High, or that blocks, start knackpack:adjudicator once, however many reviewers reported it. You can start several at once. Give each:
Its verdict is evidence, not a ruling. An issue it refutes moves to Won't fix with its reason, unless a source's own reproduction shows where the refutation fails; say which. One that holds only if an assumption is true stays, with that assumption named. One it couldn't resolve keeps its sources' evidence. Record its answer about the fix separately: works, doesn't work, or untested.
Sort every merged issue into one of three groups:
Unproven concerns stay a separate list, each with the check that would settle it.
Save it as the rules above say, in this layout:
# Orchestrated review: <target>
## Decision
<Blocks the change or not, in one line, then the counts: fix now, decision needed, won't fix, unproven.>
## Target and reviewers
<Pinned revision and base; whether the repository changed during the run.>
| Reviewer | Verdict | Findings | Report |
<One row per reviewer started, and one line for each skipped, with why.>
## Fix now
## Decision needed
## Won't fix
## Unproven concerns
## Findings table
| ID | Severity | Blocks | Adjudication | Fix | Sources | Location | Finding |
## Coverage
<What each reviewer said it didn't check, and checks nobody ran.>
## Cost
<Each report's cost line as it gives it, the adjudicators' too, and the total; say which reports gave none.>Each issue under Fix now, Decision needed and Won't fix gives its ID, title, location, severity and the sources' grades when they differ, the evidence in a sentence or two with the report it comes from, the adjudication verdict, and the correction with whether it was tested. Adjudication is HOLDS, HOLDS ONLY IF, REFUTED, UNRESOLVED or not adjudicated; Fix is works, doesn't work or untested. Write \| for a | inside a cell.
Check every path:line you cite against the pinned revision, and correct or drop any that fails.
Reply with the report's path, whether anything blocks, the counts per group, and each decision needed in one line. Don't paste the report unless the user asks for it; when they ask for the full report, give it exactly as written. Apply no fix: which issues to fix, and when, is the user's call.
bezmoradi/knackpack
9fcf73c
If you maintain this skill, you can claim it as your own. Once claimed, you can manage eval scenarios, bundle related skills, attach documentation or rules, and ensure cross-agent compatibility.