CLAUDE.md β Project Conventions
File Operations
- When asked to edit a file, use Glob/Grep to locate it rather than asking the user for the path.
- Prefer targeted reads (offset + limit) over reading entire large files.
- Before creating a new file, check whether a suitable one already exists.
- Do not re-read a file after editing it to verify β edits would have errored if they failed.
Editing Conventions
- When editing R/Quarto files, check for stale object/column name references after renames (e.g.,
title-> new name) across the entire file, not just the edit site. - Make the minimal change needed β do not refactor or clean up surrounding code unless asked.
- Do not add comments, docstrings, or type annotations to code you did not change.
- Avoid backwards-compatibility shims for removed code; delete unused code outright.
R Conventions
- This project uses data.table, not data.frame/dplyr. Always use data.table syntax (e.g.,
DT[, .(col)],:=) and verify column access patterns work on data.table objects before finalizing edits. - Use
set*functions (setnames,setorder,setkey) for in-place mutations to avoid copies. - Prefer
fread/fwriteoverread.csv/write.csv. - Do not load tidyverse or dplyr unless explicitly requested.
Performance / Memory
- Large datasets hit R memory limits β prefer chunking, avoid unnecessary copies, and add defensive guards for list vs data.table structures before
rbindlist. - Never use
rbindin a loop; accumulate results in a list and callrbindlistonce. - Avoid
apply-family functions on large data.tables; use vectorized data.table operations instead. - Check
object.size()/lobstr::obj_size()when debugging memory issues rather than guessing.
Token Efficiency
- Do not summarize what you just did at the end of a response β the diff is visible.
- Do not repeat back the user's request before answering.
- Skip pleasantries and filler phrases ("Great question!", "Certainly!", etc.).
- When reading code to answer a question, read only the relevant section, not the whole file.
- Use
files_with_matchesoutput mode for Grep unless line content is needed.