You still have to cook: what agents changed about how we build

Hanne Asselman, engineer at TechWolf
Hanne Asselman
October 12, 2026
•
3 min read
A pan on a stove with code symbols in it, and a spec and two tickets hanging above
Contents

This summer, I pointed an agent at a track of work one evening, left my laptop in the office, and went home. The next morning, 32 merge requests were waiting for me. Some tiny, some big, pipelines green, the agent's own review comments already handled.

Sounds great, right? And in some ways it was. We planned four weeks for that project and shipped it in about two. Those two weeks were also the most draining I've had as an engineer, and part of the design wasn't what I wanted. This post is about how we got there with Specto, the plugin we built to go from a spec to reviewed merge requests, and about what still needs a human in the kitchen. Let me start with that night.

TL;DR

Agents now write most of our code, so we built Specto: a Claude Code plugin with 21 skills that takes a rough idea all the way to reviewed merge requests. Here is what changed, what still breaks, and what we would do differently.

  • The bottleneck moved. Coding went from the slowest step to the fastest. Specs and review are where the time goes now.
  • AI-written specs are our weak spot. They are too long and dense, and a vague line gets built before anyone notices.
  • Review is the new bottleneck. A night of agent work can mean dozens of merge requests by morning. That is a lot of reading, and it changes how you learn a codebase.
  • Use it in pieces. Every skill works on its own, so you pick where the agent helps and where you do it yourself.

One prompt, one night

Those 32 merge requests came from our export builder: the part of our product where customers schedule their data exports, choose where they land and when they run. We wanted it more self-serve, more reliable and easier to observe, and we had planned four weeks for it.

It didn't start with Specto. I brainstormed with an agent first, interview style, so it would pull out of me what I already knew and what I still had to decide. Then I let it draft the spec. That draft was too long, too technical and not clear enough to work from, so I rewrote most of it myself. The tickets came from a skill I had written before Specto existed, which meant they had no explicit acceptance criteria and no link back to a spec section.

The night itself was one prompt. I pointed the agent at the track, where the tickets were grouped per milestone with their dependencies linked, and asked it to work through them one by one with implement-ticket: implement, review its own merge request until it stopped finding things, and watch the pipeline until it was green. I also added two rules that weren't in Specto yet: keep comments to the non-obvious why, and don't over-engineer.

By morning it had worked through the whole track. That was the good part. The rest of those two weeks went into reading it.

The bottleneck flipped

When I started at TechWolf, AI meant Copilot finishing a line of code and ChatGPT in another tab. Then came Cursor. You were still deep in the code, going file by file with the AI because it couldn't hold much context. You were still the one coding, with a short feedback loop.

Specs were written by hand, in a separate tool, and that took a long time. But a spec could stay a bit open. Implementation was the slow part, so if you hit a wrong design halfway, there was time to fix it, discuss it, and sometimes even update the spec.

Agents changed that. A big ticket now takes about an hour, so you implement ten of them in a row and they depend on each other. An agent only asks when it notices something is unclear. When it thinks it understood, it builds its own interpretation, and it builds it everywhere at once. You don't find the wrong design halfway anymore. You find it at review, already implemented across a stack of merge requests you now have to redo.

What Specto is

Specto, short for spec to implementation, is a Claude Code plugin our engineers built for our engineers, on top of the open-source superpowers plugin. It covers the flow from a rough idea to reviewed merge requests: brainstorm, product and engineering spec, tickets, implementation, review. You decide where you step in. Sometimes you write the spec yourself and let it plan and implement. Sometimes you let it draft and you rewrite.

What it mainly brings us is a shared way of working. A spec, a ticket and a merge request look the same no matter who ran the skill, and nothing goes through without something or someone checking it. Each main authoring skill has a separate reviewer, so nothing grades its own homework: new-spec has review-spec, implement-ticket has review-mr and a test critic, and the branch gets a definition-of-done check before it reaches a human.

The Specto flow from brainstorm to review, with the skills behind each step.
From brainstorm to review, and the skills behind each step. Every skill also runs on its own.

The repo is the source of truth. Specs live in a docs folder in the repo, next to the code, so the agent has the context without anyone pasting it in. Every ticket links back to the spec section it came from, and the plan in between is temporary and gitignored.

A repository tree with a docs folder holding the specs next to the source code.
Specs sit next to the code, so the agent and the next engineer read the same thing.

The skills don't let an agent run loose. They call vetted scripts for GitLab and Jira, so the agent can only do what we decided it may do. Anything we pull in from Slack or Notion gets scanned for personal data first. And before any AI reviews a spec, a plain linter checks it for the usual tells of AI-written text, like em-dashes.

You don't need the whole flow. Every skill runs on its own. You can brainstorm with your team at a whiteboard, write the spec yourself, and use implement-ticket for a single ticket. That is how most of us actually use it: implement-ticket, review-mr and create-jira-ticket are used a lot, the spec skills a lot less. We track which skills people use, and that tells us what to fix next.

What still breaks

The specs. An agent follows the recipe exactly, even when the recipe is wrong. And the recipes new-spec writes are long, technical and hard to read: a lot of one-liners, a lot of difficult words, few real sentences. You could write the same thing in a third of the length. Recently I reviewed three specs a colleague had written by hand, and they were super clear. After reading them I knew the design, which endpoints we needed and what would change in the system. That is what a spec is for.

A dense spec isn't just annoying, it's risky. An export runs in two steps: we generate the file, then we upload it. I wrote that failed exports should be retried, and to me that meant the whole thing. The agent read the same sentence and retried only the upload. It didn't ask, because to the agent nothing was unclear.

The gap wasn't inside one ticket, it sat between milestones. Each milestone made sense on its own, but the agent never looked at what the others were doing. And part of this was on me: the spec still had AI slop in it, I didn't really review the tickets, and the spec wasn't merged yet, so the tickets pointed at a merge request the agent couldn't find in the repo.

What works better for us now: write the first draft yourself, then run review-spec on it and let the agent challenge it. The agent is a better reviewer than author.

Review. That many merge requests is a lot to read, and agent code is often more complex than it needs to be, with a lot of comments. You read and read without really understanding. As a junior, reviewing line by line was how I learned our codebase. At this volume that isn't possible anymore. You focus on the design and whether it matches the spec, you trust the author was critical of their agent, and you skip things you would rather read, like the tests. That is faster, but it also means less shared understanding of the system, and keeping that understanding gets harder every month.

Today I start review-mr, which checks spec adherence, acceptance criteria, best practices and security, and while it runs I read the merge request myself for the design and the flow. It helps. We're not done figuring this out.

What works

The speed is real, and the mechanical work (pipelines, review comments, ticket plumbing) is mostly gone.

What I like most is that the recipes are ours. When a skill annoys you, you log it with plugin-feedback, or you change the skill yourself and open a merge request on the plugin repo. The next person cooks with the better version without ever knowing there was a problem. The skills are reviewed like code, and they get a bit better every week.

The skills are also ours to shape. There is even reconcile-spec, which compares a shipped spec with the merged code and flags where they drifted apart, so a spec doesn't quietly go stale like ours used to.

If you are building something similar

  • Merge the spec before you create tickets. The agent looks in the repo, not in your open merge requests.
  • Review the tickets, not only the spec. That is where the interpretation happens.
  • Put your preferences in the skills, not in your prompt, so everyone gets them.
  • Plan for review. If one person produces 32 merge requests in a night, someone has to read them.

You still have to cook

Agents are not a microwave meal. The effort didn't disappear that night, it moved: from writing the code to being clear, and to making the work reviewable for someone else. So keep talking to your colleagues, and don't let the agent decide for you. It will follow whatever recipe you give it, exactly.

No items found.

Blog

Relevant sources

From guides to whitepapers, we’ve got everything you need to master job-to-skill profiles.

View all
View all
A pan on a stove with code symbols in it, and a spec and two tickets hanging aboveA pan on a stove with code symbols in it, and a spec and two tickets hanging above
Task Intelligence
Blogpost

You still have to cook: what agents changed about how we build

We pointed an agent at a track of work one evening and found 32 merge requests waiting the next morning. The project shipped in two weeks instead of four, and those were the most draining two weeks of the year. This is what Specto is, and what still needs a human in the kitchen.
Hanne Asselman, engineer at TechWolf
Hanne Asselman
Oct 12, 2026
You still have to cook: what agents changed about how we build
Task Intelligence
Blogpost

Beyond the code series: When code gets cheap, judgment gets expensive

One of our engineers went from idea to working dashboard in under a week. Then we paused it. AI has collapsed the cost of building software, which moves the hard question from "can we build it?" to "should we?". Why we're doubling down on the Product Engineer.
Silas, Product Engineer at TechWolf
Silas Deblanc
Sep 28, 2026
Beyond the code series: When code gets cheap, judgment gets expensive
Task Intelligence
Blogpost

Platform series: rebuilding observability so any engineer can debug a failing request

An experienced engineer could spend 15-30 minutes on a failing request and still only have a hypothesis. Here is how we rebuilt observability on OpenTelemetry, ClickHouse and HyperDX, and what we found once we could follow a request across every hop. First post in our Platform series.
Ruben Hias
Ruben Hias
Sep 23, 2026
Platform series: rebuilding observability so any engineer can debug a failing request

Using AI while interviewing at Techwolf

At TechWolf, we see generative AI as part of the modern toolkit — and we expect candidates to treat it that way too. We love it when people use AI to take their thinking to the next level, rather than to replace it.You are welcome to use tools like ChatGPT, Claude, or others during our interview process, especially in take-home assignments or technical exercises. We encourage you to bring your full toolkit — and that includes AI — as long as it reflects your own thinking, decisions and creativity.We don’t see AI as replacing your skills. Instead, we’re interested in how you use it: to brainstorm ideas, speed up iteration, validate your thinking, or unlock new ways of approaching a challenge. Great candidates show judgment in when to rely on AI, how to adapt its output, and where to go beyond it.

What we’re looking for:

Our interviews are designed to understand how you think, solve problems, and express ideas. Using AI in a way that amplifies those things — not masks them — is encouraged.

What to avoid:

We ask that you don’t submit AI-generated work without review, or present answers that you can’t fully explain. We’re not testing the model — we’re getting to know you, your skills, and your potential. If there are cases where we don’t want you to use AI for something, we’ll tell you ahead of the interview being booked.In short: use AI as you would on the job — as a smart assistant, not a stand-in.

Example: Programming with AI

In a coding challenge, you’re welcome to use generative AI to support your workflow — just like you might in a real development environment. For instance, you might use AI to quickly generate boilerplate code, look up syntax, or get a first-pass solution that you then adapt and debug collaboratively. What we’re interested in is your ability to reason through trade-offs, communicate clearly, think about complexity and iterate effectively — not whether you memorized the syntax perfectly. If using AI helps you stay in flow and focus on higher-level problem-solving, we consider that a strength. There could be some challenges where we won’t allow you to use AI - in that case we’ll tell you in advance, and will tell you why.