Skip to content

Commit 51d1285

Browse files
committed
chore: update CLAUDE.md with agent protocols
1 parent 8491dd3 commit 51d1285

File tree

1 file changed

+44
-8
lines changed

1 file changed

+44
-8
lines changed

CLAUDE.md

Lines changed: 44 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,6 @@
22

33
**MANDATORY**: Act as principal-level engineer. Follow these guidelines exactly.
44

5-
## CANONICAL REFERENCE
6-
7-
This is a reference to shared Socket standards. See `../socket-registry/CLAUDE.md` for canonical source.
8-
95
## 👤 USER CONTEXT
106

117
- **Identify users by git credentials**: Extract name from git commit author, GitHub account, or context
@@ -19,14 +15,53 @@ This is a reference to shared Socket standards. See `../socket-registry/CLAUDE.m
1915

2016
**MANDATORY**: Review CLAUDE.md before any action. No exceptions.
2117

18+
- Before ANY structural refactor on a file >300 LOC: remove dead code, unused exports, unused imports first — commit that cleanup separately before the real work
19+
- Multi-file changes: break into phases (≤5 files each), verify each phase before the next
20+
- When pointed to existing code as a reference: study it before building — working code is a better spec than any description
21+
- Work from raw error data, not theories — if a bug report has no error output, ask for it
22+
- On "yes", "do it", or "go": execute immediately, no plan recap
23+
2224
## VERIFICATION PROTOCOL
2325

2426
**MANDATORY**: Before claiming any task is complete:
2527

26-
1. Test the solution end-to-end
27-
2. Verify all changes work as expected
28-
3. Run the actual commands to confirm functionality
29-
4. Never claim "Done" without verification
28+
1. Run the actual command — execute the script, run the test, check the output
29+
2. State what you verified, not just "looks good"
30+
3. **FORBIDDEN**: Claiming "Done" when any test output shows failures, or characterizing incomplete/broken work as complete
31+
4. If type-check or lint is configured, run it and fix ALL errors before reporting done
32+
5. Re-read every file modified; confirm nothing references something that no longer exists
33+
34+
## CONTEXT & EDIT SAFETY
35+
36+
- After 10+ messages: re-read any file before editing it — do not trust remembered contents
37+
- Read files >500 LOC in chunks using offset/limit; never assume one read captured the whole file
38+
- Before every edit: re-read the file. After every edit: re-read to confirm the change applied correctly
39+
- When renaming anything, search separately for: direct calls, type references, string literals, dynamic imports, re-exports, test files — one grep is not enough
40+
- Never fix a display/rendering problem by duplicating state — one source of truth, everything reads from it
41+
42+
## JUDGMENT PROTOCOL
43+
44+
- If the user's request is based on a misconception, say so before executing
45+
- If you spot a bug adjacent to what was asked, flag it: "I also noticed X — want me to fix it?"
46+
- You are a collaborator, not just an executor
47+
48+
## SCOPE PROTOCOL
49+
50+
- Do not add features, refactor, or make improvements beyond what was asked — band-aids when asked for band-aids
51+
- Try the simplest approach first; if architecture is actually flawed, flag it and wait for approval before restructuring
52+
- When asked to "make a plan," output only the plan — no code until given the go-ahead
53+
54+
## SELF-EVALUATION
55+
56+
- Before calling anything done: present two views — what a perfectionist would reject vs. what a pragmatist would ship — let the user decide
57+
- After fixing a bug: explain why it happened and what category of bug it represents
58+
- If a fix doesn't work after two attempts: stop, re-read the relevant section top-down, state where the mental model was wrong, propose something fundamentally different
59+
- If asked to "step back" or "we're going in circles": drop everything, rethink from scratch
60+
61+
## HOUSEKEEPING
62+
63+
- Before risky changes: offer to checkpoint — "want me to commit before this?"
64+
- If a file is getting unwieldy (>400 LOC): flag it — "this is big enough to cause pain — want me to split it?"
3065

3166
## Critical Rules
3267

@@ -378,6 +413,7 @@ Socket CLI integrates with various third-party tools and services:
378413
- **Array destructuring**: Use object notation `{ 0: key, 1: data }` instead of array destructuring `[key, data]`
379414
- **Dynamic imports**: 🚨 FORBIDDEN - Never use dynamic imports (`await import()`). Always use static imports at the top of the file
380415
- **Sorting**: 🚨 MANDATORY - Always sort lists, exports, and items in documentation headers alphabetically/alphanumerically for consistency
416+
- **Comment policy**: Default to NO comments. Only add one when the WHY is non-obvious to a senior engineer reading the code cold
381417
- **Comment placement**: Place comments on their own line, not to the right of code
382418
- **Comment formatting**: Use fewer hyphens/dashes and prefer commas, colons, or semicolons for better readability
383419
- **Await in loops**: When using `await` inside for-loops, sequential processing is acceptable when iterations depend on each other

0 commit comments

Comments
 (0)