Skip to main content

/fleet-watch

Best used: configure always-on plan pullers for a project’s .plans/ (from the project, or from Anchor with a project name/path). See Skills overview.

Turn on always-on plan watchers for a project so eligible work under .plans/ is picked up and driven through the same kind of claim → execute → complete loop as /work—without you sitting in an interactive session.

You run the skill once (or occasionally) in a coding agent to configure those watchers. The watchers themselves then keep applying that work-style workflow on a schedule. Architecture of pull-per-endpoint fleets: Fleet workers.

Why use it​

Without /fleet-watchWith /fleet-watch
You must open a session and run /work for each planWatchers poll, claim fit-appropriate plans, and run the work loop unattended
Idle machines stay idle until someone remembersMid/small/reasoner workers keep watching after reboot
Handoff depends on chat historyFile-based ready → in-progress → review-needed continues on its own

Watchers pull one plan per tick (they do not drain the whole backlog by default and do not promote drafts). They still honor Preferred models / fit and do not replace a preferred orchestrator for architecture—lesser workers escalate hard planning.

When to run it​

  • You have (or want) a project with a .plans/ tree and ready work under bugs/ / features/
  • You want pollers that survive reboot (user-level timers + linger)
  • You are in the project folder, or in the Anchor repo and want to target another project by name

Skip it if you only work plans interactively with /work and do not want background claimers.

Usage​

InvocationBehavior
/fleet-watchUse this project (CWD has .plans/, or its git root does). Status + recommended durable setup
/fleet-watch foo-projectTarget ./foo-project, ../foo-project, or another resolved path named foo-project
/fleet-watch /abs/path/to/appExplicit project root
/fleet-watch --statusInspect only (lanes, timers, linger)—no install
/fleet-watch --installAfter status, install recommended user timers (agent asks for consent if not already clear)
/fleet-watch --tiers mid,smallPrefer those capability tiers when proposing/installing workers

Everything after /fleet-watch is $ARGUMENTS. The skill resolves the project first, then runs the right helper under the hood—you should not need to memorize script paths.

Project resolution (what the skill does)​

  1. If the first token looks like a path or project name → resolve it (absolute path, ./name, sibling of CWD, or under a known workspace).
  2. Else if CWD (or git root) contains .plans/ → that is the project.
  3. Else if CWD is the Anchor repo and a single obvious app path was not given → ask once, or accept foo-project as a sibling/child name.
  4. Prefer absolute paths in any commands the agent runs.

What “good” looks like after success​

  1. Project has .plans/ with known lanes (including in-progress/).
  2. At least one systemd user timer is enabled for that project (name like anchor-watch-<project>-<agent>.timer), or you accepted a printed install plan to enable yourself.
  3. loginctl linger is on for your user so timers fire after reboot without an open login.
  4. Each watcher has a unique agent id so claims under in-progress/ do not collide.
  5. You know how to check: “list my anchor-watch timers” / status via /fleet-watch --status.

Skill session vs watcher workers​

/fleet-watch skill (this chat)Watchers it installs
JobResolve project, status, emit/install timersOn each tick: pick/claim a plan and run the work-style pipeline
Like /work?No—you are wiring the fleetYes in spirit—claim → in-progress → execute (and complete when Done when holds)
WhenYou type /fleet-watchContinuously (timers + linger)

So: the skill does not step through a plan’s table in-session; the workers it sets up are how the work workflow runs in the background.

What the skill will not do​

  • Promote drafts → ready (use /draft --promote; not this skill)
  • Implement a plan’s steps in this chat (that is interactive /work; background execution is what the watchers do after install)
  • Install system-wide units under /etc/systemd unless you explicitly demand root installs
  • Enable timers without consent when you only asked for status or a dry recommendation
  • Replace /work as the interactive “work this plan with me now” command

Install (platform wiring)​

Same contract everywhere; only how the agent loads the skill differs:

PlatformInstall
Claude CodeScaffold installs .claude/commands/fleet-watch.md
Grok BuildScaffold installs .grok/skills/fleet-watch/SKILL.md
  • /work — interactive: pick and execute one plan with you in the session
  • Fleet workers — multi-tier pull model, leases, isolation (what the watchers implement)
  • Utility scripts — fleet_watch.py / work_once.py if you automate outside an agent
  • CLI — scaffold, preferred orchestrator