← ClaudeAtlas

project-surface-scanlisted

Scan project root for file tree, dominant languages, and LOC estimate. Produces structured baseline context for Stage 2 LLM synthesis during bootstrap. Respects .gitignore and standard exclusions. Outputs per-directory file counts, ranked language list, size class, and observability summary.
Fr-e-d/GAAI-framework · ★ 147 · AI & Automation · score 82
Install: claude install-skill Fr-e-d/GAAI-framework
# Project Surface Scan ## Purpose / When to Activate Activate: - As Stage 1 of the `/gaai:bootstrap` workflow (before LLM synthesis) - When the bootstrap orchestrator needs quantitative project baseline - When re-running bootstrap after major structural changes Produces `surface_scan_result` — a structured object consumed by Stage 2 LLM synthesis. --- ## Exclusions (always skip) ``` node_modules/ .git/ dist/ build/ .next/ .nuxt/ out/ .cache/ coverage/ .turbo/ .wrangler/ __pycache__/ .venv/ venv/ target/ vendor/ *.lock *.log ``` Additionally: respect any `.gitignore` present at the project root. Use the `Glob` tool with explicit exclusion patterns — do NOT use `find` or `rg` (permission-error-safe tools only). --- ## Process ### Step 1 — Timed scan start Record wall-clock start time before any file operations: ``` scan_start_ms = Date.now() # conceptual — note the start time ``` Log: `[project-surface-scan] scan started at {ISO timestamp}` ### Step 2 — File tree walk Use the `Glob` tool with pattern `**/*` from the project root. Apply exclusion filter: skip any path segment matching the exclusion list above. Build per-directory count map: ``` dir_counts: { "<directory>": <file_count> } ``` Aggregate at depth-1 and depth-2 only (to avoid noise from deep nesting). If a directory has > 500 files, record `"<dir>": ">500"` and do not recurse further. **Permission errors:** if the Glob tool returns an error for a path, log the