98 lines
4.2 KiB
Markdown
98 lines
4.2 KiB
Markdown
---
|
|
purpose: skill-discovery
|
|
status: populated
|
|
created: 2026-06-02
|
|
populated: 2026-06-02
|
|
populated_by: phase-M4
|
|
---
|
|
|
|
# Skill Index — parsecapere
|
|
|
|
> Discovery-Index fuer alle Skills die der `mcp-gitea`-Service (Phase M5)
|
|
> laden kann. Jeder Eintrag verlinkt auf das Skill-Manifest im Schwester-Repo
|
|
> [`parsecapere-skills`](https://gitea.parsecapere.de/tim/parsecapere-skills).
|
|
|
|
---
|
|
|
|
## Skill-Tabelle
|
|
|
|
| Skill-ID | Aktivierung | Trigger-Keywords | Tools | Hop-Budget | Manifest |
|
|
|--------------------------|----------------------------|-----------------------------------------------|------:|-----------:|---------------------------------------------------------------------------------------------------------|
|
|
| `main-voice` | default (Voice-Entry) | _(keine — direkt geladen)_ | 17 | 6 | [`parsecapere-skills/composite/main-voice.md`](https://gitea.parsecapere.de/tim/parsecapere-skills/src/branch/main/composite/main-voice.md) |
|
|
| `kreuzwort-builder` | spawn-by-keyword | `kreuzwort` · `kreuzwortraetsel` · `crossword`| 5 | 12 | [`parsecapere-skills/composite/kreuzwort-builder.md`](https://gitea.parsecapere.de/tim/parsecapere-skills/src/branch/main/composite/kreuzwort-builder.md) |
|
|
| `lueckentext-builder` | spawn-by-keyword | `lueckentext` · `vokabel-drill` · `cloze` | 4 | 8 | [`parsecapere-skills/composite/lueckentext-builder.md`](https://gitea.parsecapere.de/tim/parsecapere-skills/src/branch/main/composite/lueckentext-builder.md) |
|
|
| `main-voice-investor` | role-gated (investor) | _(keine — rollen-gated)_ | 20 | 6 | [`parsecapere-skills/composite/main-voice-investor.md`](https://gitea.parsecapere.de/tim/parsecapere-skills/src/branch/main/composite/main-voice-investor.md) |
|
|
|
|
---
|
|
|
|
## Aktivierungs-Pfade
|
|
|
|
### `default` — Voice-Entry-Skill
|
|
|
|
`main-voice` wird beim Voice-Entry eines Users direkt geladen — kein Discovery,
|
|
kein Keyword-Match. Das `llm-gateway` ruft den Composer:
|
|
|
|
```
|
|
const { system_prompt, tools } = await compose_prompt("main-voice");
|
|
```
|
|
|
|
und uebergibt das an `GoogleGenerativeAI.startChat()`.
|
|
|
|
### `spawn-by-keyword` — Sub-Agents
|
|
|
|
Wenn die Main-Voice ein Dispatch-Tool (`create_kreuzwort_task`,
|
|
`create_lueckentext_task`) aufruft, spawn'd der Backend-Code (Orchestrator-JS
|
|
oder spaeter ein generischer Spawner) einen Sub-Agent mit dem passenden Skill:
|
|
|
|
```
|
|
const { system_prompt, tools } = await compose_prompt("kreuzwort-builder");
|
|
// → eigener Gemini-Call, eigenes Hop-Budget, eigener Trace-callId
|
|
```
|
|
|
|
Die Trigger-Keywords sind heute (M4) noch **dokumentarisch** — sie werden in
|
|
M5+ vom Composer als Discovery-Index ausgewertet (Tool `list_skills(trigger="kreuzwort")`).
|
|
|
|
---
|
|
|
|
## Discovery-Flow (geplant ab M5)
|
|
|
|
```
|
|
User: "Bau ein Kreuzwort ueber Pflanzen"
|
|
│
|
|
▼
|
|
main-voice (Main-LLM, schon mit komponiertem Prompt aktiv) erkennt
|
|
"kreuzwort" und ruft Tool: create_kreuzwort_task(thema="Pflanzen", lang="de")
|
|
│
|
|
▼
|
|
llm-gateway (Tool-Handler) ruft: compose_prompt("kreuzwort-builder")
|
|
│
|
|
▼
|
|
mcp-gitea (LLM-VPS) checkt STDB-Cache gitea_section_cache:
|
|
├── HIT → returnt assembled prompt aus Cache
|
|
└── MISS → fetcht alle 8 Module aus parsecapere-prompts,
|
|
komponiert in der Compose-Order (base → workflows →
|
|
tools-context → persona), cached, returnt
|
|
│
|
|
▼
|
|
llm-gateway spawn'd Sub-Agent mit komponiertem Prompt + tools
|
|
│
|
|
▼
|
|
Sub-Agent fuehrt Self-Correction-Loop + Build-Schritte aus,
|
|
liefert Erfolgsmeldung zurueck an Main-Voice
|
|
│
|
|
▼
|
|
Main-Voice erzaehlt User: "Kreuzwort bereit: 7 Woerter ..."
|
|
```
|
|
|
|
---
|
|
|
|
## Hinweis fuer M5-Implementation
|
|
|
|
Die Manifest-`required_prompt_modules`-Listen sind die **Single-Source-of-Truth**
|
|
fuer die Compose-Order. Der Composer (`mcp-gitea`) darf nicht selbst entscheiden
|
|
welche Module er laed — er liest exakt was im Manifest steht, in der dortigen
|
|
Reihenfolge.
|
|
|
|
Falls ein Modul-Pfad nicht existiert oder ein Modul defekt ist: hart fail'en,
|
|
nicht silent-skip. Bei einem fehlenden Persona-Modul macht der Compose keinen Sinn.
|