Threat or treat review
Skill ventaquil/threat-or-treat-review/skill/threat-or-treat-review
Precision-first LLM code review as a scoring game β penalize false positives, reward verified bugs.
npx -y skills add ventaquil/threat-or-treat-review --skill threat-or-treat-reviewAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
One thing to look at
- 0 stars0 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
What its author says it does
Copied from the file, not written here
Precision-first code review and pre-publish audit, run as a scoring game (+1 per verified finding, -2 per false positive or hallucination, 0 for staying silent). Use whenever the user asks to review code, audit a repo, do a pre-publish / pre-merge / pre-release check, hunt bugs, or "check before I ship" β even if they don't mention scoring. Drives an adversarial-verification pass so every reported issue is cited to a line and either tool-confirmed or source-verified; checks source, docs, markdown, CI, and release metadata, not just code.
SKILL.md
6.6 KB, ~1.5k tokens by cl100k_base, as published. Nobody here has run it
π¬ Threat or Treat β precision-first review & audit
Run the review as a scoring game whose only goal is accurate, verifiable findings.
Scoring
- +1 ("treat" π¬) per genuine problem you report that survives verification.
- -2 ("threat" π») per wrong report: a false positive (the code is actually fine), a misread, or a hallucination (citing code, a line, an API, tool output, or behaviour that does not exist).
- 0 for staying silent on anything you cannot verify β park it as an unscored question instead.
A wrong finding costs twice what a correct one earns, so the goal is not the longest list β it is the list with zero bad entries.
This is a check, not an action
Do not modify, format, commit, push, or publish anything. Only inspect and report. If asked to "check before publish", treat publishing as forbidden in this run.
Method (this is how the -2 is enforced)
- Scope sweep. Read everything in scope, not just source: implementation, docs / rustdoc / docstrings, README and other markdown, CI workflows, build manifests and lockfiles, changelog and release metadata.
- Run what you can. If you can execute commands, run the project's own gates and report a clean bill of what passes β formatter; linter on all targets + all features and the default feature set; tests (default and all-features); doc build with warnings as errors; and a publish dry-run for a release. Mark anything a tool proves tool-confirmed; anything you establish by reading source-verified. Never invent tool output. If you cannot run tools, say so and mark everything source-verified.
- Adversarially verify every candidate. For each candidate finding, actively try to refute it: re-read the exact lines, check whether a guard / handler exists elsewhere, run a command to confirm. Discard anything that does not survive. Keep a note of what you refuted.
- Completeness sweep. Before finalizing, deliberately check the categories that are easy to miss:
- sync / async parity (one path enforces a guard the other skips)
- error & edge paths (interrupted reads / EINTR, TTY / terminal input, symlinks and cycles, empty input, zero or oversized values)
- docs-vs-code contracts (a doc promises an error or behaviour the code cannot produce)
- CI coverage (does it actually run the tests? does it build / lint the default config, not only all-features?)
- release / publish metadata, if shipping: version not already on the registry; SemVer matches the changelog's breaking changes; MSRV badge matches the manifest's rust-version; install snippets pin the new version; changelog
[Unreleased]promoted to the release; license year.
- De-duplicate overlapping hits into distinct issues; say how many duplicates you merged.
Output
-
Summary: one line of counts β candidates found -> survived verification -> refuted -> added by the completeness sweep.
-
Clean bill (if you ran tools): the gates that pass, each ticked.
-
Findings, grouped by severity, highest first. Use only the tiers that apply:
- Blocker β ship / build / publish will fail as-is
- High β real defect, independent of release timing
- Medium
- Low
- Release-prep β required at publish, deferred until now (if applicable)
- Nits β style / optional, clearly marked as the author's call
Each finding:
[tier] one-line title β path:line, then what is wrong and why (1-3 sentences referencing the exact code), a concrete fix, and an evidence tag(tool-confirmed | source-verified). -
Informational / non-regression: pre-existing behaviour worth a doc note but not a bug.
-
Refuted (correctly): the strongest candidate(s) you considered and rejected, with the reason. Showing this proves the -2 was applied.
-
Candy tally π¬: total verified findings with a breakdown by tier (e.g. "π¨ 1 blocker, π΄ 2 high, π 4 medium, π‘ 4 low, π 4 release-prep, π΅ 5 nits"), and β only if true β the line "β no hallucinations: every item cited to a line and tool-confirmed or source-verified." If any -2 penalties apply, show them as "π -2 (false positive: β¦)".
-
Fix plan: offer to apply fixes grouped into logical commits (e.g. release-prep as one, correctness / CI as another). Change nothing until the user says so.
Rules
- Evidence is mandatory: every finding cites
path:lineor an exact quoted snippet. No citation, no report. - Review only what you can see; never assume the contents of files you were not given β say so instead of guessing.
- Precision over coverage. A short list of certain issues beats a long list of maybes.
- No filler: no praise padding, no restating the obvious, no AI slop. Every line earns its place.
- Keep scored issues separate from unscored questions.
Tuning
-2is the precision dial β raise it to suppress borderline findings, lower toward-1for more coverage.- Narrow scope on request ("security only", "ignore style", "diff only").
- For a quick review, skip the clean-bill / release sections and just produce a short tiered list + tally; for a pre-publish audit, run the whole protocol.
Result card
After the review, offer to generate a shareable result card (PNG). The skill ships gen-result.py for this.
Install once:
pip install playwright && playwright install chromium
Run with a JSON file you write out:
python gen-result.py --input result.json [output.png]
JSON schema (all fields optional):
{
"title": "Pre-publish self-review",
"subtitle": "my-repo Β· v1.2.0 Β· clean bill",
"net_score": "+3",
"net_score_sub": "3 treats Β· 0 threats",
"findings": "2 High Β· 1 Nit",
"false_positives": "0 false positives",
"verification": ["12 candidates", "3 survived Β· 9 refuted"]
}
Or pass fields directly as flags β any field can be omitted:
python gen-result.py --net-score "+3" --findings "2 High Β· 1 Nit" output.png
When the user asks for a result card: write result.json from the review tally, run the script, and report the output path.