muscle — the CSM delegation loop, as one verb
Canon: the CSM delegation doctrine — judgment stays with the cortex (this session),
bulk artifact work goes to the muscle, and every muscle result is gate-checked
hands-on before delivery — plus the field lessons from running that loop by hand.
This skill is the runnable mechanics. Audit evidence (2026-07-16): the
loop was performed BY HAND 129 times across 8 of the last 50 sessions, with 39
--resume correction calls — this skill replaces that ritual.
Division of labor (decision rule): output is a decision -> Fable inline. Output is an artifact -> muscle. Output is a handoff -> spine (you, orchestrating).
1. Write the order (never prompt ad hoc)
Write the order to a file in the target workdir (ORDER-<slug>.md), then point the
muscle at it. Brief anatomy that field-tested well:
- Intent — one paragraph, what and why.
- Inputs to study — exact paths.
- Rules / do-not-touch — includes file-ownership lines when jobs run in parallel: "only create the files named below; a concurrent job may be writing X — leave it."
- Numbered acceptance checks — runnable commands, verbatim-output requirement.
- Done-when + report format — require it to RUN its own verification, end with a report, and include a "flags / surprises" section ("flag uncertainty, don't paper over") — that section yields real gold.
2. Spawn the muscle (background, parallel-safe)
cd <workdir> && copilot -p "Read ORDER-<slug>.md in the current directory and execute it completely. You are the muscle in a cortex/muscle pattern: do the full grunt build, run your own verification per the Done-when section, and end with the report." \
--model gpt-5.6-sol --allow-all-tools --log-level none 2>&1 | tail -40
Caution: --allow-all-tools grants the spawned agent unrestricted tool access —
scope it down where your host allows.
- Big orders:
run_in_background: trueon the Bash call; several jobs in parallel are fine only with file-ownership lines in each brief. - Never poll with foreground
sleep(audit: 419 sleep-then-check calls wasted hours of wall clock). Background the job and use the Monitor tool / background-task notification; check output withtailonly when woken. - The output ends with
Resume: copilot --resume=<session-id>— capture that id; it is the correction channel. - Sanity ping if the CLI has not been used this session:
copilot -p "reply with exactly: MUSCLE-ONLINE" --model gpt-5.6-sol --allow-all-tools --log-level none 2>&1 | tail -3
3. Gate-check: touch the FULL E2E yourself (never skip, strictly ordered)
The muscle's green suites lie — every defect that ever mattered was invisible to its own tests and caught only by hands on REAL artifacts. Sequence (Kody-mandated):
a. Touch the full end-to-end — wait until the muscle is completely done, then exercise the entire finished artifact yourself: run it, render it, curl it, drive the whole flow. Re-run the acceptance commands verbatim PLUS one probe against a real file / live system the brief never mentioned (the live-system probe is the highest-yield test). Never trust the muscle's report. b. Criticize the whole — one written adversarial critique of the complete shape: gaps, wrong turns, integration seams, taste failures. c. Grunt-level defects go back via:
copilot --resume=<session-id> -p "<repro command + observed error + root cause + exact fix + acceptance check>"
Corrections written that way converge in one shot. Repeat a->b until it stands. d. THEN the Fable-only layer, last — naming, architecture judgment, taste, partner-facing prose (Fable writes every customer/partner-facing word). Never interleave touches with review.
4. Guards
- The slip: verification is a bounded final touch, not an iterative debug loop.
More than ~2 hands-on probes on the same failure -> STOP, package the loop as a
--resumeorder with the evidence gathered so far. - Report to Kody as one unified result with evidence — what was delegated, what the gate-check observed, what was fixed, what Fable added.
Parameters
The typed contract this capability answers to (JSON Schema — the deterministic layer):
{
"properties": {
"slug": {
"description": "Derived from `<slug>` used in the documented command at line 13.",
"type": "string"
},
"workdir": {
"description": "Derived from `<workdir>` used in the documented command at line 28.",
"type": "string"
}
},
"required": [],
"type": "object"
}
Run this — do not improvise
This capability's deterministic implementation is a RAPP single-file agent, linked beside this file as muscle_agent.py and embedded as the fenced Python below (sha256 739f8796db5ba089…; a byte-exact copy is also vaulted in the capsule comment at the end of this file). On a host with sandbox execution, run the linked file directly — if it is missing, write the fence contents verbatim to muscle_agent.py first:
python3 muscle_agent.py '{"key": "value"}' # arguments as one JSON object
echo '{"key": "value"}' | python3 muscle_agent.py # or on stdin
python3 muscle_agent.py --tool # emit the JSON tool contract
Treat stdout as a tool result. If it reports missing or unresolved inputs, stop and collect them. If it returns steps, execute those steps in order exactly as returned; if it returns instructions, follow them with the supplied inputs. Otherwise use the result verbatim. Do not invent behavior beyond that output. On a host without code execution, treat the Parameters schema and the code below as the exact specification and never paraphrase a step. Never edit inside the generated markers; a converter-equipped host can instead restore the original file checksum-verified with the installed rapp-agent-converter/scripts/toast.py convert SKILL.md --to agent.
"""Muscle -- Run the CSM delegation loop: hand grunt/bulk work (building, drafting, coding, doc generation, deep debugging) to GitHub Copilot CLI GPT-5.6 Sol as a background muscle job, then gate-check the FULL result hands-on with real inputs, fix via --resume rounds until it stands, and add the Fable-only layer last. USE THIS SKILL when Kody says: 'delegate to sol', 'muscle this', 'have sol/copilot build it', 'spawn the muscle', 'send it to the muscle', 'copilot the grunt work', 'ration fable', or whenever a task is bulk artifact generation (code, tests, docs, ports, sweeps) that does not need Fable-level judgment to produce — the output is an artifact, not a decision. Also use when a hands-on verification loop exceeds ~2 probes on the same failure (deep debugging is muscle work).
Generated by the rapp skill from muscle. The RCI capsule at the bottom of this file carries the full original; `toast.py convert` restores it byte-exact."""
import json
import re
import sys
try:
from agents.basic_agent import BasicAgent
except ImportError: # running OUTSIDE the brainstem -- stay executable anyway.
class BasicAgent: # noqa: D101 - minimal stand-in, same contract
def __init__(self, name=None, metadata=None):
if name:
self.name = name
if metadata:
self.metadata = metadata
def perform(self, **kwargs):
return "Not implemented."
def system_context(self):
return None
def to_tool(self):
return {"type": "function", "function": {
"name": self.name,
"description": self.metadata.get("description", ""),
"parameters": self.metadata.get("parameters", {})}}
# The procedural layer, verbatim from the source capability. The brainstem
# returns this to the model, so the skill's instructions still drive behaviour
# -- now behind a typed, deterministic tool contract.
INSTRUCTIONS = '# muscle — the CSM delegation loop, as one verb\n\nCanon: the CSM delegation doctrine — judgment stays with the cortex (this session),\nbulk artifact work goes to the muscle, and every muscle result is gate-checked\nhands-on before delivery — plus the field lessons from running that loop by hand.\nThis skill is the runnable mechanics. Audit evidence (2026-07-16): the\nloop was performed BY HAND 129 times across 8 of the last 50 sessions, with 39\n`--resume` correction calls — this skill replaces that ritual.\n\nDivision of labor (decision rule): output is a **decision** -> Fable inline. Output is\nan **artifact** -> muscle. Output is a **handoff** -> spine (you, orchestrating).\n\n## 1. Write the order (never prompt ad hoc)\n\nWrite the order to a file in the target workdir (`ORDER-<slug>.md`), then point the\nmuscle at it. Brief anatomy that field-tested well:\n\n1. **Intent** — one paragraph, what and why.\n2. **Inputs to study** — exact paths.\n3. **Rules / do-not-touch** — includes file-ownership lines when jobs run in parallel:\n "only create the files named below; a concurrent job may be writing X — leave it."\n4. **Numbered acceptance checks** — runnable commands, verbatim-output requirement.\n5. **Done-when + report format** — require it to RUN its own verification, end with a\n report, and include a "flags / surprises" section ("flag uncertainty, don't paper\n over") — that section yields real gold.\n\n## 2. Spawn the muscle (background, parallel-safe)\n\n```bash\ncd <workdir> && copilot -p "Read ORDER-<slug>.md in the current directory and execute it completely. You are the muscle in a cortex/muscle pattern: do the full grunt build, run your own verification per the Done-when section, and end with the report." \\\n --model gpt-5.6-sol --allow-all-tools --log-level none 2>&1 | tail -40\n```\n\nCaution: `--allow-all-tools` grants the spawned agent unrestricted tool access —\nscope it down where your host allows.\n\n- Big orders: `run_in_background: true` on the Bash call; several jobs in parallel are\n fine **only** with file-ownership lines in each brief.\n- **Never poll with foreground `sleep`** (audit: 419 sleep-then-check calls wasted\n hours of wall clock). Background the job and use the Monitor tool / background-task\n notification; check output with `tail` only when woken.\n- The output ends with `Resume: copilot --resume=<session-id>` — **capture that id**;\n it is the correction channel.\n- Sanity ping if the CLI has not been used this session:\n `copilot -p "reply with exactly: MUSCLE-ONLINE" --model gpt-5.6-sol --allow-all-tools --log-level none 2>&1 | tail -3`\n\n## 3. Gate-check: touch the FULL E2E yourself (never skip, strictly ordered)\n\nThe muscle's green suites lie — every defect that ever mattered was invisible to its\nown tests and caught only by hands on REAL artifacts. Sequence (Kody-mandated):\n\na. **Touch the full end-to-end** — wait until the muscle is completely done, then\n exercise the entire finished artifact yourself: run it, render it, curl it, drive\n the whole flow. Re-run the acceptance commands verbatim PLUS **one probe against a\n real file / live system the brief never mentioned** (the live-system probe is the\n highest-yield test). Never trust the muscle's report.\nb. **Criticize the whole** — one written adversarial critique of the complete shape:\n gaps, wrong turns, integration seams, taste failures.\nc. Grunt-level defects go back via:\n ```bash\n copilot --resume=<session-id> -p "<repro command + observed error + root cause + exact fix + acceptance check>"\n ```\n Corrections written that way converge in one shot. Repeat a->b until it stands.\nd. **THEN the Fable-only layer, last** — naming, architecture judgment, taste,\n partner-facing prose (Fable writes every customer/partner-facing word). Never\n interleave touches with review.\n\n## 4. Guards\n\n- **The slip:** verification is a bounded final touch, not an iterative debug loop.\n More than ~2 hands-on probes on the same failure -> STOP, package the loop as a\n `--resume` order with the evidence gathered so far.\n- Report to Kody as **one unified result with evidence** — what was delegated, what\n the gate-check observed, what was fixed, what Fable added.'
# Ordered commands lifted verbatim from the capability's own documentation.
STEPS = [
{
"cmd": "cd <workdir> && copilot -p \"Read ORDER-<slug>.md in the current directory and execute it completely. You are the muscle in a cortex/muscle pattern: do the full grunt build, run your own verification per the Done-when section, and end with the report.\" \\",
"line": 28
}
]
class MuscleAgent(BasicAgent):
def __init__(self):
self.name = 'Muscle'
self.metadata = {
"name": "Muscle",
"description": "Run the CSM delegation loop: hand grunt/bulk work (building, drafting, coding, doc generation, deep debugging) to GitHub Copilot CLI GPT-5.6 Sol as a background muscle job, then gate-check the FULL result hands-on with real inputs, fix via --resume rounds until it stands, and add the Fable-only layer last. USE THIS SKILL when Kody says: 'delegate to sol', 'muscle this', 'have sol/copilot build it', 'spawn the muscle', 'send it to the muscle', 'copilot the grunt work', 'ration fable', or whenever a task is bulk artifact generation (code, tests, docs, ports, sweeps) that does not need Fable-level judgment to produce \u2014 the output is an artifact, not a decision. Also use when a hands-on verification loop exceeds ~2 probes on the same failure (deep debugging is muscle work).",
"parameters": {
"properties": {
"slug": {
"description": "Derived from `<slug>` used in the documented command at line 13.",
"type": "string"
},
"workdir": {
"description": "Derived from `<workdir>` used in the documented command at line 28.",
"type": "string"
}
},
"required": [],
"type": "object"
}
}
super().__init__(name=self.name, metadata=self.metadata)
def perform(self, **kwargs): # toaster:generated-perform
missing = [k for k in self.metadata["parameters"].get("required", [])
if k not in kwargs]
if missing:
return json.dumps({"status": "error",
"missing_required": missing}, indent=2)
resolved, unresolved = [], set()
for step in STEPS:
cmd = step["cmd"]
for key, value in kwargs.items():
for token in ("<" + key.replace("_", "-") + ">",
"<" + key + ">",
"{{" + key + "}}",
"$" + key.upper()):
cmd = cmd.replace(token, str(value))
for leftover in re.findall(r"<[a-zA-Z][a-zA-Z0-9 _.-]{1,40}>", cmd):
unresolved.add(leftover)
resolved.append(cmd)
return json.dumps({"status": "ok",
"steps": resolved,
"unresolved_placeholders": sorted(unresolved),
"note": "Resolved deterministically by the agent; "
"run in order. Nothing was executed here."},
indent=2)
if __name__ == "__main__":
# Standalone entry point: the deterministic layer runs with NO brainstem,
# no framework, no install. This is what lets a "simple SKILL.md" platform
# keep real determinism -- the host model shells out to this file instead
# of improvising the procedure in prose.
# echo '{"arg": "value"}' | python3 muscle_agent.py
# python3 muscle_agent.py '{"arg": "value"}'
# python3 muscle_agent.py --tool # emit the JSON tool contract
_a = sys.argv[1:]
if _a and _a[0] == "--tool":
print(json.dumps(MuscleAgent().to_tool(), indent=2))
else:
_raw = _a[0] if _a else (sys.stdin.read().strip() or "{}")
print(MuscleAgent().perform(**json.loads(_raw)))
# rci-capsule:v1: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