---
type: skill
agent_ready: true
schema_version: 1
bundle_version: "0.28.0"
name: cross-check
description: "Cross-Check — Holt eine unabhängige Zweitmeinung von einem externen KI-Modell (OpenAI, Perplexity oder Gemini) ein. Nutze diesen Skill immer, wenn der User eine Gegenprüfung, Zweitmeinung, Faktencheck oder externe Recherche will, auch wenn er es nicht wörtlich als 'Cross-Check' bezeichnet. Typische Signale: Skepsis an einer Antwort ('stimmt das wirklich?', 'bin mir nicht sicher', 'glaube ich nicht so ganz'), Wunsch nach Validierung ('prüf das mal', 'check das gegen eine andere Quelle', 'querchecken'), Recherche-Auftrag ('recherchier das', 'was sagen aktuelle Quellen?'), explizite Modellnennung ('frag mal OpenAI', 'frag Perplexity', 'frag Gemini'), oder allgemeine Aufforderung zur Gegenprüfung ('hol dir mal eine Zweitmeinung', 'lass das mal gegenprüfen', 'bitte verifizieren'). NICHT triggern bei allgemeinem Zweifel ohne Wunsch nach externer Prüfung."
tags:
  - skill
  - cross-check
  - zweitmeinung
  - verifikation
  - externe-ki
scope: vault
bundle_skill: true
default_active:
  allgemein: true
depends_on: []
conflicts_with: []
created: 2026-04-24
updated: 2026-05-13
---

# Cross-Check

Gleiche Trainingsdaten, gleiche blinde Flecken: ein Modell kann seine eigenen Antworten nicht zuverlässig prüfen. Dieser Skill unterbricht den Self-Confirmation-Loop, indem er die Frage neutral an ein externes Modell (OpenAI, Perplexity oder Gemini) weiterreicht, das ohne Kenntnis der eigenen Antwort urteilt.

## Warum das wichtig ist

Ein Modell kann sich selbst nicht prüfen. Wenn der Assistent und der User beide denken, eine Antwort stimmt, fehlt ein externer Referenzpunkt. Der Cross-Check liefert genau das, ohne dass der User manuell in ein anderes Tool wechseln muss.

## Konfiguration

Dieser Skill ruft externe APIs auf. Das eigentliche Aufruf-Skript und der API-Key-Wrapper sind **nicht Teil des Bundles** — sie sind User-Setup. Der Skill geht davon aus, dass die folgenden zwei Werkzeuge im User-Profil vorhanden sind:

- **Aufruf-Skript:** Ein lokales Python-Skript, das die drei Provider OpenAI, Perplexity und Gemini einheitlich anspricht und ein JSON-Ergebnis ausgibt (Provider, Modell, Antwort, Tokens, Kosten, Zeit).
- **Key-Wrapper:** Ein Shell-Wrapper, der API-Keys sicher in die Umgebung injiziert (typischerweise via 1Password CLI oder ein vergleichbarer Secret-Manager). Empfohlen wird der `setup-1password-key`-Skill, falls vorhanden, sonst lädt das Skript Keys aus Umgebungsvariablen.

Wer noch keinen Wrapper hat, baut ihn einmalig nach dem `setup-1password-key`-Skill oder legt die nötigen Env-Variablen an. Solange diese zwei Werkzeuge fehlen, fragt der Skill direkt nach.

## Grundprinzipien

**Neutraler Prompt ist das Herzstück.** Der Prompt an das externe Modell enthält den Konversationskontext (worum geht es, was ist die Frage), aber NIEMALS die eigene Antwort oder Meinung des Assistenten. Das externe Modell soll unabhängig urteilen, nicht eine bestehende Position bestätigen oder widerlegen.

**2-Step-Flow ist Pflicht.** Nie direkt absenden. Immer erst zeigen, was du vorhast, dann auf Bestätigung warten.

**Beide sagen dasselbe ≠ Beweis.** Wenn das externe Modell und der Assistent dasselbe behaupten, kann es trotzdem falsch sein (ähnliche Trainingsdaten). Den User darauf hinweisen, wenn das passiert.

## Provider und Routing

| Provider | Wann | Default-Modell | Eskalationsstufe |
|---|---|---|---|
| **OpenAI** | Zweitmeinung, Reasoning, allgemeine Faktenprüfung | aktuelles Reasoning-Modell | Stufe 1 (Default) |
| **Perplexity** | Aktuelle Fakten, Recherche, zeitkritische Claims | Preset `pro-search` (Agent API) | Stufe 2 |
| **Gemini** | Drittmeinung, wenn zwei Modelle übereinstimmen | aktuelles Reasoning-Modell | Stufe 3 |

**Perplexity nutzt die Agent API** (nicht die einfache Sonar API). Der Agent recherchiert aktiv im Web, liefert strukturierte Ergebnisse mit Quellenverweisen und braucht etwas länger. Verfügbare Presets:

| Preset | Tiefe | Typische Antwortzeit |
|---|---|---|
| `fast-search` | 1 Schritt, schnell | 2-5s |
| `pro-search` | 3 Schritte, gute Balance | 5-15s |
| `deep-research` | 10 Schritte, Tiefenrecherche | 30-120s |

**Routing-Regel:** Der Assistent schlägt den Provider vor. Der User bestätigt. Kein vollautomatisches Routing.

Faustregeln für den Vorschlag:
- "recherchier mal", "ist das aktuell?", "was sagen die neuesten Zahlen?" → Perplexity (pro-search)
- "recherchier das gründlich", "Tiefenrecherche" → Perplexity (deep-research)
- "stimmt das?", "Zweitmeinung", "prüf meine Logik" → OpenAI
- "frag auch noch Gemini", "Drittmeinung", "die sagen beide dasselbe, frag nochmal woanders" → Gemini
- Im Zweifel: OpenAI (breiter einsetzbar)

## Ablauf

### Schritt 1: Statement extrahieren

Identifiziere aus dem Gesprächsverlauf, was genau geprüft werden soll. Das kann sein:
- Ein konkretes Faktum ("Die Inflationsrate liegt bei 2,3 %")
- Eine Einschätzung ("Ansatz A ist für diesen Use Case besser als Ansatz B")
- Eine Empfehlung ("Du solltest zuerst X machen, dann Y")
- Eine allgemeine Recherchefrage ("Was sind aktuelle Best Practices für Z?")

Wenn unklar ist, was geprüft werden soll: kurz rückfragen.

### Schritt 2: Neutralen Prompt formulieren

Formuliere einen Prompt für das externe Modell. Regeln:

1. **Kontext geben:** Worum geht es? Was ist die Ausgangsfrage?
2. **Eigene Antwort NICHT einbauen.** Nicht "Der Assistent hat gesagt X, stimmt das?" — sondern die Originalfrage stellen.
3. **Sprache:** Deutsch, klar, ohne Floskeln.
4. **Länge:** So kurz wie möglich, so lang wie nötig. Typisch 2-5 Sätze.

Beispiel für einen guten neutralen Prompt:
> "Im Kontext eines mittelgroßen Online-Shops: Ist es Best Practice, sämtliche Geschäftslogik in der Datenbank-Schicht zu bündeln, oder gehört sie eher in die Anwendungs-Schicht? Was sind die Vor- und Nachteile beider Ansätze?"

Beispiel für einen schlechten Prompt (eigene Meinung eingebaut):
> "Der Assistent empfiehlt, Geschäftslogik in der Anwendungs-Schicht zu halten. Ist das richtig?"

### Schritt 3: Vorschlag zeigen (2-Step-Flow)

Zeige dem User:

```
Ich würde bei [Provider] ([Modell/Preset]) anfragen:

"[1-2 Sätze Zusammenfassung des Prompts]"

Soll ich absenden? (Oder: "zeig mir den vollen Prompt")
```

**Warte auf Bestätigung.** Mögliche Antworten:
- **"ja" / "mach mal" / "los"** → Absenden (Schritt 4)
- **"zeig mir den Prompt" / "zeig mal"** → Vollen Prompt anzeigen, dann erneut fragen
- **"nein" / "anders"** → Prompt anpassen oder Provider wechseln
- **"anderes Modell"** → Modell wechseln, erneut vorschlagen

### Schritt 4: API-Aufruf

Alle Aufrufe gehen über das vom User bereitgestellte Aufruf-Skript plus den Key-Wrapper. Konkrete Pfade hängen vom User-Setup ab — typischerweise liegt das Skript unter `{home}/.claude/skills/cross-check/` oder einem vergleichbaren User-eigenen Pfad. Falls das Skript fehlt, bricht der Skill mit klarem Hinweis ab und verweist auf den `setup-1password-key`-Skill.

Beispiel-Argumente, die das Skript verarbeiten muss (Details siehe User-Setup-Doku):

**OpenAI:**
```
--provider openai
--model [modell-id]
--system "Du bist ein unabhängiger Experte, der eine Zweitmeinung abgibt. Antworte sachlich, strukturiert und auf Deutsch. Wenn du dir unsicher bist, sag es klar."
--prompt "[der neutrale Prompt]"
--json
```

**Perplexity (Agent API):**
```
--provider perplexity
--preset [pro-search|deep-research|fast-search]
--instructions "Antworte sachlich, strukturiert und auf Deutsch. Nenne deine Quellen."
--prompt "[der neutrale Prompt]"
--json
```

**Gemini (Drittmeinung):**
```
--provider gemini
--model [modell-id]
--system "Du bist ein unabhängiger Experte, der eine Drittmeinung abgibt. Antworte sachlich, strukturiert und auf Deutsch. Wenn du dir unsicher bist, sag es klar."
--prompt "[der neutrale Prompt]"
--json
```

### Schritt 5: Ergebnis präsentieren

Das `--json` Flag liefert ein strukturiertes Ergebnis. Daraus formatieren:

```
## Zweitmeinung von [Provider]/[Modell]

[Antwort des externen Modells]

---
Provider: [name] | Modell: [id] | Tokens: [n] | Kosten: $X.XXXX | Zeit: [n]s
```

### Schritt 6: Einordnung

Nach dem Ergebnis eine kurze Einordnung geben:

- **Übereinstimmung:** "Das deckt sich mit meiner Einschätzung. Beide Modelle sehen [X] als [Y]." Plus Hinweis: Übereinstimmung ist kein Beweis.
- **Abweichung:** "Hier gibt es eine Abweichung: Ich hatte [X] gesagt, [Provider] sagt [Y]. Der Unterschied liegt bei [Z]. Das solltest du genauer prüfen."
- **Neue Information:** "Das externe Modell bringt einen Punkt, den ich nicht hatte: [X]."

## Sonderfälle

**User sagt "zeig mir den Prompt":** Vollen Prompt im Codeblock anzeigen. Der User prüft auf Neutralität. Danach erneut fragen, ob absenden.

**API-Fehler oder fehlender Key:** Fehlermeldung zeigen und alternativen Provider vorschlagen. Beispiel: "Perplexity hat einen Fehler zurückgegeben. Soll ich stattdessen OpenAI fragen?"

**Perplexity für Recherche mit Quellen:** Perplexity liefert oft Quellenverweise ([1], [2] etc.). Diese mitanzeigen, sie sind ein Mehrwert gegenüber OpenAI.

**User will beide Provider:** Ist erlaubt. Dann zweimal den Flow durchlaufen (erst Provider A, dann Provider B) und am Ende vergleichen.

**Skript fehlt im User-Setup:** Klar sagen, dass das Aufruf-Skript noch nicht eingerichtet ist, und auf `setup-1password-key` plus eine User-spezifische `external-ai.py` (oder vergleichbares Skript) verweisen. Nicht raten, nicht improvisieren.

## Was dieser Skill NICHT tut

- Automatisch im Hintergrund prüfen (Autonomy Slider Level 1: immer Bestätigung)
- Die eigene Antwort des Assistenten in den Prompt einbauen
- API-Keys anzeigen oder in Dateien speichern
- Ohne Bestätigung absenden

## Trigger-Erkennung

Skill startet ausschließlich, wenn der User explizit eine externe Zweitmeinung, Gegenprüfung oder Recherche wünscht. Nicht bei allgemeinem Zweifel ohne externen Prüfwunsch. Erkenne Intent, matche nicht auf exakten Wortlaut.

**Triggern:** "Cross-Check", "Zweitmeinung", "Drittmeinung", "querchecken", "gegenprüfen", "verifizieren", "Faktencheck", "frag mal OpenAI / Perplexity / Gemini", "hol dir eine Zweitmeinung", "lass das mal gegenprüfen", "prüf das gegen eine andere Quelle", "recherchier das", "stimmt das wirklich?".

**Nicht triggern:** "bin mir nicht sicher" (ohne externen Prüfwunsch), "was hältst du davon", "kein Cross-Check nötig", reine Fachfragen ohne Skepsis-Signal.

## Konfiguration (Datei)

Vollständige Konfigurations-Vorlage: `skill.config.example.yaml`. Der Skill braucht keine externen Vault-Pfade zur Laufzeit — die `paths`-Sektion bleibt leer. Es gibt keine Feature-Flags, weil der Provider-Wechsel User-gesteuert pro Aufruf erfolgt, nicht über Config-Toggles.

## Locale

Default: `de`. Einstellbar über `locale` in `skill.config.yaml`. Dieser Skill erzeugt keine Slug-basierten Dateinamen und braucht keine separaten Locale-Daten-Dateien.

## Verknüpfungen

- [[INDEX|INDEX.md]]
- [[AGENTS|AGENTS.md]]
