@akashsairaja Under a page here too. The habit that keeps mine honest: every line has to still be true today, and each rule lives in one place only. Once it's copied into AGENTS.md or Cursor rules, the copy is the one that goes stale first.
@RobertLibsansky Two kinds of outdated. Wrong facts need a review. Copies that disagree (CLAUDE.md vs AGENTS.md) are mechanical: generate them from one source and fail CI on drift. ContextMux's check does that part. See how it works: https://t.co/DVGglKoQja
@kirillk_web3 The quiet half of this: an old rule doesn't error. The model keeps obeying it, and it looks like the model got worse. Delete old lines in one place, not three. If CLAUDE.md, AGENTS.md and Cursor rules each hold a copy, the stale one survives.
@adocomplete Worth knowing as that file grows: Claude follows it whether it's still true or not. A stale line never errors, it just gets obeyed. If the same rules also sit in AGENTS.md or Cursor rules, generate those copies from one source and fail CI when one drifts.
A stale rule doesn't throw. The agent quietly follows it, and you blame the model.
ContextMux catches it: advise flags duplicate or contradicting rules and dead paths, and check --strict fails CI when a copy drifts from .ctxmux/.
See how it works โ https://t.co/DVGglKoQja
@calvinellis75@agents Steal away ๐ The @-import is a clean setup for Claude and Codex. Scoped rules are where it splits again: Cursor wants .mdc globs, Copilot wants applyTo, Claude wants .claude/rules, so folder rules end up written three times. Worth covering those in the drift check too.
@realSamHu 15 lines is the right size, and "ask before adding a dependency" is exactly the kind worth keeping. The hard part is it staying 15 once Cursor and Copilot want their own copies. One source, generated files, and the novel never starts.
@Voxyz_ai Good list. One catch: the trim only sticks if there's one file to trim. If CLAUDE.md, AGENTS.md and Cursor rules each carry copies, you trim three times and one copy grows back. We keep one source in ContextMux and generate each tool's file from it.
@chrisralarcon Same experience. The part that grows back fastest for me is copies: the same rule in CLAUDE.md, AGENTS.md and Cursor rules, each drifting on its own. Keeping one short source and generating the per-tool files is what makes "lean" stick.
Your CLAUDE.md is short. So is your AGENTS.md. So are your Cursor rules.
Together: the same rules three times, and next month they'll disagree.
ContextMux: write once in .ctxmux/, sync to the tools you use.
See how it works โ https://t.co/DVGglKpo8I
@ethereaglehq@karanjagtiani04@slash1sol Correction to my last reply: Claude Code does scope rules natively now, via .claude/rules with paths:. Today ctxmux still writes Claude's scoped rules as labelled sections in CLAUDE.md, and sync --explain marks them advisory.
@ethereaglehq@karanjagtiani04@slash1sol One list. Write the scoped rule once in .ctxmux/ with its paths, and sync emits Cursor .mdc globs and Copilot applyTo from it. Claude has no native path scoping, so it gets a labelled advisory section instead. ctxmux sync --explain shows what each agent loses.
@harrisonwang13 The boring fix: before you accept the run, diff the test files against the base commit. A deleted test or new skip means the green doesn't count until a human looks. ContextMux's ticket-to-PR flow flags that and stops vague tickets before the agent runs: https://t.co/ZA2EtOFEea
@DavidAgentic Useful split, and you can make it automatic: judge deletions against the base commit, not the log. Scratch tests the agent made and removed never show up in the final diff. A deleted or newly skipped test that existed before the run does, and that's the one worth flagging.
@neil_xbt Good prompt. One gap: the agent still picks which command it quotes, and if it deleted or skipped the failing test, the counts look clean. Also diff the test files against the base commit, outside the agent. Cheap, and it catches the fake green the counts miss.
@ConsciousRide Agree. One step earlier: if the ticket can't state a completion condition, don't start the agent. Most wasted runs start there. ContextMux's ticket-to-PR flow refuses vague tickets, checks path scope against the diff, and flags deleted or skipped tests: https://t.co/ZA2EtOGc3I
Optional second half: ticket โ PR, with fewer wasted agent runs.
Vague tickets are refused before spend. Path scope is checked against the diff. Deleted or skipped tests get flagged. Isolated worktree.
Gates run before and after the agent.
Try it โ https://t.co/ZA2EtOFEea
@lucas_builds Good one: "run the tests before saying done, and show the command." Four lines work because each gets weight; at 300 they compete. Across agents, that line must match in CLAUDE.md, AGENTS.md and Cursor rules. ContextMux generates them from one source: https://t.co/ZA2EtOGc3I
@unicorn_oz It also works as a line-by-line test: if the agent can't act on it this session, it's history, not an instruction. Put the why in docs and link it. Other bloat: the same rules copied into CLAUDE.md, AGENTS.md and Cursor rules. Keep one short source: https://t.co/ZA2EtOGc3I