К основному содержанию
скилл GitHub Copilot официальный · GitHub

refactor-method-complexity-reduce — скилл для GitHub Copilot

Рефакторит выбранный метод, снижая когнитивную сложность через вынос логики в хелперы. Подходит для длинных ветвлений и вложенных условий.

Установить в Claude Code · Через Skills CLI (Vercel) Все способы и платформы ↓
npx skills add github/awesome-copilot --skill refactor-method-complexity-reduce -a claude-code
Открыть на GitHub

Что делает refactor-method-complexity-reduce

Скилл разбирает метод ${input:methodName} и ищет вложенные условия, цепочки if-else или switch, повторяющиеся блоки, циклы с условиями и сложные булевы выражения. Затем выносит проверки, обработку отдельных типов и общие операции в сфокусированные методы-помощники.

Основной метод должен стать потоком вызовов с меньшей вложенностью. Скилл сохраняет входное и выходное поведение, обработку ошибок, типы исключений и тексты сообщений. После правок он требует проверить компиляцию, запустить связанные тесты, убедиться в failed=0 и сверить сложность с ${input:complexityThreshold}. Ставьте его, если нужно разбирать перегруженный метод без смены его контракта.

Какие задачи решает

  • снизить когнитивную сложность выбранного метода
  • вынести проверки в методы Validate*
  • разобрать цепочки if-else на отдельные обработчики
  • сохранить исключения и тексты ошибок при рефакторинге
  • проверить результаты тестов по строке failed=0

Примеры запросов агенту

  • Рефакторь метод `ProcessOrder` до порога `${input:complexityThreshold}`.
  • Вынеси вложенные проверки из `CalculateTotal` в методы-помощники.
  • Проверь сложность `HandleRequest` и сохрани текущее поведение ошибок.

Как установить refactor-method-complexity-reduce

1Через Skills CLI (Vercel)

npx skills add github/awesome-copilot --skill refactor-method-complexity-reduce -a claude-code

2Вручную: положить файлы

~/.claude/skills/refactor-method-complexity-reduce/SKILL.md

Папка скилла целиком; для одного проекта — .claude/skills/refactor-method-complexity-reduce/

Похожие

improve-codebase-architecture Matt Pocock Скилл ищет архитектурные узкие места в кодовой базе и показывает варианты углубления модулей в HTML-отчёте. Подойдёт для ревью перед рефакторингом. Claude Code 1 163 035установок tdd Matt Pocock Скилл управляет циклом красный-зелёный в TDD: проверяет, что тесты пишутся до кода, держит их на уровне публичных интерфейсов и не завязывает на внутреннюю структуру. Claude Code 1 141 062установок triage Matt Pocock Скилл проводит issue и внешние PR через роли триажа, проверку и подготовку брифа для агента. Подойдёт мейнтейнеру, который разбирает очередь задач. Claude Code 990 453установок codebase-design Matt Pocock Скилл помогает проектировать модули с небольшим интерфейсом и скрытой внутри сложностью. Подходит для рефакторинга, тестируемости и поиска чистого seam. Claude Code 850 344установок code-review Matt Pocock Проверяет изменения от выбранной точки по стандартам репозитория и требованиям задачи. Нужен для ревью ветки, PR или незавершённой работы. Claude Code 789 521установок implement Matt Pocock Выполняет задачу по спецификации или тикетам, ведёт работу через тесты и завершает её ревью с коммитом. Подходит для задач, где нужен дисциплинированный цикл разработки. Claude Code 774 700установок

Вопросы о refactor-method-complexity-reduce

Как установить refactor-method-complexity-reduce в GitHub Copilot?

Выполните npx skills add github/awesome-copilot --skill refactor-method-complexity-reduce. Также доступна команда gh skill install github/awesome-copilot refactor-method-complexity-reduce.

Что делает refactor-method-complexity-reduce?

Скилл делит сложную логику выбранного метода на методы-помощники, чтобы снизить его когнитивную сложность до заданного порога. Он сохраняет проверки, обработку ошибок и поведение метода.

Как скилл проверяет результат рефакторинга?

Он требует проверить компиляцию и запустить существующие тесты, связанные с методом. В выводе тестов нужно явно подтвердить failed=0, затем сверить метрику сложности с ${input:complexityThreshold}.

Исходный текст

SKILL.md · MIT
---
name: refactor-method-complexity-reduce
description: 'Refactor given method `${input:methodName}` to reduce its cognitive complexity to `${input:complexityThreshold}` or below, by extracting helper methods.'
---

# Refactor Method to Reduce Cognitive Complexity

## Objective
Refactor the method `${input:methodName}`, to reduce its cognitive complexity to `${input:complexityThreshold}` or below, by extracting logic into focused helper methods.

## Instructions

1. **Analyze the current method** to identify sources of cognitive complexity:
   - Nested conditional statements
   - Multiple if-else or switch chains
   - Repeated code blocks
   - Multiple loops with conditions
   - Complex boolean expressions

2. **Identify extraction opportunities**:
   - Validation logic that can be extracted into a separate method
   - Type-specific or case-specific processing that repeats
   - Complex transformations or calculations
   - Common patterns that appear multiple times

3. **Extract focused helper methods**:
   - Each helper should have a single, clear responsibility
   - Extract validation into separate `Validate*` methods
   - Extract type-specific logic into handler methods
   - Create utility methods for common operations
   - Use appropriate access levels (static, private, async)

4. **Simplify the main method**:
   - Reduce nesting depth
   - Replace massive if-else chains with smaller orchestrated calls
   - Use switch statements where appropriate for cleaner dispatch
   - Ensure the main method reads as a high-level flow

5. **Preserve functionality**:
   - Maintain the same input/output behavior
   - Keep all validation and error handling
   - Preserve exception types and error messages
   - Ensure all parameters are properly passed to helpers

6. **Best practices**:
   - Make helper methods static when they don't need instance state
   - Use null checks and guard clauses early
   - Avoid creating unnecessary local variables
   - Consider using tuples for multiple return values
   - Group related helper methods together

## Implementation Approach

- Extract helper methods before refactoring the main flow
- Test incrementally to ensure no regressions
- Use meaningful names that describe the extracted responsibility
- Keep extracted methods close to where they're used
- Consider making repeated code patterns into generic methods

## Result

The refactored method should:
- Have cognitive complexity reduced to the target threshold of `${input:complexityThreshold}` or below
- Be more readable and maintainable
- Have clear separation of concerns
- Be easier to test and debug
- Retain all original functionality

## Testing and Validation

**CRITICAL: After completing the refactoring, you MUST:**

1. **Run all existing tests** related to the refactored method and its surrounding functionality
2. **MANDATORY: Explicitly verify test results show "failed=0"**
   - **NEVER assume tests passed** - always examine the actual test output
   - Search for the summary line containing pass/fail counts (e.g., "passed=X failed=Y")
   - **If the summary shows any number other than "failed=0", tests have FAILED**
   - If test output is in a file, read the entire file to locate and verify the failure count
   - Running tests is NOT the same as verifying tests passed
   - **Do not proceed** until you have explicitly confirmed zero failures
3. **If any tests fail (failed > 0):**
   - State clearly how many tests failed
   - Analyze each failure to understand what functionality was broken
   - Common causes: null handling, empty collection checks, condition logic errors
   - Identify the root cause in the refactored code
   - Correct the refactored code to restore the original behavior
   - Re-run tests and verify "failed=0" in the output
   - Repeat until all tests pass (failed=0)
4. **Verify compilation** - Ensure there are no compilation errors
5. **Check cognitive complexity** - Confirm the metric is at or below the target threshold of `${input:complexityThreshold}`

## Confirmation Checklist
- [ ] Code compiles without errors
- [ ] **Test results explicitly state "failed=0"** (verified by reading the output)
- [ ] All test failures analyzed and corrected (if any occurred)
- [ ] Cognitive complexity is at or below the target threshold of `${input:complexityThreshold}`
- [ ] All original functionality is preserved
- [ ] Code follows project conventions and standards

© github · MIT · github/awesome-copilot

Смотрите также

Спонсоры проекта

Компании, которые помогают держать аналитику открытой