vitrinka.docs

Todos, reminders and time

vitrinka me is your own seat in a project: todos that ripen on a condition the server evaluates, reminders at a clock time, milestones, your agenda of planned days, automatic work time, the diary and the project brief.

Todos that ripen

A todo is a task of type todo in the checkout's project, and what makes one useful is its moment — the thing that ripens it. Ripeness is the server's call, never the client's: one evaluator answers the SessionStart hook, vitrinka me schedule ripe, the MCP ripe_todos tool and your desk, so a todo fires the same way wherever you look.

vitrinka me todo add "Drop the legacy checkout flag" --when "pr 472 merged"
vitrinka me todo add "Rotate the staging keys" --when "deployed prod"
vitrinka me todo add "Recheck the coupon rules" --when "path internal/billing/**"
vitrinka me todo add "Write the upgrade note" --milestone "v2 beta"
vitrinka me todo list --here --compact
vitrinka me todo done 512

Pick the smallest moment that fits:

MomentRipens when
--when "pr 472 merged"That pull request merges, as the GitHub App reports it; closed fires on a close without a merge too.
--when "release cut"A release is cut after the todo was filed; release next while a next release is open.
--when "deployed prod"A deploy to that environment is recorded — optionally of one sha — with vitrinka project deploy-mark. Merges never count as deploys.
--when "path internal/billing/**"A session edits a matching file; the PreToolUse hook announces it in that session.
--when "task 423"Task 423 is picked up — a session on its vt-423 branch.
--when "after 331"Task 331 is done.
--milestone <name>The milestone is reached.
--due YYYY-MM-DDThe day comes.
--trigger "<text>"Never on its own: prose an agent judges against the work in hand.

Text that does not parse as a condition stays prose. vitrinka me todo backfill proposes typed conditions for a project's prose todos — each lands as a proposal for a human verdict, nothing is rewritten silently. --context-file attaches a companion note a session weeks later reads before working the item (the list marks it [ctx]); done completes a todo, drop abandons it.

Reminders

A reminder is a todo at a clock time. It ripens --lead before the time (2 hours by default) and can recur with --every.

vitrinka me schedule add "Send the sprint notes" --at "fri 09:00" --every 1w
vitrinka me schedule add "Check the canary" --in 30m
vitrinka me schedule list
vitrinka me schedule skip 530
vitrinka me schedule end 530

list buckets open reminders into overdue, today, this week and later; move reschedules one; me todo done on a recurring reminder records the completion and rolls it to its next occurrence, skip steps over one occurrence and end stops the series.

Milestones

A milestone is a named point several todos wait on. Reaching it ripens every todo that waits on it — they are unblocked, not done.

vitrinka me todo milestone add "v2 beta" --due 2026-10-15
vitrinka me todo milestone reach "v2 beta"
vitrinka me todo milestone unreach "v2 beta"   # undo a mistake

Reuse the exact name milestone list prints: a near-spelling creates a second milestone.

Where todos surface

  • At a session start — the SessionStart hook vitrinka setup installs prints only the todos that fired for this repository, so a session begins with what is due and nothing else — hooks.
  • While you edit — a path todo is announced the first time the session touches a matching file.
  • To an agent — ripe_todos and complete_todo over MCP, and the /vitrinka:me skill of the Me module (/vitrinka:me [add|list|done|drop|remind|milestone]), which you invoke by name.
  • To you — your day in the app — your day.

Your agenda

The agenda is your own plan of days: existing tasks placed on a day, all-day or at a time. It never files a task, and a tick closes the item for you without moving the task's state, so review states and gates stay intact (a todo completes through its own door).

vitrinka me agenda                                  # today
vitrinka me agenda week --project shop
vitrinka me agenda add 4742 --tomorrow --at 09:30 --for 90m
vitrinka me agenda move 118 --to fri --all-day
vitrinka me agenda done 118
vitrinka me agenda rm 118

add takes a task id, <workspace>/<id>, key or url and plans it today unless --tomorrow or --on <day> names another day; planning a task already on your agenda moves its one open item. --at starts a block on the quarter hour and --for sets its length (1 hour by default). A listing prints each item's number under ITEM — the argument done, move and rm take; rm takes the item off its day and leaves the task alone. An unfinished item from an earlier day shows on today marked from <day> until you tick or move it, and an item whose task was done or cancelled shows ticked on its own day. Days resolve in this machine's time zone, else your timezone preference. --people reads other people's days in the workspace and --person plans on someone else's agenda (workspace admins). The SessionStart hook prints this project's Today beside the todos that fired — every flag.

Work time

me time records how long people and agents actually worked, without a timer. It is opt-in per machine:

vitrinka me time enable --project shop
vitrinka me time service install   # macOS: keep capture running from login
vitrinka me time status
vitrinka me time disable

enable records your consent and registers the agent hooks in Claude Code and Codex (trust Codex's once with /hooks); agent sessions then report their own activity — prompts, tool calls, stops — as it happens. Human time comes from a native sampler that stores the foreground application and idle intervals only — window titles are matched on the machine against the repositories you opted in and discarded, and activity it cannot place stays unassigned. --human=false keeps agent time alone; --exclude-application names apps never recorded. capture runs the collector until stopped (service install does that at login); disable pauses at once and keeps what is queued without uploading it. What was recorded shows on your day in the app — work time.

Diary and brief

vitrinka me brief
vitrinka me diary promote 8812 --project shop

me brief prints the project brief as it looks from your seat — now, next, blocked, what changed, who holds what, and Eve's suggestions — the brief. me diary promote turns a recorded meeting on your diary into a meeting task in a project, with the audio and transcript attached.

On this page