130 lines
3.5 KiB
Markdown
130 lines
3.5 KiB
Markdown
---
|
||
description: Trigger full repository health analysis
|
||
---
|
||
|
||
# Repository Health Analysis
|
||
|
||
Analyze the code health of a repository using multi-dimensional metrics.
|
||
|
||
## Instructions
|
||
|
||
When the user requests a repository health analysis, follow this systematic approach:
|
||
|
||
1. **List Files**: Use `list_repo_files` to discover all source files
|
||
2. **Analyze Complexity**: Use `file_metrics` on key files to assess complexity
|
||
3. **Check Git Churn**: Use `git_churn` to identify frequently changing files
|
||
4. **Map Test Coverage**: Use `map_tests` to find files missing tests
|
||
5. **Generate Report**: Combine all metrics into actionable recommendations
|
||
|
||
## Analysis Workflow
|
||
|
||
### Step 1: File Discovery
|
||
```
|
||
Use list_repo_files with appropriate globs for the language:
|
||
- TypeScript/JavaScript: ["**/*.{ts,tsx,js,jsx}"]
|
||
- Python: ["**/*.py"]
|
||
- Go: ["**/*.go"]
|
||
- Multi-language: Combine patterns
|
||
|
||
Exclude: ["node_modules/**", ".git/**", "dist/**", "build/**"]
|
||
```
|
||
|
||
### Step 2: Complexity Analysis
|
||
Focus on:
|
||
- Files > 300 lines
|
||
- Core business logic files (services, controllers, models)
|
||
- Recently changed files
|
||
|
||
For each file, report:
|
||
- Cyclomatic complexity
|
||
- Function count
|
||
- Health score
|
||
- Comment ratio
|
||
|
||
### Step 3: Git Churn Analysis
|
||
Identify hot spots:
|
||
- Files with >10 commits (high churn)
|
||
- Files changed by multiple authors
|
||
- Recent change patterns
|
||
|
||
### Step 4: Test Coverage Mapping
|
||
Find gaps:
|
||
- Files in critical directories missing tests
|
||
- High-complexity files without tests
|
||
- High-churn files without tests
|
||
|
||
### Step 5: Prioritized Recommendations
|
||
Combine metrics to find:
|
||
- **Technical Debt Hot Spots**: High complexity + High churn + No tests
|
||
- **Refactoring Candidates**: Complexity >10 + Health score <50
|
||
- **Testing Priorities**: Critical files missing tests
|
||
|
||
## Output Format
|
||
|
||
Present findings in this structure:
|
||
|
||
### Repository Overview
|
||
- Total files: X
|
||
- Average health score: Y
|
||
- Test coverage: Z%
|
||
|
||
### Critical Issues
|
||
1. High complexity + High churn + No tests
|
||
2. Health score <30 (critical)
|
||
|
||
### ️ Warnings
|
||
1. Health score 30-70 (needs attention)
|
||
2. Test coverage <60%
|
||
|
||
### Good Practices
|
||
1. Well-tested files (high complexity + has tests)
|
||
2. Stable code (low churn + good health)
|
||
|
||
### Recommendations
|
||
Prioritized list of actions:
|
||
1. Add tests for critical files
|
||
2. Refactor high-complexity hot spots
|
||
3. Monitor high-churn files
|
||
|
||
## Example Usage
|
||
|
||
User: "Analyze the health of /home/user/my-project"
|
||
|
||
Response:
|
||
```
|
||
I'll analyze the code health of your project using multiple dimensions...
|
||
|
||
[Use list_repo_files on /home/user/my-project]
|
||
Found 245 source files (TypeScript/JavaScript)
|
||
|
||
[Use file_metrics on top files]
|
||
Critical complexity issues:
|
||
- src/services/auth.ts: Complexity 45, Health 30
|
||
- src/api/handler.ts: Complexity 28, Health 65 ️
|
||
|
||
[Use git_churn on /home/user/my-project since "6 months ago"]
|
||
High churn files:
|
||
- src/api/handler.ts: 32 commits, 4 authors
|
||
- src/services/auth.ts: 18 commits, 2 authors
|
||
|
||
[Use map_tests on /home/user/my-project]
|
||
Test coverage: 62% (97 of 156 files tested)
|
||
Missing tests: 59 files
|
||
|
||
Critical files without tests:
|
||
- src/services/auth.ts (high complexity + high churn)
|
||
- src/api/legacy.ts (high complexity)
|
||
|
||
## Recommendations:
|
||
1. URGENT: Add tests for src/services/auth.ts (high complexity, high churn, no tests)
|
||
2. ️ Refactor src/api/handler.ts (complexity 28, reduce to <10)
|
||
3. Improve test coverage to 80%+ (currently 62%)
|
||
```
|
||
|
||
## Notes
|
||
|
||
- Always use absolute paths
|
||
- Adjust time period for git_churn based on project age
|
||
- For large repos (>500 files), focus on changed files in last 3 months
|
||
- Combine metrics for maximum insight
|