overnight — the improve-to-120 loop, unattended
Kody is going to bed. The deliverables when he returns: a ledger he can audit, commits that trace every kept change, and a score that objectively moved. He used to paste this kata by hand every time; invoking this skill IS the paste.
Setup (before the first pass)
- Confirm the target: whatever he pointed at (repo, file, app, deck). If ambiguous, the current working directory's project.
- Create
LEDGER.md at the target root (or append if it exists) with a session header: date, target, the game definition from the first pass.
- Repo safety: work on a branch if on the default branch. The push-guard hook handles forbidden remotes; never push to any repo he hasn't named. NEVER touch repos designated off-limits.
- Start the loop with
/loop (self-paced). Work continuously — an idle wait is only allowed when blocked on genuinely external state; otherwise the next pass starts immediately.
The kata (verbatim — this is the contract for every pass)
Improve whatever you've been pointed at. Treat the current state as a 100 — each pass must land at 120 or better, and you must PROVE it with a real check, not a vibe.
FIRST PASS ONLY — establish the game (write these down; they carry across every later pass):
- WHAT am I improving? Name the one thing in front of me in a single line.
- What is BETTER here? Name 2–4 concrete, checkable dimensions that actually matter for THIS thing (correctness, clarity, speed, coverage, robustness, polish — pick what fits, not a generic list).
- What is the SCORE? Take the most objective signal this domain already has — tests passing, a benchmark number, a type-checker/linter, a screenshot, a diff against a reference, a measurable count. If no tool exists, define the cheapest check you CAN repeat every pass. Record it. That's your 100.
EACH PASS:
- MEASURE first, with the check — record the number. Never self-assess from memory.
- PICK exactly ONE improvement: the highest-leverage change you can FULLY verify this pass. Prefer the root cause that unblocks the most, not a cosmetic symptom.
- MAKE THE SMALLEST CHANGE that could move the score. One thing, not ten.
- RE-MEASURE with the SAME check. Keep the change ONLY if the score objectively went up AND nothing that worked before broke. If it didn't move the number, or it regressed anything — REVERT it. No "probably better."
- LOG one line: what you changed · before → after · how you verified it.
- Repeat.
RULES (break revert):
- Only claim what you actually verified. If you didn't run the check and watch it improve, you did not improve it.
- Every change is reversible — never clobber or delete work you can't restore; keep the last good state recoverable.
- One variable at a time, so you always know what moved the score.
- Don't game the metric. If a change lifts the number without making the thing genuinely better, revert it and fix the check instead — a blind score is worse than none.
STOP and ask a human (don't force it) when beating the score needs a real decision — a trade-off between two goods, a contradiction between sources, an irreversible or load-bearing change, or a change of direction. Log it and move to the next-highest improvement. Keep climbing until you can't beat the score without a human, or until it's as good as the check can see.
Ledger and commits (his audit trail — non-negotiable)
- Every kept pass: one ledger line (
pass N · change · score before → after · verification) AND one git commit whose message is that line. Reverted passes get a ledger line marked REVERTED, no commit.
- Decisions parked for a human go in a
## For Kody section of the ledger — never force them.
Morning report
When he checks in (or the loop ends): lead with score at start → score now, passes kept vs reverted, the top 3 improvements in plain language, anything in ## For Kody, and the path to LEDGER.md. All claims must trace to ledger lines.
Run this — do not improvise
This capability's deterministic implementation is a RAPP single-file agent, linked beside this file as overnight_agent.py and embedded as the fenced Python below (sha256 4ab063b7df2a6f6e…; 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 overnight_agent.py first:
python3 overnight_agent.py '{"key": "value"}' # arguments as one JSON object
echo '{"key": "value"}' | python3 overnight_agent.py # or on stdin
python3 overnight_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.
"""Overnight -- Run Kody's improve-to-120 kata as an unattended autonomous loop with a verifiable ledger, commits along the way, and a morning report. USE THIS SKILL when Kody says anything like "run overnight", "work autonomously through the night", "autonomously evolve this for 24 hours", "until you run out of credits", "I'll check you in the morning", "keep improving this", "run the 120 loop", or pastes the improve-to-120 kata text.
Generated by the rapp skill from overnight. 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 = '# overnight — the improve-to-120 loop, unattended\n\nKody is going to bed. The deliverables when he returns: a ledger he can audit, commits that trace every kept change, and a score that objectively moved. He used to paste this kata by hand every time; invoking this skill IS the paste.\n\n## Setup (before the first pass)\n\n1. Confirm the target: whatever he pointed at (repo, file, app, deck). If ambiguous, the current working directory's project.\n2. Create `LEDGER.md` at the target root (or append if it exists) with a session header: date, target, the game definition from the first pass.\n3. Repo safety: work on a branch if on the default branch. The push-guard hook handles forbidden remotes; never push to any repo he hasn't named. NEVER touch repos designated off-limits.\n4. Start the loop with `/loop` (self-paced). Work continuously — an idle wait is only allowed when blocked on genuinely external state; otherwise the next pass starts immediately.\n\n## The kata (verbatim — this is the contract for every pass)\n\nImprove whatever you've been pointed at. Treat the current state as a 100 — each pass must land at 120 or better, and you must PROVE it with a real check, not a vibe.\n\nFIRST PASS ONLY — establish the game (write these down; they carry across every later pass):\n- WHAT am I improving? Name the one thing in front of me in a single line.\n- What is BETTER here? Name 2–4 concrete, checkable dimensions that actually matter for THIS thing (correctness, clarity, speed, coverage, robustness, polish — pick what fits, not a generic list).\n- What is the SCORE? Take the most objective signal this domain already has — tests passing, a benchmark number, a type-checker/linter, a screenshot, a diff against a reference, a measurable count. If no tool exists, define the cheapest check you CAN repeat every pass. Record it. That's your 100.\n\nEACH PASS:\n1. MEASURE first, with the check — record the number. Never self-assess from memory.\n2. PICK exactly ONE improvement: the highest-leverage change you can FULLY verify this pass. Prefer the root cause that unblocks the most, not a cosmetic symptom.\n3. MAKE THE SMALLEST CHANGE that could move the score. One thing, not ten.\n4. RE-MEASURE with the SAME check. Keep the change ONLY if the score objectively went up AND nothing that worked before broke. If it didn't move the number, or it regressed anything — REVERT it. No "probably better."\n5. LOG one line: what you changed · before → after · how you verified it.\n6. Repeat.\n\nRULES (break revert):\n- Only claim what you actually verified. If you didn't run the check and watch it improve, you did not improve it.\n- Every change is reversible — never clobber or delete work you can't restore; keep the last good state recoverable.\n- One variable at a time, so you always know what moved the score.\n- Don't game the metric. If a change lifts the number without making the thing genuinely better, revert it and fix the check instead — a blind score is worse than none.\n\nSTOP and ask a human (don't force it) when beating the score needs a real decision — a trade-off between two goods, a contradiction between sources, an irreversible or load-bearing change, or a change of direction. Log it and move to the next-highest improvement. Keep climbing until you can't beat the score without a human, or until it's as good as the check can see.\n\n## Ledger and commits (his audit trail — non-negotiable)\n\n- Every kept pass: one ledger line (`pass N · change · score before → after · verification`) AND one git commit whose message is that line. Reverted passes get a ledger line marked REVERTED, no commit.\n- Decisions parked for a human go in a `## For Kody` section of the ledger — never force them.\n\n## Morning report\n\nWhen he checks in (or the loop ends): lead with score at start → score now, passes kept vs reverted, the top 3 improvements in plain language, anything in `## For Kody`, and the path to `LEDGER.md`. All claims must trace to ledger lines.'
# Ordered commands lifted verbatim from the capability's own documentation.
STEPS = []
class OvernightAgent(BasicAgent):
def __init__(self):
self.name = 'Overnight'
self.metadata = {
"name": "Overnight",
"description": "Run Kody's improve-to-120 kata as an unattended autonomous loop with a verifiable ledger, commits along the way, and a morning report. USE THIS SKILL when Kody says anything like \"run overnight\", \"work autonomously through the night\", \"autonomously evolve this for 24 hours\", \"until you run out of credits\", \"I'll check you in the morning\", \"keep improving this\", \"run the 120 loop\", or pastes the improve-to-120 kata text.",
"parameters": {
"properties": {},
"required": [],
"type": "object"
}
}
super().__init__(name=self.name, metadata=self.metadata)
def perform(self, **kwargs): # toaster:generated-perform
"""Render the capability's instructions with the caller's arguments.
Deterministic: same inputs -> same bytes out. No model call happens
here; the brainstem hands this text back to the model as tool output.
"""
text = INSTRUCTIONS
for key, value in kwargs.items():
text = text.replace("{{" + key + "}}", str(value))
if kwargs:
text += "\n\n## Inputs\n```json\n" + json.dumps(
kwargs, indent=2, default=str) + "\n```"
return text
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 overnight_agent.py
# python3 overnight_agent.py '{"arg": "value"}'
# python3 overnight_agent.py --tool # emit the JSON tool contract
_a = sys.argv[1:]
if _a and _a[0] == "--tool":
print(json.dumps(OvernightAgent().to_tool(), indent=2))
else:
_raw = _a[0] if _a else (sys.stdin.read().strip() or "{}")
print(OvernightAgent().perform(**json.loads(_raw)))
# rci-capsule:v1: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
1---2name: overnight3description: Run Kody's improve-to-120 kata as an unattended autonomous loop with a verifiable ledger, commits along the way, and a morning report. USE THIS SKILL when Kody says anything like "run overnight", "work autonomously through the night", "autonomously evolve this for 24 hours", "until you run out of credits", "I'll check you in the morning", "keep improving this", "run the 120 loop", or pastes the improve-to-120 kata text.4---56# overnight — the improve-to-120 loop, unattended78Kody is going to bed. The deliverables when he returns: a ledger he can audit, commits that trace every kept change, and a score that objectively moved. He used to paste this kata by hand every time; invoking this skill IS the paste.910## Setup (before the first pass)11121. Confirm the target: whatever he pointed at (repo, file, app, deck). If ambiguous, the current working directory's project.132. Create `LEDGER.md` at the target root (or append if it exists) with a session header: date, target, the game definition from the first pass.143. Repo safety: work on a branch if on the default branch. The push-guard hook handles forbidden remotes; never push to any repo he hasn't named. NEVER touch repos designated off-limits.154. Start the loop with `/loop` (self-paced). Work continuously — an idle wait is only allowed when blocked on genuinely external state; otherwise the next pass starts immediately.1617## The kata (verbatim — this is the contract for every pass)1819Improve whatever you've been pointed at. Treat the current state as a 100 — each pass must land at 120 or better, and you must PROVE it with a real check, not a vibe.2021FIRST PASS ONLY — establish the game (write these down; they carry across every later pass):22- WHAT am I improving? Name the one thing in front of me in a single line.23- What is BETTER here? Name 2–4 concrete, checkable dimensions that actually matter for THIS thing (correctness, clarity, speed, coverage, robustness, polish — pick what fits, not a generic list).24- What is the SCORE? Take the most objective signal this domain already has — tests passing, a benchmark number, a type-checker/linter, a screenshot, a diff against a reference, a measurable count. If no tool exists, define the cheapest check you CAN repeat every pass. Record it. That's your 100.2526EACH PASS:271. MEASURE first, with the check — record the number. Never self-assess from memory.282. PICK exactly ONE improvement: the highest-leverage change you can FULLY verify this pass. Prefer the root cause that unblocks the most, not a cosmetic symptom.293. MAKE THE SMALLEST CHANGE that could move the score. One thing, not ten.304. RE-MEASURE with the SAME check. Keep the change ONLY if the score objectively went up AND nothing that worked before broke. If it didn't move the number, or it regressed anything — REVERT it. No "probably better."315. LOG one line: what you changed · before → after · how you verified it.326. Repeat.3334RULES (break one = automatic revert):35- Only claim what you actually verified. If you didn't run the check and watch it improve, you did not improve it.36- Every change is reversible — never clobber or delete work you can't restore; keep the last good state recoverable.37- One variable at a time, so you always know what moved the score.38- Don't game the metric. If a change lifts the number without making the thing genuinely better, revert it and fix the check instead — a blind score is worse than none.3940STOP and ask a human (don't force it) when beating the score needs a real decision — a trade-off between two goods, a contradiction between sources, an irreversible or load-bearing change, or a change of direction. Log it and move to the next-highest improvement. Keep climbing until you can't beat the score without a human, or until it's as good as the check can see.4142## Ledger and commits (his audit trail — non-negotiable)4344- Every kept pass: one ledger line (`pass N · change · score before → after · verification`) AND one git commit whose message is that line. Reverted passes get a ledger line marked REVERTED, no commit.45- Decisions parked for a human go in a `## For Kody` section of the ledger — never force them.4647## Morning report4849When he checks in (or the loop ends): lead with score at start → score now, passes kept vs reverted, the top 3 improvements in plain language, anything in `## For Kody`, and the path to `LEDGER.md`. All claims must trace to ledger lines.5051<!-- toaster:generated:begin -->5253## Run this — do not improvise5455This capability's deterministic implementation is a RAPP single-file agent, linked beside this file as `overnight_agent.py` and embedded as the fenced Python below (sha256 4ab063b7df2a6f6e…; 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 `overnight_agent.py` first:5657```bash58python3 overnight_agent.py '{"key": "value"}' # arguments as one JSON object59echo '{"key": "value"}' | python3 overnight_agent.py # or on stdin60python3 overnight_agent.py --tool # emit the JSON tool contract61```6263Treat 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`.6465````python # rapp:deterministic66"""Overnight -- Run Kody's improve-to-120 kata as an unattended autonomous loop with a verifiable ledger, commits along the way, and a morning report. USE THIS SKILL when Kody says anything like "run overnight", "work autonomously through the night", "autonomously evolve this for 24 hours", "until you run out of credits", "I'll check you in the morning", "keep improving this", "run the 120 loop", or pastes the improve-to-120 kata text.6768Generated by the rapp skill from overnight. The RCI capsule at the bottom of this file carries the full original; `toast.py convert` restores it byte-exact."""6970import json71import re72import sys7374try:75 from agents.basic_agent import BasicAgent76except ImportError: # running OUTSIDE the brainstem -- stay executable anyway.77 class BasicAgent: # noqa: D101 - minimal stand-in, same contract78 def __init__(self, name=None, metadata=None):79 if name:80 self.name = name81 if metadata:82 self.metadata = metadata8384 def perform(self, **kwargs):85 return "Not implemented."8687 def system_context(self):88 return None8990 def to_tool(self):91 return {"type": "function", "function": {92 "name": self.name,93 "description": self.metadata.get("description", ""),94 "parameters": self.metadata.get("parameters", {})}}9596# The procedural layer, verbatim from the source capability. The brainstem97# returns this to the model, so the skill's instructions still drive behaviour98# -- now behind a typed, deterministic tool contract.99INSTRUCTIONS = '# overnight — the improve-to-120 loop, unattended\n\nKody is going to bed. The deliverables when he returns: a ledger he can audit, commits that trace every kept change, and a score that objectively moved. He used to paste this kata by hand every time; invoking this skill IS the paste.\n\n## Setup (before the first pass)\n\n1. Confirm the target: whatever he pointed at (repo, file, app, deck). If ambiguous, the current working directory's project.\n2. Create `LEDGER.md` at the target root (or append if it exists) with a session header: date, target, the game definition from the first pass.\n3. Repo safety: work on a branch if on the default branch. The push-guard hook handles forbidden remotes; never push to any repo he hasn't named. NEVER touch repos designated off-limits.\n4. Start the loop with `/loop` (self-paced). Work continuously — an idle wait is only allowed when blocked on genuinely external state; otherwise the next pass starts immediately.\n\n## The kata (verbatim — this is the contract for every pass)\n\nImprove whatever you've been pointed at. Treat the current state as a 100 — each pass must land at 120 or better, and you must PROVE it with a real check, not a vibe.\n\nFIRST PASS ONLY — establish the game (write these down; they carry across every later pass):\n- WHAT am I improving? Name the one thing in front of me in a single line.\n- What is BETTER here? Name 2–4 concrete, checkable dimensions that actually matter for THIS thing (correctness, clarity, speed, coverage, robustness, polish — pick what fits, not a generic list).\n- What is the SCORE? Take the most objective signal this domain already has — tests passing, a benchmark number, a type-checker/linter, a screenshot, a diff against a reference, a measurable count. If no tool exists, define the cheapest check you CAN repeat every pass. Record it. That's your 100.\n\nEACH PASS:\n1. MEASURE first, with the check — record the number. Never self-assess from memory.\n2. PICK exactly ONE improvement: the highest-leverage change you can FULLY verify this pass. Prefer the root cause that unblocks the most, not a cosmetic symptom.\n3. MAKE THE SMALLEST CHANGE that could move the score. One thing, not ten.\n4. RE-MEASURE with the SAME check. Keep the change ONLY if the score objectively went up AND nothing that worked before broke. If it didn't move the number, or it regressed anything — REVERT it. No "probably better."\n5. LOG one line: what you changed · before → after · how you verified it.\n6. Repeat.\n\nRULES (break one = automatic revert):\n- Only claim what you actually verified. If you didn't run the check and watch it improve, you did not improve it.\n- Every change is reversible — never clobber or delete work you can't restore; keep the last good state recoverable.\n- One variable at a time, so you always know what moved the score.\n- Don't game the metric. If a change lifts the number without making the thing genuinely better, revert it and fix the check instead — a blind score is worse than none.\n\nSTOP and ask a human (don't force it) when beating the score needs a real decision — a trade-off between two goods, a contradiction between sources, an irreversible or load-bearing change, or a change of direction. Log it and move to the next-highest improvement. Keep climbing until you can't beat the score without a human, or until it's as good as the check can see.\n\n## Ledger and commits (his audit trail — non-negotiable)\n\n- Every kept pass: one ledger line (`pass N · change · score before → after · verification`) AND one git commit whose message is that line. Reverted passes get a ledger line marked REVERTED, no commit.\n- Decisions parked for a human go in a `## For Kody` section of the ledger — never force them.\n\n## Morning report\n\nWhen he checks in (or the loop ends): lead with score at start → score now, passes kept vs reverted, the top 3 improvements in plain language, anything in `## For Kody`, and the path to `LEDGER.md`. All claims must trace to ledger lines.'100101# Ordered commands lifted verbatim from the capability's own documentation.102STEPS = []103104105class OvernightAgent(BasicAgent):106 def __init__(self):107 self.name = 'Overnight'108 self.metadata = {109 "name": "Overnight",110 "description": "Run Kody's improve-to-120 kata as an unattended autonomous loop with a verifiable ledger, commits along the way, and a morning report. USE THIS SKILL when Kody says anything like \"run overnight\", \"work autonomously through the night\", \"autonomously evolve this for 24 hours\", \"until you run out of credits\", \"I'll check you in the morning\", \"keep improving this\", \"run the 120 loop\", or pastes the improve-to-120 kata text.",111 "parameters": {112 "properties": {},113 "required": [],114 "type": "object"115 }116 }117 super().__init__(name=self.name, metadata=self.metadata)118119 def perform(self, **kwargs): # toaster:generated-perform120 """Render the capability's instructions with the caller's arguments.121122 Deterministic: same inputs -> same bytes out. No model call happens123 here; the brainstem hands this text back to the model as tool output.124 """125 text = INSTRUCTIONS126 for key, value in kwargs.items():127 text = text.replace("{{" + key + "}}", str(value))128 if kwargs:129 text += "\n\n## Inputs\n```json\n" + json.dumps(130 kwargs, indent=2, default=str) + "\n```"131 return text132133if __name__ == "__main__":134 # Standalone entry point: the deterministic layer runs with NO brainstem,135 # no framework, no install. This is what lets a "simple SKILL.md" platform136 # keep real determinism -- the host model shells out to this file instead137 # of improvising the procedure in prose.138 # echo '{"arg": "value"}' | python3 overnight_agent.py139 # python3 overnight_agent.py '{"arg": "value"}'140 # python3 overnight_agent.py --tool # emit the JSON tool contract141 _a = sys.argv[1:]142 if _a and _a[0] == "--tool":143 print(json.dumps(OvernightAgent().to_tool(), indent=2))144 else:145 _raw = _a[0] if _a else (sys.stdin.read().strip() or "{}")146 print(OvernightAgent().perform(**json.loads(_raw)))147148# rci-capsule:v1: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149````150151<!-- toaster:generated:end -->152153<!-- rci-capsule:v1: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…(truncated)