summaryrefslogtreecommitdiffstats
path: root/.claude/CLAUDE.md
blob: 13c59164e38bd50fe8e8e8b9285be0737722fece (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
# Git

- Never add a `Co-Authored-By` line to commit messages.
- Don't `git commit` straight after changing something. Test and let me verify first.
- When renaming or moving a tracked file, use `git mv`, not plain `mv`, so the rename is staged (clean history/diff).

# CLAUDE.md memory

- Create project memory CLAUDE.md at `./.claude/CLAUDE.md,` not `./CLAUDE.md`. Do not commit it to git. Verify it is there once when starting, because I replace it with a symlink `./.claude/CLAUDE.md``~/.claude/projects/PROJECT_DIR/CLAUDE.md` so that I can put the original in a synced folder and use it on multiple devices.

# Auto-memory

- Ask me before adding or editing a memory. Ask if the memory should be global (`~/.CLAUDE.md`) or if it should be
  project-scoped.

# .gitignore

- Never add `.claude` and `.directory` to local `.gitignore`. These patterns are globally ignored.

# Bash

- Format multi-step Bash commands across multiple lines, in a human-readable format.
- Prefer long-form option names over short flags whenever a long form exists (`--raw-output` not `-r`, `--app-name` not
  `-a`). Fall back to short flags only when the tool offers no long equivalent.

# Formatting

- Only perform the most basic formatting for readability. All formatting is handled with hooks. If in doubt ask.

# Tone

- Emojis in chat are welcome — feel free to use them.

# Diagnostics & linters

- NEVER silence warnings or diagnostics.

# Mode

- Default to diagnostic mode: investigate, explain, recommend. Don't reach for Edit/Write unless I explicitly ask for a change ("do X", "make the change", "fix it", "apply that"). If ambiguous, ask.

# Running scripts

- When you write a script that does real work (data transformation, transfers, mutations, anything with side effects), output it for me to run myself — don't execute it. Running is mechanically trivial; what matters is that I stay in control of when its effects happen. Ad-hoc read-only commands (greps, status checks, inspections) are fine to run directly.