Bee Box documentation · directory: https://beebox.run/docs/reference/ · index: https://beebox.run/docs/reference/index.md · root: https://beebox.run/llms.txt # Todos The agent guide's TODOS section says when a todo is the right tool and shows the inline `{% todo %}` form. This doc is the rest. ## Capturing one Or, for an intention that doesn't belong to any particular sentence of the body, a frontmatter entry (same attributes, as `text` + keys): ```yaml todos: - text: "Renew the parking permit" due: "2026-08-15" ``` A bare `{% todo %}…{% /todo %}` with no attributes is a valid, honest open todo — it just means "due now, no date opinion." Absence of an attribute is never a fabrication; only set what you actually know. `due` is the last day the action still counts. "Before 7 November" is due 6 November; "by 7 November" is due 7 November. Say the date back the way the paper words it ("before 7 Nov"), never as the bare due date. A recurring task with a real cadence ("renew every March") is a todo with a `start` date. A standalone todo goes in a `.doc.card` under `_content/todos/`. Never title a card "Todos": the box's todo view already has that name. Attributes, all optional: `id` (a short slug for `{% see-also %}` cross- reference — never a UUID), `status` (`open`/`done`/`dropped`/`parked`; absent = `open`), `assigned` (absent = the boxholder; `"agent"` = yours to chase; any other value names a person — a plain name such as `"Dana"` is fine, and whether it should become a ref is not settled. Only the boxholder's todos are due now and in its counts. Never write `user`, `me`, `boxholder`, `you`, or `owner` for the boxholder: leave `assigned` off, or lint warns), `by` (absent = boxholder-authored; `"agent"` = you wrote it), `due`, and `start` (an absolute date or `-3d`/`-2w` relative to `due` — this is the *surfacing* trigger: a todo is *later* before `start` and *now* from `start` on, regardless of `due`; the person sees "later · Oct 23" on it. Say "later", not "starts" or "quiet": `start` is not when the work begins. In `bbx query todos` JSON the state is `plateState: "quiet"`, and a past-due todo is `escalated`, which the person sees as "overdue"). **`created` is required whenever `by="agent"`** — you always know the date, and the review sweep's staleness math depends on it. Nest `{% see-also ref="..." %}...{% /see-also %}` inside a todo (or a frontmatter `see-also:` list) to point at supporting evidence — this is what proves a todo is done, not just claimed done. ## Your own follow-ups You may open a todo for yourself — `by="agent" assigned="agent"`, with `created` — whenever you notice work worth doing that isn't this turn's job: a card that wants a second pass, a gap you spotted while doing something else, a cleanup the boxholder never asked for. You don't need permission for these and they don't count among the boxholder's todos due now, so they cost the person nothing. Close your own with `done` and a `{% see-also %}` pointing at the evidence, or `dropped` when you've decided against it — and say why in the text. Two limits. This is not a way to defer a decision that is really a question (see above — that rule doesn't relax just because the list is yours). And an agent todo you keep stepping over for months is noise: drop it, or raise it as a real question. `bbx query todos --assigned agent` finds them again, and the `todo-review` sweep brings the stale ones back to you. ## Querying `bbx query todos` is your query path. `--here