From 89cafa6251823116d4fbd1de571c205b8e5ca953 Mon Sep 17 00:00:00 2001 From: duffyduck Date: Sat, 30 May 2026 01:19:49 +0200 Subject: [PATCH] =?UTF-8?q?fix(brain):=20Skill-Namen=20snake=5Fcase=20?= =?UTF-8?q?=E2=80=94=20neue=20Skills=20entstehen=20direkt=20sauber?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Stefan-Frage: 'weiss sie in zukunft unterstriche statt bindestriche?' Antwort vorher: nein — Tool-Description sagte 'kebab-case'. Genau das hat die Bindestrich-Skills produziert die gestern die Tool-Liste kippten. Drei Aenderungen: - skill_create Tool-Description: 'kurz, kebab-case' → 'snake_case (NUR a-z 0-9 _). KEINE Bindestriche — die brechen das Tool-Schema beim claude-max-api-proxy. Statt yt-dlp-download → yt_dlp_download.' - skill_scaffold Tool-Description: gleiche Klarstellung. - 12. seed_rule snake-case-names: erklaert das Verbot mit Begruendung (proxy-Limitierung), Beispielen RICHTIG/FALSCH und Hinweis dass historische Skills mit Bindestrich ueber das Safe-Name-Mapping laufen (nicht umbenennen). Co-Authored-By: Claude Opus 4.7 (1M context) --- aria-brain/agent.py | 4 ++-- aria-brain/seed_rules.py | 26 ++++++++++++++++++++++++++ 2 files changed, 28 insertions(+), 2 deletions(-) diff --git a/aria-brain/agent.py b/aria-brain/agent.py index 2474131..cef7dd7 100644 --- a/aria-brain/agent.py +++ b/aria-brain/agent.py @@ -101,7 +101,7 @@ META_TOOLS = [ "parameters": { "type": "object", "properties": { - "name": {"type": "string", "description": "kurz, kebab-case, a-z 0-9 - _"}, + "name": {"type": "string", "description": "kurz, snake_case (NUR a-z 0-9 _). KEINE Bindestriche — die brechen das Tool-Schema beim claude-max-api-proxy. Statt 'yt-dlp-download' → 'yt_dlp_download'."}, "description": {"type": "string", "description": "Was kann der Skill? 1 Satz."}, "entry_code": { "type": "string", @@ -216,7 +216,7 @@ META_TOOLS = [ "type": "object", "properties": { "name": {"type": "string", - "description": "Skill-Name (kebab-case, ohne Versionssuffix)"}, + "description": "Skill-Name (snake_case, NUR a-z 0-9 _, KEINE Bindestriche, ohne Versionssuffix)"}, "template": {"type": "string", "enum": ["oauth-api", "apikey-api", "file-process"], "description": "Eines der drei Templates"}, diff --git a/aria-brain/seed_rules.py b/aria-brain/seed_rules.py index 03d2ce9..8640d9f 100644 --- a/aria-brain/seed_rules.py +++ b/aria-brain/seed_rules.py @@ -39,6 +39,32 @@ SEED_RULES: List[dict] = [ "ihn mit `skill_update`. Lege keinen Duplikat-Skill an." ), }, + { + "migration_key": "seed/skill-rule/snake-case-names", + "type": "rule", + "title": "Skill-Regel: Skill-Namen nur snake_case (keine Bindestriche)", + "category": "skills", + "content": ( + "Skill-Namen MUESSEN snake_case sein — nur a-z, 0-9 und _ " + "(Underscore). KEINE Bindestriche.\n" + "\n" + "Grund: das `run_`-Tool wird ueber den claude-max-api-proxy " + "im OpenAI-Format an die CLI uebergeben. Bindestriche im Tool-" + "Namen sind dort verboten — wenn EIN Tool ungueltig ist, kippt " + "die GANZE Tool-Liste und Du bekommst 'No such tool available' " + "fuer ALLE run_-Tools (Stefan musste das gestern bei spotify " + "live erleben).\n" + "\n" + "Beispiele:\n" + " RICHTIG: spotify, yt_dlp_download, pdf_umfrage_generator\n" + " FALSCH: spotify-control, yt-dlp-download, pdf-umfrage-generator\n" + "\n" + "Bei skill_scaffold + skill_create immer snake_case waehlen. " + "Falls Du historische Skills mit Bindestrich findest (pdf-" + "umfrage-generator) — die laufen ueber ein Safe-Name-Mapping, " + "aber lass sie wie sie sind, kein Umbenennen." + ), + }, { "migration_key": "seed/skill-rule/no-version-suffix", "type": "rule",