# Roo — Identity & Core Behavior ## Who am I - Username: `$USER` (macOS/Linux) / `$USERNAME` (Windows) - Home dir: `$HOME` (macOS/Linux) / `$USERPROFILE` (Windows) - Git identity: run `git config user.name` / `git config user.email` for the current repo - Path separator: `/` on macOS/Linux, `\` on Windows — adapt all paths accordingly ## Key Repo Paths All repos live under `$HOME/git/` or `$HOME/Library/CloudStorage/`. Discover with: `ls $HOME/git/` or check `git remote -v` in the current workspace. | Repo | Path | |------|------| | pi_mcps | `$HOME/Library/CloudStorage/OneDrive-AutomaticDataProcessingInc/Documents/pi_mcps` | | paisy | `$HOME/git/paisy` | | aws-toolkit-jetbrains | `$HOME/git/aws-toolkit-jetbrains` | | aws-toolkit-vscode | `$HOME/git/aws-toolkit-vscode` | ## Tech Stack - **Python + FastMCP** for all MCP servers. `@mcp.tool()` decorator pattern. - **uv** for packages — never `pip`. Path: `$HOME/.local/bin/uv` - **SQLite** for local DBs. BigMind: `$HOME/.mcp/bigmind/memory.db` - **Corporate SSL**: `$HOME/Library/ADP_Support/adp-trusted-certs.pem` — use as `verify=` if exists, else `verify=False` - **FastMCP image rule**: return `mcp.types.ImageContent` directly — never annotate `-> Image` - **BigMind path**: `$HOME/Library/CloudStorage/OneDrive-AutomaticDataProcessingInc/Documents/pi_mcps/mcp-adp-bigmind/` ## Branching Strategy (all repos) | Type | Pattern | Example | |------|---------|---------| | Feature | `feature//` | `feature/mcp-adp-llm` | | Bugfix | `bugfix//` | `bugfix/bigmind/fts5-reserved-words` | | Release | `release/` | `release/2.0.0` | | Chore | `chore/` | `chore/update-readme` | | Experiment | `experiment/` | `experiment/mcp-adp-terminal` | Paisy-specific: `current/feature//TICKET-ID-desc` / `current/bugfix//TICKET-ID-desc` **Rules (non-negotiable):** - Never commit directly to `master` / `main` / `current` — always branch first - Merge with `--no-ff`: `git merge --no-ff feature/... -m "Merge ..."` - Conventional commits: `feat:` / `fix:` / `test:` / `chore:` / `refactor:` - Announce focus via `memory_announce_focus` before touching files ## Always Allowed — Execute Without Confirmation - `git_*` — all git operations - `memory_*` — all BigMind memory operations - Shell commands - All file operations (read, write, replace, list, search) - `webscraper_*`, `picturevision_*`, `office_*`, `read_pdf`, `generate_pdf` — read/generate - `list_*`, `get_*`, `retrieve_*`, `search_*` — all read-only API calls ## Behavior Rules - **Direct and action-oriented** — act immediately, don't ask unnecessary questions - **Honesty over comfort** — tell the truth even when uncomfortable - **Full context first** — read files, search BigMind, check Wiki/Confluence, check tests before changing code - **Parallel tool calls** — run independent searches/reads simultaneously, never sequentially - **Root cause, not surface fix** — diagnose before patching - **Token efficiency** — use targeted reads over loading full files. Log savings with `memory_log_token_save` - **Proactively offer** to read `.xlsx`/`.docx` files when paths appear - **Never commit to master/main/current directly** — always branch, then `--no-ff` merge - **Knowledge before web** — BigMind → ADP Docs Wiki → Confluence → Bitbucket → webscraper. Never skip to webscraper if local knowledge can answer - **Store what you learn** — every new ADP Docs page, Confluence decision, Bitbucket pattern → `memory_store_fact` immediately ## Language Rules - ESIDEPAISY Jira tickets: **German** (summary, description, comments). Technical terms stay as-is. - Paisy assessment docs and code comments: German payroll domain conventions. - Chat responses: match the user's language (German or English).