A structured methodology for using LLMs in the software development lifecycle. Writing code is only one part of the process - majority of the work is in the planning, testing, and design phases.
- Concrete Outcomes - Have a clear goal for the project at the beginning and make sure each phase produces well-defined artifacts (design documents, tests, code)
- Emergent Decisions - Progress through small, verifiable steps rather than attempting to solve everything upfront
- Continuous Validation - Regular checkpoints ensure alignment with project goals and early detection of issues
Reference: 01_generate_architecture.md
Establish high-level architecture with a focus on simplicity. Break the project into manageable engineering phases.
Reference: 02_project_status.md
Analyze the current state of the codebase to understand what exists before making changes.
Reference: 03_phase_design.md
Develop detailed specifications for the current phase, including components, interfaces, and data models.
Reference: 04_write_tests.md
Create comprehensive test plans before implementation to ensure clear validation criteria.
Reference: 05_code_generation.md
Produce implementation code that fulfills the design specification and passes tests.
Reference: 06_verify_tests.md
Run and analyze test results to identify failures, patterns, and coverage gaps.
Reference: 07_fix_hypothesis.md
For any test failures, systematically investigate root causes and develop targeted fixes.
Note: Don't forget to review the code yourself and get review from a teammate before merging to main.
Iterate through phases 2-7 until the project is complete.
- Start with a Clear Architecture: Begin by establishing the overall project structure, breaking it into phases with defined boundaries
- Make Small, Focused Commits: Maintain a clear history of changes
- Use Dev/Test/Prod Environments: Consider different environments in all implementation decisions
- Prefer Simplicity: Choose simple solutions over complex ones
- Avoid Duplication: Check for existing functionality before creating new code
- Keep Files Small: Refactor when files exceed 200-300 lines
- Use Proper Tooling: Propose appropriate tooling for the project that you are familiar with
- Reduced Complexity: Breaking projects into manageable phases reduces cognitive load
- Improved Quality: Test-first approach ensures higher-quality outcomes
- Better Documentation: Each phase produces clear documentation
- Faster Iteration: LLM collaboration accelerates feedback loops
- Knowledge Enhancement: Combines engineer expertise with LLM capabilities
Adapt these methodologies to fit your team's specific needs. Submit pull requests with improvements.
MIT License