agentsclimarketplace

Nitpicker

Skill ivuorinen/skills/skills/nitpicker

My assortment of Claude Code skills

Install
npx -y skills add ivuorinen/skills --skill nitpicker

Assembled from the repository path, not quoted from the project. Check it against their README if it does not work.

2 things to look at

  • no licenseNo license file was found in the repository. Code published without one is not open source by default, so using it at work is a question for whoever answers licensing questions where you are.
  • 1 stars1 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

Hostile audit toolkit: one entry point dispatching specialist commands — adversarial review, security, tests, docs, architecture, performance, dependencies, error handling, CI, commits, migrations, observability, API contracts, a11y, privacy, config, resource leaks, i18n, concurrency, unwired code, PR review and review-comment implementation. Use when auditing or reviewing a repository, PR, or any quality dimension of a codebase — "audit this", "review the whole codebase", "find all problems", "exhaustive review", "/nitpicker <command>", a release gate check, or any specific audit ask (security scan, find race conditions, audit the tests, review the PR, fix the CR comments).

The file declares its own license as MIT. That is the author’s claim about this one file, and it is not the same thing as the license GitHub reports for the repository, which is listed with the other numbers below.

SKILL.md

10.9 KB, ~2.6k tokens by cl100k_base, as published. Nobody here has run it

Nitpicker

Adversarial, exhaustive code review and auditing. Assumes the code is incorrect until proven otherwise. One skill, many commands.

Dispatch

The text following the invocation is parsed as:

/nitpicker [command] [extra instructions]
  • The first word names the command. Match it against the tables below — canonical names and aliases both resolve. Unknown first word or no text at all → run the default audit command and treat all text as extra instructions.
  • Everything after the command is extra instructions constraining that run (scope, focus, thresholds). The modifiers inline and changed-files may appear anywhere in it (see commands/_conventions.md).
  • Agents without argument substitution (Copilot, pi) pass the same text after the skill invocation; parse it identically.

Execution order, always:

  1. Read commands/_conventions.md — it binds every command (severity levels, findings store protocol, rules).
  2. Read commands/<command>.md for the resolved command.
  3. Execute it with the extra instructions applied.

Never chain commands on your own; run exactly the one resolved command (commands may themselves direct you to run another first — follow that).

Commands

Grouped by category. Aliases in the purpose text (mostly the 1.x skill names) remain legitimate invocations; the dispatcher resolves them to the same command file (e.g. test-auditorcommands/tests.md, loopholescommands/agent-loopholes.md).

Review and fixing

CommandPurpose
auditDefault. Exhaustive whole-repository review across code, tests, docs, config; optional fixes (alias: full)
reviewHostile code review of a diff or file set; assumes bugs exist and hunts them (alias: adversarial-reviewer)
prCopy-paste-ready markdown review for a GitHub PR (alias: pr-reviewer)
crFetch unresolved PR review comments, evaluate, implement valid ones one at a time (alias: cr-implementer)
complexityForce the laziest working solution; audit for over-engineering (alias: complexity-hunter)
unwiredFind unwired and incomplete implementations; wire, merge into a wired twin, or remove — each per-finding user-confirmed
dead-codeFind unreferenced or unreachable code — unused exports, dead branches, orphaned files — with reachability-proven safe deletion

Planning

CommandPurpose
planTurn a change request into an implementation plan hardened by the audit lenses; writes a plan doc and stops until the user approves implementation
execute-planExecute an approved plan task by task, verifying each task as it lands, stopping when blocked instead of guessing; the sequel to plan (adapted from obra/superpowers)

Learning

CommandPurpose
teachTeach a skill or concept across sessions; builds a persistent teaching workspace under docs/lessons/ (mission, resources, lessons, learning records). Writes lessons, not findings (adapted from mattpocock/skills)

Security and data

CommandPurpose
securityRun available security scanners, consolidate results into findings (alias: security-auditor)
privacyPersonal data stored/transmitted without the control its class requires (alias: data-privacy-auditor)
configUndocumented env vars, unsafe prod defaults, config drift, committed secrets (alias: config-auditor)
iacInfrastructure-as-code misconfig: root containers, open ingress, public stores, overbroad IAM
prompt-safetyLLM-integration safety: prompt injection, model-output-to-sink, excessive tool agency, secrets in context

Runtime behavior

CommandPurpose
perfHunt N+1 queries, O(n²)+ hotspots, sync-blocking-in-async, unbounded growth (alias: perf-auditor)
concurrencyData races, TOCTOU, deadlock ordering, unsafe publication (alias: concurrency-auditor)
errorsFind swallowed exceptions, fail-open defaults, masking fallbacks (alias: silent-failure-hunter)
leaksAcquire-without-guaranteed-release: handles, pools, listeners, tasks (alias: resource-leak-auditor)
reliabilityResilience under failure: non-idempotent retries, missing timeouts, retry storms, crash-window duplication, dropped work
cacheCache correctness: stale reads, key collisions, unbounded growth, stampede, serialization drift

Structure and contracts

CommandPurpose
archAudit architectural violations against detected or declared patterns (alias: arch-auditor)
arch-profileDetect architectural patterns; writes docs/audit/arch-profile.md (alias: arch-detector)
contractDeclared API surface vs implementation vs declared semver bump (alias: api-contract-auditor)
depsDependency health beyond CVEs: unused, phantom, duplicate, unmaintained, plus the supply-chain execution surface — install scripts, dependency-confusion, typosquats, integrity (alias: dep-auditor)
licenseLicense compliance: project license, dep compatibility, copyleft contamination, attribution
migrationsAudit DB schema/data migrations for production safety (alias: migration-auditor)

Quality surfaces

CommandPurpose
testsAudit the test suite itself: tautological tests, over-mocking, coverage holes (alias: test-auditor)
typesStatic-typing soundness: suppressed errors, any-escapes, unsound casts, lax strictness
docsVerify documentation accuracy against the codebase (alias: doc-auditor)
contributingAudit CONTRIBUTING.md against the repo's real tooling; offer to scaffold one from actual conventions when absent
ciAudit CI/CD pipeline definitions: unpinned actions, injection, token scope (alias: ci-auditor)
commitsAudit commit-message discipline against the actual diffs (alias: commit-auditor)
observabilityAudit logs, metrics, traces, alerts: dark paths, PII, unfireable alerts (alias: observability-auditor)
a11yAccessibility audit of the UI layer against WCAG 2.2 AA (alias: a11y-auditor)
i18nLocalization audit against the declared locale scope (alias: i18n-auditor)

Coding-agent enforcement

CommandPurpose
agent-loopholesAudit the agent enforcement surface (rules, hooks, settings) for bypasses (aliases: loopholes, loophole-hunter)
agent-hooksAudit hook coverage against the project's evidence base (aliases: hooks, hooks-enforcer)
agent-rulesAudit .claude/rules/ quality; suggest new rules from conventions (aliases: rules, claude-rules-auditor)

Meta

CommandPurpose
triageSelector, not auditor: scan the repo and emit a ranked run-plan of which commands to run, each justified by a cited repo signal; files nothing, runs nothing
reverifyRe-verify open findings against current code; resolve the proven-fixed and proven-invalid, keep still-live open, flag the unverifiable; files no new findings, changes no code
baselineSnapshot open findings as accepted; gate fails only on new ones
release-gateFail if open findings at or above a threshold exist (default: High)
helpPrint this command listing (alias: list)

Internal commands

Dispatched like any command but not part of the public listing — help prints only the ## Commands section above.

CommandPurpose
x-findings-migratorMigrate legacy 1.x docs/audit/*-findings.md files into the findings store; requires explicit per-run user consent, even in autonomous/goal mode

Each command's full behavior lives in its commands/<command>.md, loaded per the execution order above — audit (the default), release-gate, and baseline included. This router only dispatches; it never restates a command's flow.

Bundled tools

ToolUsed by
scripts/findings.pyevery file-writing command (findings store CLI)
scripts/fetch-pr-comments.pycr
scripts/process-sarif.pysecurity
scripts/check-rules-anatomy.pyagent-rules, agent-loopholes
scripts/mcp_server.pythe bundled stdio MCP server (see below)
scripts/skill_catalog.pymcp_server.py — skill/command enumeration

All bundled tools are stdlib-only and run with plain python3 <path> — no uv or package installs required on the host. In Claude Code the skill directory is ${CLAUDE_SKILL_DIR}; other agents resolve the path relative to this file.

MCP server

Installing this plugin registers a stdio MCP server (nitpicker) from the mcpServers block in .claude-plugin/plugin.json (plugin scope, resolved via ${CLAUDE_PLUGIN_ROOT}); this repo additionally registers the same server for project scope from .mcp.json. It is stdlib-only Python 3.11+ (scripts/mcp_server.py), starts automatically, and exposes 10 tools:

Every tool name carries the np_ prefix, so a nitpicker tool stays recognizable wherever a name appears without its server qualifier.

ScopeTools
Plugin skills (introspection)np_list_skills, np_read_skill, np_read_command, np_list_commands
Findings — readnp_list_findings, np_show_finding, np_findings_index, np_validate_store
Findings — mutatenp_new_finding, np_resolve_finding

Skill tools read the plugin's own bundled skills. Findings tools act on the audited project's store — pass project_dir, or the server falls back to CLAUDE_PROJECT_DIR then the working directory's repo root. project_dir may only narrow that root, never escape it.

When these tools are available, commands prefer them over scripts/findings.py for every operation both cover; _conventions.md holds the mapping and the CLI-only exceptions. The preference is never a dependency — the server is Claude-native, so in Copilot, pi, or CI the CLI is the only interface and is fully sufficient.

The mutate tools run without the interactive consent prompts of the /nitpicker command flow: git is the safety net — every change is a reviewable, revertible working-tree edit and nothing is pushed. The server is Claude-native and not portable to Copilot/pi.

What ships with it: 55 files

633.1 KB alongside SKILL.md, 6 of them executable

15 more files not listed here. See all 55 in the repository.

Keep looking

Skills are one crate of 327,132. Ordering is by how many stacks a row turns up in, so the top of any crate is what has actually been picked rather than what has the most stars.