| name | project-scan |
| description | Auto-populate context/project.md by reading the current codebase |
| version | 0.1.0 |
| level | 2 |
| triggers | ["scan project","scan codebase","populate project context","/scan"] |
| context_files | [] |
| steps | [{"name":"Detect Stack","description":"Identify language, framework, and package manager from manifest files"},{"name":"Find Entry Points","description":"Locate main entry points — where execution begins"},{"name":"Map Key Modules","description":"Identify the top-level modules and their single-line purpose"},{"name":"Check Infrastructure","description":"Detect database, external services, Docker, CI configuration"},{"name":"Check Existing Docs","description":"Read README and any existing architecture docs for context"},{"name":"Write project.md","description":"Populate context/project.md with findings — replacing template placeholders"}] |
Project Scan Skill
Reads the current codebase and auto-populates context/project.md. Run once on setup, re-run when the project's structure changes significantly.
What Claude Gets Wrong Without This Skill
Without a scan, context/project.md stays as a template. Every skill that reads it gets nothing useful. The context layer is only as good as the data in it.
Detection Protocol
Stack Detection
Check for manifest files in order:
| File | Indicates |
|---|
package.json | Node.js — check dependencies for framework (next, express, fastapi via py) |
pyproject.toml / setup.py / requirements.txt | Python — check for FastAPI, Django, Flask, etc. |
go.mod | Go — check module name and key imports |
Cargo.toml | Rust |
pom.xml / build.gradle | Java/Kotlin |
Gemfile | Ruby |
composer.json | PHP |
*.csproj | .NET/C# |
Read the manifest. Extract: language, framework, key dependencies (non-obvious ones only — not lodash, not requests).
Entry Points
| Stack | Look For |
|---|
| Node.js | "main" in package.json, src/index.ts, app.ts, server.ts |
| Python | main.py, app.py, __main__.py, manage.py (Django) |
| Go | cmd/*/main.go, main.go |
| Rust | src/main.rs, src/lib.rs |
Read the entry point file. Note what it initializes.
Module Mapping