Skip to main content
Every item you track in Wrixton belongs to exactly one of six kinds. The kind determines which fields are available, how the item’s ID is prefixed, whether it recurs, and how its lifecycle plays out — from open to done (or, for chores, indefinitely rolling forward). Choosing the right kind from the start means the tracker works with your mental model rather than against it.

The six kinds at a glance

KindID prefixRecurs?Special flagsDone means…
todot-Optional--due, --estimateCompleted (or spawns a copy if recurring)
chorec-Required--every, --last-done, --estimateNever “done” — rolls forward
taskk-Optional--project, --feature, --estimateCompleted inside its project
gifts-Optional--for, --occasion, --budget, --urlGiven (two-stage: bought → given)
shoppings-Optional--budget, --urlPurchased
groceryg-Optionalstore via --tagsPicked up
gift and shopping share the s- ID prefix and the same ordering pool, which is why track rank shopping reorders both together.

todo

A todo is the most general item kind: a one-off task you want to get done. You can optionally give it a due date, a priority, tags, notes, a time estimate, and a recurrence interval. Without --every it sits in your list until you mark it done. With --every it becomes a self-renewing commitment — marking it done spawns a fresh copy due one interval later (see Recurrence). Common flags: --due, --priority / -p (1–5), --tags, --notes, --estimate, --every
# One-off todo
track add todo "Call the dentist" --due tomorrow -p 2 --tags admin,health

# Recurring todo (spawns a new copy each time you complete it)
track add todo "Pay rent" --every monthly --due 2026-06-01 --estimate 5m

chore

A chore models a task you repeat forever without ever truly finishing — vacuuming the car, replacing an HVAC filter, watering the plants. Instead of being marked done, a chore’s effective next-due date is calculated from the last completion date plus the recurrence interval. You confirm you did it by running track done <id>, which records today as the completion date. The same chore persists indefinitely; no completion history accumulates. --every is required when adding a chore. Common flags: --every, --last-done, --priority / -p, --tags, --notes, --estimate
# Add a chore
track add chore "Replace HVAC filter" --every "3 months" --estimate 20m

# Mark it done today (records completion; no copy spawned)
track done c-a4f1

# Record that you did it on a specific past date
track done c-a4f1 --when 2026-05-28

# Push the next due date out (snooze)
track snooze c-a4f1 2w

task

A task is a todo that lives inside a project. It must be attached to a project with --project <slug>, and can optionally be scoped to a specific feature within an engineering project using --feature <feature-id>. Tasks surface in track show <project-slug> alongside the rest of the project’s work. Common flags: --project (required), --feature, --due, --priority / -p, --tags, --notes, --estimate, --every
# Add a project first
track add project "Kitchen renovation" --slug kitchen-reno

# Then attach tasks to it
track add task "Pick countertops" --project kitchen-reno --due 2w -p 2
track add task "Get appliance quotes" --project kitchen-reno --estimate 1h

# Attach a task to a specific feature in an engineering project
track add task "Write unit tests" --project my-app --feature f-3c9d

gift

A gift tracks a present you need to acquire and then give. It has a two-stage lifecycle: once you’ve purchased the item you run track bought <id> to move it to doing (shown as “bought”); when you’ve given it you run track done <id> to move it to done (shown as “given”). This keeps “bought but not yet given” gifts visible without cluttering the fully-done pile. Required: --for <person> Special flags: --for, --occasion, --budget, --url
# Add a gift
track add gift "Ceramic mug set" --for "Sister" --occasion Birthday \
  --due 2026-06-15 --budget 80

# Stage 1: you bought it
track bought s-7bdb       # status → doing ("bought")

# Stage 2: you gave it
track done s-7bdb         # status → done ("given")

# Optional: attach a product URL
track add gift "Noise-cancelling headphones" --for "Mom" \
  --url https://example.com/headphones --budget 250

shopping

A shopping item is a one-off thing you need to buy that isn’t a gift for someone. It shares the s- ID prefix and the same ordering pool as gifts. Marking it done sets status to “done” (not “given”). Like gifts, it supports an optional budget and URL. Special flags: --budget, --url
# Add a shopping item (alias: track add buy)
track add shopping "Replacement HDMI cable" --due 1w --budget 20

# Shorthand alias
track add buy "New running shoes" --budget 150 \
  --url https://example.com/shoes

# Mark purchased
track done s-137c

grocery

A grocery item is something to pick up on a grocery run. It gets its own tab in the web UI and its own g- ID prefix, keeping it visually separate from your broader shopping list. There is no dedicated “store” field — instead you capture the store as a tag, so the tag filter doubles as a per-store view.
# Add groceries for different stores
track add grocery "Milk" --tags costco
track add grocery "Bananas" --tags "trader joe's"
track add grocery "Sourdough loaf" --tags safeway

# Filter by store
track list --kind grocery --tag costco

Common fields across all kinds

Every item kind supports these shared fields regardless of its specialisations:

priority (-p)

Integer 1 (highest) to 5 (lowest). Defaults to 3. Controls sort order across all lists.

tags (--tags)

Comma-separated list. Used for filtering with track list --tag and as store labels for groceries.

due (--due)

Accepts YYYY-MM-DD, today, tomorrow, weekday names (monsun), 3d, 2w.

notes (--notes)

Free-form text shown when you run track show <id>.

estimate (--estimate)

Available on todo, chore, and task. Accepts 15m, 1h, 1h30m, 1.5h, or a bare number of minutes.

every (--every)

Recurrence interval. Available on all six kinds. Required for chores; optional elsewhere. See Recurrence.