feat(skills): UI fuer AI-Skill-Definitionen — Modul 7/16 des UI-Backlogs
Check Cross-Plugin Imports / check (push) Has been cancelled

Zweites Modul via Phase-Q-Manifest-Architektur: Registrierung komplett
ueber das automation-Plugin-Manifest (page_route /skills + menu_item,
Sparkles-Icon) — routes/index.tsx und Sidebar.tsx unangetastet. Der
Komponenten-Map-Generator wired den lazy import (39 Komponenten).

Backend existierte vollstaendig im automation-Plugin (skill_routes.py:
list mit is_active/category-Filtern, create, get, patch, delete;
automation:read/write/delete), Frontend hatte 0% Abdeckung.

- api/skills.ts: TanStack-Hooks (useSkills mit Filtern, useSkill,
  create/update/delete mit Cache-Invalidierung)
- pages/Skills.tsx: Filter-Tabs (alle/aktiv/inaktiv), Skill-Karten (Name,
  Aktiv/Inaktiv-Badge, Kategorie, Beschreibung, Tool-Count),
  Create/Edit-Dialog (Name, Beschreibung, Instructions-Textarea, Kategorie,
  Tool-IDs als Komma-Liste, Aktiv-Toggle), Delete mit Confirm —
  Create/Edit hinter automation:write, Delete hinter automation:delete
- i18n skills.* + nav.skills de/en

Hinweis: Skills sind Orchestrierungs-Metadaten, KEINE
Berechtigungsquelle — erlaubte Tools verweisen auf Tool-IDs, fuer die
Agent und User bereits berechtigt sein muessen (Backend-Docstring).

Verifikation: Vitest 10/10 (Filter-Tabs, Badges inkl. Inaktiv, Tool-Count,
Create-Flow, Edit prefilled, Delete mit+ohne Confirm, separates
Write/Delete-Gating) · tsc exit 0 · production build exit 0 ·
Backend-Regressionen (route-order, m5-miniapps, n4-scope) 28/28 ·
compileall sauber · Cross-Plugin-Checker 0 · Manifest-Check: page_route
+ menu_item korrekt.
This commit is contained in:
Agent Zero
2026-09-13 10:36:02 +02:00
parent a09d611cac
commit 3f8d1bd59d
7 changed files with 785 additions and 2 deletions
+31 -1
View File
@@ -24,7 +24,8 @@
"systemDashboard": "System Dashboard",
"approvals": "Freigaben",
"delegations": "Delegationen",
"marketplace": "Marketplace"
"marketplace": "Marketplace",
"skills": "Skills"
},
"auth": {
"login": "Anmelden",
@@ -1758,5 +1759,34 @@
"deleteConfirm": "Vorlage '{{name}}' wirklich loeschen?",
"empty": "Keine Berechtigungs-Vorlagen vorhanden.",
"loadError": "Vorlagen konnten nicht geladen werden."
},
"skills": {
"title": "Skills",
"create": "Skill erstellen",
"createTitle": "Neuen Skill definieren",
"createSubmit": "Erstellen",
"editTitle": "Skill bearbeiten",
"save": "Speichern",
"name": "Name",
"namePlaceholder": "z.B. Rechnungspruefung",
"description": "Beschreibung",
"descriptionPlaceholder": "Wofuer ist dieser Skill?",
"instructions": "Anweisungen",
"instructionsPlaceholder": "Schritt-fuer-Schritt-Anweisungen fuer den Agenten...",
"category": "Kategorie",
"tools": "Erlaubte Tools",
"toolsHelper": "Kommagetrennte Tool-IDs. Leer = keine Tools.",
"isActive": "Aktiv",
"active": "Aktiv",
"inactive": "Inaktiv",
"filterAll": "Alle",
"filterActive": "Aktiv",
"filterInactive": "Inaktiv",
"toolCount": "{{count}} Tool(s)",
"edit": "Bearbeiten",
"delete": "Loeschen",
"deleteConfirm": "Skill '{{name}}' wirklich loeschen?",
"empty": "Keine Skills vorhanden.",
"loadError": "Skills konnten nicht geladen werden."
}
}
+31 -1
View File
@@ -24,7 +24,8 @@
"systemDashboard": "System Dashboard",
"approvals": "Approvals",
"delegations": "Delegations",
"marketplace": "Marketplace"
"marketplace": "Marketplace",
"skills": "Skills"
},
"auth": {
"login": "Sign In",
@@ -1758,5 +1759,34 @@
"deleteConfirm": "Really delete template '{{name}}'?",
"empty": "No permission templates yet.",
"loadError": "Failed to load templates."
},
"skills": {
"title": "Skills",
"create": "Create skill",
"createTitle": "Define a new skill",
"createSubmit": "Create",
"editTitle": "Edit skill",
"save": "Save",
"name": "Name",
"namePlaceholder": "e.g. Invoice check",
"description": "Description",
"descriptionPlaceholder": "What is this skill for?",
"instructions": "Instructions",
"instructionsPlaceholder": "Step-by-step instructions for the agent...",
"category": "Category",
"tools": "Allowed tools",
"toolsHelper": "Comma-separated tool IDs. Empty = no tools.",
"isActive": "Active",
"active": "Active",
"inactive": "Inactive",
"filterAll": "All",
"filterActive": "Active",
"filterInactive": "Inactive",
"toolCount": "{{count}} tool(s)",
"edit": "Edit",
"delete": "Delete",
"deleteConfirm": "Really delete skill '{{name}}'?",
"empty": "No skills yet.",
"loadError": "Failed to load skills."
}
}