code-simplify
paulrberg/agent-skills
Esta habilidad debe utilizarse cuando el usuario pida «simplificar el código», «limpiar el código», «refactorizar para mayor claridad», «reducir la complejidad», «mejorar la legibilidad», «facilitar su mantenimiento» o pide que se simplifique un código modificado recientemente.
...Expandir todoAcerca de code-simplify
La habilidad « code-simplify » está diseñada para simplificar el código existente conservando al mismo tiempo su comportamiento en tiempo de ejecución, sus interfaces públicas, sus efectos secundarios y su intención operativa. Ayuda a los desarrolladores a reducir la complejidad, mejorar la legibilidad y facilitar el mantenimiento del código sin introducir cambios funcionales. La herramienta se centra en una refactorización segura y específica, en lugar de en reescrituras generales, garantizando que las entradas, las salidas, el comportamiento ante errores y los contratos de los que depende externamente se mantengan estables. Está pensada para situaciones en las que el código se ha vuelto difícil de entender, está excesivamente anidado, presenta duplicados o es innecesariamente complejo.
La habilidad determina un alcance adecuado basándose en los objetivos proporcionados por el usuario, los archivos modificados recientemente o los cambios en el repositorio. Analiza el contexto circundante para establecer una línea de base de comportamiento antes de realizar cambios. La simplificación se lleva a cabo mediante un proceso estructurado que incluye aplanar el flujo de control, mejorar la claridad de los nombres, reducir la duplicación, reestructurar las transformaciones de datos densas en pasos más claros y mejorar la claridad de los tipos o los contratos cuando sea apropiado. El flujo de trabajo hace hincapié en ediciones pequeñas y reversibles, y sigue las convenciones, los linters, los formateadores y las pruebas existentes del proyecto. Las reglas de seguridad impiden cambios que alteren el comportamiento, como convertir API síncronas en asíncronas, eliminar medidas de seguridad operativas o modificar interfaces externas sin instrucciones explícitas.
Esta habilidad resulta útil para desarrolladores, responsables del mantenimiento y equipos que trabajan en bases de código en evolución y que desean mejorar la calidad del código sin alterar la funcionalidad. Entre los casos de uso habituales se incluyen la limpieza de código modificado recientemente, la refactorización para mejorar la legibilidad, la reducción de la carga cognitiva en funciones complejas, la simplificación de la lógica anidada y la preparación del código para su mantenimiento a largo plazo. Resulta especialmente valiosa en flujos de trabajo de desarrollo basados en repositorios, donde la verificación y la estabilidad del comportamiento son requisitos importantes.
Preguntas frecuentes
¿Cuándo debo utilizar esta habilidad?
Úsala cuando quieras simplificar el código, mejorar la legibilidad, reducir la complejidad, limpiar el código modificado recientemente o facilitar el mantenimiento del código sin alterar su comportamiento.
¿Cambia esta habilidad el comportamiento de la aplicación o las API públicas?
No. La habilidad está diseñada para preservar el comportamiento en tiempo de ejecución, los contratos públicos, los efectos secundarios, las entradas, las salidas y la semántica de errores en la que se basa el código de forma externa.
¿Esta habilidad requiere un repositorio de Git?
Sí. El flujo de trabajo comienza verificando el contexto del repositorio. Si el directorio actual no es un repositorio de Git, el proceso se detiene y solicita que se ejecute desde uno.
¿Cómo decide la skill qué archivos modificar?
Utiliza los objetivos proporcionados por el usuario cuando están disponibles. De lo contrario, se centra en los archivos modificados durante la sesión y, si no existen archivos modificados durante la sesión, puede recurrir a archivos no confirmados, tanto los que están bajo control de versiones como los que no lo están.
¿Existen limitaciones en cuanto a los tipos de refactorización que se realizan?
Sí. La skill evita modificaciones que alteren el comportamiento, reescrituras exhaustivas, abstracciones innecesarias, cambios entre API síncronas y asíncronas, y la eliminación de registros, telemetría, protecciones, reintentos u otro código significativo desde el punto de vista operativo.
Code Simplify
Objective
Simplify code while preserving behavior, public contracts, and side effects. Favor explicit code and local clarity over clever or compressed constructs.
Arguments
- Paths, patterns, a commit/range, or a scope phrase: used in Scope Resolution step 2.
--no-report: Skip the full user-facing report and return terse working notes for the caller.--no-verify: Skip verification because a parent orchestrator will verify the final result separately.- Default: verify touched behavior and present the full report.
Scope Resolution
Resolve scope once, then treat the result as fixed for the rest of the run.
- Verify repository context:
git rev-parse --git-dir. If this fails, stop and tell the user to run from a git repository. - If the request names targets — file paths/patterns, a commit/range, a natural-language subset (e.g. "the parser changes"), or a
resolved-scopefenced block with one repo-relative path per line — scope is exactly those targets. Map natural-language subsets to concrete paths before continuing. - Otherwise, scope is only session-modified files: files created or edited earlier in this session. Do not include other uncommitted changes.
- If there are no session-modified files, or earlier conversation history is not visible in this context, fall back to all uncommitted files, running each command once:
- tracked:
git diff --name-only --diff-filter=ACMR - untracked:
git ls-files --others --exclude-standard - combine both lists and de-duplicate.
- tracked:
- Exclude generated/low-signal files unless explicitly requested: lockfiles, minified bundles, build outputs, vendored code.
- If scope resolves to zero files, report that and stop.
- Emit the scope as a fenced code block tagged
resolved-scope, one repo-relative path per line. The block is authoritative: do not re-run scope commands or revisit exclusions afterward.
Operating Rules
- Preserve runtime behavior exactly. Keep inputs, outputs, side effects, and error behavior stable.
- Prefer project conventions over personal preferences. Infer conventions from existing code, linters, formatters, and tests.
- Make small, reversible edits. Avoid broad rewrites when targeted simplifications solve the problem.
- Call out uncertainty immediately when behavior may change.
Workflow
1) Determine Scope
- Apply the Scope Resolution section.
2) Build a Behavior Baseline
- Read surrounding context, not only changed lines.
- Identify invariants that must not change:
- function signatures and exported APIs
- state transitions and side effects
- persistence/network behavior
- user-facing messages and error semantics where externally relied on
- Note available verification commands (lint, tests, typecheck).
3) Apply Simplification Passes (in this order)
- Control flow:
- Flatten deep nesting with guard clauses and early returns.
- Replace nested ternaries with clearer conditionals.
- Naming and intent:
- Rename ambiguous identifiers when local context supports safe renaming.
- Separate mixed concerns into small helpers with intent-revealing names.
- Duplication:
- Remove obvious duplication.
- Abstract only when at least two real call sites benefit and the abstraction reduces cognitive load.
- Data shaping:
- Break dense transform chains into named intermediate steps when readability improves.
- Keep hot-path performance characteristics stable unless improvement is explicit and measured.
- Type and contract clarity:
- Add or tighten type annotations when they improve readability and safety without forcing broad churn.
- Preserve external interfaces unless asked to change them.
4) Enforce Safety Constraints
- Do not convert sync APIs to async (or reverse) unless explicitly requested.
- Do not alter error propagation strategy unless behavior remains equivalent and verified.
- Do not remove logging, telemetry, guards, or retries that encode operational intent.
- Do not collapse domain-specific steps into generic helpers that hide intent.
5) Verify
Skip when --no-verify is set. Otherwise verify per the Verification section below.
6) Report
Produce the Report section below.
Simplification Heuristics
- Prefer explicit local variables over nested inline expressions when it reduces cognitive load.
- Prefer one clear branch per condition over compact but ambiguous condition trees.
- Keep function length manageable, but do not split purely for line count.
- Keep comments that explain intent, invariants, or non-obvious constraints.
- Remove comments that restate obvious code behavior.
- Optimize for the next maintainer's comprehension time, not minimum character count.
Anti-Patterns
- Do not perform speculative architecture rewrites.
- Do not introduce framework-wide patterns while simplifying a small local change.
- Do not replace understandable duplication with opaque utility layers.
- Do not bundle unrelated cleanups into one patch.
Verification
Run the narrowest checks that validate touched behavior:
- formatter/lint on touched files
- targeted tests for touched modules
- typecheck when relevant
Run broader checks only when risk warrants it. Name every skipped check and why.
Report
Skip when --no-report is set; return terse working notes instead: touched scope, key simplifications, residual risks.
Use these section headings, in this order. Omit sections that do not apply — do not number them and do not leave gaps or placeholders.
Scope
Files and regions changed.
Simplifications
One sentence per meaningful change, focused on the readability or maintainability gain. Confirm behavior-preservation assumptions explicitly.
Verification
Commands run and outcomes, including skipped checks.
Residual Risks
One line per risk: Assumed <assumption>; if wrong, <what breaks>; check via <command or inspection>. Plain language — expand or gloss domain-specific terms. Include questions that need a user decision, phrased directly. Write None. when there are none.
Stop Conditions
Stop and ask for direction when:
- simplification requires changing public API/contracts.
- behavior parity cannot be confidently verified.
- the code appears intentionally complex due to domain constraints.
- the requested scope implies a larger redesign rather than simplification.
Instalar code-simplify
Descarga y descomprime los archivos de habilidades en tu directorio .claude/skills/.
Descargar ZIPClona el repositorio y copia los archivos de la habilidad a tu proyecto.
git clone https://github.com/PaulRBerg/agent-skills/blob/main/skills/code-simplify/SKILL.md # Copy SKILL.md to your .claude/skills/ directory
Copiar





Hogar
