| Dimension | Shared | Only in A | Only in B | Overlap |
|---|---|---|---|---|
| Sections | 0 | 1 | 2 | 0% |
| Commands | 0 | 0 | 4 | 0% |
| Section tags | 0 | 0 | 3 | 0% |
What each file covers
Sections
0 shared · 1 only in A · 2 only in B- − Change discipline
- + CLAUDE.md
- + Claude Code specifics
Commands
0 shared · 0 only in A · 4 only in B- + pnpm -F @claudinho/mcp build
- + pnpm -r typecheck
- + pnpm lint
- + gh run watch <id> --exit-status
Section tags
0 shared · 0 only in A · 3 only in B- + lint-format
- + performance
- + agent-behaviour
Line diff
arturogarrido/claudinho · .cursor/rules/change-discipline.mdc
@@ −1 @@
1---
2description: Scope a change and land it without a multi-round review loop
3globs: **/*
4alwaysApply: true
5---
6
7# Change discipline
8
9The canonical text is **`AGENTS.md` → "Change discipline"**, and the "Definition
10of Done" section beside it. This file exists only because Cursor reads
11`.cursor/rules` and not `AGENTS.md` — Claude Code reads AGENTS.md via
12`CLAUDE.md`, and it is Codex's source of truth. Keep the two in sync; if they
13disagree, AGENTS.md wins.
14
15The short form:
16
171. **Acceptance criteria in the PR before the first commit**, plus an explicit
18 statement of what the change does NOT cover. Skipping this is what turned
19 PR #97 into twelve review rounds: with no written finish line every round
20 ended at "I fixed what was reported" and the next round moved it, and with no
21 stated boundary, findings equally true of `main` arrived as blockers.
222. **Put a shared rule where every path reaches it, then delete the other copy** —
23 not at the site the report happened to mention.
243. **Grep for siblings before calling a class closed.** Every single-instance fix
25 in #97 had two or three.
264. **Make a test fail before trusting it, and pin the CALL, not just the
27 function.** Delete the call site and confirm red.
285. **Never assert wall-clock time.** Assert the observable consequence instead.
296. **Run the gates and READ the output** — build, typecheck, test, lint, the three
30 CI smokes, `release:qa` — then wait for CI on the SHA you actually pushed.
31
arturogarrido/claudinho · CLAUDE.md
@@ +1 @@
1# CLAUDE.md
2
3This project uses **AGENTS.md** as the primary agent guide. Read it first:
4
5@AGENTS.md
6
7## Claude Code specifics
8
9- The statusline command must return in **<150ms** and **never** hit the network on the hot path — read from the local micro-cache.
10- Local MCP dev loop:
11 ```bash
12 pnpm -F @claudinho/mcp build
13 claude mcp add claudinho-dev -- node packages/mcp/dist/index.js
14 ```
15- When changing shared types, update `@claudinho/core` and run `pnpm -r typecheck` before committing.
16- Run `pnpm lint` (Biome) before committing; CI gates on it. The setup is lint-only (no formatter) — keep style consistent with the surrounding code.
17- **Before declaring any change "done," run the "Pre-PR self-review" rubric in `AGENTS.md`** — verify external API shapes against a *real* response (fixtures included); apply the change to every surface (CLI text **and** `--json`, MCP `data` **and** text, READMEs); audit against the Hard Constraints (existing code too); do an adversarial failure-mode pass (fail-closed; never cache transient errors); and bound default-on latency. For money/legal/external-API changes, do an independent reviewer pass and self-classify findings **P1/P2/P3**.
18- **After any push to a branch with CI, always watch the run and confirm it's green** (`gh run watch <id> --exit-status`); report the per-job result. Don't consider a push "done" until CI passes.
19
@@ −1 +1 @@
1−---
2−description: Scope a change and land it without a multi-round review loop
3−globs: **/*
4−alwaysApply: true
5−---
1+# CLAUDE.md
62
7−# Change discipline
3+This project uses **AGENTS.md** as the primary agent guide. Read it first:
84
9−The canonical text is **`AGENTS.md` → "Change discipline"**, and the "Definition
10−of Done" section beside it. This file exists only because Cursor reads
11−`.cursor/rules` and not `AGENTS.md` — Claude Code reads AGENTS.md via
12−`CLAUDE.md`, and it is Codex's source of truth. Keep the two in sync; if they
13−disagree, AGENTS.md wins.
5+@AGENTS.md
146
15−The short form:
7+## Claude Code specifics
168
17−1. **Acceptance criteria in the PR before the first commit**, plus an explicit
18− statement of what the change does NOT cover. Skipping this is what turned
19− PR #97 into twelve review rounds: with no written finish line every round
20− ended at "I fixed what was reported" and the next round moved it, and with no
21− stated boundary, findings equally true of `main` arrived as blockers.
22−2. **Put a shared rule where every path reaches it, then delete the other copy** —
23− not at the site the report happened to mention.
24−3. **Grep for siblings before calling a class closed.** Every single-instance fix
25− in #97 had two or three.
26−4. **Make a test fail before trusting it, and pin the CALL, not just the
27− function.** Delete the call site and confirm red.
28−5. **Never assert wall-clock time.** Assert the observable consequence instead.
29−6. **Run the gates and READ the output** — build, typecheck, test, lint, the three
30− CI smokes, `release:qa` — then wait for CI on the SHA you actually pushed.
9+- The statusline command must return in **<150ms** and **never** hit the network on the hot path — read from the local micro-cache.
10+- Local MCP dev loop:
11+ ```bash
12+ pnpm -F @claudinho/mcp build
13+ claude mcp add claudinho-dev -- node packages/mcp/dist/index.js
14+ ```
15+- When changing shared types, update `@claudinho/core` and run `pnpm -r typecheck` before committing.
16+- Run `pnpm lint` (Biome) before committing; CI gates on it. The setup is lint-only (no formatter) — keep style consistent with the surrounding code.
17+- **Before declaring any change "done," run the "Pre-PR self-review" rubric in `AGENTS.md`** — verify external API shapes against a *real* response (fixtures included); apply the change to every surface (CLI text **and** `--json`, MCP `data` **and** text, READMEs); audit against the Hard Constraints (existing code too); do an adversarial failure-mode pass (fail-closed; never cache transient errors); and bound default-on latency. For money/legal/external-API changes, do an independent reviewer pass and self-classify findings **P1/P2/P3**.
18+- **After any push to a branch with CI, always watch the run and confirm it's green** (`gh run watch <id> --exit-status`); report the per-job result. Don't consider a push "done" until CI passes.
3119
