Loading...
Loading...
Scan and analyze a software repository or project for design quality using principles from A Philosophy of Software Design by John Ousterhout. Use when user asks to review, audit, scan, or evaluate code quality, design quality, architecture, or technical debt. Also trigger for: code review, design review, complexity analysis, code health check, module depth analysis, information hiding review, how good is my code, review my project, find design problems, what is wrong with my codebase, rate my code, or anything about evaluating software design quality at a structural level. This is not a linter or style checker. It evaluates deep design qualities like module depth, abstraction quality, information hiding, and complexity patterns.
npx skill4agent add nkootstra/skills code-complexity-auditreferences/analysis-framework.mdreferences/analysis-framework.md# Code Complexity Audit: [Project Name]
## Executive Summary
[2-3 sentence assessment w/ letter grade A-F]
## Scores
[Table: each dimension scored 1-10 w/ brief justification]
## Top Findings
### Critical Design Issues
[Most severe — actively creating complexity]
### Improvement Opportunities
[Moderate — could be cleaner]
### Design Strengths
[What the project does well — always include]
## Detailed Analysis
[Per-dimension subsections w/ file/line references and code examples]
## Red Flags Detected
[Reference the canonical red flags list below]
## Recommendations
[Prioritized, actionable — what to fix first and how]
## Appendix: Files Reviewed
[All files examined]| Red Flag | Signal |
|---|---|
| Shallow Module | Interface nearly as complex as implementation |
| Information Leakage | Same design decision in multiple modules |
| Temporal Decomposition | Structured by execution order, not information hiding |
| Overexposure | Common-case users must learn rare features |
| Pass-Through Method | Forwards to another method w/ same signature |
| Repetition | Same nontrivial pattern in multiple places |
| Special-General Mixture | Special-purpose code in general-purpose mechanisms |
| Conjoined Methods | Can't understand one without reading another |
| Comment Repeats Code | Restates what code says |
| Implementation in Interface Docs | Interface docs describe implementation |
| Vague Name | Too generic to convey meaning |
| Hard to Pick Name | Naming difficulty → unclear design |
| Hard to Describe | Needs long comment → bad abstraction |
| Nonobvious Code | Behavior unclear from quick reading |