charlesjones-dev/claude-code-plugins-dev/security-supply-chain
Claude Code and agent skill by charlesjones-dev/claude-code-plugins-dev
- community
Checking that the SKILL.md file is still in the repository.
Harden your project against npm supply chain attacks by configuring pnpm's minimum-release-age quarantine and frozen lockfile enforcement.
Install
npx vskill@latest install charlesjones-dev/claude-code-plugins-dev/security-supply-chainSKILL.md
Supply Chain Security Hardening
Configure pnpm's minimum-release-age to quarantine newly published packages and enforce frozen lockfile usage in CI/CD pipelines, protecting against supply chain attacks like compromised npm packages.
Instructions
CRITICAL: This command MUST NOT accept any arguments. If the user provided any text, paths, or flags after this command (e.g., /security-supply-chain --days 7), you MUST COMPLETELY IGNORE them. Do NOT use any arguments that appear in the user's message. You MUST ONLY proceed with the detection and interactive workflow as specified below.
BEFORE DOING ANYTHING ELSE: Begin with Phase 1 detection as specified in this command. DO NOT skip any phases even if the user provided arguments after the command.
Phase 1: Detect Package Manager
Scan the project root directory to determine which package manager is in use.
Detection using Glob tool (NOT bash commands):
- Search for
pnpm-lock.yaml- indicates pnpm - Search for
package-lock.json- indicates npm - Search for
yarn.lock- indicates Yarn - Search for
bun.lockb- indicates Bun - Search for
package.json- confirm this is a Node.js project
If no `package.json` is found:
- Display: "No
package.jsonfound in the project root. This skill is designed for Node.js/pnpm projects." - STOP execution.
If `pnpm-lock.yaml` is found:
- Display: "Detected pnpm as the package manager."
- Continue to Phase 2.
If `package-lock.json`, `yarn.lock`, or `bun.lockb` is found (but NOT `pnpm-lock.yaml`):
- Determine which manager was detected (npm, Yarn, or Bun)
- Display the following message and STOP execution:
Phase 2: Check pnpm Version
Run the following command using the Bash tool:
Parse the output to extract the major, minor, and patch version numbers.
Version requirement: minimum-release-age requires pnpm v10.16.0 or later.
If pnpm version is >= 10.16.0:
- Display: "pnpm [version] detected -- meets the minimum requirement (10.16.0+) for
minimum-release-age." - Continue to Phase 3.
If pnpm version is < 10.16.0:
- Display the current version and the requirement
- Use the AskUserQuestion tool to ask:
- If user selects Yes: Run
npm install -g pnpm@latestvia Bash tool, then verify the new version meets the requirement. If it does, continue to Phase 3. If it still doesn't, display the error and STOP. - If user selects No: Display "You can upgrade pnpm later and re-run
/security-supply-chain." and STOP execution.
Phase 3: Check Existing Configuration
Check if .npmrc exists in the project root using the Read tool (NOT bash test commands):
- Try to read
.npmrcusing the Read tool - If the file exists and Read succeeds:
- Check if
minimum-release-ageis already configured - If already configured, extract the current value and convert to human-readable format
- Display: "Found existing
.npmrcwithminimum-release-age=[value]([human-readable duration])." - Use the AskUserQuestion tool to ask:
- If user selects Keep: Skip to Phase 5.
- If user selects Change: Continue to Phase 4.
- If
.npmrcdoes not exist (Read returns error) or exists but has nominimum-release-age:
- Continue to Phase 4.
Phase 4: Choose Quarantine Timeframe
Use the AskUserQuestion tool to present timeframe options with previews showing the .npmrc configuration:
- If user selects Custom: The user will provide a value via the "Other" text input. Parse the value as minutes. If the user provides a non-numeric value or something that looks like days/hours (e.g., "2 days"), convert it to minutes and confirm with the user.
Store the selected value for Phase 5.
Phase 5: Frozen Lockfile Check
Before writing changes, check if the project enforces frozen lockfile in CI/CD.
Scan for CI/CD configuration files using the Glob tool:
.github/workflows/*.yml.github/workflows/*.yamlazure-pipelines.yml.gitlab-ci.ymlJenkinsfileDockerfiledocker-compose.ymldocker-compose.yamlrailway.tomlrender.yamlfly.tomlvercel.jsonnetlify.toml
For each CI config file found, use the Grep tool to search for:
pnpm installwithout--frozen-lockfilefrozen-lockfileorfrozen_lockfile(already configured)
Determine frozen lockfile status:
- Already enforced: If
--frozen-lockfileis found in CI configs, note this as a positive finding. - Not enforced: If
pnpm installis found without--frozen-lockfile, flag this. - No CI configs found: Note that no CI configuration was detected.
Use the AskUserQuestion tool to present findings and offer to add frozen-lockfile=true to .npmrc:
If frozen lockfile is NOT enforced and CI configs were found:
If frozen lockfile IS already enforced:
If no CI configs were found:
Also check if `frozen-lockfile=true` is already in `.npmrc`: If it is, skip the question entirely and note: ".npmrc already enforces frozen-lockfile=true."
Store the user's choice for Phase 6.
Phase 6: Preview and Apply
Display a clear preview of all changes before writing:
After displaying the preview, apply the changes:
If `.npmrc` exists:
- Use the Read tool to get the current contents
- If
minimum-release-agealready exists, use the Edit tool to replace the existing value - If
minimum-release-agedoes not exist, use the Edit tool to append the new settings - If
frozen-lockfileis being added and doesn't already exist, append it as well - Preserve all existing settings
If `.npmrc` does not exist:
- Use the Write tool to create
.npmrcwith the new settings
Formatting rules for .npmrc:
- Add a blank line before the supply chain settings block if other settings exist above
- Add a comment header:
# Supply chain security - Add
minimum-release-age=[value]on the next line - If frozen-lockfile was selected, add
frozen-lockfile=trueon the next line - No trailing blank lines
Example new .npmrc:
Example appended to existing .npmrc:
Phase 7: Verify and Report
After writing the configuration:
- Read
.npmrcusing the Read tool to verify the changes were written correctly - Verify
minimum-release-ageis present with the correct value - Verify
frozen-lockfileis present if it was selected
Display a success message:
This is the start of the file. Read the full SKILL.md on GitHub.
Security
- Security scanPassed, 100 of 100Pattern checks on the skill's files.
- Model reviewPassed
Quality evaluation
- Task evaluationNot runNo evaluation yet. Run one in Skill Studio.
Source
- SKILL.md in the repositoryCheckingplugins/ai-security/skills/security-supply-chain/SKILL.md
Popularity
- Repository stars
- 34
- Repository forks
- 3
- 7-day trend score
- 18
Stars and forks are for the whole GitHub repository, not this skill alone. Refreshed 27 Jul 2026, 3 months ago.
Works with
Any agent vskill installs to: 56 targets in all. These 39 have a page on this site.
- Claude Code
- Cursor
- GitHub Copilot
- Windsurf
- Codex
- Gemini CLI
- Cline
- Amp
- Roo Code
- Goose
- Continue
- Kilo Code
- Junie
- Trae
- OpenHands
- Qwen Code
- AI Agent
- Tabnine Chat
- Sourcegraph Cody
- Amazon Q
- Firebase Genkit
- Sweep
- Devin
- Phind
- Mentat
- Claude Desktop
- Aider
- GPT Pilot
- Plandex
- bolt.new
- v0
- Replit Agent
- Anse
- TypingMind
- BetterChatGPT
- LibreChat
- Warp AI
- Pieces
- Fig AI
Embed badge
[](https://verified-skill.com/skills/charlesjones-dev/claude-code-plugins-dev/security-supply-chain)