dependency-review
Decide whether to add a proposed dependency before it is added. Do not install
anything or modify project files while using this skill.
Activate when
- A new runtime or development dependency is proposed
- An existing dependency upgrade would pull new transitive packages
- A failing build suggests adding a package to resolve it
Do not activate when
- The package is already a project dependency and no version changes
- The task is a code change with no new dependency -> use
implement-minimal
- The task is a failing test unrelated to dependencies -> use
test-and-debug
Required inputs
- The exact package name and, if known, the version or range
- The problem the dependency is meant to solve
- Whether it is a runtime or development dependency
Low-resource policy
Read the first of these that exists, then follow it:
${CLAUDE_PROJECT_DIR}/.claude/shared/LOW_RESOURCE.md
$HOME/.claude/shared/LOW_RESOURCE.md
If neither exists, apply this fallback: run one expensive command at a time,
prefer the narrowest validation, disable watch mode, reuse existing
environments, and run full validation only at a milestone boundary. Do not
scan the whole filesystem to locate the policy.
Context-efficiency policy
Read the first of these that exists, then follow it:
${CLAUDE_PROJECT_DIR}/.claude/shared/CONTEXT_EFFICIENCY.md
$HOME/.claude/shared/CONTEXT_EFFICIENCY.md
If neither exists, apply this fallback: select files before reading; use
targeted searches and bounded ranges; do not preload references; do not reread
unchanged files; finish one atomic increment and stop; create a compact handoff
before context is exhausted.
Facts that must not be assumed
- The package manager and lockfile in use
- That the package is actively maintained
- That the license is compatible with public release
- The size of the transitive dependency tree
Preflight
- Identify the ecosystem and manifest ->
references/ecosystem-review.md
- Read the existing manifest to see current dependencies and conventions
- Determine whether a current dependency or platform API already solves it
Workflow
- State the exact problem the dependency would solve
- Check whether the standard library or platform API is sufficient
- Check whether an existing project dependency already solves it
- Estimate the local code avoided versus the code introduced
- Assess the package per ecosystem signals ->
references/ecosystem-review.md
- Assess the low-resource impact ->
references/low-resource-impact.md
- Confirm license compatibility for public release
- Weigh maintenance activity and supply-chain exposure
- Reach exactly one decision
- Produce the record using
templates/dependency-decision.md
- Stop; installation happens later under
implement-minimal if approved
Evaluation criteria
- The exact problem being solved
- Whether the standard library or platform API is sufficient
- Whether an existing project dependency already solves it
- Approximate amount of local code avoided
- Runtime cost
- Installation and build cost
- Transitive dependency impact ->
references/ecosystem-review.md
- Maintenance activity and release recency
- License compatibility for public release
- Security and supply-chain exposure
- Effect on low-resource development ->
references/low-resource-impact.md
- Effect on bundle or container size
Rules
- Prefer platform APIs, existing dependencies, and small local functions
- Do not reimplement cryptography, wallet security, authentication protocols,
or mature parsers merely to avoid a dependency
- Do not install the dependency as part of this review
- Do not modify project files as part of this review
- Do not run a command that downloads the package to inspect it
Decision branches
- Standard library or an existing dependency suffices -> do not add
- The package is sound, licensed, and maintained, and it avoids substantial
correct-by-construction code -> add
- Maintenance, license, or transitive impact is unclear ->
defer pending evidence and name the evidence needed
Stop conditions
- License compatibility cannot be confirmed
- The package or its transitive tree cannot be inspected without installing
- The decision requires human review (see below)
Human review boundaries
- Any dependency touching cryptography, wallets, authentication, or key storage
- A copyleft or unclear license on a package intended for public release
- A package with an unknown or unverifiable maintainer or provenance
Final report
Produce the record in the exact section order of
templates/dependency-decision.md, ending
with exactly one decision: add, do not add, or
defer pending evidence. Then stop.
1---2name: dependency-review3description: Evaluate whether to add a new runtime or development dependency to a public open-source project before adding it. Use whenever a new package is proposed. Weighs standard-library alternatives, cost, transitive impact, maintenance, license, supply-chain risk, and low-resource effect, then decides add, do not add, or defer. Does not install anything.4---56# dependency-review78Decide whether to add a proposed dependency before it is added. Do not install9anything or modify project files while using this skill.1011## Activate when1213- A new runtime or development dependency is proposed14- An existing dependency upgrade would pull new transitive packages15- A failing build suggests adding a package to resolve it1617## Do not activate when1819- The package is already a project dependency and no version changes20- The task is a code change with no new dependency -> use `implement-minimal`21- The task is a failing test unrelated to dependencies -> use `test-and-debug`2223## Required inputs2425- The exact package name and, if known, the version or range26- The problem the dependency is meant to solve27- Whether it is a runtime or development dependency2829## Low-resource policy3031Read the first of these that exists, then follow it:3233- `${CLAUDE_PROJECT_DIR}/.claude/shared/LOW_RESOURCE.md`34- `$HOME/.claude/shared/LOW_RESOURCE.md`3536If neither exists, apply this fallback: run one expensive command at a time,37prefer the narrowest validation, disable watch mode, reuse existing38environments, and run full validation only at a milestone boundary. Do not39scan the whole filesystem to locate the policy.4041## Context-efficiency policy4243Read the first of these that exists, then follow it:4445- `${CLAUDE_PROJECT_DIR}/.claude/shared/CONTEXT_EFFICIENCY.md`46- `$HOME/.claude/shared/CONTEXT_EFFICIENCY.md`4748If neither exists, apply this fallback: select files before reading; use49targeted searches and bounded ranges; do not preload references; do not reread50unchanged files; finish one atomic increment and stop; create a compact handoff51before context is exhausted.5253## Facts that must not be assumed5455- The package manager and lockfile in use56- That the package is actively maintained57- That the license is compatible with public release58- The size of the transitive dependency tree5960## Preflight61621. Identify the ecosystem and manifest ->63 [references/ecosystem-review.md](references/ecosystem-review.md)642. Read the existing manifest to see current dependencies and conventions653. Determine whether a current dependency or platform API already solves it6667## Workflow68691. State the exact problem the dependency would solve702. Check whether the standard library or platform API is sufficient713. Check whether an existing project dependency already solves it724. Estimate the local code avoided versus the code introduced735. Assess the package per ecosystem signals ->74 [references/ecosystem-review.md](references/ecosystem-review.md)756. Assess the low-resource impact ->76 [references/low-resource-impact.md](references/low-resource-impact.md)777. Confirm license compatibility for public release788. Weigh maintenance activity and supply-chain exposure799. Reach exactly one decision8010. Produce the record using81 [templates/dependency-decision.md](templates/dependency-decision.md)8211. Stop; installation happens later under `implement-minimal` if approved8384## Evaluation criteria8586- The exact problem being solved87- Whether the standard library or platform API is sufficient88- Whether an existing project dependency already solves it89- Approximate amount of local code avoided90- Runtime cost91- Installation and build cost92- Transitive dependency impact ->93 [references/ecosystem-review.md](references/ecosystem-review.md)94- Maintenance activity and release recency95- License compatibility for public release96- Security and supply-chain exposure97- Effect on low-resource development ->98 [references/low-resource-impact.md](references/low-resource-impact.md)99- Effect on bundle or container size100101## Rules102103- Prefer platform APIs, existing dependencies, and small local functions104- Do not reimplement cryptography, wallet security, authentication protocols,105 or mature parsers merely to avoid a dependency106- Do not install the dependency as part of this review107- Do not modify project files as part of this review108- Do not run a command that downloads the package to inspect it109110## Decision branches111112- Standard library or an existing dependency suffices -> **do not add**113- The package is sound, licensed, and maintained, and it avoids substantial114 correct-by-construction code -> **add**115- Maintenance, license, or transitive impact is unclear ->116 **defer pending evidence** and name the evidence needed117118## Stop conditions119120- License compatibility cannot be confirmed121- The package or its transitive tree cannot be inspected without installing122- The decision requires human review (see below)123124## Human review boundaries125126- Any dependency touching cryptography, wallets, authentication, or key storage127- A copyleft or unclear license on a package intended for public release128- A package with an unknown or unverifiable maintainer or provenance129130## Final report131132Produce the record in the exact section order of133[templates/dependency-decision.md](templates/dependency-decision.md), ending134with exactly one decision: **add**, **do not add**, or135**defer pending evidence**. Then stop.