project-surface-scanlisted
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