Skills and schedules

What skills are, where they run, and how to schedule them — including plain-English schedules.

A skill is a versioned procedure your agent executes — a recipe like "sweep my inboxes and surface what needs me" — plus a manifest declaring what it may touch and, crucially, the maximum risk of anything it may propose. Skills can read your connectors and memory; they can never act on the outside world directly. Anything outward becomes a proposal in your approvals inbox.

The catalog is organised around what Nexus does with your sources, not around report formats:

  • capture-email, capture-slack, capture-calendar, capture-tasks, capture-code, capture-docs, capture-meetings — one per source. Each reads its own connector and files what it finds.
  • clarify — decides what each captured thing actually is (a task? a decision? a message to send?) and puts it on your dashboard in the right shape. It runs automatically at the end of every capture, so sorting happens on arrival rather than on a clock.
  • reconcile — the counterpart: notices when something you were tracking has been resolved elsewhere and closes it out, so your dashboard doesn't accumulate work you already did.
  • sync-people, sync-places, sync-organizations — keep the people and places in your vault current from what passed through.

Skills are versioned and immutable once published — a schedule pinned to capture-email@1.2.0 runs exactly that version; @latest follows the newest. You can also keep private skills in your own space; a private skill with the same name shadows the catalog one.

Where skills run

  • Local agent online → the run executes on your machine, on your Claude subscription.
  • Agent offline, Anthropic key saved → the hosted runner takes it (BYOK-billed).
  • Neither → the job waits, visibly marked "agent offline," and runs when your agent comes back. It never disappears.

You can force a plane per run (local / hosted); a skill marked local-only will refuse a hosted override rather than run somewhere it shouldn't.

Schedules

Schedules make skills run themselves. Manage them in Settings → Schedules: pick a skill, pick a cadence, done. When you finish onboarding, Nexus seeds a default set in your device's timezone, running roughly 07:00–22:40.

Each source gets its own cadence, set by how fast that source actually moves — mail and Slack are continuous, a tracker is not:

  • capture-email and capture-slack — hourly through the day
  • capture-calendar — morning prep and a midday re-check
  • capture-tasks and capture-code — twice a day
  • capture-docs — once, late morning
  • capture-meetings — evening, after the day's meetings have happened
  • sync-people, sync-places, sync-organizations — end of day, staggered

clarify and reconcile deliberately have no schedule of their own: each capture ends by sorting what it just captured, and only when it captured something. Giving them their own clock would double-run them against the same inbox.

This cadence is how your dashboard stays current — there's no refresh button to babysit. Pause, edit, or delete any of them.

Cadence presets and plain English

Pick a preset (Every morning · 6:00, Weekdays · 9:00, Mondays · 7:00, …) or choose Custom and type a schedule in plain English. The translation is instant and deterministic, and always shows you a preview before saving. Examples that work:

  • every weekday at 9:30am
  • mondays at 7pm
  • mondays and thursdays at 7am
  • every day at 17:45
  • every morning · every evening
  • weekends at noon
  • every 2 hours · every 15 minutes
  • 1st of the month at 8am

If Nexus doesn't understand what you typed, it shows a hint rather than guessing a schedule you didn't ask for. Raw 5-field cron expressions pass through untouched (30 9 * * 1-5), so nothing you could do before is lost.

Timezones

Each schedule carries a timezone — your device's by default. "9:30am" means 9:30 where you are, daylight-saving shifts included. You can pin a different timezone per schedule, and pin your preferred timezone for dates in chat and briefs under Settings → Preferences.

Missed runs

If your Mac was asleep (or your agent offline) when a schedule fired, the job waits and runs at wake — a late sweep beats a missed one. Each schedule has a missed-run policy: catch up on the most recent missed tick once, or skip stale ticks entirely. A schedule never piles up duplicate runs: if the previous job is still queued, the next tick won't stack another behind it. Scheduled jobs that are hosted-capable fall back to the cloud runner if your agent stays offline for ~10 minutes (when you have a valid Anthropic key).

Watching runs

The Agent tab shows the live run (including a streamed log of what it's doing), which plane it's running on, and a ledger of recent runs with durations. Failed hosted runs are kept and replayable, never silently dropped. Enable notifications to get a push when a run finishes.