deadeye-coder
Lean-first coding persona (YAGNI, stdlib-first, shortest diff). Levels: spotter, marksman, sniper.
Four-lens self-review (over-engineering, correctness, performance, security) of the working diff, or the whole repo with --repo.
$ npx -y skills add deepaksinghcs14/deadeye-cc --skill deadeye-review --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
/deadeye-reviewContext preview
The summary Claude sees to decide when to auto-load this skill.
Four-lens self-review (over-engineering, correctness, performance, security) of the working diff, or the whole repo with --repo.
name: deadeye-review description: Four-lens self-review (over-engineering, correctness, performance, security) of the working diff, or the whole repo with --repo. license: MIT argument-hint: "[--repo]"
<!-- deadeye-review: canonical rubric; edit internal/prreview/review.md, the skill and every host rendering are generated from it -->
Review code through four lenses — over-engineering, correctness, performance, security — the same rubric `/deadeye-pr` runs on a whole pull request, scoped instead to your working diff or the whole repo. This is the local, pre-PR self-review: catch what would otherwise wait for a PR (or a bot) to find. For a real GitHub PR, use `/deadeye-pr`. For a deeper, dependency-audit-backed security-only pass, use `/deadeye-guard`.
Two scopes:
worst-first across all four lenses. See "Whole-repo mode" below.
Get the diff with `git diff` (or `git diff --staged` if the user says staged, or `git diff <ref>` for a named base). Read the changed hunks **plus enough surrounding context to judge a trust boundary or a caller contract** — "is this input validated" and "does this break a caller" both need the code around the hunk, not just the `+` lines.
not substitute a different scope.
Before tagging `yagni:`/`delete:`, or claiming an `authz`/nil/sanitizer check is MISSING, grep for implementers/callers/guards OUTSIDE the diff — an "interface with one impl" whose second impl lives in a test file, or a guard that lives one call down, is a false positive. Report only what you confirmed.
Before claiming a check is MISSING — a sanitizer, an authz guard, a nil-check — grep OUTSIDE the diff and follow the value into the callee: the real guard often lives one call down. An `authz`/bypass claim needs a concrete input that reaches the sink, or drop it; one wrong finding erodes trust in all of them.
**Every finding carries its proof.** Append a `proof:` clause naming the concrete thing in THIS repo that makes the finding true — the caller you traced, the grep that came back empty, the auditor line, the test that fails. A finding you cannot prove from the code in front of you is a guess; drop it. Precision is the product: one finding that's true beats ten maybes, and every hosted reviewer drowns in the maybes — that's the gap you win on.
**Run the repo's own checks and fuse them in.** Run what the project ships — `go vet`, `tsc --noEmit`, the linter, the tests the diff touches — and let their output confirm or kill a FUNCTIONAL finding. Mark it `(confirmed)` when a tool or failing test agrees, else `likely`. You can run the code; a diff-only bot can't.
A `deadeye: <shortcut>. ceiling: <limit>. upgrade: <trigger>.` comment over a hunk is a recorded DECISION, not a finding — someone already chose to ship that corner with eyes open. Count those separately as accepted, don't flag them. Never flag the one runnable check coder mode leaves behind for deletion — lean code without its check is unfinished.
Precision is the floor. Five habits separate a real review from a plausible one:
The tags classify what a trace found; they are not the search. For each value the diff creates, re-derives, or newly trusts: name who chooses it, follow it to every consumer (indexed, parsed, compiled, matched, loaded, allocated), and at each ask what the worst chooser sends — absent, empty, the wrong type that still passes the check, the costliest to process. What breaks there is the finding, on the standard line with its tag. Four lenses are four questions at each consumer of ONE trace, not four passes; a clean footer names the value traced and the consumer that survived — "no known sink in the diff" earns nothing.
One line per finding, ranked most-severe first within each lens:
Each finding is one comment — write
Claude Code plugin that fits the model, effort, and context to each task — fewer tokens, same quality. Deterministic policy kernel in the hooks; every number it reports is measured, not estimated.
Lean-first coding persona (YAGNI, stdlib-first, shortest diff). Levels: spotter, marksman, sniper.
View and change deadeye's settings from chat -- the conversational settings picker.
Security review of the current diff -- full OWASP-mapped coverage (Top 10:2025, API Security Top 10 2023, LLM Top 10:2025), injection through auth, config, and…
PR review across four lenses -- over-engineering, correctness, performance, security -- printed locally, opt-in to post.