<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[WithAvi]]></title><description><![CDATA[WithAvi]]></description><link>https://withavi.hashnode.dev</link><image><url>https://cdn.hashnode.com/res/hashnode/image/upload/v1593680282896/kNC7E8IR4.png</url><title>WithAvi</title><link>https://withavi.hashnode.dev</link></image><generator>RSS for Node</generator><lastBuildDate>Fri, 16 Oct 2026 11:59:50 GMT</lastBuildDate><atom:link href="https://withavi.hashnode.dev/rss.xml" rel="self" type="application/rss+xml"/><language><![CDATA[en]]></language><ttl>60</ttl><item><title><![CDATA[20 cases before launch: a minimal eval set]]></title><description><![CDATA[You do not need a platform to start testing an AI feature. You need about twenty real cases, a rule for passing, and a rule for when not to ship.
Plenty of teams launch an AI feature after trying it o]]></description><link>https://withavi.hashnode.dev/20-cases-before-launch-a-minimal-eval-set</link><guid isPermaLink="true">https://withavi.hashnode.dev/20-cases-before-launch-a-minimal-eval-set</guid><category><![CDATA[AI]]></category><dc:creator><![CDATA[WithAvi]]></dc:creator><pubDate>Sun, 11 Oct 2026 07:44:01 GMT</pubDate><content:encoded><![CDATA[<p><em>You do not need a platform to start testing an AI feature. You need about twenty real cases, a rule for passing, and a rule for when not to ship.</em></p>
<p>Plenty of teams launch an AI feature after trying it on five examples that worked. A small test set, built before launch, gives you a baseline and can flag when a change makes results worse.</p>
<p>Anthropic's engineering team says that 20 to 50 simple tasks drawn from real failures make a good start. It adds a caveat: a starter set like that can catch large early changes, while a mature system may need bigger and harder suites to notice smaller effects. Its guide also says that early on, manual testing and intuition can take you a long way, and that evals matter more once a system is in production and growing. Even so, writing them early makes you say what success means.</p>
<h2>Where the cases come from</h2>
<p>Use real examples of requests, with permission. Strip out names, emails and anything private before you save them. Include difficult or unusual cases, and aim for variety rather than twenty copies of the easy one.</p>
<p>Here is one possible starting mix. It is my suggestion, not a standard: ten typical cases, five hard ones, three that should be refused or escalated, and two near-duplicates where the changed detail should change the decision, such as the same refund request inside and outside the return window.</p>
<h2>Write the criteria first</h2>
<p>For each case, write down what a good answer must contain and must not contain, in a form someone can check. "Says how long the product can be returned and does not promise an exception" works. "Helpful wording" is too vague until you define what it means. OpenAI recommends clear evaluation criteria, so use a rubric that a second reviewer could apply the same way.</p>
<p>If your feature takes actions, judge what really happened, such as the record created or the email drafted, and not only what the agent said.</p>
<h2>A sample row and results table (hypothetical)</h2>
<p>Imagine a shop whose policy is: returns within 30 days, store credit after that.</p>
<p>Input: a customer asks for a refund 45 days after purchase. Expected: says the 30-day return period has passed and offers store credit. Forbidden: promising a refund or inventing a different policy. Why it exists: it tests the edge of the policy. Severity: high. Must-pass: yes.</p>
<p>Illustrative results, not real measurements. Case 1, a typical question: passed 3 of 3 trials. Case 2, the 45-day refund, must-pass: passed 2 of 3 trials, so the release is blocked. Case 3, a near-duplicate at day 25: passed 3 of 3 trials.</p>
<p>Keep the result for every case, because an average hides the one that matters.</p>
<h2>Run it, then change one thing</h2>
<p>Run every case with a fixed model, prompt and data setup, and save the result as your baseline. Then change one thing and run again. Outputs vary, so repeat each case a few times. A single run can flag a regression, but it does not prove one.</p>
<p>When a case fails, look for the cause. It might be a missing instruction, missing context, a tool error, or a mistake in the grading itself. The fix is not always a new prompt.</p>
<h2>Decide the release rule in advance</h2>
<p>Mark some cases as must-pass, for example safety or policy cases. Decide before you run anything that one must-pass failure blocks the release, whatever the average says. Add a case after every real failure, and keep a few held-out cases that you never tune against, so the score keeps its meaning as the suite grows.</p>
<p>Twenty cases will not prove a feature is safe. They can flag when a change makes it worse.</p>
<h2>Sources</h2>
<ul>
<li><a href="https://www.anthropic.com/engineering/demystifying-evals-for-ai-agents">Anthropic: Demystifying evals for AI agents</a></li>
<li><a href="https://developers.openai.com/api/docs/guides/evaluation-best-practices">OpenAI: Evaluation best practices</a></li>
</ul>
<p><em>Originally published at <a href="https://withavi.ai/en/posts/small-eval-set-before-launch/">https://withavi.ai/en/posts/small-eval-set-before-launch/</a></em></p>
<p><em>Avi.Bi</em></p>
]]></content:encoded></item><item><title><![CDATA[How to write a task for a coding agent]]></title><description><![CDATA[A clear task means less guessing for the  agent. It does not promise correct code, so say how you will check the result too.
Give a coding agent a fuzzy task and it may quietly fill the gaps with assu]]></description><link>https://withavi.hashnode.dev/how-to-write-a-task-for-a-coding-agent</link><guid isPermaLink="true">https://withavi.hashnode.dev/how-to-write-a-task-for-a-coding-agent</guid><category><![CDATA[AI]]></category><dc:creator><![CDATA[WithAvi]]></dc:creator><pubDate>Sun, 11 Oct 2026 07:42:39 GMT</pubDate><content:encoded><![CDATA[<p><em>A clear task means less guessing for the  agent. It does not promise correct code, so say how you will check the result too.</em></p>
<p>Give a coding agent a fuzzy task and it may quietly fill the gaps with assumptions. A clearer task means less of that guessing. It will not guarantee correct code, so a good task also says how you will check the result.</p>
<p>A quick word on speed, because it is tempting to trust the feeling. In a 2025 controlled study with random assignment, METR followed 16 experienced open-source developers through 246 tasks in repositories they knew well, using early-2025 tools. With AI, the tasks took 19% longer, even though the developers expected to go faster. That result belongs to those tools and that setting. In February 2026 METR wrote that newer tools probably help more, but that selection effects, in who took part and in which tasks they chose to submit, made the new estimate unreliable. What I take from it: the feeling of speed is not a measurement, so check the work.</p>
<h2>Start with what done looks like</h2>
<p>Before anything else, decide how you will know the task is finished. When requirements are missing, the agent has to guess. Write the outcome in one sentence, then the check that shows it.</p>
<p>The two vendor guides lean on different halves of this. Claude Code's guide suggests giving the agent something it can run to verify its own work: tests, a command, a screenshot to compare. GitHub's Copilot guide puts the weight on clear scope and acceptance criteria. You want both.</p>
<p>Practice on something low-risk. Anything that touches login, permissions or payments deserves much more care: explicit tests for the failure cases, and a person doing a security review.</p>
<h2>Give the context that matters, not all of it</h2>
<p>Name the files involved, point to one existing example worth following, and state the constraint that matters. Say what must stay untouched. Resist pasting everything you know, because a long task can bury the details that count.</p>
<p>If the change spans several files, ask for a plan first and read it. A reviewed plan can catch a wrong turn before any code exists.</p>
<h2>A full example (hypothetical)</h2>
<p>Here is an imagined Python project.</p>
<p>Goal: add a --dry-run flag to the export command, so it prints what it would write and changes nothing.</p>
<p>Context: the command lives in myapp/export.py. Handle the flag the way --verbose is handled in myapp/sync.py, and reuse the existing writer class.</p>
<p>Constraints: no new dependencies, no changes to deploy or CI files, never read or print secrets or environment files, nothing changed outside myapp/ and tests/. Any test that exercises the writer runs only in an isolated temporary directory, never in a real output location.</p>
<p>Done when: python -m pytest tests/test_export.py runs without errors and every test passes, including two new ones. One checks that --dry-run writes no files. The other checks that a normal run still writes them. Report back with the test output and the list of changed files.</p>
<p>Out of scope: renaming flags and refactoring the writer.</p>
<h2>What you check as the human</h2>
<p>Read the whole diff. Confirm that the new --dry-run test fails without the change and passes with it, and that the normal-run test passes both before and after. Check that the writer tests use a temporary directory, that nothing outside myapp/ and tests/ changed, and that no dependency or config file moved. Then run the command yourself, once with the flag and once without, in a scratch folder.</p>
<p>Before you approve, make sure you can explain the change in your own words. If you cannot, ask the agent to clarify it, and split the task if it was too big.</p>
<h2>The template</h2>
<p>Five fields cover most tasks: Goal, Context, Constraints, Done when, Out of scope.</p>
<p>DORA's 2025 research describes AI as an amplifier of a team and its practices, which means it amplifies strengths and weaknesses alike. So my advice is to start with clear tasks, tests, and small changes that someone reviews.</p>
<h2>Sources</h2>
<ul>
<li><a href="https://metr.org/blog/2025-07-10-early-2025-ai-experienced-os-dev-study/">METR: Measuring the impact of early-2025 AI on experienced open-source developer productivity</a></li>
<li><a href="https://metr.org/blog/2026-02-24-uplift-update/">METR: We are changing our developer productivity experiment design (Feb 2026)</a></li>
<li><a href="https://code.claude.com/docs/en/best-practices.md">Claude Code: best practices</a></li>
<li><a href="https://docs.github.com/copilot/how-tos/agents/copilot-coding-agent/best-practices-for-using-copilot-to-work-on-tasks">GitHub Copilot: best practices for using Copilot to work on tasks</a></li>
<li><a href="https://dora.dev/research/2025/dora-report">DORA: State of AI-assisted Software Development 2025</a></li>
</ul>
<p><em>Originally published at <a href="https://withavi.ai/en/posts/spec-for-ai-coding-agent/">https://withavi.ai/en/posts/spec-for-ai-coding-agent/</a></em></p>
<p><em>Avi.Bi</em></p>
]]></content:encoded></item></channel></rss>