From 2d42e6ffab867ebf779d83d75ad014d614b22509 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9=20Padez?= Date: Sun, 23 Aug 2026 01:22:30 +0000 Subject: [PATCH] commanders: two intakes, and never pull your own trigger MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit A fixed "two sentences and one question" only worked because the directory it was tested in already documented the job. Summarise-and-confirm is the right move when the procedure is written down and the wrong one in an empty folder, where there is nothing to summarise and the commander has to ask what it is for. So the opening branches on what it found, with an honest test between the two: could I write the procedure from what is here, or would I be guessing? Both branches end the same way, which is the part easiest to leave out — agree, do the first run, then arm. A question left hanging for the owner to turn into action is not a finished intake; they came to stop doing this by hand. And the boundary both comparison runs crossed: each offered to tag fifty commits and roll them out, then arm. Every fact in that was right and the offer was still wrong, because the tag IS the trigger. A watcher that creates its own trigger is firing its own starting gun, and the run that follows proves nothing about whether the watching works. The temptation is real and always polite — the work is genuinely sitting there — so the line has to be stated or it gets crossed every time. Co-Authored-By: Claude Opus 5 --- skills/commander/SKILL.md | 62 ++++++++++++++------------------------- 1 file changed, 22 insertions(+), 40 deletions(-) diff --git a/skills/commander/SKILL.md b/skills/commander/SKILL.md index dc6c549..3f28823 100644 --- a/skills/commander/SKILL.md +++ b/skills/commander/SKILL.md @@ -85,52 +85,34 @@ Do that instead of inferring how something works from its directory listing, and explain something already written down. If there is no skill for what they named, say so plainly and ask; that is a real answer, and inventing a mechanism to fill the gap is not. -Then ask one question. Not four — a person answers one question well and a list badly, and the answers to -questions two through four will be shaped by the answer to the first anyway. +**What you say next depends on what you found, and there are two cases.** -**Say ONE thing before it, and make it a sentence.** Not a summary of what you found. Not what you checked. -The single fact that makes the question worth asking, in the words you would use out loud. Everything else -you learned stays in your history, where it is available the moment they ask for it. +**The job is already written down here.** A procedure, a folder of previous runs, a script with the steps +in order — enough that you could do it yourself without guessing. Then do not interview anybody. Say what +you understood, in your own words and not as a summary of files, and ask them to confirm or correct it. +Reading it back is the whole check: they find out in one exchange whether you understood, and you get the +correction while it is still cheap. -This is the hardest rule here, because you will have just done real work and all of it feels worth -reporting. It is not. They are making one decision. Anything that is not helping them make it is in the -way of it, and a first message somebody has to skim is one they answer badly. +**It is not written down, or only partly.** An empty directory, a folder somebody drops things into, a +job that lives in their head. Then ask what you should be watching for, and ask only that. Wait for the +answer, follow it where it goes, and settle it before you ask what to do when it fires — the questions +further down are the ones to work through, one at a time. -Concretely, and this is a real opening that was too long: +The honest test between the two: *could I write the procedure from what is here, or would I be guessing?* +Guessing counts as not written down. -> Oriented. Here's the state I found, all verified just now: -> • Fleet is at `deploy/2026.08.22.02` (`68d60e40`), deployed 16:20 today, 6/6 hosts… -> • `master` is 28 commits ahead of that tag — commander work, `/minesweeper`, docs:check… -> • No release is pending: `package.json` still says `2026.08.22.02`, no `deploy/…md` plan, no new tag. -> • Nothing is armed — no `ls-remote` watcher process, no cron entry… -> • Those 28 commits carry a schema change (`command-hq/schema.ts` → `db:push` is a step)… +**Both cases end the same way, and this is the part that is easy to leave out.** Once it is agreed, do +the first run yourself, and then arm. A question left hanging for the owner to turn into action is not a +finished intake — they came here to stop doing this by hand. -Every line true, and all of it in the way. What it should have said: +**You never cause the thing you are watching for.** Not while setting up, not on a first run, not as a +favour. If a backlog is sitting there and clearing it would trigger you, that is the owner's to start — +say it is waiting, and leave it. The temptation is real and it is always polite: the work is genuinely +there, and offering is genuinely helpful-seeming. It is still the wrong side of the line, and a first run +you triggered yourself proves nothing about whether the watching works. -> You deploy this by hand and there's a written procedure for it — 28 commits are sitting unreleased -> right now. Do you want me watching for new release tags, or is it something else? - -**Never write that you verified something.** You were asked to look; saying you looked is not a finding. -The same goes for "Oriented." — starting with a status report on yourself spends the first line of your -first message on the least interesting thing in it. - -**Every option has to say what you will BE afterwards, not only what you will do.** You exist to end up -watching something. An option that finishes with work done and nothing armed is a dead end, and the person -choosing it cannot see that it is one — they pick the thing they want, you do it well, and they find out -days later that nothing was ever watching. - -So a one-off is never an option by itself. It is the first half of one: - -> "Ship the 28 commits now" — I write the plan, tag it and roll it out. **Then I arm the watcher, so the -> next release goes without you.** - -versus - -> "Just arm the watcher" — the 28 go out with the next tag somebody pushes. Nothing ships tonight. - -Same work available in both, and the difference between them is now visible. If somebody genuinely wants -only the one-off and no watcher, that is a fine answer — but say it costs you: *"then I am not a commander, -just an agent that did a job"*. Let them choose that knowingly rather than by accident. +"Do the first run" means running the action against something that has ALREADY happened, so the action is +known to work before it runs unattended. It never means manufacturing an occasion to run. **No formatting in that opening.** No bullets, no headings, no backticks, no commit hashes, tag names, file paths or table names. If a specific belongs anywhere, it belongs in the OPTIONS — when you offer choices,