agentic/code/frameworks/security-engineering/skills/npm-release-age-gate/SKILL.md
Configure and review npm min-release-age controls for JavaScript projects, including 7-day default gates, 10-day high-sensitivity profiles, npm version requirements, and safe override handling.
npx skillsauth add jmagly/aiwg npm-release-age-gateInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Use this skill when a user wants to slow dependency adoption after a
fresh npm publish, configure min-release-age, decide whether to use
npm or pnpm for the gate, or troubleshoot install failures caused by
newly published package versions.
For npm projects, commit this at the repo root:
min-release-age=7
Require npm 11.5+ on contributor machines and in any CI job that can change the lockfile:
npm install -g npm@^11.5
npm --version
For release-prep dependency churn, major version bumps, or highly sensitive projects, use a one-command high-sensitivity profile:
npm install --min-release-age=10
package-lock.json?
Keep npm and add .npmrc. Migration to pnpm is not required for the
threat model.minimumReleaseAge setting in pnpm-workspace.yaml or
.npmrc equivalent per pnpm's current docs.Avoid permanent bypasses. If a dependency must be adopted before the gate expires:
npm install --min-release-age=0 <package>
Require the commit message or PR body to state:
.npmrc at repo root.npm install, npm update, or lockfile
regeneration.--before; npm cannot use before and
min-release-age together.| Mistake | Fix |
|---|---|
| Setting the gate but leaving contributors on npm 10 | Document and enforce npm 11.5+ |
| Assuming npm ci updates the lockfile | The gate matters most when the lockfile is regenerated |
| Using --min-release-age=0 in CI permanently | Remove the bypass and document one-off exceptions |
| Migrating npm projects to pnpm just for this control | Keep npm unless pnpm has independent project value |
min-release-age: https://docs.npmjs.com/cli/v11/using-npm/config#min-release-agedata-ai
Report which research-corpus radar sidecars are overdue for refresh. Computes staleness (days since last refresh vs the cadence window) for every radar, sorted most-overdue-first. Runs via `aiwg corpus radar-status`.
data-ai
Aggregate research-corpus radar sidecars into a corpus or per-cluster freshness report — totals, overdue count, per-cluster / per-GRADE / per-trajectory breakdowns, an overdue table, and per-radar rationale snippets. Runs via `aiwg corpus radar-report`.
testing
Scaffold radar/freshness sidecars for research-corpus REFs. Pulls title/authors from the citation sidecar and GRADE from the analysis doc, defaults the refresh cadence from GRADE and the cluster from a corpus-local map, and stamps documentation/radar/REF-XXX-radar.md. Runs via `aiwg corpus radar-init`.
data-ai
Compute an entity's publication trajectory — per-year paper counts, topic drift, hot-streak detection (≥3 consecutive A-grade years), and career phase. Runs via `aiwg corpus profile-temporal`.