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.
67 lines
3.2 KiB
Markdown
67 lines
3.2 KiB
Markdown
---
|
|
name: ms-conductor
|
|
description: Use this skill when performing Conducting tasks.
|
|
disable-model-invocation: 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.
|