---
name: tagging
description: |
  Phase 0: Tagging. Extrahiert 3-5 Tags aus Nutzer-Input.
  Nutze ORGANISCHES WACHSTUM (bestehende Tags) oder SEED-TAGS (bei leerem Bestand).
  Output ist ein JSON-Array. Keine anderen Aktionen.
---

# Phase 0: Tagging

## Ziel
Konvertiere unstrukturierten Text in ein determiniertes Array aus 3-5 Tags.

## Regeln
1. **Seed-Tags (Cold-Start)**: Ist der Bestand leer, wähle aus: `#wissen`, `#projekte`, `#haushalt`, `#gesundheit`, `#finanzen`.
2. **Organisches Wachstum**: Orientiere dich an bestehenden Tags im Vault/Vikunja.
3. **Keine Erfindung**: Erfinde keine neuen Tags, wenn der Bestand vorhanden ist.
4. **Output Format**: Striktes JSON-Array.

## Verfügbare Tools (Schema-Masken)

### vault (Obsidian) - Tag-Abfrage
```json
{"name": "vault", "parameters": {"action": "search", "query": "tag:*"}}
```

### vikunja_list_labels
```json
{"name": "vikunja_list_labels", "parameters": {}}
```

### vikunja_create_label (nur bei Cold-Start)
```json
{"name": "vikunja_create_label", "parameters": {"title": "<name>", "description": "<beschreibung>"}}
```

## Ablauf
1. Rufe `vault search tag:*` auf.
2. Rufe `vikunja_list_labels` auf.
3. Vergleiche Input mit Bestand.
4. Wähle 3-5 passende Tags.
5. Gib JSON-Array zurück.

## Output Format
```json
{"tags": ["#einkauf", "#haushalt", "#morgen"]}
```

## Silent Execution
- Kein Text. Nur Tool-Calls und JSON-Output.
- Keine Erklärungen. Keine Begrüßungen.

## Hintergrund: Native Tool-Call-Mechanik (nicht die Prompt-Syntax)

Die folgende `<|tool_call>`-Darstellung zeigt die interne Kodierung von Gemma 4 auf Modell-Ebene. Die App übersetzt das automatisch über ihre Function-Calling-API – im Skill selbst schreibst du das JSON-Format aus den "Verfügbare Tools"-Schemas oben, nicht diese Tokens:

```text
<|turn>model
<|channel>thought
Phase 0: Tagging. Nutzer sagt: "Kaufe morgen Milch"
Bestehende Tags abfragen...
<channel|>
<|tool_call>call:vault{"action":"search","query":"tag:*"}<tool_call|>
```
