Codebase Exploration
$ARGUMENTS
Explore and understand a codebase structure.
Project context
- Config files: !
find . -maxdepth 2 -type f -name "*.json" -o -name "*.toml" -o -name "*.yaml" -o -name "*.yml" 2>/dev/null | head -20
Usage
/explore [path]
What This Command Does
- Maps project structure
- Identifies technology stack
- Finds key files and patterns
- Reports architecture overview
Output Format
## Codebase Analysis Report
### Project Type
- **Language**: [TypeScript/Python/PHP/etc.]
- **Framework**: [Next.js/FastAPI/Laravel/etc.]
- **Package Manager**: [npm/pnpm/pip/composer]
### Directory Structure
project/
├── src/ # Source code
├── tests/ # Test files
├── config/ # Configuration
└── ...
### Key Files
| File | Purpose |
|------|---------|
| `src/index.ts` | Entry point |
| `src/api/` | API routes |
### Dependencies
- **Runtime**: [list]
- **Dev**: [list]
### Patterns Detected
- [Pattern 1]
- [Pattern 2]
### Entry Points
- [Entry 1]
- [Entry 2]
Technology Detection
| Marker |
Technology |
package.json |
Node.js |
tsconfig.json |
TypeScript |
next.config.* |
Next.js |
nuxt.config.* |
Nuxt |
pyproject.toml |
Python |
composer.json |
PHP |
pubspec.yaml |
Flutter/Dart |
Cargo.toml |
Rust |
go.mod |
Go |
When to Use
- Starting work on unfamiliar codebase
- Before planning major changes
- Understanding dependencies
- Finding specific code patterns
READ-ONLY
This skill ONLY reads and analyzes.
It does NOT write or modify any files.
Visual Output
For an interactive HTML tree visualization of the codebase:
python3 ${CLAUDE_SKILL_DIR}/scripts/visualize.py .
This generates codebase-map.html with collapsible directories, file sizes, and type-colored indicators.
KB Integration
smart_query("codebase analysis: {technology}")
hybrid_search_kb("project structure {framework}")
Rules
- MUST use
Glob and Grep before Read — scan for shape before opening files
- MUST deliver a map of the codebase (entry points, layers, module boundaries), not a file listing — a tree without interpretation is noise
- NEVER read every file sequentially; target reads via grep patterns and filename globs
- NEVER modify any file — this is a read-only skill
- CRITICAL: when the repo contains generated code (
node_modules, vendor/, dist/, build/), exclude it from scans or the signal drowns in generated noise
- MANDATORY: summarize the stack once at the top (language, framework, package manager, test runner) before diving into structure
Gotchas
find . and ls -R ignore .gitignore by default and include node_modules, vendor/, .venv/, target/. Use git ls-files or fd / rg for a git-aware listing, or explicitly prune.
package.json says "type": "module" → ESM; absence → CommonJS. Mixing them without noticing produces "Cannot use import statement outside a module" errors later; call out the setting in the report.
- Frameworks with file-based routing (Next.js, Nuxt, SvelteKit) treat the
app/ or pages/ tree as the router. A directory listing alone does not reveal routes — the framework convention does. Name the framework first, then the routes.
pyproject.toml can declare multiple project layouts (src/, flat, namespace packages). "Where is the main code" is not obvious without reading [tool.setuptools.packages] or [tool.poetry.packages].
- Large monorepos use workspaces (
pnpm-workspace.yaml, nx.json, turbo.json) with apps and packages. Treating the root as the project conceals the actual component boundaries — surface the workspace topology first.
When NOT to Use
- To explain a specific module's design — use
/explain
- To find a specific identifier or symbol — use
Grep directly or /research-mastery
- To audit architecture for deepening candidates — use
/architecture-audit
- To scaffold a new project — use
/app-builder
- When the user already knows the codebase — skip the overview and jump to the concrete task
1---2name: explore3description: "Explores codebase structure, stack, and architecture. Triggers: explore codebase, project structure, stack overview, architecture map."4user-invocable: true5effort: medium6argument-hint: "[path or question]"7allowed-tools: Read, Grep, Glob8---910# Codebase Exploration1112$ARGUMENTS1314Explore and understand a codebase structure.1516## Project context1718- Config files: !`find . -maxdepth 2 -type f -name "*.json" -o -name "*.toml" -o -name "*.yaml" -o -name "*.yml" 2>/dev/null | head -20`1920## Usage2122```23/explore [path]24```2526## What This Command Does27281. **Maps** project structure292. **Identifies** technology stack303. **Finds** key files and patterns314. **Reports** architecture overview3233## Output Format3435```markdown36## Codebase Analysis Report3738### Project Type39- **Language**: [TypeScript/Python/PHP/etc.]40- **Framework**: [Next.js/FastAPI/Laravel/etc.]41- **Package Manager**: [npm/pnpm/pip/composer]4243### Directory Structure44```45project/46├── src/ # Source code47├── tests/ # Test files48├── config/ # Configuration49└── ...50```5152### Key Files53| File | Purpose |54|------|---------|55| `src/index.ts` | Entry point |56| `src/api/` | API routes |5758### Dependencies59- **Runtime**: [list]60- **Dev**: [list]6162### Patterns Detected63- [Pattern 1]64- [Pattern 2]6566### Entry Points67- [Entry 1]68- [Entry 2]69```7071## Technology Detection7273| Marker | Technology |74|--------|------------|75| `package.json` | Node.js |76| `tsconfig.json` | TypeScript |77| `next.config.*` | Next.js |78| `nuxt.config.*` | Nuxt |79| `pyproject.toml` | Python |80| `composer.json` | PHP |81| `pubspec.yaml` | Flutter/Dart |82| `Cargo.toml` | Rust |83| `go.mod` | Go |8485## When to Use8687- Starting work on unfamiliar codebase88- Before planning major changes89- Understanding dependencies90- Finding specific code patterns9192## READ-ONLY9394This skill ONLY reads and analyzes.95It does NOT write or modify any files.9697## Visual Output9899For an interactive HTML tree visualization of the codebase:100101```bash102python3 ${CLAUDE_SKILL_DIR}/scripts/visualize.py .103```104105This generates `codebase-map.html` with collapsible directories, file sizes, and type-colored indicators.106107## KB Integration108109```python110smart_query("codebase analysis: {technology}")111hybrid_search_kb("project structure {framework}")112```113114## Rules115116- **MUST** use `Glob` and `Grep` before `Read` — scan for shape before opening files117- **MUST** deliver a map of the codebase (entry points, layers, module boundaries), not a file listing — a tree without interpretation is noise118- **NEVER** read every file sequentially; target reads via grep patterns and filename globs119- **NEVER** modify any file — this is a read-only skill120- **CRITICAL**: when the repo contains generated code (`node_modules`, `vendor/`, `dist/`, `build/`), exclude it from scans or the signal drowns in generated noise121- **MANDATORY**: summarize the stack once at the top (language, framework, package manager, test runner) before diving into structure122123## Gotchas124125- `find .` and `ls -R` ignore `.gitignore` by default and include `node_modules`, `vendor/`, `.venv/`, `target/`. Use `git ls-files` or `fd` / `rg` for a git-aware listing, or explicitly prune.126- `package.json` says `"type": "module"` → ESM; absence → CommonJS. Mixing them without noticing produces "Cannot use import statement outside a module" errors later; call out the setting in the report.127- Frameworks with file-based routing (Next.js, Nuxt, SvelteKit) treat the `app/` or `pages/` tree as the router. A directory listing alone does not reveal routes — the framework convention does. Name the framework first, then the routes.128- `pyproject.toml` can declare multiple project layouts (src/, flat, namespace packages). "Where is the main code" is not obvious without reading `[tool.setuptools.packages]` or `[tool.poetry.packages]`.129- Large monorepos use workspaces (`pnpm-workspace.yaml`, `nx.json`, `turbo.json`) with apps and packages. Treating the root as the project conceals the actual component boundaries — surface the workspace topology first.130131## When NOT to Use132133- To explain a specific module's design — use `/explain`134- To find a specific identifier or symbol — use `Grep` directly or `/research-mastery`135- To audit architecture for deepening candidates — use `/architecture-audit`136- To scaffold a new project — use `/app-builder`137- When the user already knows the codebase — skip the overview and jump to the concrete task