Asking an LLM “build this feature” without context is like hiring a senior dev and not telling them the business domain. They’ll produce something. Probably not what you need.

The spec as a contract

I treat the spec as the contract between human and agent: requirements, acceptance criteria, input/output examples, relevant ADRs, code to touch.

MCP as a bridge

MCP lets us expose the project’s knowledge base to the agent. The spec is no longer pasted into chat manually — the agent fetches it when it needs it.

// MCP server exposing specs and ADRs
server.tool('get_spec', async ({ id }) => {
  return fs.readFile(`specs/${id}.md`);
});

Human-in-the-loop, always

The agent proposes. The human approves. Speed goes up; responsibility is not delegated.