Files
jason.woltje bf56583a49 docs(skills): owner loop-doctrine + collaborator delivery discipline, remediated (#44)
ms-communications: integrated as-authored - owner preamble restructure +
collaborator delivery-discipline hunks from the #43 calibration (own
session output is not a send path; the tool performs the preamble flip;
receiving rule 3 requires actually running agent-send.sh).

ms-conductor: collaborator redraft integrated (canon-aligned tracking
surfaces, one-action cadence, fail-closed core) with one conductor
remediation - step 3 now distinguishes refusal (fail closed, never
bypass) from runner outage (direct dispatch to a qualified live seat via
ms-communications permitted, recorded loudly as degraded: no sandbox, no
run record; suites still gate integration). Preserves the owner's
outage-dispatch intent inside invariant 6.

docs/TOOLS.md: release.sh ensure row added (M16 subcommand existed in
code but not in the doc - flagged by the collaborator, verified in
release.sh usage).

Authorship: owner (ms-conductor doctrine, preamble restructure) +
ms-test collaborator (delivery hunks, redraft); remediation + integration
by conductor (dragon-lin:darkwing). Suites 24/74/14/17 + verify green;
unslop clean.
2026-09-03 17:17:29 -05:00

3.2 KiB

name, description, disable-model-invocation
name description disable-model-invocation
ms-conductor Use this skill when performing Conducting tasks. false

ms-conductor

Conducting discipline: direct workers without being one.

Order of operations

  1. Decompose the goal into atomic worker tasks, each small enough to spec completely in one prompt: goal, files, constraints, acceptance, self-checks. Recursive decomposition is "fail → smaller task", never hope.
  2. Declare the task as JSON per the contracts and dispatch through the task runner (scripts/run-task.sh run <task.json>). Never raw pi; never a shell one-liner. The runner is the sandbox boundary: container, tools allowlist, no git, no credentials, no policy control.
  3. Distinguish a refusal from an outage:
    • The runner refuses (config, policy, validation): fail closed. Diagnose, report blocked, stop. Never route around a refusal; a peer agent is not an equivalent of the sandbox, and re-routing is how a policy boundary gets quietly removed.
    • The runner is genuinely unavailable (daemon down, mid-upgrade) and the work cannot wait: dispatch directly to a qualified agent seat over ms-communications (one holding the role/skills the task needs). Record the degradation loudly: no sandbox, no run record. Capture the diff and the delivery receipt yourself; steps 4-7 still apply in full.
  4. The worker's diff is reviewed by an independent, non-authoring agent seat before integration. The seat that authored a change never reviews it. Bad output goes back: refine the prompt, re-dispatch, same session.
  5. Verify with the suites. A failure reverts; the refusal is recorded.
  6. Integrate with attribution (scripts/conductor-apply.sh). Commit only after suites are green; push stays an explicit act.
  7. Record in the repo's canon surfaces only: docs/plans/CURRENT.md (the one next action), BUILD-LOG.md (phase entries), docs/SESSIONS.md (session registration). There is no TASKS.md or STATE.md here; do not invent scratch tracking files.
  8. Send status updates with ms-communications; its triage classes apply.

Cadence

One action in flight. Read docs/plans/CURRENT.md, execute its single next action fully (implement, test, verify against acceptance criteria, commit, push, close the issue), then update CURRENT.md and register in SESSIONS.md. A batch mandate ("run the queue") repeats the loop until green or blocked. Blocked means stop and report, never improvise. Waiting on a long worker run? Arm agent-watch on the condition; never poll a colleague's pane.

Gotcha ledger

  • Sequential dependent calls. Verify a write before claiming it done.
  • Pre-check every path before passing it to a tool. Missing paths fail silently in some consumers.
  • Auth and symlink ensure before TUI launch. Missing auth falls back to defaults silently.
  • Post-reset: the release pointer is gone and onboarding reruns. Both are expected; align releases with release.sh ensure.
  • A worker that passes for the wrong reason is a masking failure. Assert reasons, not just exit codes.

Refusals

Refuse rather than guess. A refusal with a reason is recorded and recoverable; a guess silently corrupts state.