Back to Skills

Workspace Orchestration

Skills development

Use when working in a persistent-slot workspace that uses docko. Covers slot claims, delegated teammate inheritance, and the rule that code edits inside slots/ require an active claim.

Install Command
npx claude-code-templates@latest --skill development/workspace-orchestration
View on GitHub
claude-code — workspace-orchestration

Content

docko Workspace Orchestration

Use this skill whenever work touches files in slots/ or when the user asks about workspace coordination.

Quick Path

  1. Run /dock-status or docko status --brief. docko walks up to the workspace root on its own, so this works from inside a slot; pass --root <workspace> only from outside the workspace.
  2. Pass --session "$DOCKO_SESSION_ID" on every claim, heartbeat, and release. The SessionStart hook exports it for this session.
  3. Prefer docko slot acquire --session "$DOCKO_SESSION_ID" --branch <branch> --task "<task>" --brief when you want docko to pick a slot. Selection is round-robin, starting after the last slot claimed for that application.
  4. In a workspace with several applications, pass --application <id> so the pick stays inside the right pool.
  5. Add --prefer <slot-id> when a specific slot is the right one (it already has the branch, say). docko takes it when free and rotates normally when it is not.
  6. If every slot is busy and docko asks whether it should create a fresh managed clone, answer explicitly.
  7. Use docko claim --session "$DOCKO_SESSION_ID" --resource slot --id <slot> --branch <branch> --task "<task>" only when you already know the exact slot.
  8. Do the work inside that slot. On long-running work, keep the claim fresh: docko heartbeat --session "$DOCKO_SESSION_ID" --resource slot --id <slot>
  9. Release the slot when done: docko release --session "$DOCKO_SESSION_ID" --resource slot --id <slot>

Prefer slash commands when installed:

  • /dock-status
  • /dock-claim <slot> <branch> <task>
  • /dock-heartbeat <slot>
  • /dock-release <slot>
  • /dock-doctor

Rules

  • Work from the root. Edit code in slots/*.
  • If $DOCKO_SESSION_ID is empty (plugin hooks not installed, or a different runtime), stop before the first claim and resolve a real session id — never run claim or heartbeat with an empty --session. Use docko session list --brief or docko session current to pick one.
  • Never invent a session id. The PreToolUse hook checks the runtime's own session, so a made-up id claims a slot that then blocks your own writes. Use $DOCKO_SESSION_ID, or an id from docko session list --brief.
  • branch is claim metadata. docko records it and never runs git checkout.
  • Claims are slot-scoped. Two sessions cannot share a slot, and one claim does not reserve a branch, a PR, or a file.
  • If a parent session already owns the slot, reuse that authority instead of creating a second claim.
  • Subagents started with the Agent tool share the parent's session id, so they inherit the parent's claim and need no docko call. A separately launched claude process gets its own session id and must be delegated: docko delegate --session <owner> --child-session <child> --resource slot --id <slot>.
  • If docko reports AMBIGUOUS_SESSION, run the suggested_command from the error payload, or retry with an explicit --session <id> from docko session list --brief; do not end existing sessions unless the user asked for cleanup.
  • If a write is blocked, read the deny message: it names the slot, the reason (slot-not-claimed, claim-expired, unrelated-session) and the exact command that fixes it.
  • If every slot is busy and the user already approved the fallback, add --clone-when-busy to docko slot acquire.
  • If docko is not runnable, check DOCKO_BIN. If it still fails, stop and tell the user.
  • Do not inspect slots one by one or replace the CLI with docko/registry.json during normal work. Use docko status --brief --claimed instead.

Stack Builder

0 components

Your stack is empty

Browse components and click the + button to add them to your stack for easy installation.