Audits all dependencies across the repo's 6 independent packages (server, client, reviewer-core, e2e, evals, mcp-server) — no shared workspace. Distinguishes external npm dependencies from internal cross-package dependencies (tsconfig path aliases, not workspace:*), draws a Mermaid schematic of dependency relationships, breaks down installed size per package, and prioritizes findings into P0/P1/P2/Info tiers with concrete, file-specific recommendations. Read-only: reports and advises, never runs pnpm remove/update itself. Invoke explicitly: /dependency-checker, 'check our dependencies', 'audit deps', 'why is node_modules so big', 'draw the dependency graph'.
How this skill is triggered — by the user, by Claude, or both
Slash command
/engineering-paved-path:dependency-checkerThis skill is limited to the following tools:
The summary Claude sees in its skill listing — used to decide when to auto-load this skill
A read-only audit of every dependency in the repo — what depends on what, how
A read-only audit of every dependency in the repo — what depends on what, how
big it is, and what to fix first. This skill reports and recommends only.
It never runs pnpm remove, pnpm update, pnpm add, or edits any
package.json — those are follow-up actions for the developer to run
themselves after reviewing the report.
node_modules.node_modules so big"./dependency-checker, "check our dependencies", "audit
deps", "draw the dependency graph".pnpm audit or the security skill — this skill
covers size, drift, unused deps, and cross-package coupling, not CVE
scanning. Mention pnpm audit results if already known, but don't treat
this skill as a security scanner.This repo is not a monorepo workspace — six independent packages, each
with its own package.json and pnpm-lock.yaml:
| Folder | Package | Notes |
|---|---|---|
server/ | @devdigest/api | Fastify API, port 3001 |
client/ | @devdigest/web | Next.js web app, port 3000 |
reviewer-core/ | @devdigest/reviewer-core | Review pipeline, hermetic |
e2e/ | @devdigest/e2e | Browser e2e, devDependencies only |
evals/ | @devdigest/evals | Skill/agent eval harness |
mcp-server/ | @devdigest/mcp-server | MCP server |
Always list which of these packages were actually analyzed in the report's own Scope section — don't silently skip any without saying so.
For each package in scope:
dependencies and devDependencies from its package.json (or use
data already supplied in the conversation — see Working With Pre-Gathered
Data below).du -sh <pkg>/node_modules/<dep>, or in
bulk: du -sh <pkg>/node_modules/* | sort -rh | head -20.grep -rl "from ['\"]<dep>" <pkg>/src (also check require(, and note that a CLI/build-only tool like
tsx or typescript legitimately has no src/ import — don't flag those).Hard rule: this repo has no pnpm workspace. Never describe cross-package
sharing as workspace:*, a "workspace package", or "monorepo package". Say
"path alias" or "cross-package import" instead.
Internal dependencies come in two forms — find both, and report them separately from npm dependencies:
@devdigest/shared (tsconfig alias into
server/src/vendor/shared), @devdigest/ui (alias into
client/src/vendor/ui). These are the sanctioned way to share code.server/src/ importing ../../../reviewer-core/src/pipeline.js by
relative path instead of through reviewer-core's public entry point.
Search with grep -rn "from ['\"]\.\./\.\./" <pkg>/src and inspect hits
that resolve outside <pkg>/.Any relative import that reaches into another package's internals,
bypassing its public entry point, is P0 — it silently couples two packages
that have independent lockfiles and independent versions of their shared
dependencies (e.g. two different resolved zod versions), so a change in one
can break the other with no version constraint to catch it.
server/src/vendor/ and client/src/vendor/ are do-not-touch zones (see root
CLAUDE.md). Flag misuse of what's imported from them — never propose editing
vendor code itself as the fix.
du -sh <pkg>/node_modules for each package in scope.du -sh <pkg>/node_modules/* | sort -rh | head -N.Use exactly these four labels, always uppercase, no synonyms:
pnpm audit if already known); version drift
on a dependency that crosses a package boundary as a shared contract (e.g.
zod, since it validates data passed between packages).package.json but never imported under
src/; non-security version drift on a dependency shared across packages
that isn't a cross-boundary contract; a dependency whose installed size is
disproportionate to how little of it is actually used.typescript, vitest,
tsx, @types/node differing by patch/minor across packages); missing or
inconsistent engines / package-manager version pinning.next, playwright) —
flagged for awareness only, no action implied.Every finding must name the exact package plus the exact dependency or file — never generic advice like "consider optimizing dependencies". If a fix means removing or upgrading something, phrase it as a recommendation for the developer to confirm and run themselves, not as something already done.
Produce one flowchart per report:
@devdigest/shared or
relative import → pipeline.js)..claude/skills/mermaid-diagram/SKILL.md for styling conventions
(node shapes, direction, labeling) rather than improvising a new style.Minimal template to fill in:
flowchart LR
server["server\n@devdigest/api"]
client["client\n@devdigest/web"]
reviewerCore["reviewer-core\n@devdigest/reviewer-core"]
server -- "@devdigest/shared alias" --> server
client -- "@devdigest/shared alias (same contract)" --> server
server -. "zod drift: 3.24.1 vs 3.25.0" .-> reviewerCore
Fill in this exact skeleton — do not improvise a different structure:
## Dependency Check: <repo/branch>
### Scope
<packages analyzed, and any explicitly excluded with a reason>
### Dependency Graph
```mermaid
flowchart LR
...
| Package | Dependency | Installed Size |
|---|---|---|
| ... | ... | ... |
<package>/<file or package.json> —
---
## Working With Pre-Gathered Data
If the data this skill needs (package.json contents, `du -sh` sizes, grep
results for imports/usage) is already present in the conversation, use it
directly to produce the report. Do not ask for tool access, do not re-fetch
data that's already been given, and do not stall waiting for a live repo —
treat supplied data as ground truth for the report.
---
## Anti-Patterns
- Calling a path-alias or relative cross-package import a `workspace:*` link,
or calling any of these six folders a "workspace package" — this repo has
no pnpm workspace.
- A finding with no named package/dependency/file — "consider optimizing
dependencies" is not a finding.
- Presenting a removal or upgrade as already performed instead of a
recommendation to confirm and run.
- Skipping the size table in favor of a prose size summary.
- Silently dropping `e2e`, `evals`, or `mcp-server` from scope without saying
so in the Scope section.
- Proposing an edit inside `server/src/vendor/` or `client/src/vendor/` as the
fix — these are do-not-touch zones; flag the importer instead.
- Actually running `pnpm remove` / `pnpm update` / `pnpm add`, or editing a
`package.json` — this skill has no `Write`/`Edit` tool access by design.
- Asking for tool access or re-fetching data that the conversation already
supplied.
npx claudepluginhub vadimpoltoratskiy/dev-digest-ai-marketplace --plugin engineering-paved-pathGuides completion of development work by verifying tests, detecting environment, and presenting structured options for merge, PR, or cleanup.
Enforces test-driven development: write failing test first, then minimal code to pass. Use when implementing features or bugfixes.
Guides creation and editing of skills using test-driven development with pressure scenarios and subagents to verify agent compliance.