refactor(router): apply quality-checklist HIGH fixes
Close 4 HIGH-priority gaps from router-quality-checklist audit (agentbrain/memory/templates/router-quality-checklist.md): 1. Quick-Start-Trace (section 3): three end-to-end dialog examples added before the Routing Pattern section. - Beispiel A: Happy path (new idea, no file yet) - Beispiel B: Precondition-Gap (Persona triggered without PS) - Beispiel C: No-Match (Marketing-Funnel request) Each example shows phase-by-phase trace + hand-off wording incl. confirmation question. 2. Phase 1b — No-Match-Handling (section 9): new phase between intent recognition and precondition check. Explicit out-of-scope wording, scope-statement, anchor question, and rules against semantic-fallback routing or hallucinated capabilities. 3. Tiebreaker-Regeln (section 8): added to routing-table.md. Four-rule hierarchy (Explicit > Semantic; Earlier-pipeline > Later; Sub-Skill > Router; review-iterate beats any artifact verb when iteration is explicit). One-question-max with two options for true ambiguity; otherwise fall through to Phase 1b. Includes a worked-example table. 4. Guardrails section (section 10): consolidated 8-item "Never X" block at the end of SKILL.md. Covers no-self-execute, no-silent- routing-on-missing-precondition, no menu-dump > 8, no halluci- nated capabilities, no untied tiebreaker routing, no skipped file-state read, no bypassed user context, no iterated clarification. MEDIUM gaps (sections 5/6/7 — bucket grouping, required/optional precondition split, good/bad output examples) remain open as a polish pass after step 10b. EVAL strategy (section 11) is a separate workstream tracked in a future plan. Files: 117 insertions, 1 deletion across SKILL.md + routing-table.md.
This commit is contained in:
@@ -29,6 +29,61 @@ Entry-Point fuer den Idea2Self-Prozess. Routet zwischen sieben spezialisierten W
|
||||
- Nutzer will Web-Recherche zu seinem Problemraum -> `i2s-recherche` direkt.
|
||||
- Generelles Brainstorming ohne Idee-Bezug -> kein `i2s-*` Skill, nutze `compound-engineering:ce-brainstorm`.
|
||||
|
||||
## Quick-Start-Trace
|
||||
|
||||
### Beispiel A — Happy Path (neue Idee)
|
||||
|
||||
**Input:** "Ich habe da eine Idee fuer eine Nachbarschafts-Tauschboerse. Wie packe ich das an?"
|
||||
|
||||
**Phase 1 (Intent):** Trigger-Match auf Pfad 1 ("Idee starten", "wie packe ich das an"). Datei-Pfad nicht genannt -> Cold-Start.
|
||||
|
||||
**Phase 2 (Vorbedingung):** Pfad 1 hat keine Vorbedingung. Skip.
|
||||
|
||||
**Phase 3 (Hand-off):**
|
||||
```
|
||||
Klingt nach einem Discovery-Start. Es existiert noch keine idea2self-Datei.
|
||||
Naechster Schritt: `i2s-discovery`.
|
||||
Trigger-Phrase: "Discovery-Interview starten".
|
||||
|
||||
Soll ich die Diskussion an `i2s-discovery` uebergeben?
|
||||
```
|
||||
|
||||
### Beispiel B — Precondition-Gap
|
||||
|
||||
**Input:** "Persona erstellen fuer meine Tauschboersen-Idee."
|
||||
|
||||
**Phase 1 (Intent):** Trigger-Match auf Pfad 3 (Persona). Datei-Pfad fehlt -> Standardpfad `./idea2self-tauschboerse.md` versuchen.
|
||||
|
||||
**Phase 2 (Vorbedingung):** Datei existiert, aber `^## Problem-Statement` matcht nicht oder ist leer.
|
||||
|
||||
**Phase 3 (gestoppt, Hand-off mit Korrektur):**
|
||||
```
|
||||
Voraussetzung `## Problem-Statement` fehlt in idea2self-tauschboerse.md.
|
||||
Persona-Workflow waere damit ohne Anker.
|
||||
Naechster Schritt: `i2s-problem-statement` (vor i2s-persona).
|
||||
Trigger-Phrase: "Problem-Statement erstellen".
|
||||
|
||||
Soll ich PS zuerst aufsetzen, oder hast du das Problem anderweitig schon dokumentiert?
|
||||
```
|
||||
|
||||
### Beispiel C — No-Match
|
||||
|
||||
**Input:** "Bau mir einen Marketing-Funnel fuer mein neues Coaching-Angebot."
|
||||
|
||||
**Phase 1 (Intent):** Keine Trigger-Phrase aus `references/routing-table.md` matcht. Nicht "Idee strukturieren", nicht "Validieren", nicht "review-iterate".
|
||||
|
||||
**Phase 1b (No-Match):**
|
||||
```
|
||||
Das liegt ausserhalb des Idea2Self-Prozesses. Idea2Self fuehrt eine vage Idee zu
|
||||
einem validierten Action-Plan — nicht Marketing-Funnel.
|
||||
|
||||
Wenn deine Idee noch nicht durch Validierung gelaufen ist: sage "Idee
|
||||
strukturieren" — wir starten den Idea2Self-Prozess.
|
||||
|
||||
Fuer Marketing-Arbeit ohne Idea2Self-Schritte: nutze `marketing-skills:*`
|
||||
(z.B. `marketing-skills:marketing-strategy-pmm`).
|
||||
```
|
||||
|
||||
## Routing Pattern
|
||||
|
||||
```
|
||||
@@ -59,7 +114,21 @@ Konkrete Trigger-Mapping-Tabelle und Vorbedingungs-Pruefung: `references/routing
|
||||
2. Falls Nutzer einen Dateipfad nennt: idea2self-Datei laden, vorhandene Sektionen registrieren.
|
||||
3. Falls Intent unklar: `<intake>`-Block (siehe unten) anzeigen, eine Antwort erfragen.
|
||||
|
||||
**Exit:** Intent ist auf genau einen der 8 Routing-Pfade gemappt.
|
||||
**Exit:** Intent ist auf genau einen der 8 Routing-Pfade gemappt **oder** als No-Match klassifiziert.
|
||||
|
||||
### Phase 1b — No-Match-Handling
|
||||
|
||||
**Entry:** Phase 1 hat keinen Pfad-Match erzeugt.
|
||||
|
||||
**Aktionen:**
|
||||
1. Out-of-Scope explizit benennen: "Das liegt ausserhalb des Idea2Self-Prozesses."
|
||||
2. Kurzbeschreibung des Scopes geben (1 Satz): "Idea2Self fuehrt eine vage Idee zu einem validierten Action-Plan."
|
||||
3. Anker-Frage: "Wenn deine Idee noch nicht durch Validierung gelaufen ist: sage 'Idee strukturieren'."
|
||||
4. Optional: alternativen Skill nennen (z.B. `marketing-skills:*`, `compound-engineering:ce-brainstorm`), nur wenn klar zu identifizieren — keine spekulativen Empfehlungen.
|
||||
5. **Nicht** auf den semantisch naechsten Routing-Pfad ausweichen.
|
||||
6. **Nicht** Capabilities halluzinieren ("ich kann das schon irgendwie").
|
||||
|
||||
**Exit:** Nutzer ist informiert. Skill wartet auf Nachfrage oder verlaesst die Konversation.
|
||||
|
||||
### Phase 2 — Vorbedingung pruefen
|
||||
|
||||
@@ -135,3 +204,16 @@ Vollstaendige Regeln: `references/kommunikationsregeln.md`.
|
||||
- [ ] Bei Pfad 1-7: der zustaendige Sub-Skill ist genannt mit Trigger-Phrase. Der Router fuehrt den Workflow NICHT selbst aus.
|
||||
- [ ] Bei Pfad 8: `workflows/review-iterate.md` ist ausgefuehrt, idea2self-Datei wurde aktualisiert, Changelog-Eintrag vorhanden.
|
||||
- [ ] idea2self-Datei bleibt die alleinige Quelle der Wahrheit. Keine parallelen Notizen.
|
||||
|
||||
## Guardrails (Never)
|
||||
|
||||
Gebuendelte Negativliste. Verstoesse machen den Router unzuverlaessig — gilt fuer JEDE Interaktion.
|
||||
|
||||
1. **Never self-execute.** Der Router formuliert kein Problem-Statement, keine Persona, keinen Plan — niemals. Selbst wenn der Nutzer draengt: an den zustaendigen `i2s-*` Skill uebergeben.
|
||||
2. **Never silent route on missing precondition.** Wenn Phase 2 eine fehlende Sektion erkennt, wird Hand-off **abgebrochen** und der voraussetzende Sub-Skill genannt. Ueberspringen nur auf explizite Nutzer-Bestaetigung "ich habe X anderweitig vorgehalten".
|
||||
3. **Never menu-dump > 8 items.** Wenn die Routing-Tabelle waechst, Sub-Buckets statt langer Listen. Aktuell sind 8 Pfade die harte Obergrenze.
|
||||
4. **Never hallucinate capabilities.** Bei No-Match (Phase 1b): out-of-scope sagen, nicht "ich kann das schon irgendwie" antworten. Nur Skills empfehlen, deren Existenz verifizierbar ist (im Plugin oder im Marketplace).
|
||||
5. **Never route on tied phrases without tiebreaker check.** Wenn 2 Pfade matchen, Tiebreaker aus `references/routing-table.md` anwenden, bevor gehandeled wird.
|
||||
6. **Never skip the file-state read.** Vor jedem Hand-off (Pfad 2-7) wird die idea2self-Datei gelesen und der vorhandene Sektions-Stand gegen die Vorbedingung gehalten. Implizite Annahmen sind verboten.
|
||||
7. **Never bypass user context.** Wenn Nutzer einen Dateipfad genannt hat oder im Verlauf einen Stand etabliert hat: dieser Stand gilt, nicht ein hypothetischer Standardstand.
|
||||
8. **Never iterate the same clarification.** Maximal **eine** Klaerungsfrage pro Ambiguitaet. Wenn die Antwort weiter unklar bleibt: in Phase 1b (No-Match) gehen, nicht weiter nachfragen.
|
||||
|
||||
Reference in New Issue
Block a user