From the first commit of my Python project, one rule mattered more than any other: the coding agent must never see the acceptance criteria. So I built two agents that never compare notes. One writes the tests from the full specification, and a separate coding agent writes the code from the same specification with the criteria cut out. In most coding environments, the same agent writes both, which compromises the validity of the test results.
I forced the cut to happen in code through context assembly, the step that builds the coding agent's prompt, where the criteria section of the task file is removed before the prompt is built. For a while I thought that cut was airtight. Then I found that a single comment line broke it: the cut stopped there, and every criterion after the comment reached the coding agent. A week later, a criterion wrapped onto a second line did the same thing. Both bugs were mine. This time, after fixing them, I added tests so any future build fails if the cut is not applied as intended.
Skills and MCP servers are often weighed against each other, but for the rule my project depends on, the answer turned out to be neither. I wanted users to reach qikly, my command-line tool, from an AI assistant such as Claude Code or Cursor. That puts two LLMs in play, and neither should see the acceptance criteria. The assistant could already run qikly, but it did not know when to use it, so I wrote a Skill: a folder of Markdown instructions the assistant loads when a request matches its description.
Writing the Skill separated two jobs. The Skill's job is advice about what belongs in the requirements versus the acceptance criteria. That can only be taught, not guaranteed. Context assembly's job is cutting the criteria out every time, whether or not a Skill is installed. The advice still matters, because a criterion also written into the requirements reaches the coding agent anyway, so I added a check to qikly --validate that warns about such restatements.
Source: Towards Data Science · Summarized by HeadlinesBriefing