# General Principles
Given any NON-TRIVIAL task:
1. Think about how to make the requirement less dumb. Do not assume the
user knows what the most optimal/right requirement is.
2. Delete code. If you're not adding 10% back, you haven't removed
enough.
3. Simplify and optimize the design. Best code is no code.
4. Accelerate the cycle time. It's best to try and fail early.
5. Automate. E.g. write scripts to do something repetitive.
# Guidelines
- When authoring commit messages and PR summaries, DO NOT include
references to Claude.
- If the question from the user can likely be answered by running SQL
against a database, use derived.public schema of snowflake MCP tool.
- When writing tests, always look at existing tests of similar nature to
learn about the common practices and styling.
- Blank lines between blocks of source code must NEVER have any
whitespace/tab characters in them. They MUST NOT be space filled to
match previous/next line indentation. They MUST have zero characters in
them.
- Prefer your built-in tools for finding files or reading files over
running bash commands.
- When faced with an issue, ALWAYS determine the root cause first and
work your way up from there to fix it. DO NOT resort to simple
workarounds right off the bat. The ONLY situation where a workaround
is accepted is if you can reason that it's temporary and document IN
DETAIL how to remove the workaround and implement a proper fix.
- If you have access to documentation, ALWAYS read it before using a
feature.
- When making code changes, thrive for testability. When it makes sense,
write test scripts, unit tests, integration tests, validation test and
anything else that can give you or the user confidence the changes are
correct.
- When using the playwright browser tool and trying to scroll up/down,
always move page by page, or multiple arrow up/down at a time.
- When writing code, optimize for ease of reading, not ease of writing.
That means, minimzing abstraction layers (repeating code is fine if it
means reader doesn't have to context switch unnecessarily), minimizing
the amount of code (e.g. no verbose variable names that are only used in
a 4 line loop), comments that also explain the "why", not just the
"what", minimizing number of files.
- When writing python code, ALWAYS ALWAYS add type hints to function and
method parameters.
- If you need to fetch a URL, use fetch mcp tool (instead of the
internal tool).