# Cyclomatic Complexity > Refactoriza para bajar la complejidad ciclomática y dejar el código legible y mantenible a largo plazo, no solo fácil de leer para una IA. Fuente: https://skillsagentes.com/skills/saurabhkumar8112/cyclomatic-complexity-skill/cyclomatic-complexity Markdown: https://skillsagentes.com/skills/saurabhkumar8112/cyclomatic-complexity-skill/cyclomatic-complexity.md Repositorio: https://github.com/saurabhkumar8112/cyclomatic-complexity-skill Autor: saurabhkumar8112 Licencia: Apache-2.0 Actualizado: anteayer Coste de contexto: 125 tok instalada, 761 tok al activarse, 761 tok con todos los archivos del bundle Bundle: 1 archivo, 3 KB Permisos que pide: ninguno declarado ## Instalación Un skill son archivos markdown: los mismos archivos valen para cualquier agente y lo único que cambia es el directorio de destino, es decir la bandera `--agent`. Añade `-g` para instalarlo en todos los proyectos de la máquina. ```bash # Claude Code npx -y skills add saurabhkumar8112/cyclomatic-complexity-skill --skill cyclomatic-complexity --agent claude-code # Cursor npx -y skills add saurabhkumar8112/cyclomatic-complexity-skill --skill cyclomatic-complexity --agent cursor # Codex npx -y skills add saurabhkumar8112/cyclomatic-complexity-skill --skill cyclomatic-complexity --agent codex # Gemini CLI npx -y skills add saurabhkumar8112/cyclomatic-complexity-skill --skill cyclomatic-complexity --agent gemini # Windsurf npx -y skills add saurabhkumar8112/cyclomatic-complexity-skill --skill cyclomatic-complexity --agent windsurf # Cline npx -y skills add saurabhkumar8112/cyclomatic-complexity-skill --skill cyclomatic-complexity --agent cline ``` ## Qué hace - Mide complejidad ciclomática (puntos de decisión + 1) y refactoriza hotspots para que el código sea mantenible por humanos, no solo por IA. - Usa umbrales del linter del proyecto, o 1–5 bien / 6–10 vigilar / 11–15 ahora / 15+ partir. - Tácticas en orden: guard clauses, extraer función, lookup table, predicados con nombre, polimorfismo, aplanar bucles. - Cierra con una tabla before/after y verificación de comportamiento; no juega con la métrica metiendo ramas en one-liners. ## Cuándo usarla - El usuario pide refactorizar, simplificar, limpiar o revisar calidad; menciona complejidad, spaghetti o funciones dios. - Hay que revisar código generado por IA antes de mergear, o tras escribir una función con mucho branching. ## Qué la activa - "Reduce la complejidad ciclomática de esta función" - "Este código es un spaghetti, simplifícalo" - "Revisa este código de IA antes de mergearlo" - "Parte esta god function" ## Antes de instalar - Si el entorno lo permite, usa herramientas reales (`radon`, eslint `complexity`, `gocyclo`, `lizard`); si no, cuenta a mano por función. ## Archivos - SKILL.md — 3 KB ## SKILL.md Reproducido tal cual desde saurabhkumar8112/cyclomatic-complexity-skill bajo Apache-2.0. Esta sección es el documento original y está en inglés. # Cyclomatic Complexity Purpose: AI-written code often works but branches like a jungle. This skill: measure complexity, refactor hotspots, keep code human-maintainable. ## Measure first CC = decision points + 1. Decision points: `if`, `else if`, `case`, loops, `catch`, ternary, `&&`, `||` in conditions. Project linter config wins. If eslintrc, radon config, sonar config, or similar sets a complexity threshold, use that. No config: use defaults below. Thresholds: - 1-5: fine, leave alone - 6-10: watch, refactor if touching anyway - 11-15: refactor now - 15+: must split, no debate Prefer real tools over eyeballing when environment allows: - Python: `radon cc -s -a ` - JS/TS: eslint `complexity` rule - Go: `gocyclo` - Polyglot: `lizard ` No tool available: count manually, per function, show the count. ## Refactor tactics, in order of preference 1. **Guard clauses.** Invert conditions, return early, kill nesting. 2. **Extract function.** Each extracted piece gets a name that says what, not how. Names are documentation. 3. **Lookup table / map** instead of if-else or switch chains. 4. **Named predicates.** `if (isEligibleForRefund(order))` beats a 4-clause boolean soup. 5. **Polymorphism / strategy** for switch-on-type. Only when the switch appears in 2+ places. 6. **Flatten loops.** Extract loop body, use continue instead of nested if. ## Hard rules - Preserve behavior. Run tests before and after. No tests: say so, suggest adding, refactor conservatively. - Don't game the metric. A dense one-liner hiding 6 branches is worse than the honest if-chain it replaced. Complexity should move into well-named units, not disappear into cleverness. - Don't break public APIs or exported signatures without asking. - Small functions with clear names > few functions with comments explaining sections. - One responsibility per function. If the name needs "and", split. ## Workflow 1. Measure all touched functions, rank by CC descending. 2. Report hotspots with numbers before touching anything. 3. Refactor worst first, one function at a time. 4. Re-measure. Show before/after table: function, CC before, CC after. 5. Verify: tests pass, behavior unchanged, diff reviewable. ## Output format End every refactor with: ``` ## Complexity report | Function | Before | After | |----------|--------|-------| | parseOrder | 14 | 4 | Extracted: validateHeader, resolveDiscount Behavior verified: ``` Keep prose minimal. Numbers and diffs do the talking. ## Dónde encaja - Categoría: [Herramientas para desarrolladores](https://skillsagentes.com/categorias/herramientas-desarrollo.md) — Skills que cambian cómo tu agente escribe, revisa y despliega código. - Creador: [saurabhkumar8112](https://skillsagentes.com/creators/saurabhkumar8112.md) — 1 skills en el directorio - [Todas las skills](https://skillsagentes.com/skills.md) - [Ranking de instalaciones](https://skillsagentes.com/ranking.md) ## Skills relacionadas - [Skill Creator](https://skillsagentes.com/skills/anthropics/skills/skill-creator.md): Crea skills nuevos, modifica y mejora los existentes, y mide su rendimiento. Úsalo para crear un skill desde cero, editarlo, correr evals, o afinar su descripción para que dispare mejor. - [Caveman Review](https://skillsagentes.com/skills/juliusbrussee/caveman/caveman-review.md): Comentarios de revisión de código ultra-comprimidos: recorta ruido del feedback de PR preservando la señal accionable. Cada comentario es una línea: ubicación, problema, fix. - [Caveman Commit](https://skillsagentes.com/skills/juliusbrussee/caveman/caveman-commit.md): Generador de mensajes de commit ultra-comprimidos: recorta el ruido preservando la intención y el porqué. Formato Conventional Commits, asunto ≤50 caracteres, cuerpo solo cuando el porqué no es obvio. - [Cavecrew](https://skillsagentes.com/skills/juliusbrussee/caveman/cavecrew.md): Guía de decisión para delegar a subagentes estilo caveman: cuándo lanzar cavecrew-investigator, cavecrew-builder o cavecrew-reviewer en vez de hacerlo inline. Su salida viene comprimida, así el contexto principal dura más. - [Git Workflow And Versioning](https://skillsagentes.com/skills/addyosmani/agent-skills/git-workflow-and-versioning.md): Estructura las prácticas de flujo de trabajo en git. Úsalo al hacer cambios de código, commitear, ramificar, resolver conflictos, o al cortar un release y versionar. --- Skills Agentes · [Índice de páginas en markdown](https://skillsagentes.com/sitemap.md) · [Inicio](https://skillsagentes.com/index.md)