ADLC Explore
Systematically map an existing codebase to build understanding before starting development.
When to Use
- Starting work on an unfamiliar codebase
- Before planning a new milestone in an area you haven't touched
- When domain-context.md is empty or outdated
Process
Step 1: Project Overview
- Read CLAUDE.md, README.md, package.json / go.mod / pyproject.toml / Cargo.toml
- Identify: language, framework, build system, test framework, deployment target
- Read .env.example or similar for external dependencies (databases, APIs, services)
Step 2: Architecture Map
- List top-level directories and their purpose
- Identify architectural pattern: MVC, clean architecture, hexagonal, monolith, microservices
- Find entry points: main files, route definitions, handler registrations
- Map dependency flow: which modules depend on which?
- Identify shared code: utils, helpers, common types
Step 3: Domain Analysis
- Read existing domain-context.md and domain-terms.md
- Grep for domain-specific types, interfaces, and constants
- Identify bounded contexts: which parts of the code own which domain concepts?
- Note terminology: what do they call things? (exact terms matter for ADLC specs)
Step 4: Test Coverage
- Find test files:
**/*test*, **/*spec*
- Count: test files vs production files
- Run test suite if verification.yml exists
- Identify: well-tested areas vs gaps
- Note test patterns: unit, integration, e2e, mocking strategy
Step 5: Code Health
- Check for: TODO/FIXME/HACK comments
- Identify: dead code, unused imports, deprecated patterns
- Note: recent activity (
git log --oneline -20)
- Check: CI/CD config if present
Output
Write exploration report to .sdlc/exploration-report.md:
# Exploration Report: [Project Name]
Generated: [date]
## Stack
[language] / [framework] / [database] / [infra]
## Architecture
[pattern] — [1-2 sentence description]
[directory map with purpose annotations]
## Domain Concepts
[key entities and their relationships]
[terminology that must be used in specs]
## Test Coverage
[summary: X test files, Y production files]
[well-tested areas]
[gaps]
## Code Health
[TODOs: X, FIXMEs: Y]
[recent activity summary]
[notable patterns or concerns]
## Recommended First Steps
[what to tackle first based on findings]
Step 6: Update Project Knowledge
Exploration is only valuable if it persists. Update knowledge files from findings.
-
domain-context.md — If empty or outdated:
- Write/update architecture overview (pattern, modules, data flow)
- Write/update external dependencies (databases, APIs, services)
- Write/update deployment context (target, CI/CD, environments)
- If domain-context.md already exists and is accurate: skip
-
domain-terms.md — If empty or missing terms found in codebase:
- Add domain-specific types, entities, and status values discovered
- Add business concepts with definitions from code context
- If domain-terms.md already exists and is complete: skip
-
Present changes to user before committing:
- Show what was added/updated in each file
- Ask for corrections (you may have inferred wrong meanings)
Rules
- This is READ-ONLY exploration for source code. Never modify production code or test files.
- domain-context.md and domain-terms.md are knowledge files — these ARE expected outputs of exploration
- Don't run destructive commands (npm run clean, database resets, etc.)
- If you find secrets in the codebase: flag them but don't include in report