CodeHerderSearch⌘KRequest access →

Writing a brief

How to write a brief an agent can finish

Name the change you want. State how you'll know it's done. Say where it lives.

87.6%
Stories that cleared every gate on the first pass
$9.38 → $28.43
Mean cost: clean run vs. review sent it back
42.5 min
Median time from brief to merged

From "Anatomy of an $8 feature" (20–26 July 2026, n=944).

What a brief is

A brief has three parts

Everything else is detail. Get these three right first.

  1. What you want

    Say what should exist once the work is done. A fixed layout. A new field. A passing test. Name the outcome plainly.

  2. How you'll know it's done

    State the check a person can run once the change lands. See acceptance criteria for the exact term.

  3. Where it lives

    Name the page, the file, or the repository the change touches. For the exact steps to file it, see writing tasks.

Why the brief is the cheapest lever

Rework costs more than a clean run

CodeHerder's own production data groups every shipped story by which gate sent it back, if any.

OutcomeShare of storiesMean costMedian time to merge
Clean run, no gate fired87.6%$9.3842.5 min
Review sent it back before merge9.9%$28.43194.2 min
Verify sent it back after merge1.7%$26.78321.2 min
Both gates sent it back0.8%$54.40347.9 min

This groups stories by which gate caught a problem. It does not grade the brief that started each story. Rework costs more than a clean run does. That holds for cost and for time. The brief is the one part of the work a person controls before any stage runs. See the full numbers in the receipt post.

Six checks a brief should pass

Run your brief through these six checks

Each check names a rule, then shows a weak phrasing next to a stronger one.

  1. Name the change someone can see.

    A concrete symptom gives both the agent and the reviewer one visible target to check against.

    Weak

    The button looks bad on mobile.

    Stronger

    The button near the top of the phone screen gets cut off. You cannot tap the whole thing.

  2. Say where it shows up.

    Naming the exact screen or file bounds the search. Without it, the agent has to guess which of many places to change.

    Weak

    Add a field for it.

    Stronger

    Add the field to the signup form, near the other contact fields, and show the saved value on the profile page.

  3. Write the check before the work.

    A test that fails on the old behavior and passes on the fix gives you proof the fix works.

    Weak

    Make sure this bug doesn't come back.

    Stronger

    Write a test that fails on the old broken behavior and passes once the fix is in place.

  4. Keep it to one merge.

    A brief scoped to one change gives the reviewer a diff they can read start to finish.

    Weak

    Update the dependency, and clean up the config files while you're at it.

    Stronger

    Update this one dependency to this version. Fix whatever it breaks.

  5. Say what must not change.

    An invariant gives the reviewer one clear thing to check the diff against.

    Weak

    Clean up the duplicated code.

    Stronger

    Merge the duplicate logic into one place. Keep every call site behaving exactly as it does today.

  6. Hand over the evidence you already have.

    Pointing straight at the drifted feature saves the agent a whole investigation pass.

    Weak

    This doc page seems out of date.

    Stronger

    This doc page describes a feature that has since changed. Check each step against how it behaves today.

How to say done when you cannot read code

State it as what you click, and what you then see

You do not need to read a diff to write a good check. Say what you will click. Say what should happen next.

A bug

  • Open the page on a phone. Look at the control that was cut off.
  • Tap the control, edge to edge. It responds.
  • Open the same page on a laptop. It looks the same as before.

A small feature

  • Set the filter. Only the matching rows show.
  • Clear the filter. The full list comes back.
  • Page through the filtered results. Paging still works.

A docs fix

  • Copy the example from the doc page. Run it.
  • Watch it finish with no error.
  • Read the paragraph around it. It still matches what the example does.

Test coverage

  • Run the test suite. The new tests pass.
  • Ask someone to break the file's behavior on purpose. The new tests fail.

What to leave out

Five things that make a brief harder to finish

  • Dictated implementation

    State the outcome. Let the agent choose how to build it.

  • Two jobs in one brief

    One brief, one job. Split a second job into its own brief.

  • "Make it better"

    Name a concrete outcome. "Make it better" gives the agent nothing to check against.

  • An invented API

    Ground the brief in what exists today. A method or endpoint that doesn't exist yet gives the agent nothing to call.

  • A deadline

    State the outcome you want. A time limit doesn't change what "done" means.

The checklist

Copy this before you write your own

Paste this above your own brief. Check each line before you file it.

Copy this and file it as a task

Before I file this, my brief:
1. Name the change someone can see.
2. Say where it shows up.
3. Write the check before the work.
4. Keep it to one merge.
5. Say what must not change.
6. Hand over the evidence you already have.

Now file one

Copy a brief, or read one that already shipped

Copy a ready-to-file brief at /starter-briefs. Read real briefs that already merged at /examples.

FAQ

Questions people ask before filing their first brief

Do I need to know how to code to write a good brief?

No. Say what you want and how you will check it. Then say where it shows up. See "How to say done when you cannot read code" above for four patterns you can copy.

How long should a brief be?

As short as the six checks allow. Name one visible change and one check. That is usually enough for a whole brief.

What if I don't know the exact file or screen?

Name what you do know: the symptom, the page, or the feature. The plan stage locates the exact file before any code is written.

Can one brief cover more than one change?

Keep it to one job per brief. File a second brief for the second job, so each one stays a single merge a reviewer can check.

CodeHerder

Write the brief. We'll run it.

File a task the way this page describes, and an agent plans it, builds it, then opens a pull request.

Try "pricing", "connect a device", or "who reviews the code"

↑↓ move · ↵ open · esc close