name: repo-healthcheck-node description: Verify a Node.js/TypeScript repo's development environment is correctly set up. Checks Node.js version, pnpm version, dependency installation, and build success. Use when onboarding, troubleshooting CI failures, or verifying a fresh clone. disable-model-invocation: false argument-hint: '[--fix]' allowed-tools: Bash, Grep, Glob, Read scope: - node - maintenance
Repo Healthcheck — Node.js
Verify that a Node.js/TypeScript repository's development environment is
correctly set up. Reads AGENTS.md and CLAUDE.md (if present) for
repo-specific version requirements and build commands, then runs each check and
reports a clear pass/fail summary.
Arguments
--fix(optional): Attempt to auto-fix failures where possible (e.g. runpnpm installif dependencies are missing). Without this flag, the skill only reports — it does not modify the environment.
Process
1. Read Repo Configuration
Read the following sources in priority order (later sources override earlier):
AGENTS.md— repo-specific commands and version requirementsCLAUDE.md(if present) — may contain additional or overriding requirements.nvmrcor.node-version(if present) — authoritative Node.js versionpackage.jsonenginesfield — authoritative pnpm/node version constraints
Look for:
- Expected Node.js version — check
.nvmrc/.node-versionfirst, thenpackage.jsonengines.node, then patterns inAGENTS.md/CLAUDE.mdlikenode 24,node: 24.13, or explicit version statements. - Expected pnpm version — check
package.jsonengines.pnpmfirst, then patterns inAGENTS.md/CLAUDE.mdlikepnpm 10,pnpm: 10.29.3, or explicit version statements. - Install command — default
pnpm install. Override if the docs specify a different command (e.g.pnpm install --frozen-lockfile). - Build command — default
pnpm build. Override if the docs specify something different (e.g.pnpm build:packages,pnpm run compile).
If no version or command overrides are found, use the defaults and note that expectations came from defaults, not from repo configuration.
2. Run Checks
Run each check in order. Capture the result (pass/fail), the actual value, and the required value for the summary table.
Critical checks are Node.js and pnpm version. If either critical check fails, you MUST skip the dependent checks (install and build) and note the reason in the output.
Check 1 — Node.js Version
node --version
- If an expected version was found: compare using prefix matching (see Guidelines). Pass if they match; fail with actual vs expected.
- If no expected version was found: report the installed version as informational (no pass/fail judgment).
- Fix command (if
--fixand failing):nvm install(reads from.nvmrcautomatically, if present).
Check 2 — pnpm Version
pnpm --version
- If pnpm is not installed: MUST skip checks 3 and 4, report as missing.
- If an expected version was found: compare using prefix matching (see Guidelines). Pass if they match; fail with actual vs expected.
- If no expected version was found: report the installed version as informational (no pass/fail judgment).
- Fix command (if
--fixand failing):npm install -g pnpm@latest.
Check 3 — Dependency Installation
Only run if checks 1 and 2 did not produce critical failures.
Use the install command from step 1 (default: pnpm install).
pnpm install 2>&1
- Pass if exit code is 0.
- Fail with the last 20 lines of output if exit code is non-zero.
- If
--fixwas passed and the default frozen-lockfile variant failed, retry without--frozen-lockfileand report whether the retry succeeded.
Check 4 — Build
Only run if check 3 passed.
Run the build command from step 1 (default: pnpm build).
- Pass if exit code is 0.
- Fail with the last 30 lines of output if exit code is non-zero.
3. Report Results
Output a summary table showing actual version vs required version for each check:
## 🏥 Repo Healthcheck — Node.js
| Check | Status |
| ----------------- | -------------------------- |
| Node.js >= 24.0.0 | ✅ v24.13.0 |
| pnpm >= 10.0.0 | ✅ v10.29.3 |
| pnpm install | ✅ |
| Build | ❌ Exit code 1 (see below) |
Status format:
- Pass with version:
✅ vX.X.X - Pass without version:
✅ - Fail with version mismatch:
❌ vX.X.X (requires >= Y.Y) - Fail with error:
❌ <short reason> - Skipped:
⏭ Skipped (Node.js check failed) - Informational (no expected version):
ℹ vX.X.X
Follow the table with the full output for any failed checks so the user can diagnose the issue.
Issues Found
If any checks failed, add an Issues Found section with copy-pasteable fix commands:
### ❌ Issues Found
- **Node.js**: Run `nvm install` to install the required version
- **Build**: Run `pnpm build` and review the output above
Success
If ALL checks pass, add a success message with next steps:
### ✅ All Systems Go!
Environment is ready. Start the dev server with:
\`\`\`bash
pnpm start
\`\`\`
Guidelines
- You MUST read
AGENTS.mdandCLAUDE.mdbefore running any checks — repo configuration takes precedence over defaults. - You MUST always show the full results table even if some checks fail.
- You MUST skip install and build checks if a critical check (Node.js or pnpm) fails, since those checks depend on correct tooling.
- You SHOULD provide clear, copy-pasteable fix commands for any failures.
- Version comparison is prefix-based: if the expected version is
24, match any24.x.y; if the expected version is24.13, match any24.13.y. - Do not fail a version check when no expected version is found — report informational only.
- Only use
--fixbehaviour when the flag is explicitly passed. - Keep output concise: show only the last N lines of command output on failure, not the full log.
RFC 2119 Key Words
- MUST / REQUIRED — Absolute requirement
- MUST NOT — Absolute prohibition
- SHOULD / RECOMMENDED — Should do unless there is a valid reason not to
- MAY / OPTIONAL — Truly optional