Skip to content
Back to skills

Orchestrate

ASecurity

Start or tick the drydock orchestrator loop. Use when asked "/drydock:orchestrate", "start drydock", "start the orchestrator", or "run a drydock tick". Bare invocation bootstraps and enters a self-paced loop; the "tick" argument runs a single tick (used by the loop itself).

  • 5 stars
  • 0 votes
  • 0 copies
  • 0 views
  • Added September 26, 2026
developmentgit

Works with

  • cli

Security analysis

A100/100

Scanned September 26, 2026

npx -y skills add phspagiari/drydock --skill orchestrate --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Orchestrate?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Orchestrate
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/phspagiari-orchestrate/badge)](https://www.skillsdirectory.com/skills/phspagiari-orchestrate)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: orchestrate
description: Start or tick the drydock orchestrator loop. Use when asked "/drydock:orchestrate", "start drydock", "start the orchestrator", or "run a drydock tick". Bare invocation bootstraps and enters a self-paced loop; the "tick" argument runs a single tick (used by the loop itself).
---

# /drydock:orchestrate — the loop

> **PLUGIN_HOME**: resolve once per invocation as `realpath <this skill's
> base dir>/../..` (the plugin package root — `contracts/`, `board/` are its
> siblings, read-only, updated only via `/plugin update`). **STATE_HOME**:
> `~/.drydock`, or `$DRYDOCK_STATE_HOME` if set — the queue, deliverables,
> archive, priors, proposals, config and the heartbeat file. It is a plain
> local git repository with **no remote, ever**.

The orchestrator contract is `<PLUGIN_HOME>/contracts/ORCHESTRATOR.md`.
**Re-read it on every invocation** — this is what keeps the running loop
current when the contract changes; never work from a remembered copy.

## Bare invocation (bootstrap)

1. **Duplicate guard**: read `<STATE_HOME>/.orchestrator-heartbeat`. If its
   mtime is under 45 minutes old, another orchestrator is probably alive —
   report its age and STOP; the human decides whether to proceed anyway.
2. **Model check**: this loop wants your longest-running, highest-context
   model — it re-reads contracts, tracks many items, and lives for hours. If
   the current session is on something smaller, say so in one line, then
   continue; availability beats purity.
3. **Open the board**: ensure it's serving (`<PLUGIN_HOME>/board/server.py
   serve --root <STATE_HOME>`, healthz → start if needed) and
   `open http://localhost:8642` — starting drydock means having the board on
   screen. Bootstrap only; ticks never re-open it.
4. Run one tick (below).
5. Continue self-paced: re-invoke yourself as `/drydock:orchestrate tick` on
   a loop with no fixed interval (the `loop` skill, a scheduler, or whatever
   your setup provides). Pacing per `<PLUGIN_HOME>/contracts/ORCHESTRATOR.md`
   — 20–30 min idle, ~10 min with active executions, never subminute.

## `tick` argument (one tick, called by the loop)

Re-read `<PLUGIN_HOME>/contracts/ORCHESTRATOR.md` and execute exactly one
pass of "Each tick": inbox dispatch → active verification → housekeeping
(board healthz, touch `<STATE_HOME>/.orchestrator-heartbeat`) → notify per
policy. Nothing to do → report noop so the loop collapses it. Remember that a
tick is noop only *after* housekeeping ran — the PR sweeps and session
reconciliation are never skippable.

## Rules

- One orchestrator per machine — the heartbeat guard is not optional.
- This skill never answers escalations and never reviews deliverables; those
  are `/drydock:spec unblock` and `/drydock:review`, in other sessions.
- Never dispatch executors with the Agent tool. They are independent
  background CLI sessions (`claude --bg`) — in-process subagents bloat this
  session, die with it, and are invisible to the session list.
- Stopping: the human stops the loop (or asks this session to); on stop,
  remove `<STATE_HOME>/.orchestrator-heartbeat`.

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.