Back to skills

Codebase Exploration

Navigate, search, and understand project structures. Use when onboarding to a codebase, locating implementations, tracing dependencies, or understanding architecture. Provides patterns for file searching with Glob, code searching with Grep, and systematic architecture analysis.

127 stars
0 votes
0 copies
0 views
Added 12/19/2025
developmentpythonrustgojavabashnodedockertestingdebuggingapi

Works with

cliapi

Install via CLI

$openskills install rsmdt/the-startup
Download Zip
Files
SKILL.md
---
name: codebase-exploration
description: Navigate, search, and understand project structures. Use when onboarding to a codebase, locating implementations, tracing dependencies, or understanding architecture. Provides patterns for file searching with Glob, code searching with Grep, and systematic architecture analysis.
---

# Codebase Exploration

Systematic patterns for navigating and understanding codebases efficiently.

## When to Use

- **Onboarding to a new codebase** - Understanding project structure and conventions
- **Locating specific implementations** - Finding where functionality lives
- **Tracing dependencies** - Understanding how components connect
- **Architecture analysis** - Mapping system structure and boundaries
- **Finding usage patterns** - Discovering how APIs or functions are used
- **Investigating issues** - Tracing code paths for debugging

## Quick Structure Analysis

Start broad, then narrow down. This three-step pattern works for any codebase.

### Step 1: Project Layout

```bash
# Understand top-level structure
ls -la

# Find configuration files (reveals tech stack)
ls -la *.json *.yaml *.yml *.toml 2>/dev/null

# Check for documentation
ls -la README* CLAUDE.md docs/ 2>/dev/null
```

### Step 2: Source Organization

```
# Find source directories
Glob: **/src/**/*.{ts,js,py,go,rs,java}

# Find test directories
Glob: **/{test,tests,__tests__,spec}/**/*

# Find entry points
Glob: **/index.{ts,js,py} | **/main.{ts,js,py,go,rs}
```

### Step 3: Configuration Discovery

```
# Package/dependency files
Glob: **/package.json | **/requirements.txt | **/go.mod | **/Cargo.toml

# Build configuration
Glob: **/{tsconfig,vite.config,webpack.config,jest.config}.*

# Environment/deployment
Glob: **/{.env*,docker-compose*,Dockerfile}
```

## Deep Search Strategies

### Finding Implementations

When you need to locate where something is implemented:

```
# Find function/class definitions
Grep: (function|class|interface|type)\s+TargetName

# Find exports
Grep: export\s+(default\s+)?(function|class|const)\s+TargetName

# Find specific patterns (adjust for language)
Grep: def target_name  # Python
Grep: func TargetName  # Go
Grep: fn target_name   # Rust
```

### Tracing Usage

When you need to find where something is used:

```
# Find imports of a module
Grep: import.*from\s+['"].*target-module

# Find function calls
Grep: targetFunction\(

# Find references (broad search)
Grep: TargetName
```

### Architecture Mapping

When you need to understand system structure:

```
# Find all route definitions
Grep: (app\.(get|post|put|delete)|router\.)

# Find database models/schemas
Grep: (Schema|Model|Entity|Table)\s*\(
Glob: **/{models,entities,schemas}/**/*

# Find service boundaries
Glob: **/{services,controllers,handlers}/**/*
Grep: (class|interface)\s+\w+Service
```

## Exploration Patterns by Goal

### Goal: Understand Entry Points

```
# Web application routes
Grep: (Route|path|endpoint)
Glob: **/routes/**/* | **/*router*

# CLI commands
Grep: (command|program\.)
Glob: **/cli/**/* | **/commands/**/*

# Event handlers
Grep: (on|handle|subscribe)\s*\(
```

### Goal: Find Configuration

```
# Environment variables
Grep: (process\.env|os\.environ|env\.)

# Feature flags
Grep: (feature|flag|toggle)

# Constants/config objects
Grep: (const|let)\s+(CONFIG|config|settings)
Glob: **/{config,constants}/**/*
```

### Goal: Understand Data Flow

```
# Database queries
Grep: (SELECT|INSERT|UPDATE|DELETE|find|create|update)
Grep: (prisma|sequelize|typeorm|mongoose)\.

# API calls
Grep: (fetch|axios|http\.|request\()

# State management
Grep: (useState|useReducer|createStore|createSlice)
```

## Best Practices

### Search Efficiently

1. **Start with Glob** for file discovery - faster than grep for locating files
2. **Use Grep** for content search - supports regex and context
3. **Narrow scope** - search in specific directories when possible
4. **Check output modes** - use `files_with_matches` for discovery, `content` for analysis

### Build Mental Models

1. **Map the layers** - presentation, business logic, data access
2. **Identify patterns** - repository, service, controller, etc.
3. **Note conventions** - naming, file organization, code style
4. **Document boundaries** - where modules connect and separate

### Avoid Common Pitfalls

- **Do not** search entire node_modules/vendor directories
- **Do not** assume structure without verifying
- **Do not** skip reading project documentation (README, CLAUDE.md)
- **Do not** grep for common words without filtering (use glob filters)

## Output Format

After exploration, summarize findings:

```
## Codebase Overview

**Tech Stack:** [Languages, frameworks, tools]
**Architecture:** [Monolith, microservices, modular, etc.]
**Entry Points:** [Main files, routes, handlers]

## Key Directories

- `src/` - [Purpose]
- `lib/` - [Purpose]
- `tests/` - [Purpose]

## Conventions Observed

- Naming: [Pattern]
- File organization: [Pattern]
- Testing: [Pattern]

## Dependencies

- [Key dependency]: [Purpose]
- [Key dependency]: [Purpose]
```

## References

- [Exploration Patterns Examples](examples/exploration-patterns.md) - Detailed practical examples

Attribution

Comments (0)

No comments yet. Be the first to comment!