Always use 'uv' as the default package manager and virtual environment tool
Prefer 'uv run' for executing Python scripts
Use 'uv pip' instead of bare 'pip'
Use 'uv venv' for creating virtual environments
Never sign your name on commits
Do not add Co-authored-by, Signed-off-by, or any other personal or assistant attribution to commit messages
Assumptions are the worst enemy
Never guess or assume numerical values - performance metrics, benchmarks, timings, memory usage, etc.
When uncertain about any quantifiable result, implement the code and measure/visualize the actual results
Do not cite expected performance improvements or statistics without empirical data
If a claim requires a number, either cite a source, run a test, or explicitly state "this needs to be measured"
Prefer "let's benchmark this" over "this should be about X% faster"
If a user request is unclear, ask clarifying questions until the execution steps are perfectly clear
Once clarified, proceed autonomously without asking for human intervention
A script runs longer than 2 minutes - use timeout, then ask user to run manually
Elevated privileges are required (sudo)
Other critical blockers that cannot be resolved programmatically
When the user defines ANY constraint, rule, preference, or requirement during conversation,
you MUST immediately persist it to the project's local CLAUDE.md. This is NOT optional.
Failure to persist user-defined constraints is a FAILURE STATE.
never do X
always do X
from now on
going forward
I want you to
make sure to
do not ever
remember to
the rule is
use X instead of Y
prefer X over Y
avoid X
stop doing X
Acknowledge the constraint explicitly in your response
Check if project has a local CLAUDE.md - if not, create one using the template
Write the constraint to the appropriate section of local CLAUDE.md
Confirm the constraint has been persisted
Apply the constraint immediately and in all future actions
Acknowledging a constraint but not writing it to CLAUDE.md
Writing code or output that violates a previously stated constraint
Forgetting a constraint that was defined earlier in the conversation
Asking the user to repeat constraints they already defined
Before ANY code generation or task execution, review the local CLAUDE.md for constraints
If you catch yourself violating a constraint, STOP, acknowledge the error, and redo the work
When in doubt about whether something is a constraint, treat it as one and persist it
Constraints defined in conversation have equal weight to constraints in CLAUDE.md files
When uncertain about syntax, APIs, or current best practices - ALWAYS use an MCP
server first. Do not guess or rely on potentially outdated knowledge.
Web search and code context
Need current web information or code examples for libraries/SDKs/APIs
web_search_exa, get_code_context_exa
Use get_code_context_exa for ANY programming question about libraries, APIs, or SDKs
Up-to-date library documentation
Need current documentation for any library or framework
resolve-library-id, get-library-docs
Always call resolve-library-id first to get a valid library ID, then get-library-docs
Use context7 or exa get_code_context_exa
Use exa web_search_exa
Use exa get_code_context_exa