codebase-analysis
Codebase Analysis Skill
Overview
This skill provides techniques for extracting business requirements, domain knowledge, and technical specifications from existing codebases.
Analysis Objectives
When analyzing a codebase, seek to understand:
- Domain Model: Core entities and their relationships
- Business Rules: Validation, calculations, workflows
- Integrations: External systems and data flows
- User Capabilities: What users can do in the system
- Technical Constraints: Architecture patterns and limitations
Analysis Process
Phase 1: Structure Discovery
- Map project structure and organization
- Identify main components and layers
- Locate configuration and entry points
- Understand build and deployment setup
Phase 2: Domain Model Extraction
- Find entity/model definitions
- Map relationships between entities
- Identify domain vocabulary (ubiquitous language)
- Document data types and constraints
Phase 3: Business Logic Identification
- Locate service/business logic layers
- Extract validation rules
- Document calculations and formulas
- Map state machines and workflows
Phase 4: Integration Mapping
- Find API endpoints and contracts
- Identify external service calls
- Map data flows in/out of system
- Document authentication patterns
Phase 5: Capability Documentation
- List user-facing features
- Map permissions and access control
- Document user workflows
- Identify edge cases and error handling
Code Pattern Recognition
Entity/Model Identification
Look for these patterns:
// C# Entity
public class Order { ... }
// Java Entity
@Entity
public class Order { ... }
// TypeScript Interface
interface Order { ... }
// Database Schema
CREATE TABLE orders ( ... )
Business Rule Indicators
Watch for these keywords and patterns:
- Validation:
Validate,Check,Ensure,Must,Should - Calculations:
Calculate,Compute,Total,Sum - Conditions:
If,When,Unless,Only - Constraints:
Max,Min,Required,Limit
Service Layer Patterns
Identify business logic in:
// Service classes
public class OrderService { ... }
// Use cases / Application services
public class CreateOrderUseCase { ... }
// Command/Query handlers
public class CreateOrderHandler { ... }
API Endpoint Patterns
Look for:
// REST Controllers
[Route("api/orders")]
[HttpPost]
public async Task<Order> Create(...)
// Express routes
app.post('/api/orders', ...)
// GraphQL resolvers
Mutation: { createOrder: ... }
Analysis Heuristics
Finding Domain Models
- Search for
class,interface,typedefinitions - Look in folders named:
Models,Entities,Domain - Check database migrations and schema files
- Review ORM configurations
Finding Business Rules
- Search for validation attributes/decorators
- Look for
throwstatements (business exceptions) - Find conditional logic in services
- Check for rule engines or policy patterns
Finding Integrations
- Search for HTTP client usage
- Look for message queue producers/consumers
- Find database connection configurations
- Check for external SDK imports
Finding User Capabilities
- Review API endpoints and their permissions
- Check UI components and forms
- Look at authorization/role definitions
- Review menu structures and navigation
Output Artifacts
Domain Model Documentation
## Entity: Order
### Attributes
| Name | Type | Description | Constraints |
|------|------|-------------|-------------|
| id | UUID | Unique identifier | Required |
| status | Enum | Order status | Required |
| total | Decimal | Order total | >= 0 |
### Relationships
- Order has many OrderItems (1:N)
- Order belongs to Customer (N:1)
### Business Rules
- Order total must equal sum of item totals
- Status can only transition: Draft -> Submitted -> Approved -> Completed
Business Rule Documentation
## Rule: Order Validation
### Description
Orders must meet these criteria before submission
### Conditions
1. Order must have at least one item
2. All items must have valid product references
3. Customer must have valid payment method
4. Total must be greater than $0
### Implementation
- File: src/Services/OrderService.cs
- Method: ValidateForSubmission()
- Line: 145-180
Integration Documentation
## Integration: Payment Gateway
### Type
REST API (Synchronous)
### Endpoint
POST https://api.payments.com/v1/charges
### Data Flow
- Input: Order total, Customer payment token
- Output: Transaction ID, Status
### Error Handling
- Timeout: Retry 3 times with exponential backoff
- Failure: Mark order as payment pending, notify support
### Implementation
- File: src/Integrations/PaymentGateway.cs
Code Search Patterns
Finding Entities (by language)
# C# / .NET
grep -r "public class.*Entity" --include="*.cs"
grep -r "\[Table\(" --include="*.cs"
# Java
grep -r "@Entity" --include="*.java"
# TypeScript
grep -r "interface.*{" --include="*.ts"
Finding Validation Rules
# C# Attributes
grep -r "\[Required\]|\[Range\]|\[StringLength\]" --include="*.cs"
# Java Annotations
grep -r "@NotNull|@Size|@Valid" --include="*.java"
# Custom validation
grep -r "Validate|throw.*Exception" --include="*.cs"
Finding API Endpoints
# .NET Controllers
grep -r "\[Http.*\]|\[Route\(" --include="*.cs"
# Express.js
grep -r "app\.(get|post|put|delete)\(" --include="*.js"
Reverse Engineering Tips
Start With Entry Points
- Find main() or startup configuration
- Follow dependency injection setup
- Trace from API controllers to services to data
Follow the Data
- Start with database schema or entities
- Trace how data flows through system
- Map CRUD operations for each entity
Look for Tests
- Unit tests reveal expected behavior
- Integration tests show workflows
- Test data shows valid/invalid scenarios
Check Documentation
- Look for README files
- Check API documentation (Swagger/OpenAPI)
- Review code comments and XML docs
Questions to Answer
After analysis, you should be able to answer:
- What entities exist and how do they relate?
- What can users do in this system?
- What business rules govern behavior?
- What external systems does this integrate with?
- What are the key workflows?
- What constraints exist (technical and business)?
- What data does the system manage?
- Who has access to what?
See patterns.md for common architectural patterns to identify.
More from doubleslashse/claude-marketplace
requirements-clarification
Requirements clarification for TDD. Use BEFORE RED phase to understand WHAT to test. Asks targeted questions to uncover ambiguities, edge cases, and acceptance criteria.
25srs-documentation
Software Requirements Specification documentation following IEEE 830 standard. Use when generating formal SRS documents or compiling gathered requirements into structured documentation.
15brainstorming
Brainstorming techniques for idea generation. Use when facilitating brainstorming sessions, leading ideation exercises, or helping teams generate creative solutions.
14clean-code
Clean code principles including DRY, KISS, and YAGNI for .NET. Use when writing or reviewing code to ensure maintainability and simplicity.
11design-thinking
Design thinking methodology for human-centered problem solving. Use when facilitating design thinking workshops, user research sessions, or creative problem-solving activities.
10dotnet-build
.NET build configuration and error handling. Use when building projects, diagnosing build errors, or configuring build options.
8