1---
2name: sae
3description: Status And Estimate — give a brief plain-English progress update, then continue any active task. Use when the user types /sae, or says "status", "sitrep", "where are you", "how long left", "update me", "what's left". Written for a product owner, not an engineer. Portable across Claude Code, Codex, and any agent that reads skills.
4---
5
6# sae — status and estimate
7
8Report state to a **product owner**, not a developer. Keep the update brief, without explanation or recap.
9
10## Progress checkpoint, not a pause
11
12When a task is active, send the status block as an intermediate progress message
13(Codex: `commentary`), then immediately continue the next authorized task step in
14the same turn. Keep running tools and subagents running. The four-line format
15applies to the status message, not the rest of the work. Do not end the turn,
16wait for a "continue", or treat the status request as replacing the active task.
17
18Use a final reply only when the task is complete, nothing is active, the user
19explicitly asks to stop/pause, or a genuine blocker or required approval prevents
20further progress. SAE changes neither the task's scope nor its approval boundaries.
21
22## Output — exactly this, nothing around it
23
24```
25- estimate: 20-30 mins left
26- remaining: the reliability fixes a reviewer flagged, the new sign-in flow
27- finished: the daily sync, the invite email, the settings page
28- notes: I can't deploy myself — when the fixes land you'll run one command I'll paste
29```
30
31## Rules
32
331. **Four lines max, in this order.** `estimate`, `remaining`, `finished`, always. `notes` only when something is blocked, you need a decision, or there's a caveat that changes what the user does next — otherwise drop the line.
342. **No preamble, no closing.** The first character of the reply is `-`.
353. **Estimate is a number.** Minutes or a tight range (`8 mins left`, `20-30 mins left`). Never "soon", "shortly", "almost done". If it truly can't be estimated: `unknown — <the one thing blocking the estimate>`.
364. **`remaining` is what's left, `finished` is what's done.** Comma-separated, max 3 items each; past that, `+N more`. Nothing left → `remaining: nothing — idle`. Nothing done yet → `finished: nothing yet`.
375. **Plain English, product level.** Every item is a thing the user or the business would notice — a feature, a screen, a flow, a risk. **Banned:** file paths, function and variable names, migration numbers, flags, library names, error types, anything in `code font`. If the work is pure plumbing, name what it protects: *"stops two people overwriting each other"*, not *"lock order"*. Ticket IDs are fine (`LAB-229`).
386. **Group, don't enumerate.** Five related fixes are one phrase — *"the reliability fixes a reviewer flagged"* — not a list of five mechanisms. Detail belongs in an answer to a follow-up question, never here.
397. **Honest, not flattering.** A failing test is not finished. Partial goes in `finished` with the limit stated: `the invite email (works for 2 of 3 plans)`. Blocked work stays in `remaining`, with the blocker in `notes`.
408. **Notes says what you need from the user**, in one sentence — the decision, the access, the command they'll run. Not a status of its own.
419. **A fleet reports as one block.** Aggregate every subagent into the same four lines; never one report per agent.
42
43## Translate before you write
44
45| what you'd say to a developer | what goes in the line |
46| --- | --- |
47| props→state sync, stale-submit guard, poll cutoff | the form no longer submits stale data |
48| migration 0024 applied and recorded | the database change is live |
49| worker browser lifecycle, watchdog abort | the scraper recovers on its own now |
50| CLAUDE.md / OPS.md updated | the handover notes are current |
51
52## Nothing running
53
54```
55- estimate: n/a — nothing in flight
56- remaining: nothing — idle
57- finished: the new pricing page, live on the site
58- notes: worth a look before you share it — meirlabs.com/pricing
59```
60