SwiftRelay

← All sprint notes

Pit Stop Check: Small Tasks Before the Green Light

Agent quick startsEN

Two Ways to Line Up the Same Job

Most coding assistant sessions drift before the first edit lands. You open with a broad brief such as make this module easier to test, and the agent starts reaching into five files, renames a helper nobody asked about, and hands back a diff you have to unwind. The other way to line up the same job is a scoped task with a named file, a named behavior, and a named check that proves it is done. Both take the same amount of typing from you. Only one leaves you with a change you can review in a single pass.

The split is not about model intelligence. It is about the shape of the request. A broad brief asks the assistant to decide scope, priority, and acceptance criteria at the same time it is writing code. A scoped task gives those answers up front, so the whole run can go toward implementation instead of interpretation. That is the side-by-side comparison that matters: the same refactor, framed two ways, producing two very different review experiences.

A task counts as scoped when it names these things before any token is spent:

  • One entry point: a single file, function, or route that may change.
  • One behavior: the specific thing that should be different when the run ends.
  • One check: a test, a command, or an assertion that decides pass and fail.
  • One boundary: the files and folders the agent must not touch, stated plainly.

Four lines of framing can remove an hour of diff archaeology later.

What a Broad Brief Pulls Into the Session

Broad briefs feel efficient because they compress the plan into a single sentence. They also hand the assistant an open budget. When you ask for a cleanup, the model has to invent a definition of clean, pick which tests to add, decide whether to restructure exports, and guess at your style rules. Each of those is a judgment call, and the calls compound. By the time you see output, a one-file question has become a repo question.

The review cost is the hidden part. A diff that touches ten files forces you to reconstruct intent for each one. You end up asking the assistant why it changed a type signature in a file that has nothing to do with the request, and the answer is usually that it seemed consistent. Seemingly consistent is the most expensive phrase in an assisted codebase.

Broad briefs also make it hard to spot a real failure. If the test run is red after a sprawling change, you cannot tell whether the fix is one line or another hour. The error surface grew with the diff. Small tasks keep the error surface small, so a red run points at a specific place instead of a mood.

None of this means you should never plan big. It means the plan should live outside the edit loop. Write the sequence yourself, then let each run do one item of it.

What a Scoped Task Puts on the Table

A scoped task changes what the assistant optimizes for. When the request says update the retry helper in one file to accept a jitter flag, preserve the existing signature, and extend one test, there is almost nothing left to interpret. The model writes code instead of proposing architecture, and you get output that matches the sentence you typed.

Scope also gives you a clean stopping rule. The run is finished when the named check passes, not when the agent decides it has improved things enough. That matters more than it sounds, because an assistant with spare budget will keep going. A finish line is what turns remaining budget into a stop.

Small tasks are also cheap to repeat. If a scoped run misses the mark, you rerun it with one corrected sentence instead of re-explaining a whole initiative. On a pay-as-you-go relay that cost difference is visible in your usage, and it is visible in your patience as well. With SwiftRelay you are billed per token against a single balance across models, so short focused runs and clean reruns stay legible on the invoice.

Side by Side: One Refactor Run as Laps

Take a concrete case. The goal is to move date parsing out of a controller and into a shared helper, then make the controller call it. Framed broadly, the prompt is extract the date logic and tidy up the controller. The agent reads the controller, finds nearby string formatting, reorganizes imports, introduces a utility folder, updates two unrelated callers, and adds a doc comment style it picked up from elsewhere. You review four hundred lines to accept twenty.

Framed as laps, the same goal becomes four prompts. First, add a pure function that parses the accepted date formats and cover it with tests, touching only the helpers file. Second, make the controller call that function for the two parsing sites named in the prompt, with no other edits. Third, delete the now-dead parsing code from the controller and confirm the suite is green. Fourth, run the formatter on the two changed files and stop.

Each lap has its own acceptance check, so a failure is attributable. If lap two goes red, you know the seam between controller and helper is the problem, and the fix is a focused rerun. You also get four small reviews, each of which you can accept in the time it takes to read them. The total work is the same. The total attention is not.

This pattern transfers across tools. In Claude Code and Gemini CLI you can paste the bare host https://api.fastapirelay.com, while OpenAI-compatible SDKs add /v1 to reach the same relay, so your scoped prompt habit does not change when your client does.

Checklist Before the Green Light

Before each run, walk a short pit checklist. It takes seconds and it catches most of the drift before it starts.

  • State the file the change belongs in, and name the files that must stay untouched.
  • State the behavior in one sentence a teammate could verify by reading the diff.
  • State the check that ends the run, including the command to run it.
  • State the style constraints that matter here, such as no new dependencies and no public API changes.
  • State the stop: when the check passes, report the diff and wait, rather than starting the next improvement.
  • Carry forward notes into the next prompt so context does not get re-derived from scratch.

If you cannot fill in the first three items, the task is not ready for an assistant yet. Write the plan first, then split it into laps. That sequencing is the whole discipline.

The Recommendation: Laps First, Then Stack Them

Run small scoped tasks as the default, and reserve broad briefs for genuine exploration where you do not yet know the shape of the answer. For every change that has a known target, name the file, the behavior, and the check, then let one lap do one job. This keeps diffs reviewable, failures local, reruns cheap, and your own attention on the parts of the codebase that only you can judge.

Pair that habit with a model per lap when it helps. A quick pass on a naming or test scaffolding task works well with Claude Sonnet 5.5, and DeepSeek V4 Flash is a reasonable choice for straightforward mechanical edits where the plan is already settled. The point is not which model wins a contest, it is that a focused prompt gives any of them a fair shot.

SwiftRelay is built for exactly this loop: one pay-as-you-go balance, billing per token, one API host across Claude Code, Codex, Gemini CLI, and any OpenAI-compatible SDK, with the bare host for the CLI tools and /v1 for SDKs. New accounts get a small gift credit to try the workflow, and inviting friends earns you 14% of their top-ups. Sign up for SwiftRelay and run your first scoped lap today.

Keep reading

Back for another lap?Log in