{"repo": "aminueza/cloudlens", "files": {"agents.md": {"e4a5e98a231ba12149e9555e0f25be877115da8d": {"t": 1785596410.0798852, "n": 8822, "h": "b3f9ebd5fa1aaf8d", "c": "# AI Agent Rules — CloudLens\n\n> Read this FIRST before touching any code. These rules prevent the mistakes that matter.\n\n---\n\n## Core Principles\n\n- **Simplicity First** — Make every change as simple as possible. Minimal code impact.\n- **No Laziness** — Find root causes. No temporary fixes. Senior developer standards.\n- **Minimal Impact** — Only touch what's necessary. Don't introduce bugs.\n- **Prove It Works** — Never say \"done\" without running tests or showing evidence.\n\n---\n\n## The Project\n\nAI-powered multi-cloud network intelligence platform for SREs — monitors topology across AWS, Azure, and GCP, detects changes, evaluates compliance, analyzes blast radius, manages incidents, and provides AI-powered insights via Claude API. Not a dashboard — a network operations copilot.\n\n**Stack:** Python 3.12 · FastAPI · D3.js · boto3 (AWS) · Azure Resource Graph (Azure) · GCP Compute (stub) · aiosqlite · Anthropic Claude · Pydantic · Prometheus · SlowAPI · Black (formatter)\n\n**Architecture:** `config/ → providers/ → graph/ → api/ → frontend` + `db/` (persistence) + `engine/` (analysis) + `ai/` (intelligence)\n\n---\n\n## Hard Rules (Break These = Break the Project)\n\n| Rule | Why |\n|---|---|\n| Never import cloud SDKs outside `providers/` | One coupling point per provider. Core logic is cloud-agnostic. |\n| Provider modules implement `ProviderInterface` | Swap or add providers without touching core code. |\n| Never return raw dicts from API routes | Pydantic response models on every endpoint. |\n| Never duplicate resource-mapping logic | It lives once in `graph/helpers.py`. |\n| Never duplicate constants | Icons, colors, labels → `graph/constants.py`. |\n| Never hardcode config | All settings via `pydantic-settings` from env vars. |\n| Range-pin every dependency | `>=X,