codebase-analyzer-skill
Analyze existing code to reverse-engineer specifications (requirements, design, tasks). Use when user wants to document existing code, refactor legacy systems, or understand what has been implemented. Identifies implemented features, architecture, and missing pieces.
SKILL.md
| Name | codebase-analyzer-skill |
| Description | Analyze existing code to reverse-engineer specifications (requirements, design, tasks). Use when user wants to document existing code, refactor legacy systems, or understand what has been implemented. Identifies implemented features, architecture, and missing pieces. |
name: Codebase Analyzer Skill description: Analyze existing code to reverse-engineer specifications (requirements, design, tasks). Use when user wants to document existing code, refactor legacy systems, or understand what has been implemented. Identifies implemented features, architecture, and missing pieces. allowed-tools: Read, Grep, List, Glob, Bash
Codebase Analyzer Skill
Purpose
You are an expert code archaeologist. Your goal is to analyze existing code in apps/[app-name]/ and reverse-engineer complete specifications: requirements (what it does), design (how it works), and implementation status (what's done, what's missing).
When to Use This Skill
Activate this skill when:
- User has existing code without documentation
- User wants to refactor legacy code with spec-driven development
- User needs to understand what has been implemented
- User mentions: "analyze code", "reverse engineer", "document existing", "understand codebase", "what's implemented"
Core Workflow
Step 1: Understand the Scope
Ask the user:
š CODEBASE ANALYSIS
I'll analyze your existing code and generate specs for spec-driven development.
What would you like me to analyze?
A) Entire app: apps/[app-name]/
B) Specific feature/module
C) Specific files (provide paths)
Do you have:
- Development logs?
- Existing documentation?
- Test files?
- Commit history to reference?
This will help me understand the implementation better.
Step 2: Analyze Code Structure
Directory Analysis:
# List all files in the app
find apps/[app-name]/src -type f
# Identify structure
ls -R apps/[app-name]/src/
# Count files by type
find apps/[app-name] -type f | wc -l
Report structure:
š Code Structure Analysis
Apps/[app-name]/
āāā src/ - [X] files
ā āāā components/ - [Y] files
ā āāā services/ - [Z] files
ā āāā models/ - [N] files
ā āāā utils/ - [M] files
āāā tests/ - [T] test files
āāā [other directories]
Languages: [TypeScript, Python, etc.]
Framework: [React, FastAPI, etc.]
Database: [PostgreSQL, MongoDB, etc.]
Step 3: Identify Features Implemented
Read key files:
Read: apps/[app-name]/src/index.ts (or main entry point)
Read: apps/[app-name]/src/routes.ts (or routing file)
Read: apps/[app-name]/package.json (or dependencies file)
Parse for features:
- Routes/endpoints ā user-facing features
- Components ā UI features
- Services ā business logic features
- Models ā data features
- Tests ā tested functionality
Report features:
āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā
šÆ FEATURES IDENTIFIED
āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā
1. User Authentication
- Files: src/auth/, src/components/Login.tsx
- Routes: /login, /register, /logout
- Tests: ā
auth.test.ts (12 tests)
- Status: ā
Implemented
2. Recipe Creation
- Files: src/recipes/, src/components/RecipeForm.tsx
- Routes: /recipes/create, /recipes/:id
- Tests: ā ļø Partial (6/10 tests)
- Status: š¶ Partially Implemented
3. Search Functionality
- Files: src/search/, src/components/SearchBar.tsx
- Routes: /search
- Tests: ā No tests found
- Status: š¶ Implemented but Untested
4. Admin Dashboard
- Files: None found
- Routes: None
- Tests: None
- Status: ā Not Implemented (mentioned in docs)
Total Features Found: 3 implemented, 1 planned
Step 4: Analyze Architecture & Design
Read architecture-critical files:
Read: apps/[app-name]/src/config.ts
Read: apps/[app-name]/src/database.ts
Read: apps/[app-name]/src/api/index.ts
Identify patterns:
- Architecture: MVC, Microservices, Layered, etc.
- Data flow: REST, GraphQL, WebSockets
- State management: Redux, Context API, Zustand
- Error handling: Try-catch, error boundaries, middleware
- Security: Authentication, authorization, validation
Report architecture:
āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā
šļø ARCHITECTURE ANALYSIS
āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā
Pattern: Layered Architecture (MVC)
- Controllers: src/controllers/
- Services: src/services/
- Models: src/models/
- Views: src/components/
Technology Stack:
- Frontend: React 18 + TypeScript
- Backend: Express.js + Node.js
- Database: PostgreSQL (pg library)
- Auth: JWT (jsonwebtoken)
- Testing: Jest + React Testing Library
Data Flow:
Client ā Routes ā Controllers ā Services ā Models ā Database
Key Design Decisions:
ā
Separation of concerns (good)
ā
Dependency injection in services
ā ļø Limited error handling in controllers
ā ļø No input validation middleware
ā No API documentation (Swagger/OpenAPI)
Step 5: Read Development Logs (if provided)
If user provided logs or documentation:
Read: [provided-log-file]
Read: [provided-docs]
Extract from logs:
- Development timeline
- Known issues
- Incomplete features
- Technical debt
- Future plans
Step 6: Identify Gaps & Missing Pieces
Compare what exists vs what should exist:
āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā
š GAPS IDENTIFIED
āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā
Missing Implementation:
ā Admin Dashboard (mentioned in routes.ts but not built)
ā Email notifications (service stub exists, not implemented)
ā Image upload (component exists, backend missing)
Missing Tests:
ā ļø Search functionality - no tests
ā ļø Recipe creation - partial coverage (60%)
ā ļø User profiles - no integration tests
Technical Debt:
ā ļø Error handling - inconsistent patterns
ā ļø Input validation - missing in several endpoints
ā ļø API documentation - none
ā ļø Logging - minimal, needs structured logging
Security Concerns:
š“ Password reset - no rate limiting
š“ File upload - no size/type validation
š“ SQL queries - potential injection risk in search
Performance Issues:
ā ļø N+1 queries in recipe listing
ā ļø No caching layer
ā ļø Large bundle size (3.2MB)
Step 7: Generate Requirements Spec
Create apps/[app-name]/specs/[feature]-requirements.md:
Based on code analysis, reverse-engineer requirements using EARS format:
# [Feature Name] - Requirements
**Status**: ā
Implemented | š¶ Partial | ā Missing
## Overview
[What the code does - inferred from implementation]
## User Stories
[Derived from routes, components, and functionality]
### Story 1: [Feature Name]
**As a** [user type inferred from code]
**I want** [functionality that exists]
**So that** [benefit inferred from context]
## Functional Requirements
[EARS format based on what code actually does]
### REQ-1: [Requirement Title]
**WHEN** [condition found in code]
**THEN** the system SHALL [behavior implemented]
**Status**: ā
Implemented in: src/[file].ts
## Non-Functional Requirements
### Performance
[Inferred from code patterns]
### Security
[Inferred from auth, validation, etc.]
### Usability
[Inferred from UI components]
## Testing Requirements
**Current Test Coverage**: [X]%
- Unit Tests: [coverage]
- Integration Tests: [coverage]
- E2E Tests: [coverage]
## Known Issues
[From logs, TODOs, or analysis]
## Missing Functionality
[Gap analysis results]
Step 8: Generate Design Spec
Create apps/[app-name]/specs/[feature]-design.md:
Document the actual design from code:
# [Feature Name] - Design
**Status**: Reverse-engineered from implementation
## System Overview
[Architecture diagram in text form]
## Components
### [Component Name]
**Location**: src/components/[Component].tsx
**Purpose**: [Inferred from code]
**Responsibilities**:
- [What it does]
- [How it integrates]
**Dependencies**:
- [Other components/services it uses]
**Interfaces**:
```typescript
[Actual interfaces/types from code]
Data Models
[Extracted from code - actual schemas, types, models]
API Design
Endpoints
[Extracted from routes]
Request/Response
[Extracted from controllers]
Error Handling
[Patterns found in code]
Security
[Auth mechanisms found]
Testing Strategy
[What tests exist, what's missing]
Technical Debt
[Issues identified during analysis]
### Step 9: Generate Tasks/Refactoring Plan
**Create `apps/[app-name]/specs/[feature]-tasks.md`**:
```markdown
# [Feature Name] - Refactoring & Completion Tasks
**Generated from codebase analysis**
## Phase 1: Documentation & Testing
### Task 1.1: Add Missing Tests
- [ ] Create tests for search functionality
- [ ] Complete recipe creation tests (4 missing)
- [ ] Add integration tests for user profiles
**Estimated Effort**: 4 hours
**Priority**: High
**Dependencies**: None
### Task 1.2: Add API Documentation
- [ ] Install Swagger/OpenAPI
- [ ] Document all endpoints
- [ ] Add request/response examples
**Estimated Effort**: 2 hours
**Priority**: Medium
**Dependencies**: None
## Phase 2: Fix Technical Debt
### Task 2.1: Implement Error Handling
- [ ] Create error handling middleware
- [ ] Standardize error responses
- [ ] Add logging for all errors
**Estimated Effort**: 3 hours
**Priority**: High
**Dependencies**: None
### Task 2.2: Add Input Validation
- [ ] Install validation library (Zod/Joi)
- [ ] Add validation to all endpoints
- [ ] Create validation schemas
**Estimated Effort**: 4 hours
**Priority**: High
**Dependencies**: None
## Phase 3: Complete Missing Features
### Task 3.1: Implement Admin Dashboard
- [ ] Create admin routes
- [ ] Build admin components
- [ ] Add admin authorization
**Estimated Effort**: 8 hours
**Priority**: Medium
**Dependencies**: User authentication
### Task 3.2: Complete Email Notifications
- [ ] Implement email service
- [ ] Create email templates
- [ ] Add notification triggers
**Estimated Effort**: 6 hours
**Priority**: Low
**Dependencies**: None
## Phase 4: Security & Performance
### Task 4.1: Fix Security Issues
- [ ] Add rate limiting to password reset
- [ ] Implement file upload validation
- [ ] Sanitize SQL queries (use parameterized queries)
**Estimated Effort**: 4 hours
**Priority**: Critical
**Dependencies**: None
### Task 4.2: Optimize Performance
- [ ] Fix N+1 queries (add eager loading)
- [ ] Implement caching layer (Redis)
- [ ] Optimize bundle size (code splitting)
**Estimated Effort**: 6 hours
**Priority**: Medium
**Dependencies**: None
## Implementation Order
**Critical Path**:
1. Security fixes (Task 4.1) - ASAP
2. Error handling (Task 2.1)
3. Input validation (Task 2.2)
4. Testing (Task 1.1)
5. Missing features (Task 3.x)
6. Performance (Task 4.2)
Step 10: Update Implementation Status
Create apps/[app-name]/context/IMPLEMENTATION_STATUS.md:
# Implementation Status: [App Name]
**Last Analyzed**: [Date]
**Analyzer**: Codebase Analyzer Agent
## Overall Status
- **Total Features**: 4 (3 implemented, 1 missing)
- **Code Coverage**: 62%
- **Security Score**: ā ļø Medium Risk (3 critical issues)
- **Technical Debt**: High (12 items)
## Features
### ā
User Authentication
- **Status**: Complete
- **Files**: 15
- **Tests**: 12/12 passing
- **Issues**: None
### š¶ Recipe Creation
- **Status**: Partial (90%)
- **Files**: 22
- **Tests**: 6/10 (60% coverage)
- **Issues**: Missing backend for image upload
### š¶ Search Functionality
- **Status**: Implemented, Untested
- **Files**: 8
- **Tests**: 0 (no tests)
- **Issues**: No tests, potential SQL injection
### ā Admin Dashboard
- **Status**: Not Implemented
- **Files**: 0
- **Tests**: 0
- **Issues**: Mentioned in plans, never built
## Refactoring Priorities
1. **Critical**: Fix security issues (Task 4.1)
2. **High**: Add error handling (Task 2.1)
3. **High**: Add input validation (Task 2.2)
4. **High**: Add missing tests (Task 1.1)
5. **Medium**: Complete missing features (Task 3.x)
## Next Steps
1. Review generated specs in `apps/[app-name]/specs/`
2. Prioritize refactoring tasks
3. Use `/implement-task` to work on specific tasks
4. Track progress in this file
Step 11: Final Report
āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā
ā
CODEBASE ANALYSIS COMPLETE
āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā
App: [app-name]
Code Analyzed: [X] files ([Y] lines)
Features Identified: [N]
Generated Specs:
š apps/[app-name]/specs/user-authentication-requirements.md
š apps/[app-name]/specs/user-authentication-design.md
š apps/[app-name]/specs/user-authentication-tasks.md
š apps/[app-name]/specs/recipe-creation-requirements.md
š apps/[app-name]/specs/recipe-creation-design.md
š apps/[app-name]/specs/recipe-creation-tasks.md
[...]
Context Updated:
š apps/[app-name]/context/IMPLEMENTATION_STATUS.md
š apps/[app-name]/context/architecture.md
Status Summary:
ā
3 features fully implemented
š¶ 2 features partially implemented
ā 1 feature missing
š“ 3 critical security issues
ā ļø 12 technical debt items
āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā
šÆ RECOMMENDED NEXT STEPS
āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā
1. Review Generated Specs
- Read specs to understand documented implementation
- Refine/correct any misunderstood functionality
2. Prioritize Refactoring
- Start with security fixes (CRITICAL)
- Then error handling & validation
- Then missing tests
3. Complete Missing Features
- Implement admin dashboard
- Complete email notifications
4. Use Spec-Driven Development Going Forward
- /set-context [app-name]
- /implement-task [feature] [task-id]
- All future work follows specs
āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā
Your existing codebase is now integrated into the spec-driven development workflow! š
Best Practices
Analysis Depth
Quick Analysis (30 minutes):
- Directory structure
- Main files only
- High-level features
- Critical issues
Deep Analysis (2-3 hours):
- All source files
- Test coverage
- Architecture patterns
- Technical debt
- Performance analysis
- Security audit
Handling Different Codebases
Well-Structured Code:
- Easy to identify features
- Clear separation of concerns
- Good test coverage ā Generate detailed, accurate specs
Legacy/Messy Code:
- Unclear structure
- Mixed concerns
- No tests ā Document "as-is", mark areas needing refactoring
Partial Implementation:
- Some features done, some stubbed
- Mixed quality ā Separate implemented vs planned in specs
Working with Logs
If user provides logs:
Read: [log-file]
Extract:
- Development timeline
- Feature implementation order
- Known issues
- Developer notes
- TODO items
Use this to enrich specs with context.
Integration with Other Skills
After Analysis
- Use builder-skill to implement missing tasks
- Use spec-orchestrator-skill for new features
- Use worktree-manager-skill for isolated refactoring
Before Implementation
Always analyze first if:
- Code exists but no docs
- Refactoring needed
- Understanding legacy system
Tips for Users
Provide Context:
- Development logs help immensely
- Commit history can show evolution
- Tests reveal intended behavior
- Documentation (even partial) clarifies intent
Be Specific:
- "Analyze entire app" vs "Analyze auth module"
- Point to specific files for focused analysis
- Mention known issues or areas of concern
Review & Refine:
- Generated specs are inferred, not perfect
- Review requirements for accuracy
- Correct any misunderstood functionality
- Add missing context
Limitations
Cannot Infer:
- Business requirements not evident in code
- User stories beyond what's implemented
- Design rationale (only current state)
- Future plans (unless in comments/docs)
Best Effort:
- Test coverage calculation (approximation)
- Feature completeness (based on visible code)
- Security analysis (not a full audit)
- Performance issues (static analysis only)
Report Format
Always provide:
- Structure: What exists
- Features: What's implemented
- Architecture: How it works
- Gaps: What's missing
- Specs: Generated documentation
- Next Steps: Recommended actions
Use this skill to bridge legacy code into spec-driven development! šāš