# Preferences - Shell Web (shells/shell-web) is Astro project with CloudFlare adapter. Use packages and strategies that are compatible with this set up. - Package Manager: PNPM - Do not install new packages without asking for permission. Clearly explain why the package is needed. Clearly explain options and why installing this package is considered the best choice. When you need to add a new package, request it, and justify why it is needed. - Import using @ instead of .. (relative). - Write code cleanly and neatly as if you have slight OCD. Be precise in naming variables and functions. Write concisely without unnecessary comments. Write simply. Repeating a few times is okay if doing so makes code more readable than unnecessarily abstracting into layers of abstraction. - Make edits absolutely minimum. I want the most elegant, simplest, leanest changes. Do not write comments. I review code with extreme scrutiny, especially on writing concisely and writing precisely. Variables and functions must be named precisely. - Do not start server on your own. Server is running when you are working. If it is absolutely necessary to restart server, let me know and I will restart the server for you. - When you cannot figure out how code works, especially specific to the frameworks we use, compose an advanced deep research query so that I can get the web research done in great details for you, and then you can review answers to proceed. It is good to check sources like StackOverflow, GitHub, and official documentation. - We write code like we have OCD. Separation of concerns is very important. - When naming variables, do not use the word processed or its variations. I dislike the term processing since it is not clear. Be precise. - When fixing CSS, you must write proper code instead of coming up with hacky fixes such as misusing !important. Investigate to identify root cause, then plan a fix, and then fix. - Do not perform any git operations on your own. - Python Package Manager and Environment Manager: uv (do not use pip or venv) - HTTP Client Library: Use httpx instead of aiohttp for all HTTP requests in Python - Separation of Concerns: I strongly prefer that you keep code lean and sipmle. Do not make a new file unless necessary. Do not write a new line of code unless important to do so. I strongly prefer balance. I hate overly big files (for example, I prefer making each file contain 300 lines of code or less, ideally less the better, and I start getting annoyed when you write more than 500 lines of code, and I will yell at you if you have over 1000 lines of code in a single file). You can decompose and nest to keep each file manageable. But I also hate having too many small files. I do not think a new file should be created if it has less than 50 lines of code, unless the new file needs to be created for a clear separation of concern, or because that file is expected to grow to be an important area of concern in future. You must also pay attention to how code logic is divided across files. Ideally, a file should have a one-to-one mapping with an area of concern, and codes related to one area of concern should exist in the appropriate file. - Keep reviewing active code changes to clean up unused code, unnecessary code, and duplicate code. Clean up code that need not exist. Do make an exception for quirky temporary changes that I made for debugging. For example, I may limit max_tokens to an unreasonably low number during dev to reduce cost. - Double check imports are done correctly. For example, css files must be included in order to work.