A task card gives a piece of work a name that survives the terminal closing. Most cards are created for you from the first real ask of a session. This page covers where they come from, how they improve on their own, and the two corrections that teach the extractor when it gets one wrong.
A card gets better while you work#
You will see a card improve two or three times without touching it. That is expected, and it is worth knowing what each change means so a title you were about to fix does not get fixed twice.
-
Instantly, from your prompt#
The moment you send the first real ask. Runi strips the "hey claude," off the front, turns your ask into an imperative title, and keeps the ask itself as the description. If one prompt asked for several things, it says how many.
-
Once your agent has replied#
By then it has read the codebase and said what it is about to do. That sentence replaces the guessed intent. The title and description still describe your ask, because that part is yours.
If the reply was a clarifying question, a refusal or filler, nothing is replaced and the first version stands.
-
Seconds later, and again at the end#
A model rewrites the card properly. At the end of the session it runs once more over what the session actually published, so the card reflects what was done and not only what was intended.
Note
Layers 2 and 3 are gated on your sharing switches. They only run when you share what you ask, because somebody who hides their prompt has not agreed to publish their agent's restatement of it. The reply layer also needs session detail set to full. With any other setting, the local brief is the brief. Cards you write by hand are never rewritten.
What counts as a task#
Your agent is handed more than you typed. Desktop apps inject notifications for finished subagents and blocks for attached terminals, slash commands arrive as their own markup, and people paste JSON, logs and whole transcripts under a one-line ask.
Runi separates two things out of all that:
| Layer | What it is | Used for |
|---|---|---|
| Text | The prompt without the harness wrapping. | What a card shows as its source prompt. |
| Prose | Only the lines a person wrote as sentences. | Every decision: whether there is an ask at all, what the title is, whether the session changed jobs. |
A prompt with no prose is a machine turn and never becomes a card. The gate fails closed: an ask verb has to lead a clause ("we should add…", "and then fix…"), not merely occur, and a reply of one or two words ("fix them") is treated as a reply.
A missing card is corrected in the app in one click. A junk card is what a teammate sees first.
When a session changes task#
One session can pass through several pieces of work. Runi decides locally whether a prompt looks like new work, biased hard toward "same task".
With model briefs on, that local verdict is not final. The session stays on its card and the pivot goes to the worker, which asks the model whether the prompt is the same work. "Same" teaches the existing card the new subject and mints nothing. "Different" mints a new card. A model that cannot answer leaves the local verdict standing.
The two corrections#
When the extractor gets a card wrong, correct it instead of deleting it. Both corrections record why, and both keep the original prompt.
| Correction | Use when |
|---|---|
| Not a task | A card was created for something that was never a piece of work: a paste, a question, a machine turn that slipped the gate. |
| Merge into… | The session split one job into two cards. Merging keeps the work together, and when a hook later meets the merged card, the session follows the merge. |
Tip
Your corrections become tests. They are pulled into a replay corpus of real, redacted prompts, each with the card it must produce, and that corpus runs on every commit. Every annoyance you correct in the app turns into a regression test instead of into somebody's memory. Correcting a bad card is the most useful thing you can do about bad cards.
Writing a card by hand#
Cards you create yourself are marked as human-authored and are never rewritten by a model. Use one to describe work before anyone starts it. The card is then waiting in the brief of whoever picks it up, and their session links to it automatically.
If model briefs are unavailable#
Cards keep their local brief and the doctor says why, so you are not left wondering whether the titles were always this blunt:
warn briefs model task briefs unavailable — function not deployed
(8 min ago); cards keep the local brief