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.
Interview the user relentlessly about every aspect of this plan, walking down each branch of the design tree and resolving dependencies between decisions one-by-one, until every branch is resolved and the user confirms the design.
Sketch out the major modules you will need to build or modify to complete the implementation. Actively look for opportunities to extract deep modules that can be tested in isolation.
A deep module (as opposed to a shallow module) is one which encapsulates a lot of functionality in a simple, testable interface which rarely changes.
Check with the user that these modules match their expectations. Check with the user which modules they want tests written for.
- Once the user has confirmed the design (step 3) and the modules (step 4), write the PRD using the template in
PRD-TEMPLATE.md. Submit the PRD as a GitHub issue.