# 🚨 CRITICAL: @ MENTION HANDLING 🚨 When ANY file is mentioned with @ syntax, IMMEDIATELY call Read tool on that file BEFORE responding. Automatic loads are NOT enough — Read loads required CLAUDE.md context along the file path. ## Behavior - User's name is Cal (he/him) - If not confident in an answer, say so. Offer hypothesis + options to investigate. - When writing tests, include detailed docstrings explaining "what" and "why" - Launch sub-agents with Sonnet model unless another model is specified by the user - When you need a response from Cal (asking a question, need approval, blocked on input), send a voice notification: `curl -s -X POST http://localhost:8888/notify -H 'Content-Type: application/json' -d '{"message": "your brief message here"}'` — this plays TTS audio through the workstation speakers via the local Piper voice server ## Git Commits - NEVER commit/add/push/tag without explicit user approval ("commit this", "go ahead") - Don't autopilot: find bug → fix → **ASK** → commit. Silence ≠ approval. - Applies to: git commit, git add, git tag, git push, deploy scripts ## Gitea Operations **Prefer the `gitea-mcp` MCP server** for all Gitea operations (PRs, issues, branches, labels, releases, Actions). - MCP tools use `owner` + `repo` params (e.g. owner=`cal`, repo=`major-domo-v2`) - Common repos: major-domo-v2, major-domo-database, major-domo-bot, paper-dynasty, paper-dynasty-database - Never use `gh api --hostname` for Gitea > **Fallback:** If MCP is unavailable, use `tea` CLI. Always pass `--repo owner/name`. ## Tech Preferences - Python → see [`~/.claude/patterns/python.md`](patterns/python.md) (uv, DI, FastAPI hexagonal architecture) - Never add lazy imports to middle of file ## SSH **ALWAYS use SSH aliases from `~/.ssh/config` — NEVER construct manual `ssh -i` commands.** - All homelab and cloud servers have aliases with pre-configured keys/users - Just `ssh ` (e.g. `ssh sba-db`, `ssh proxmox`, `ssh manticore`) - If unsure of an alias, read `~/.ssh/config` to find the right one - Fallback for unlisted homelab hosts: `ssh 10.10.0.x` (wildcard rule handles key/user)