request-refactor-plan
mattpocock/skills
Plan and document refactors as detailed GitHub issues with tiny, safe commits.
What is request-refactor-plan?
This skill guides you through a structured interview to understand a refactoring problem, explore the codebase, consider alternatives, and break the work into minimal commits. It then creates a GitHub issue with a comprehensive refactor plan including problem statement, solution, commit breakdown, decisions, and testing strategy.
- Interview user about refactoring goals and constraints
- Explore codebase to verify assumptions and understand current state
- Present alternative approaches and evaluate trade-offs
- Assess test coverage and plan testing strategy
- Break implementation into tiny, safe commits that keep code working
- Generate GitHub issue with detailed refactor plan and decision document
How to install request-refactor-plan
npx skills add https://github.com/mattpocock/skills --skill request-refactor-planHow to use request-refactor-plan
- 1.Describe the problem you want to solve and any initial solution ideas
- 2.Allow the skill to explore your repository structure and codebase
- 3.Review and discuss alternative approaches presented
- 4.Answer detailed questions about implementation requirements and constraints
- 5.Confirm the exact scope of what will and won't change
- 6.Discuss testing strategy for the affected code areas
- 7.Review the generated tiny commit plan
- 8.Create the GitHub issue with the refactor plan
Use cases
- Planning a large refactor before starting implementation
- Creating a refactoring RFC to discuss with team
- Breaking down a complex refactor into manageable incremental steps
- Documenting architectural decisions for a codebase change
- Ensuring test coverage is adequate before refactoring begins
- Backend engineers planning refactors
- Frontend developers restructuring components
- Team leads coordinating refactoring efforts
- Developers working on legacy code modernization
request-refactor-plan FAQ
The skill will ask about your testing plans. You can decide whether to add tests first, add them during the refactor, or document testing decisions in the issue.
Yes, the skill allows you to skip steps if you don't consider them necessary for your particular refactor.
Each commit should be as small as possible while leaving the codebase in a working state. This follows Martin Fowler's principle of making refactoring steps minimal and verifiable.
The issue serves as a detailed implementation guide with the commit plan, decisions, and testing strategy. You can then execute the refactor following the planned commits.
This skill creates the plan and documents it as a GitHub issue. The actual implementation is done separately by following the commit plan.
Full instructions (SKILL.md)
Source of truth, from mattpocock/skills.
name: request-refactor-plan description: Create a detailed refactor plan with tiny commits via user interview, then file it as a GitHub issue. Use when user wants to plan a refactor, create a refactoring RFC, or break a refactor into safe incremental steps.
This skill will be invoked when the user wants to create a refactor request. You should go through the steps below. You may skip steps if you don't consider them necessary.
-
Ask the user for a long, detailed description of the problem they want to solve and any potential ideas for solutions.
-
Explore the repo to verify their assertions and understand the current state of the codebase.
-
Ask whether they have considered other options, and present other options to them.
-
Interview the user about the implementation. Be extremely detailed and thorough.
-
Hammer out the exact scope of the implementation. Work out what you plan to change and what you plan not to change.
-
Look in the codebase to check for test coverage of this area of the codebase. If there is insufficient test coverage, ask the user what their plans for testing are.
-
Break the implementation into a plan of tiny commits. Remember Martin Fowler's advice to "make each refactoring step as small as possible, so that you can always see the program working."
-
Create a GitHub issue with the refactor plan. Use the following template for the issue description:
Problem Statement
The problem that the developer is facing, from the developer's perspective.
Solution
The solution to the problem, from the developer's perspective.
Commits
A LONG, detailed implementation plan. Write the plan in plain English, breaking down the implementation into the tiniest commits possible. Each commit should leave the codebase in a working state.
Decision Document
A list of implementation decisions that were made. This can include:
- The modules that will be built/modified
- The interfaces of those modules that will be modified
- Technical clarifications from the developer
- Architectural decisions
- Schema changes
- API contracts
- Specific interactions
Do NOT include specific file paths or code snippets. They may end up being outdated very quickly.
Testing Decisions
A list of testing decisions that were made. Include:
- A description of what makes a good test (only test external behavior, not implementation details)
- Which modules will be tested
- Prior art for the tests (i.e. similar types of tests in the codebase)
Out of Scope
A description of the things that are out of scope for this refactor.
Further Notes (optional)
Any further notes about the refactor.
</refactor-plan-template>Related skills
More from mattpocock/skills and the wider catalog.
grill-with-docs
Relentless interview to sharpen a plan or design while generating ADRs and a glossary as you go.
improve-codebase-architecture
Scan your codebase for shallow modules, get a visual HTML report of deepening opportunities, then drill into whichever one you pick.
tdd
Build features and fix bugs test-first using red-green-refactor with vertical slices, not horizontal.
to-prd
Turn any conversation into a published PRD — no interviews, just synthesis of what you've already discussed.
to-issues
Break a plan, spec, or PRD into independently-grabbable vertical-slice issues on your project tracker
setup-matt-pocock-skills
One-time repo setup for Matt Pocock's engineering skills — configures issue tracker, triage labels, and domain doc layout.