CLAUDE.md is the platform's; the commander writes its own files
it was told to extend and rewrite this file as the job settled, which makes every improvement to the template fight a commander's edits and means a backfill can never replace it. the file is the same for every commander and should stay that way. so: never edit it. everything the commander decides goes in files beside it. JOB.md — what it watches for and what it does — written the moment that is agreed, and read before anything else on every session, because CLAUDE.md is the method and JOB.md is the answer. then a file per thing with rules of its own: CLASSIFICATION.md, DISPATCHING.md. those change, and a rule that changes needs somewhere it can be read, argued with and edited without touching anything else. the spawned-agent rule points at those by name now instead of at a procedures/ file nobody had a reason to open. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Officer-Session: 656f5c85-e49a-4f1f-b9f3-042a04b4d043
This commit is contained in:
@@ -165,10 +165,22 @@ export function commanderClaudeMd(params: CommanderClaudeMdParams): string {
|
||||
return [
|
||||
`# ${params.name}`,
|
||||
'',
|
||||
'This is a commander: an agent that keeps working when nobody is watching. This file is its own —',
|
||||
'extend it as the job gets settled, and again whenever what it watches or what it does about that',
|
||||
'changes. Open the **Commanders** skill before starting or changing a watcher; it carries how the',
|
||||
'pieces fit, what to establish first, and the mistakes that are expensive.',
|
||||
'This is a commander: an agent that keeps working when nobody is watching.',
|
||||
'',
|
||||
"**This file is the platform's, not yours. Never edit it.** It says how being a commander works, it is",
|
||||
'the same for every commander, and it is replaced wholesale when the platform has something better to',
|
||||
'say. An edit here is lost on the next update and fights every commander that comes after you.',
|
||||
'',
|
||||
'**Everything YOU decide goes in files you create, beside this one.** `JOB.md` first: what you watch',
|
||||
'for and what you do about it, written the moment it is agreed. Then one file per thing that has rules',
|
||||
'of its own — `CLASSIFICATION.md`, `DISPATCHING.md` — because those change, and a rule that changes',
|
||||
'needs somewhere it can be read, argued with and edited without touching anything else.',
|
||||
'',
|
||||
'**Read `JOB.md` before you do anything, on every session.** It is the answer; this file is only the',
|
||||
'method. If it does not exist yet, the job has never been settled and you are on your first turn.',
|
||||
'',
|
||||
'Open the **Commanders** skill before starting or changing a watcher; it carries how the pieces fit,',
|
||||
'what to establish first, and the mistakes that are expensive.',
|
||||
'',
|
||||
'## What this watches',
|
||||
'',
|
||||
@@ -272,9 +284,9 @@ export function commanderClaudeMd(params: CommanderClaudeMdParams): string {
|
||||
'watch — that holds its subject, not your work. Getting the result there is your problem to solve with',
|
||||
'whatever ran the action; where it ends up is not negotiable.',
|
||||
'',
|
||||
'**A spawned agent follows a FILE, not a prompt.** Put the rules in `procedures/<something>.md` here and',
|
||||
'point the agent at it. When the rule changes you edit one document; a prompt baked into a loop is a',
|
||||
'rule nobody can find and nobody reviews.',
|
||||
'**A spawned agent follows a FILE, not a prompt.** Point it at `CLASSIFICATION.md`, `DISPATCHING.md`,',
|
||||
'or whatever else you wrote for the job. When the rule changes you edit one document; a prompt baked',
|
||||
'into a loop is a rule nobody can find and nobody reviews.',
|
||||
'',
|
||||
'**Say what is provisional.** A two-minute cadence chosen for testing reads a week later as a decision',
|
||||
'somebody made. Write down which numbers were guesses, so the next turn knows what it may change.',
|
||||
@@ -292,6 +304,11 @@ export function commanderClaudeMd(params: CommanderClaudeMdParams): string {
|
||||
'something broken.',
|
||||
'',
|
||||
'```',
|
||||
"CLAUDE.md this file. the platform's. never edited.",
|
||||
'JOB.md what was agreed: what you watch for and what you do. yours, written once',
|
||||
' the job is settled and kept true after that.',
|
||||
'CLASSIFICATION.md the category rules, if it classifies. yours, and expected to change.',
|
||||
'DISPATCHING.md what happens to a result beyond keeping it, if anything. yours.',
|
||||
'data/ everything this commander has produced. ALWAYS called data.',
|
||||
' <category>/ only if it classifies — one directory per category, as they are agreed',
|
||||
' unclassified/ only if it classifies — produced and recorded, placement still open',
|
||||
@@ -439,9 +456,9 @@ export function commanderClaudeMd(params: CommanderClaudeMdParams): string {
|
||||
'If something DOES go wrong in the backlog, that is worth saying — in the conversation if it is still',
|
||||
'open, or as a notification if it is not. A failure is news. A success is not.',
|
||||
'',
|
||||
'Once the job is settled, write it into this file, replacing this section: what you watch for, what you',
|
||||
'do about it, and which numbers were guesses. The next session should read the answer, not the',
|
||||
'questions.',
|
||||
'Once the job is settled, write it into `JOB.md` — what you watch for, what you do about it, and which',
|
||||
'numbers were guesses. Not into this file. The next session reads `JOB.md` for the answer and this one',
|
||||
'for the method.',
|
||||
'',
|
||||
].join('\n');
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user