refactor-method-complexity-reduce — скилл для GitHub Copilot
Рефакторит выбранный метод, снижая когнитивную сложность через вынос логики в хелперы. Подходит для длинных ветвлений и вложенных условий.
npx skills add github/awesome-copilot --skill refactor-method-complexity-reduce -a claude-codeЧто делает 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-code2Вручную: положить файлы
~/.claude/skills/refactor-method-complexity-reduce/SKILL.mdПапка скилла целиком; для одного проекта — .claude/skills/refactor-method-complexity-reduce/
Вручную: положить файлы
.agents/skills/refactor-method-complexity-reduce/SKILL.mdДля всех проектов — ~/.agents/skills/
Вручную: положить файлы
.cursor/skills/refactor-method-complexity-reduce/SKILL.mdCursor читает и .agents/skills/, и .claude/skills/
1Через Skills CLI (Vercel)
npx skills add github/awesome-copilot --skill refactor-method-complexity-reduce2GitHub CLI
gh skill install github/awesome-copilot refactor-method-complexity-reduce3Вручную: положить файлы
.github/skills/refactor-method-complexity-reduce/SKILL.mdКомандой платформы
gemini skills install https://github.com/github/awesome-copilot --path skills/refactor-method-complexity-reduceВручную: положить файлы
.devin/skills/refactor-method-complexity-reduce/SKILL.mdСтарый путь .windsurf/skills/ тоже читается
Claude.ai
Упакуйте папку в zip и загрузите в Settings → Capabilities → Skills
Похожие
Вопросы о 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