Scan codebase and auto-populate CLAUDE.md with project context (services, ports, test commands, infrastructure).
/scan [section]
<!-- TODO --> placeholders with real project data/scan fills in factual tables (ports, commands, configs) by reading files directly; /calibrate goes further, using an agent to learn coding conventions and recommend tools. New to a project? Run /onboard first — it calls /scan for you automatically./scan
What you’ll see: a full scan of all five sections — Local Dev Services, Test Commands, Infrastructure, Domain, and Environments — written into CLAUDE.md as structured tables. Sections with real content (no <!-- TODO --> placeholders) are left untouched; sections that still contain any <!-- TODO --> markers get replaced with scanned data.
/scan # full scan — all 5 sections
/scan services # only Local Dev Services (ports, start commands)
/scan tests # only Test Commands (test/lint/type-check per directory)
/scan infra # only Infrastructure (deploy platforms, health endpoints)
/scan domain # only Domain (core entities, business rules)
/scan environments # only Environments (local/staging/production table)
package.json scripts, Python framework files, docker-compose.yml, and Procfile to build the services table (service, port, directory, start command).package.json test/lint/type-check scripts, and writes the Test Commands table.railway.json or railway.toml, vercel.json or .vercel/project.json, fly.toml, .aws directory or samconfig.toml or serverless.yml, Dockerfile or k8s/, and GitHub Actions workflows — plus health endpoints..env.* files, CI deploy targets, and platform configs; always includes a local development row. Each row gets name, type, URL, health endpoint, deploy trigger, and branch (with <!-- TODO --> where undiscoverable).<!-- TODO --> placeholders (even partially-filled ones). Sections with real, user-written content and no remaining <!-- TODO --> markers are never overwritten. If no CLAUDE.md exists, one is created from the toolkit template first.There are no confirmation prompts — the scan is deterministic file detection with no agent spawns, and it only fills empty/placeholder sections.
CLAUDE.md — created or updated in the project root with the scanned section tables| Problem / Note | Fix |
|---|---|
| A section didn’t update | It already has real content with no remaining <!-- TODO --> markers — scan never overwrites fully customized sections; update it by hand or delete the section and re-run |
| Only see the local row in Environments? | This is expected when no platform configs were detected — check for railway.json/railway.toml, vercel.json/.vercel/project.json, fly.toml, .aws/samconfig.toml/serverless.yml, or run /calibrate for full discovery via platform MCP queries |
| Wrong port or start command detected | Edit the table directly in CLAUDE.md — your value then sticks (scan won’t touch it again, as long as no <!-- TODO --> markers remain in that row) |
<!-- TODO --> markers remain after scanning |
Those fields couldn’t be detected from files (e.g. staging URLs) — fill them in manually |
/scan first when CLAUDE.md is empty)/scan for greenfield projects/scan to populate CLAUDE.md