agentsclimarketplace

Manage timers

Skill sumitaich1998/jarvisvr/skills/productivity/manage-timers

An AI agentic operating system for mixed reality on the Meta Quest 3 — your own J.A.R.V.I.S. Multi-agent orchestration, multimodal perception (sight/hearing/gaze), 42 holographic widgets, 20 LLM providers.

Install
npx -y skills add sumitaich1998/jarvisvr --skill manage-timers

Assembled from the repository path, not quoted from the project. Check it against their README if it does not work.

One thing to look at

  • 1 stars1 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.

What its author says it does

Copied from the file, not written here

Start, stop, and run countdown timers and Pomodoro focus sessions, and react to the user's timer controls. Use for "set a 5-minute timer", "cancel the timer", "start a pomodoro", egg timers, focus sessions, and pause/resume/reset taps. Triggers: timer, countdown, set a timer, cancel timer, pomodoro, focus session, remind me in N minutes (short).

The file declares its own license as MIT. That is the author’s claim about this one file, and it is not the same thing as the license GitHub reports for the repository, which is listed with the other numbers below.

SKILL.md

3.1 KB, as published. Nobody here has run it

Manage Timers

Own the lifecycle of timer and pomodoro holograms: create them, cancel them, and handle the control events they emit.

Start a countdown

  1. Parse the duration to seconds (e.g. "5 minutes" → 300; "an hour and a half" → 5400).
  2. Call start_timer{duration_seconds, label?}. The server tracks ends_at_ms and returns a timer_ref plus a timer directive.

timer props (registry.json; durations in ms):

{ "widget_type": "timer",
  "transform": { "anchor": "head", "position": [-0.45,0.1,0.9], "billboard": true },
  "props": { "label": "Tea", "duration_ms": 300000, "remaining_ms": 300000,
             "state": "running", "mode": "countdown" },
  "interactions": ["tap","grab","resize"] }

agent.speech: { "text": "Timer started for 5 minutes.", "final": true }

Pomodoro

Call start_pomodoro{task?} → a pomodoro widget cycling focusshort_break → … with completed_sessions tracking:

{ "widget_type": "pomodoro",
  "props": { "phase": "focus", "remaining_ms": 1500000, "focus_ms": 1500000,
             "break_ms": 300000, "state": "running", "task": "Write report" } }

Handle controls (client.interaction, protocol §5.11)

The widget emits events; react with holo.update (or stop_timer):

Event (name)elementYour action
pausepause_buttonrecompute remaining_ms, holo.update state:"paused"
resumeresume_buttonset new ends_at, holo.update state:"running"
resetreset_buttonremaining_ms = duration_ms, state:"idle"
dismissclose_buttonstop_timerholo.destroy

Completion

When remaining_ms hits 0, set state:"completed" and fire a notification_toast (via the system/notify path):

{ "widget_type": "notification_toast",
  "props": { "title": "Timer finished", "body": "Your 5-minute tea timer is done.",
             "severity": "success", "source": "Timer", "actions": [ { "id": "snooze", "label": "Snooze" } ] } }

Edge cases

  • No duration givenclarify-intent ("how long?"). Don't default silently.
  • "Cancel the timer" with multiple → cancel the most recent (last_timer_ref) or ask which; stop_timer{timer_ref} targets a specific one.
  • Very long timers / alarms at a clock time → that's a set-reminders job, not a countdown.
  • Stopwatchmode:"stopwatch" counts up; omit a meaningful duration_ms.

Keep looking

Skills are one crate of 328,083. Ordering is by how many stacks a row turns up in, so the top of any crate is what has actually been picked rather than what has the most stars.