The primary method I use to develop a greenfield app from scratch, or a new feature is through Spec Driven Development. Here is an overview of how I go about this.
What is Spec Driven Development
Software engineering has become primarily the use of judgement on how code should be implemented by AI agents, rather than creating the code yourself. This has shifted the process left, and now engineers can look at the feature implementation from a high level, creating a spec document outlining details for the agents to follow. This document includes feature details, designs, architecture decisions, dependencies that may be needed, networking and persistence details, items that are out of scope, and anything the agents may need to do their work.
How I use it
Creating the spec document
If I’m doing a project from start to finish solo, I’ll typically ask an agent such Claude or GPT to create the spec document for me. In the prompt, I’ll provide the designs, a description of the feature/project, and various details that are important. When working with a team, include any documents from Product. In my prompt, I’ll always add “ask me any questions necessary in order to make a complete spec”. After it generates the document, there may be a section in it of “open questions” it didn’t bother to ask you during the process. Get these answered for the agent and the doc updated. Then review the document and look for anything that needs to be refined or added. Instruct the agent accordingly. Once the document is complete, it’s time to go to the next step.
Generating the first todo document
From this spec document, you can break it up in todo documents for the agent to follow when building the project. I’ll normally just have it create the initial todo document. I attach the spec doc and designs and tell it to create the initial todo document. This todo doc is just putting in the initial scaffolding and basics.
Start building
I then feed that todo document, spec document and designs into the coding agent (I typically use Cursor). I then let it loose to build what’s instructed in the todo doc.
Further todo steps
After the implementation of first todo document is complete, rather than creating the next todo doc as a separate step, I’ll just go into Plan Mode and tell the agent to implement the next phase of the project. I’ll feed in the spec doc and designs with that prompt. I don’t get specific on what the “next phase” is, it will figure that out based on what’s already implemented and the spec document. After than plan has been built, I’ll repeat that process (Plan Mode, “next phase”, build), until the project is at the point where I’m just down to refinements in specific areas. In other words, we’re now done with the spec-todo part of the project/feature and into the granular modifications, bug fixes, etc, which I work with the agent on to address.
Conclusion
So far this process has worked well for me, and I would encourage you to try it, if you haven’t already. I do believe this approach, or some version of it, is where software development is headed.