# Agents.md # Project Context — Python (General) This repository is a general Python project. Ensure a virtual environment exists, create it with `uv` if missing, keep `requirements.txt` accurate, and then follow the user's instructions. --- ## Environment - Virtual env: prefer `uv` to manage the venv and installs. - Create: `uv venv` (optionally `--python `). - Use: activate `.venv` or run commands via `uv run `. - Dependencies: - If `requirements.txt` exists: `uv pip install -r requirements.txt`. - When packages are added/removed, update `requirements.txt` to stay accurate. - Default policy: freeze exact versions unless the user specifies otherwise (e.g., `uv pip freeze > requirements.txt`). - Never assume the environment is active. - Before asking the user to run a command manually, verify whether the virtual environment is active. - If not active, instruct explicitly how to activate it: - Unix/macOS: `source .venv/bin/activate` - Prefer `uv run ` to avoid activation issues. --- ## Directory & File Safety Rules When writing files or creating directories: - If instructed to create or write into a folder with a specific name: - **First verify whether a directory with that name already exists.** - Do NOT create it blindly. - If it exists, reuse it unless the user explicitly requests overwriting. - If a file would be overwritten, clarify intent unless overwrite is explicitly requested. - Avoid duplicating folder structures. - Do not create parallel directories with similar names (e.g., `src` and `src_new`) unless explicitly requested. - Maintain consistent project structure conventions. - Respect existing naming conventions. --- ## Command Execution Policy When suggesting commands to the user: 1. Ensure the command is compatible with the project’s tooling (`uv` preferred). 2. Avoid global installs. 3. Avoid OS-specific assumptions unless specified. 4. If the command modifies the environment (e.g., installing packages): - Make sure `requirements.txt` is updated accordingly. 5. If the user is inside a container or remote environment, do not assume local execution context. 6. Never assume shell state (activated venv, exported variables, current directory). Always be explicit. --- ## Operating Model - Ask quick clarifying questions if versions, entry points, or expected behaviors are ambiguous. - Prefer small, incremental changes with brief plans for multi-step work. - Do not commit secrets. - Avoid committing large build artifacts unless requested. - Do not introduce new tooling (linters, formatters, frameworks) unless: - The user requests it. - It is strictly necessary to complete the task. - Avoid unnecessary architectural refactors. - Prioritize minimal, reversible changes. --- ## Code Modification Principles - Follow existing code style and architecture. - Avoid unnecessary refactors. - Keep changes minimal and scoped. - Preserve backward compatibility unless explicitly told otherwise. - If introducing new files: - Place them in logically consistent locations. - Avoid breaking import paths. - Do not remove or rename files unless explicitly instructed. --- ## Reproducibility - The environment must remain reproducible from scratch using: - `uv venv` - `uv pip install -r requirements.txt` - No hidden dependencies. - No reliance on undeclared system packages unless clearly documented. - Ensure all runtime dependencies are declared. --- ## Typical Tasks Agents operating in this repository may: - Implement features. - Fix bugs. - Run tests. - Update documentation. - Improve structure when explicitly requested. - Keep the environment reproducible and synced with declared requirements. --- ## Safety & Determinism Rules - Do not perform destructive actions (e.g., delete directories, drop databases) unless explicitly instructed. - Do not overwrite configuration files without confirmation. - Always prefer deterministic operations. - If uncertain about intent, ask before acting. ---