nih-audit
Scan a codebase for custom code that duplicates what open-source libraries already do, then recommend which libraries to adopt.
Skill by paulnsorensen
Install
Works with Claude Code, Claude apps, Codex, Cursor, Gemini CLI, GitHub Copilot, VS Code, OpenCode, Goose, Windsurf. Read the repository before you give any tool access to your data.
npx agentmarket install skill/paulnsorensen-nih-audit
Asks which of your tools to add it to (Claude Code, Codex, Cursor, VS Code, Windsurf, Gemini CLI, Claude Desktop) and shows the change first. See https://agentmart.dev/cli.
Get the weekly diff
The weekly diff: one email a week with new agent tools, notable updates and grade changes, plus security alerts for tools you follow. Double opt-in, one-click unsubscribe.
About
Use cases: security
Reviews
Write a reviewNo reviews yet. Installed it? Reviews come from verified installers only. How reviews work
Permissions
What this skill can do and what it asks for, from its SKILL.md. Checked Oct 25, 2026.
- Tools
- No tools found
- Secrets
- None asked for
- Install scripts
- None found
Network hosts it talks to 1
codeload.github.com· found in install command
Files it touches
~/.claude/skills/nih-audit
What's inside
- Skill name
nih-audit- Description
- Scan a codebase for custom code that duplicates what open-source libraries already do, then recommend which libraries to adopt. Detects hand-rolled utility functions, custom retry logic, manual validation, DIY date handling, home-grown argument parsers, and other reinvented wheels. Cross-checks against installed dependencies and open specs. Returns scored migration recommendations with effort estimates. Use when the user mentions reinventing the wheel, asks if there is a library for something they built, wants a build-vs-buy audit, asks "should we just use lodash for this", or wants to find dependency opportunities.
- License
- MIT
- Compatibility
- Requires tilth MCP for AST-aware search. Library discovery delegates to /research; if /research is unavailable, the audit reports candidates without library recommendations.
- Metadata
- owner: cheese-flow · category: review
- Instructions
- 233 lines in SKILL.md · view on GitHub
Agent Skills spec issues
- allowed-tools: must be a space-separated string
Files (3)
- SKILL.md
- categories.md · references/
- finding-template.md · references/
SKILL.md (first lines)
# NIH Audit — Not Invented Here
Find code reinventing the wheel. Recommend libraries. Score with evidence.
`/nih-audit [scope]` — `scope` defaults to repo root.
## Phase 0 — Manifest discovery (no LLM)
Find dependency manifests anywhere in scope, excluding `node_modules/`,
`vendor/`, `.git/`, build artefacts:
- `package.json`, `Cargo.toml`, `pyproject.toml`, `go.mod`, `Gemfile`,
`requirements.txt`, `composer.json`, `build.gradle`, `pom.xml`, `mix.exs`.
Extract dependency names per ecosystem:
| Manifest | Extract |
|----------|---------|
| `package.json` | `jq -r '(.dependencies + .devDependencies) // {} \| keys[]'` |
| `Cargo.toml` | parse `[dependencies]` table |
| `pyproject.toml` | `[project.dependencies]` or `[tool.poetry.dependencies]` |
| `go.mod` | `require` block module paths |
| `requirements.txt` | line-by-line package names |
Build a `depManifest`:
```json
{
"workspaces": [
{ "root": ".", "ecosystem": "node", "deps": ["express", "zod"] }
],
"primaryLanguages": ["typescript"]
}
```
If no manifest is found anywhere in scope, abort with a clear message —
without an installed-deps list there is nothing to cross-reference.
## Phase 1 — Structural NIH scan
Spawn the `nih-scanner` sub-agent:
```
inputs:
languages = primaryLanguages from Phase 0
scope = $ARGUMENTS or repo root
depManifest = JSON from Phase 0
slug = <derived slug>
```
The scanner returns a JSON candidate list inline plus a one-paragraph
summary. Parse the candidates from the response. If 0 candidates, report
clean and stop.
## Phase 2 — Library discovery (parallel, /research)
Group candidates by `category` (RETRY, UUID, VALIDATION, DATE, DEBOUNCE,
CLONE, ARGPARSE, STRING, HTTP, SERIALIZATION, ERROR, CRYPTO, SECURITY,
FORMAT, COMPARE).
For each category, dispatch `/research` with a focused question shape:
```
/research "best <category> library for <language>; must be MIT/Apache/BSD;
list weekly downloads or crates.io downloads, GitHub stars, last commit
date, contributor count; flag if functionality is in the standard library"
```
Cap: max 5 parallel research dispatches. If `/research` is unavailable,
emit candidates with `recommendation: null` and a note.
For each library returned, capture:
- name + latest version
- license (flag GPL; prefer MIT/Apache-2.0/BSD)
- weekly/monthly download count
- GitHub stars, last commit date, contributor count
- whether it is stdlib, micro-library, or framework
- one-sentence API example showing replacement shape
Drop recommendations whose name is already in `depManifest`. Stdlib
alternatives (no new dep) are the highest-value class — keep them
prioritized.
See `references/categories.md` for the canonical category-to-library map.
## Phase 3 — Spec and intent alignment
Find spec directories within scope: `**/specs/*.md`, `.cheese/specs/*.md`.
Filter out `node_modules/`, `vendor/`, `.git/`.
For each candidate, look for signals that the NIH choice was deliberate:
- **In specs**: keywords like "intentionally", "we chose to build", "build
vs buy", "don't use", "avoid dependency on" near the candidate's concept.
- **In the candidate file**: comments like `intentionally`, `deliberately`,
`we chose`, `NOTE:`, `DECISION:`, `instead of`, `rather than`.
Apply scoring modifiers:
| Signal | Modifier |
|--------|----------|
| Spec explicitly chose NIH | -30 |
| Code comment explains NIH choice | -20 |
| Library covers planned spec features | +10 |
## Phase 4a — Score
For every candidate with a library recommendation, run the 4-step
confidence chain:
### Step 1 — classify finding type
| Type | Base | Cap |
|------|------|-----|
| `REPLACE_WITH_STDLIB` | 55 | 100 |
| `REPLACE_WITH_MICRO_LIB` | 45 | 95 |
| `REPLACE_WITH_FRAMEWORK` | 35 | 85 |
| `EXTRACT_TO_EXISTING_DEP` | 50 | 95 |From paulnsorensen/cheese-flow, MIT.
More from paulnsorensen/cheese-flow
- 0.497score
cheez-search
paulnsorensen
AST-aware code search using tilth MCP.
SkillCFreshness: C★ 1Claude Code +9 - 0.495score
age
paulnsorensen
Staff Engineer code review orchestrator.
SkillCFreshness: C★ 1Claude Code +9 - 0.495score
cleanup
paulnsorensen
Mechanical apply of /age's hash-anchored sidecar fixes via tilth_edit.
SkillCFreshness: C★ 1Claude Code +9 - 0.495score
cure
paulnsorensen
Finish what /age started.
SkillCFreshness: C★ 1Claude Code +9 - 0.494score
mold
paulnsorensen
Iterative thinking amplifier for fuzzy ideas.
SkillCFreshness: C★ 1Claude Code +9 - 0.490score
milknado-execute
paulnsorensen
Use the Milknado MCP tools to pick and execute the next ready node from the Mikado graph, apply file changes, and run quality gates.
SkillCFreshness: C★ 1Claude Code +9 - 0.490score
research
paulnsorensen
Multi-source research orchestrator that routes questions across Context7 library docs, Tavily web research, codebase analysis, and GitHub examples, then…
SkillCFreshness: C★ 1Claude Code +9 - 0.437score
merge-resolve
paulnsorensen
Resolve merge conflicts, rebase conflicts, and cherry-pick failures using mergiraf (AST-aware structural merge), git rerere, and kdiff3.
SkillDFreshness: D★ 1Claude Code +9 - 0.432score
cheez-write
paulnsorensen
Hash-anchored file editing using tilth MCP.
SkillDFreshness: D★ 1Claude Code +9 - 0.432score
gh
paulnsorensen
Complete GitHub tasks using the gh CLI.
SkillDFreshness: D★ 1Claude Code +9 - 0.432score
cheez-read
paulnsorensen
Smart code reading using tilth MCP.
SkillDFreshness: D★ 1Claude Code +9 - 0.425score
milknado-plan
paulnsorensen
Use the Milknado MCP tools to decompose a goal into a Mikado-style change graph and produce a token-budgeted batch plan.
SkillDFreshness: D★ 1Claude Code +9
Signals
- Stars
- 1
- Forks
- 1
- Open issues
- 25
- Last commit (this folder)
- May 2, 2026 (6 months ago)
From GitHub (fetched Oct 24, 2026).
Details
- License
- MIT
- Repository
- github.com/paulnsorensen/cheese-flow
- First seen
- Oct 24, 2026
- Last checked
- Oct 24, 2026
- Source
- GitHubgithub-graphql
More from paulnsorensen
- 0.603score
chezmoi
paulnsorensen
Guides dotfile management with chezmoi when the user says "set up dotfiles", "manage my dotfiles", "bootstrap a new machine", "chezmoi", "encrypt my SSH key…
SkillAFreshness: A★ 2Claude Code +9 - 0.603score
bin-doctor
paulnsorensen
Audit and repair installed binaries so each tool has one install path, a clean cache, and a current pin, across mise, Homebrew, cargo, uv, npm, pnpm, bun…
SkillAFreshness: A★ 2Claude Code +9 - 0.603score
build-optimize
paulnsorensen
Optimize local build, test, and check commands with measured wall-time evidence.
SkillAFreshness: A★ 2Claude Code +9 - 0.600score
ci-optimize
paulnsorensen
Optimize GitHub Actions workflow wait time with measured evidence.
SkillAFreshness: A★ 2Claude Code +9 - 0.598score
cheese-board-loop
paulnsorensen
Runs the cheese-board workflow and asks the user each question it raises.
SkillAFreshness: A★ 2Claude Code +9 - 0.592score
skillz
paulnsorensen
Add, improve, audit, wedge, or autoimprove a skill.
SkillAFreshness: A★ 1Claude Code +9
Cite this page
nih-audit skill. Agent Mart. https://agentmart.dev/skills/paulnsorensen-nih-audit (last updated 2026-10-24)