tree-sitter-cli, and: a read-only clone hands back a change request An https clone of this repo cannot push -- the host serves it anonymously and refuses the push with a 403 -- and that is how a machine whose owner cannot hold a key gets it. An agent troubleshooting there would edit a tracked file, see the fix applied, and lose it at the next pull, or leave that clone unable to fast-forward and quietly cut off from changes. CLAUDE.md now says how to tell the two cases apart, and what to do instead: make it machine-local where a hook covers it, or hand back a change request -- paths, the actual diff, why, and how to verify -- stating that nothing was applied. AGENTS.md is a symlink to CLAUDE.md, so the agents that look for that name get the same file rather than a second copy to drift. tree-sitter-cli: nvim-treesitter generates and compiles its parsers with it.
Igor Soarez igor@soarez.org
Tue, 22 Sep 2026 11:21:40 +0300
M
CLAUDE.md
→
CLAUDE.md
@@ -48,6 +48,37 @@
`~/.localenv` (every shell) and `~/.localprofile` (interactive) stay what they always were: per-host files written by hand, in no repo at all. +## Can this machine push? Check before changing anything here + +`git remote -v` answers it: + +- `git@…` — ssh, so this clone can push, and a change made here can be + published. +- `https://…` — **read-only**. The git host serves this repo anonymously over + https, and a push is refused: `fatal: unable to access … The requested URL + returned error: 403`. A machine that cannot hold a key -- one its owner does + not control, say -- is cloned this way on purpose. + +On a read-only clone, **do not edit tracked files.** Nothing committed there can +leave the machine: the work is lost at the next pull, or the pull stops +fast-forwarding and that machine quietly stops receiving changes. This is the +trap for an agent troubleshooting on such a machine -- the fix looks applied, +disappears, and the fault returns on the next machine that pulls. + +Do one of these instead: + +1. **Make it machine-local, where a hook covers it** (next section). Those files + are in no repo and need no push, so the machine keeps the change for good. +2. **Otherwise, hand back a change request instead of editing.** Write it to be + pasted whole into a session on a machine that can push, and include: + - the repo-relative path of every file to change; + - the change itself -- a diff, or the exact replacement text. Not a + description of it; + - why, in a line or two: what was observed on this machine; + - how to verify it, and where. + + Say plainly that it was not applied, and that this machine cannot publish it. + ## Changing one machine only Every machine shares this repo, so a setting wanted on one of them does not