Last week,
I blogged about being a builder and getting your computer setup. But before you go off to the races and start agentic coding, we need to be sure you have a collaboration model setup with your team. Your chat history is stored locally and cannot be viewed by your peers to “keep up.” At the same time, while development may be faster now, producing more features that don’t move the needle and are hard to maintain is an anti-goal; that is how you end up with a confusing product like Jira instead of a product grounded in strategy. It all ends up with the famous proverb:
In other words, you still need to collaborate and be strategic in this new world. But what does that mean? Insert: spec-driven development.
What are specs?
Do you remember when local versions of Microsoft Word were replaced by Google docs? I argue this is like that. You can still leverage Google docs when appropriate, but with spec-driven development, your PRD-like artifact(s) live in version control (ie Git). This keeps context of the plan for agentic output in code for initial review and longer-term ownership; anyone can see the feature work added to the code base, when it was added, by who, what the goals were with the addition, and if there were gaps in the plan (specs) for the agentic agents to operate against.
This has the following benefits:
Persisting Claude Code Plans
Working backwards from my latest strategy and roadmap doc(s) on my current project, I produced a Plan in Claude Code with the following prompt:
But Claude Code doesn’t store these plans in a consistent manner to be uploaded as part of the code base. After playing with how to store it, including formatting additions to ensure details where clear (who, when, etc), I explored alternative options and stumbled upon spec-driven development and frameworks to leverage.
The two I found:
After exploring OpenSpec, I was quickly able to convert the output of the above prompt into an initial spec. This was far easier than I expected, and editing it was easy in my IDE such as Cursor or VSCode.
So, what’s the workflow?
Iterate on your proposal, and then submit that for review as part of source control. You can choose for this to be part of the package you will be working on or have it be a separate package (potentially requiring manual copying of files depending on your choice). Either way, there will likely be some administrative work custom to your company, be it getting permissions to submit code to an existing package or creating a new one.
4. Initialize OpenSpec (or alternative). This assumes you have already downloaded it and added it to your PATH per the instructions last week. Run the following command in your terminal in the package:
5. Create your Proposal. In your chat window, type:
The overall OpenSpec workflow looks like this:
Alternatively, if you need to explore first:
6. Review & modify the output. Iterate and add context in the proposal.md, which is what you will start with as your review.
7. Submit the proposal for review. This requires the following commands in your terminal:
b. Add the proposal.md file to git:
c. Commit the new file to your branch:
d. Make sure you are still working against the latest version:
e. Submit your change for review:
f. The output will tell you how to create a review by following a link to GitLab. The message will begin with:
Follow this link and create your MR, adding your approvers as needed. Consider marking the review as DRAFT if you think it will be long-standing.
Then, go through the review process! Once finalized you now have a proposal that will be change managed with further reviews with changes.
What about the design.md, spec.md, and tasks.md files?
Once the proposal.md is aligned on, use OpenSpec to regenerate these files based on the updated proposal. Iteration should continue on these files, in order.
If you are working cross-functionally and want to know ownership boundaries between engineering and product, my initial
guideline is that by tasks.md engineering should be leading with product in the reviewer role, leading to the following workflow:
If the collaborative approach requires a dedicated owner, the technical details are likely to require these to be eng-led.
What about visual designs?
I used Claude Design to produce a design for my new feature. Given this was a live package, it was able to see the existing code as well as leverage a Figma MCP to ensure future designs were keep into account. It output an html file that I also added to the OpenSpec project folder so it is auditable and reviewable with the proposal.
Claude Design is great compared to tools like Replit to keep the context in code with the spec/proposal and not try to code the solution with the upfront iteration on the spec.
What happens once the spec is agreed to?
Let the engineers fly. This is the fun part! This up front effort is all to enable the faster development that AI promises in a strategic way. The PM is still needed to set this direction, but instead of waiting weeks to understand if they were correct, it may now only take hours. The engineer(s) still own the implementation, as they are best suited to review the agentic output and ensure it fits in to the aligned on engineering design.
If the feature proves to be valuable, then the PM can shift to leading the go to market (GTM) strategy which is still needed. With this faster lifecycle, it’s OK to learn that some hypotheses are wrong, re-embracing agile methodology in the fastest cycle time in software development’s history.
Then, iterate and repeat across projects!
This is not the end of defining what it means to be an AI-driven builder, but I believe it is a solid stepping stone. It doesn’t mean engineering or PMs go away; rather, it means they work more closely than ever before, in code, with fast iterations. That’s not so scary, is it? 😅



Leave a Comment