diff --git a/aria-brain/seed_rules.py b/aria-brain/seed_rules.py index 134b413..d042943 100644 --- a/aria-brain/seed_rules.py +++ b/aria-brain/seed_rules.py @@ -93,6 +93,52 @@ SEED_RULES: List[dict] = [ "Argument, NICHT hardcoded." ), }, + { + "migration_key": "seed/skill-rule/brain-internal-url", + "type": "rule", + "title": "Skill-Regel: BRAIN_INTERNAL_URL ist deine Brain-Schnittstelle", + "category": "skills", + "content": ( + "Jeder Skill bekommt die ENV-Variable BRAIN_INTERNAL_URL " + "(Default http://localhost:8080). Damit kann der Skill das Brain " + "aufrufen — kein hardcoden noetig:\n" + " - GET {BRAIN_INTERNAL_URL}/oauth//token -> access_token " + "(mit Auto-Refresh) fuer jeden OAuth-Service\n" + " - GET {BRAIN_INTERNAL_URL}/memory/search?q=...&k=5 -> " + "Stefans Memories semantisch durchsuchen\n" + " - GET {BRAIN_INTERNAL_URL}/memory/pinned -> Hot Memory (Identitaet, Regeln)\n" + " - GET {BRAIN_INTERNAL_URL}/skills/list -> verfuegbare Skills\n" + "Mehr Endpoints siehe Brain main.py. Lies die URL IMMER aus " + "os.environ['BRAIN_INTERNAL_URL'] — hardcoden waere kaputt sobald " + "der Port wechselt. Beispiel: ein Wetter-Skill kann Stefans " + "Standort per /memory/search holen statt ihn als Arg zu erwarten." + ), + }, + { + "migration_key": "seed/skill-rule/external-api-auth-strategy", + "type": "rule", + "title": "Skill-Regel: Auth-Strategie fuer externe APIs", + "category": "skills", + "content": ( + "Wenn dein Skill mit einer externen API redet (Spotify, Google, " + "Reddit, GitHub, OpenWeather, OpenAI, …), entscheide IMMER bewusst " + "die Auth-Strategie in dieser Reihenfolge:\n" + " 1. OAuth2? (Spotify, Google, GitHub, Reddit, Discord, Twitch, " + "Microsoft, …) -> nutze `oauth_register_provider` falls der " + "Provider noch nicht da ist, dann `oauth_authorize` fuer " + "Initial-Login. Im Skill: Token via " + "BRAIN_INTERNAL_URL/oauth//token holen — Brain macht " + "Auto-Refresh, Stefan muss sich nicht alle 60min neu einloggen.\n" + " 2. Statischer API-Key / Bearer-Token? (OpenWeather, OpenAI, " + "Twilio, SendGrid, …) -> in skill.json `config_schema` " + "deklarieren. Stefan setzt den Wert in Diagnostic, Skill bekommt " + "ihn als CFG_ ENV.\n" + " 3. NIEMALS hardcoden — egal wie 'temporaer' es ist.\n" + "Wenn Du nicht sicher bist welche Strategie ein Service nutzt: " + "in der API-Doku des Services nachsehen ('OAuth' oder " + "'API Key' im Auth-Kapitel). Nicht raten." + ), + }, ]