| name | scaffold-check |
| description | Verify that everything this scaffold needs is installed at the right version (node, pnpm, git, uvx for the ast-grep MCP, fallow-mcp, optional claude CLI) and that `pnpm install` has been run. Renders a checklist with copy-pasteable install hints for whatever is missing. Read-only — never installs anything itself. |
| argument-hint | (no arguments) |
| disable-model-invocation | true |
| allowed-tools | Read, Glob, Bash(node scripts/scaffold-check.mjs) |
scaffold-check
Probes the local environment for everything this scaffold needs and reports back. The deterministic checks happen in scripts/scaffold-check.mjs; this skill renders the result as a human-readable checklist.
What it checks
| Tool | Why | Source of expected version |
|---|
node | runtime | package.json engines.node |
pnpm | package manager | package.json engines.pnpm |
git | version control | present on PATH |
uvx | runs the ast-grep MCP server (see .mcp.json) | present on PATH |
fallow-mcp | the fallow MCP server (see .mcp.json) | present on PATH |
claude | optional — needed to invoke skills like /version | present on PATH (advisory) |
| install | pnpm install has populated node_modules/ | filesystem |
Preflight
- Report: !
node scripts/scaffold-check.mjs
The script always exits 0 — a non-zero exit would conflate "missing tool" with "probe crashed". Read the JSON.
Steps
-
Parse the JSON. Top-level ok is true only when every required check is status: "ok". The claude CLI is advisory; ok ignores it.
-
Render a checklist. For each entry in checks, print one line:
✔ node v24.12.0 (expected >=24.0.0)
✔ pnpm 9.15.1 (expected >=9.0.0)
✔ git git version 2.45.0
✘ uvx missing — Install uv (provides `uvx`): curl -LsSf https://astral.sh/uv/install.sh | sh
✘ fallow-mcp missing — Install fallow CLI globally: pnpm add -g fallow
◦ claude missing (optional) — Install Claude Code: https://docs.claude.com/claude-code
✔ install node_modules + lockfile
Marks:
✔ for status: "ok"
✘ for missing, outdated, or unknown on a required check
◦ for the same statuses on an advisory check (i.e. required: false, currently only claude)
Use the hint field verbatim when rendering the install suggestion. Don't paraphrase — the hints are designed to be copy-pasteable.
-
Bottom line. If ok is true, end with one line:
✔ All required tools present. You can run `pnpm install && pnpm check`.
If ok is false, end with the list of missing/outdated required tools and the suggested next action:
✘ Install: uvx, fallow-mcp. Re-run /scaffold-check after.
-
Do not install anything. This skill is read-only. The user runs the install commands themselves.
When to use this skill
- Right after cloning, before running
pnpm install, to learn what's missing.
- Anytime
pnpm check fails in a way that smells like a missing external tool (e.g. fallow not found, ast-grep MCP not responding).
- The user asks "do I have everything I need?" or "what's missing?" in the context of this repo.
When NOT to use this skill
- The user is asking about runtime dependencies for their own application code. This skill only probes the scaffold's tooling.
- The user wants to actually install something. Tell them to copy the hint from the report and run it themselves.
Edge cases
engines.node or engines.pnpm missing or unparseable. Falls back to baked-in minimums (node >=24.0.0, pnpm >=9.0.0) — same as the scaffold's documented defaults.
uvx present but the ast-grep MCP server has never been fetched. This check only verifies uvx is on PATH; the first invocation of the MCP server downloads it on demand. If MCP fails at runtime, that's a separate diagnosis.
fallow-mcp binary present but fallow CLI of a different version. Out of scope; the probe verifies the MCP binary specifically (it's what .mcp.json references).
- Windows. The script uses
where instead of which on process.platform === 'win32'. Install hints assume POSIX shells; on Windows, translate accordingly.