diff --git a/skills/klarheit-mit-idea2self/SKILL.md b/skills/klarheit-mit-idea2self/SKILL.md index 8f29ac0..a71c1ad 100644 --- a/skills/klarheit-mit-idea2self/SKILL.md +++ b/skills/klarheit-mit-idea2self/SKILL.md @@ -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: ``-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. diff --git a/skills/klarheit-mit-idea2self/references/routing-table.md b/skills/klarheit-mit-idea2self/references/routing-table.md index 1708a07..f72ac1a 100644 --- a/skills/klarheit-mit-idea2self/references/routing-table.md +++ b/skills/klarheit-mit-idea2self/references/routing-table.md @@ -75,3 +75,37 @@ Schritt 8 (`review-iterate`) lebt im Router und kann **zu jedem Zeitpunkt** aufg Falls der Nutzer eine Trigger-Phrase aus Spalte 2 **ohne Router-Aktivierung** sagt (z.B. direkt "Persona erstellen"), aktiviert sich der jeweilige Sub-Skill von selbst per eigener `description:`. Der Router bleibt aus. Das ist by design. Falls Trigger zweifelhaft (z.B. "Idee strukturieren" matcht Router-Pfad 1 UND koennte als Sub-Skill-Trigger gelesen werden): Router gewinnt, Sub-Skill bleibt aus. Trigger-Specificity ist in der `description:` jedes Skills entsprechend kalibriert. + +## Tiebreaker-Regeln + +Wenn ein Nutzer-Input plausibel **zwei** Routing-Pfade trifft, wird in dieser Reihenfolge entschieden: + +1. **Explicit > Semantic.** Eine woertliche Trigger-Phrase aus Spalte 2 schlaegt eine semantische Naehe. Beispiel: "Persona erstellen" -> Pfad 3 (explicit), nicht Pfad 1 (auch wenn der Nutzer noch keine idea2self-Datei hat — die fehlende Vorbedingung wird in Phase 2 abgefangen). +2. **Earlier pipeline position > later.** Wenn zwei Pfade gleichermassen explizit getriggert sind, gewinnt der **frueher in der Sequenz** stehende. Begruendung: die spaeteren Workflows brauchen die frueheren als Vorbedingung; den frueheren zuerst zu bedienen ist immer ein Quick Win. +3. **Specific Sub-Skill > Router.** Wenn ein Sub-Skill-Trigger UND ein Router-Trigger gleichzeitig matchen: Sub-Skill gewinnt. Der Router aktiviert sich nur, wenn KEIN spezifischer Sub-Skill-Trigger im Input vorkommt. +4. **review-iterate (Pfad 8) gewinnt bei expliziten Iterations-Verben.** "Ueberarbeiten", "iterieren", "Konsistenz-Check" schlaegt jeden anderen Pfad — auch wenn der Nutzer im selben Satz "Persona" oder "Action-Plan" erwaehnt. Begruendung: das Update-Intent ist staerker als der Artefakt-Begriff. + +### Klaerungsfrage bei echter Mehrdeutigkeit + +Wenn nach den 4 Regeln immer noch zwei Pfade gleichwertig sind: **eine** Klaerungsfrage mit **maximal zwei** Optionen. + +Format: +``` +Zwei Pfade matchen deine Anfrage: +A) [Sub-Skill 1] — [1-Satz-Zweck] +B) [Sub-Skill 2] — [1-Satz-Zweck] + +Welcher passt besser? +``` + +**Nie** drei oder mehr Optionen in einer Klaerungsfrage. **Nie** mehrere Klaerungs-Runden — wenn die Antwort weiter unklar bleibt, in Phase 1b (No-Match) wechseln. + +### Beispiel — angewendete Tiebreaker + +| Input | Match-Kandidaten | Anwendung | Resultat | +|-------|------------------|-----------|----------| +| "Persona ueberarbeiten" | Pfad 3 (Persona) + Pfad 8 (review-iterate) | Regel 4: Iterations-Verb gewinnt | Pfad 8 (review-iterate, Persona-Sektion) | +| "Discovery starten" | Pfad 1 (Discovery) + Router (Entry) | Regel 3: Sub-Skill gewinnt | `i2s-discovery` direkt, Router bleibt aus | +| "Validierung planen" | Pfad 4 (Recherche, semantisch) + Pfad 5 (Experiment, semantisch) | Regel 2: frueherer Pfad | Pfad 4 (`i2s-recherche`) | +| "ich brauche Klarheit zur Persona" | Pfad 3 (Persona, semantisch) + Router (Klarheit-Trigger) | Regel 1 + 3: Sub-Skill explicit gewinnt | `i2s-persona` | +