Turning research notes into a spec a coding agent can build
Agents do not need your research narrative. They need constraints — and a list of what you decided not to build.
The short answer: convert findings into constraints. A coding agent does not need to know what you learned — it needs to know what to build, what is explicitly out of scope, which decisions are already settled, and which are still open. The practical artefact is a short project context file carrying the product goal, the target user, the feature list, the non-goals, and the risk rules. Research left in prose produces vague code; research compiled into constraints produces something you can run. As of July 2026 every mainstream coding agent reads a project context file of this kind, so the format is portable rather than tied to one vendor.
This is the step that quietly decides whether a research phase was worth doing. Plenty of well-researched projects stall here, holding a document full of genuine insight that cannot be handed to anything — human or agent — as instructions.
Findings are not requirements
A finding describes the world. A requirement constrains what you build. The translation is mechanical once you see it, and skipping it is why so many specs read like literature reviews.
| Research finding | Useless in a spec because | The constraint it becomes |
|---|---|---|
| Users complain the export is slow | No threshold, no scope, nothing to check against | Exports must stream and start within two seconds |
| Several creators use spreadsheets alongside the tool | Describes behaviour, not a decision | CSV import and export are v1 scope, not later |
| Nobody mentioned mobile in the corpus | An absence, easily misread as an opportunity | Non-goal: no native mobile app. Web responsive only |
| Sources disagree about auth complexity | Unresolved, so an agent will pick for you | Open question: decide before the billing work starts |
Note the fourth row. Unresolved questions belong in the file explicitly, flagged as open. If you leave them out, the agent resolves them silently with whatever is most common in its training, and you discover the decision later as an implementation detail rather than a choice.
The shape of a context file that works
The structure that holds up in practice is boring and short. Six sections, each of which an agent can act on:
# Mission - one paragraph: what this is and for whom
# Target user - specific enough to exclude people
# MVP features - the list, in build order
# Do not build yet - explicit non-goals, with the reason
# Risk rules - things that must never happen in generated code
# Open questions - decisions deliberately not yet madeEvery section earns its place by changing what gets written. Mission prevents generic scaffolding. Target user rules out features. Risk rules catch the category of mistake that is expensive rather than annoying — the compliance disclaimer that must appear, the data that must never be stored, the claim the product must never make.
The full anatomy of that file, section by section with worked examples, is in how to write a CLAUDE.md that actually steers the model.
Counter-intuitively, drafting the do-not-build list before the feature list produces a better spec. Naming what you are refusing forces the scope question immediately, and the feature list that follows is usually a third shorter and considerably more specific.
Why the non-goals section does the most work
Coding agents are helpful, and helpfulness is the problem. Given an under-specified brief, an agent adds the features it expects a product like this to have — auth flows nobody asked for, admin panels, settings pages for options that do not exist. Each addition is individually reasonable and collectively a different product.
An explicit non-goals list is the only reliable defence, and it works best when each entry carries its reason:
- No mobile app — responsive web covers the observed use case; nothing in the corpus described a mobile workflow
- No team accounts in v1 — every validated user in the research was working alone
- No custom model hosting — API tier is sufficient at this volume, and self-hosting is a project of its own
The reasons matter because you will revisit these decisions, and without them you cannot tell a considered exclusion from an oversight. Six weeks later a bare list of non-goals looks arbitrary and gets quietly overturned.
Keep provenance, but keep it separate
Every constraint in the file came from somewhere — a specific claim in a specific video, or a pattern across several. That provenance is valuable and does not belong in the instruction file, because it bloats what the agent reads without changing what it does.
Keep it alongside: the constraint list the agent consumes, and the sourced findings document a human consults when a decision comes back up for review. Losing the second one is how a team ends up re-litigating a settled question because nobody remembers why it was settled — the same attribution discipline argued for in the timestamps-and-citations test.
The main quality check: read the constraint list and ask whether it could describe two other products in the category. If it could, the compilation stayed at the level of the category rather than your specific findings, and the agent will build the most generic thing consistent with it.
Doing this against an existing codebase
For an established project the same compilation applies with one change: the context file already exists and describes conventions, so the research output is layered on as a feature brief rather than a founding document.
That layering works better than a fresh spec, because the agent inherits the existing patterns — file layout, naming, testing approach — and receives only the new requirement as constraints. The most common mistake here is restating the whole product in the brief, which invites the agent to reconsider settled architecture.
Test the spec before you test the code
A spec is cheap to check and expensive to get wrong, so it is worth running two quick tests before any code is generated from it.
The substitution test. Replace your product name with a competitor's throughout the file. If it still reads as an accurate brief for them, the constraints are describing the category rather than your findings, and the agent will build the category average.
The disagreement test. Hand the file to someone who knows the space and ask which line they would argue with. A spec nobody can disagree with contains no decisions — it is a description. The lines that draw an objection are the ones actually doing work, and they are also the ones worth double-checking against your sources.
The loop that keeps it honest
A context file written once and never revised becomes misleading the moment the product moves, and a misleading file is worse than none — the agent follows it confidently. Three maintenance triggers worth adopting:
| Trigger | What to update |
|---|---|
| An open question gets decided | Move it out of open questions into constraints, with the reasoning |
| A non-goal gets overturned | Delete it and record why the earlier reason no longer holds |
| New research lands | Re-compile the affected sections rather than appending — appended specs contradict themselves within a couple of rounds |
That third trigger is why research and building are better run as a loop than as phases. The reasoning-model side of producing the findings in the first place is covered in using Claude for product research, and the compressed end-to-end version — corpus to synthesis to a spec you can build against — in the seven-day playbook.
Structured notes per video, a synthesis across the corpus, then a generated project context file and strategy markdown you can hand straight to a coding agent — exports included on every plan. 7-day free trial.
Closing thought
The reason this step gets skipped is that it feels like paperwork after the interesting part is done. It is not: it is the point where research either becomes constraints or evaporates into a document nobody opens again. An afternoon spent converting findings into a page of specific instructions — including the list of things you are refusing to build — is the difference between an agent that ships your product and one that ships the average of everything like it. The plans all include the exports, because the compiled artefact is the point of the research rather than a bonus on top of it.
Frequently asked
How do I turn research notes into a spec an AI coding agent can build from?
Convert findings into constraints. A coding agent does not need your research narrative — it needs to know what to build, what is explicitly out of scope, which decisions are already made, and which are open. The practical format is a project context file listing the product goal, the target user, the feature list, the explicit non-goals, and the risk rules. Research that stays in prose form produces vague code; research compiled into constraints produces buildable output.
Why do coding agents need a context file at all?
Because without one they infer the missing requirements, and inference fills gaps with the most common pattern rather than your specific decision. A context file replaces guessing with instruction, which is why the same agent produces markedly different quality against the same prompt depending on whether that file exists.
What is the single most valuable section of the file?
The non-goals. Listing what you have decided not to build prevents an agent from helpfully adding scope, which is the most common way generated code drifts away from the plan. A do-not-build-yet section is worth more than another paragraph of feature description.
Should research citations stay in the spec?
Keep them, but separate them from the instructions. Constraints belong in the file the agent reads; the sources behind each decision belong alongside it. When you revisit a decision in two months you need to know which video or finding drove it, and that provenance is what stops a rewrite from re-litigating settled questions.
How long should the context file be?
Short enough to stay accurate. A page or two of specific constraints beats ten pages of aspiration, because a file nobody updates becomes actively misleading once the product moves. Prune it whenever a section stops describing reality.
Does this work for a codebase that already exists?
Yes, and arguably better. For an existing project the research output becomes a feature brief layered onto the existing conventions, so the agent inherits the codebase's patterns and gets the new requirement stated as constraints rather than as a wish.
What is the failure mode to watch for?
Compiling the research into a spec so abstract that any product would satisfy it. If the constraint list would fit three unrelated products, it is not a spec — it is a category description, and the agent will build the most generic thing that matches.