--- name: refactoring description: "Explicitly preserve behavior while improving structure; identify unnecessary abstraction and avoid scope creep." --- # Refactoring Skill Explicitly preserve behavior while improving structure; identify unnecessary abstraction and avoid scope creep. ## Subagents When you need to delegate sub‑tasks, use the `pi-subagents` skill. **Example:** When refactoring a legacy module, use a **scout** to identify all call sites of the `legacy::utils` functions, another **scout** to map the test coverage for each, and an **implementer** to inline or replace them incrementally while a **reviewer** ensures behavior is preserved. *You may adapt the delegation pattern to fit the exact requirements of the codebase.* ## Principles ### Preserve Behavior - Run tests before and after - Make incremental changes - Verify at each step ### Improve Structure - Reduce duplication - Clarify intent - Improve modularity ### Avoid Scope Creep - One refactoring at a time - No new features - No style-only changes in same commit ### Identify Unnecessary Abstraction - Remove unused interfaces - Inline single-use functions - Flatten deep hierarchies ### Run tools - Use refactoring tools like formatters/linters when available