From code-quality-toolkit
Analyzes cyclomatic and cognitive complexity, identifies complex functions, provides JS/Python tools, reports, and refactoring strategies.
How this skill is triggered — by the user, by Claude, or both
Slash command
/code-quality-toolkit:complexity-analyzerThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Analyze complexity with tools:
Analyze complexity with tools:
# JavaScript
npx eslint --plugin complexity --rule 'complexity: [error, 10]' src/
# Python
pip install radon
radon cc src/ -a -nb
# General
npx complexity-report src/
Count decision points + 1:
Example:
function example(x) { // +1 (base)
if (x > 0) { // +1
return x;
} else if (x < 0) { // +1
return -x;
}
return 0;
}
// Complexity: 3
| Complexity | Rating | Action |
|---|---|---|
| 1-10 | Simple | No action needed |
| 11-20 | Moderate | Consider refactoring |
| 21-50 | Complex | Should refactor |
| 50+ | Very Complex | Must refactor |
Cognitive complexity considers:
// Cyclomatic: 4, Cognitive: 7
function sumOfPrimes(max) { // +0
let total = 0;
for (let i = 2; i <= max; i++) { // +1 (loop)
let isPrime = true;
for (let j = 2; j < i; j++) { // +2 (nested loop)
if (i % j === 0) { // +3 (nested if)
isPrime = false;
break; // +1 (break)
}
}
if (isPrime) { // +1 (if)
total += i;
}
}
return total;
}
## Complexity Report
### High Complexity (>20)
**processOrder()** - src/orders.js:45
- Cyclomatic: 28
- Cognitive: 35
- Lines: 127
- Recommendation: Extract validation, calculation, and persistence logic
**validateUser()** - src/auth.js:12
- Cyclomatic: 22
- Cognitive: 28
- Lines: 89
- Recommendation: Extract individual validation rules
### Moderate Complexity (11-20)
[List functions with complexity 11-20]
// Before: Complexity 15
function processData(data) {
if (data.type === 'A') {
// 20 lines of processing
} else if (data.type === 'B') {
// 20 lines of processing
}
}
// After: Complexity 3
function processData(data) {
if (data.type === 'A') return processTypeA(data);
if (data.type === 'B') return processTypeB(data);
}
// Before: Cognitive 12
function getPrice(user, product) {
if (user) {
if (user.isPremium) {
if (product.onSale) {
return product.price * 0.7;
} else {
return product.price * 0.9;
}
}
}
return product.price;
}
// After: Cognitive 4
function getPrice(user, product) {
if (!user || !user.isPremium) return product.price;
if (product.onSale) return product.price * 0.7;
return product.price * 0.9;
}
// Before: Complexity 8
function getArea(shape) {
if (shape.type === 'circle') {
return Math.PI * shape.radius ** 2;
} else if (shape.type === 'square') {
return shape.side ** 2;
}
// ... more types
}
// After: Complexity 1 per class
class Circle {
getArea() { return Math.PI * this.radius ** 2; }
}
class Square {
getArea() { return this.side ** 2; }
}
npx claudepluginhub p/armanzeroeight-code-quality-toolkit-plugins-code-quality-toolkitMeasuring and reducing cyclomatic complexity and cognitive complexity to improve maintainability.
Analyzes code complexity metrics including cyclomatic, cognitive, Halstead, maintainability index, and nesting depth. Reports per-function/file details, top issues, and refactoring recommendations.
Analyzes code structure, complexity, and quality using cyclomatic and cognitive complexity metrics, detects code smells like long methods and god objects, and suggests refactoring strategies.