OpenSpec and spec-first AI work, but they donโt fit every team
Originally published on LinkedIn
๐ข๐ฝ๐ฒ๐ป๐ฆ๐ฝ๐ฒ๐ฐ ๐ฎ๐ป๐ฑ ๐๐ฝ๐ฒ๐ฐ-๐ณ๐ถ๐ฟ๐๐ ๐๐ ๐๐ผ๐ฟ๐ธ, ๐ฏ๐๐ ๐๐ต๐ฒ๐ ๐ฑ๐ผ๐ปโ๐ ๐ณ๐ถ๐ ๐ฒ๐๐ฒ๐ฟ๐ ๐๐ฒ๐ฎ๐บ Spec-first development and OpenSpec absolutely have a place.
When I first read OpenSpec, I loved the core idea: requirements in the repository, give agents a persistent knowledge base, keep business intent close to the code. I already do this with other documents like ADRs to help agents. This felt incredibly powerful so had to try when pushed up my list by a colleague.
So I tried it on a large, mature application: multiple domains, 10,000+ tests, substantial unit and E2E coverage, ADRs, engineering docs.
My assumption was simple: point an agent at the repo, reconstruct the requirements, drop them into OpenSpec, done.
It didn't fit.
The problem wasn't OpenSpec. It was the ๐ฆ๐ผ๐๐ฟ๐ฐ๐ฒ ๐ผ๐ณ ๐ง๐ฟ๐๐๐ต
I had only the tests. They describe what the application actually does and drive a fully automated regression suite. If I introduce another layer saying what the system ๐๐ต๐ผ๐๐น๐ฑ do, what happens when the two disagree?
I kept going anyway, and this is where it became useful.
I had agents mine the codebase and build a requirements catalogue from existing behaviour. That gave me:
๐น Clear feature documentation ๐น BDD-style GIVEN / WHEN / THEN scenarios ๐น Better navigation for humans and agents ๐น Visibility of gaps and weakly tested behaviour
All valuable, but one boundary I couldn't automate around:
I can infer ๐ช๐๐๐ง the software does. I cannot reliably infer ๐ช๐๐ฌ the business wanted it to do that.
Those are different things. Retrospectively inventing business intent just to make an existing repository fit felt like work without enough value.
More importantly, the experiment clarified how I actually build software.
I'm not really spec-first. I start with a feature and a direction, iterate on the plan, design and implement with agents. I get something visible quick, learn, change it, and once the behaviour right, I ๐ต๐ฎ๐ฟ๐ฑ๐ฒ๐ป it with automated tests.
My flow is closer to: ๐ Build โ Learn โ Iterate โ Harden
OpenSpec feels much more natural when an organisation wants to define full requirements and behaviour before implementation. In that environment, I can see it being extremely powerful.
But many startups and SMEs work through discovery. They don't always know exactly what they're building until they've built some of it.
So I didn't change my process to fit OpenSpec.
I took the parts that fit: โ Requirements in the repo โ Clearer feature documentation โ BDD scenarios โ A navigable knowledge base for agents
Tests remain the strongest description of what my existing application actually guarantees. The requirements an agent read optimized replica.
I still like OpenSpec, just not for this system.
Maybe that's the better question for all these new AI development tools:
Not โIs this a good way to build software?โ But: ๐๐ผ๐ฒ๐ ๐๐ต๐ถ๐ ๐บ๐ฎ๐๐ฐ๐ต ๐๐ต๐ฒ ๐๐ฎ๐ ๐๐ฒ ๐ฎ๐ฐ๐๐๐ฎ๐น๐น๐ ๐ฏ๐๐ถ๐น๐ฑ ๐๐ผ๐ณ๐๐๐ฎ๐ฟ๐ฒ?