---
name: artefakt-recherche
description: "Recherche-Coordinator. Liest TUV, ruft aktive Quellen-Adapter über source-registry.yaml, aggregiert über lib/briefing.py, schreibt _recherche.yaml. Triggert NUR aus dem artefakte-generator-Skill heraus oder explizit auf User-Anfrage 'Recherche für UE <X>'. Phase 1: Adapter wikimedia + wikipedia aktiv. Spätere Phasen erweitern um berufenet, gesetze, bpb, statistisches_bundesamt, ilo, pixabay etc."
domain_scope: universal
schema_pin: tuv_v1
phase: phase_1_mvp
mode: cowork-first
skill_typ: orchestrator
adr_refs: [ADR_0017, ADR_0023, ADR_0025, ADR_0032]
---

# Recherche-Coordinator `artefakt-recherche` (Phase-1 / Phase-3-Cowork)

## Reasoning-Anleitung (Cowork-Mode, ADR 0032 Phase-3)

Pipeline-Skill: Quellen-Adapter + Lizenz-Klassifikation + Briefing-Persistierung.

**Eingabe:** TUV-Pfad oder Stichworte + Lernbereich + Niveau.

**Reasoning-Schritte:**
1. Quellen-Adapter aus `core/config/source-registry.yaml` aktivieren (Phase 1: wikimedia + wikipedia)
2. Pro Adapter: `lib/briefing.BriefingAggregator.run()` mit Pre-Fetch-Hook
3. Pro Candidate: `lizenz.pruefen`-Skill aufrufen (Hard-Block-Check)
4. Cowork-Mode: Claude rankt Wikipedia-Sections nach Lernziel + Wikimedia-Bilder nach Niveau/Diversität (kein Reasoning-Agent-Call)
5. `_recherche.yaml` neben TUV persistieren

**Output:** `_recherche.yaml` mit BriefingEntries + Attribution-Lines

**Anti-Pattern:** Adapter ohne Pre-Fetch-Hook / Ranking ohne Niveau-Bezug / Briefing ohne Attribution.

Du orchestrierst die externe Materialrecherche für eine WiB-UE.

## Pflicht-Kontextdateien (READ FIRST)

1. Das übergebene TUV
2. `core/specs/06-externe-recherche.md`
3. `core/config/source-registry.yaml`
4. `core/config/lizenzquellen.json`
5. Aktive Adapter-Konfigs: `core/config/sources/<id>.yaml`

## Workflow

### 1. Suchanfragen ableiten
Aus dem TUV extrahierst du Such-Queries:
- Hauptthema (aus `thema`, ohne Fragezeichen)
- Lernziel-Stichworte (aus Mager-`inhalt` und `indikator`)
- Lernbereich-Kontext (aus `lehrplan.lernbereich`)
- Querverbindungen (aus optionalem `querverbindung`-Feld)
- Pro Phase mit Material-Bedarf: spezifische Bild-/Textquelle

Pro Query: AFB-Spektrum aus Teilzielen, prozessbez. Kompetenz, Niveau-Hinweise.

### 2. Aktive Adapter ermitteln
Aus `source-registry.yaml` alle Adapter mit `aktiv: true` und passendem `phase_min`. Phase 1 → wikimedia, wikipedia.

### 3. Adapter parallel ausführen
Jeder Adapter wird mit eigenem Konfig-File parametrisiert (`config/sources/<id>.yaml`).

Pro Adapter:
- `search(query)` → Kandidaten
- `fetch(candidate)` → Asset (Bytes oder Text)
- `classify_license(metadata)` → Lizenz-Enum
- `to_briefing(asset, lizenz_meta)` → BriefingEntry

Cache via `lib/cache.py` (SHA-256-basiert), Treffer aus Cache zuerst.

### 4. Lizenz-Pipeline anwenden
Für jeden Treffer: `lib/lizenz.klassifiziere(url, metadata, autor, titel)`.
- Whitelist-Check via `config/lizenzquellen.json`.
- Bei Lizenz `unklar` oder Blacklist-Treffer: ausschließen, Verweislink anbieten statt Einbettung.
- Attribution-Text generieren.

### 5. Quality-Gates (Phase 4+)
- Bildauflösung min. 1200 px Längsseite.
- Stereotype-Check (semantisch via Reasoning-Agent für Personenbilder).
- Niveau-Score für Textauszüge.

Phase 1: nur Auflösungs-Check.

### 6. Briefing aggregieren
Über `lib/briefing.BriefingAggregator` in `_recherche.yaml` neben dem TUV schreiben.

Format siehe `samples/gold-standard/KW18_Kinderarbeit/_recherche_briefing.yaml`.

### 7. Briefing-Review (alltag-Modus, Phase-3.6.D-Refactor)
- Briefing-Review-Flag setzen → User muss Briefing prüfen, bevor Generator weiterläuft.
- Reasoning-Agent für Wikipedia-Adapter aktivieren (semantische Abschnittsauswahl).

## Pilot-Einschränkung Phase 1
- Adapter wikimedia und wikipedia.
- Profil `standard`.
- Stereotype-Check als Hinweis im Manifest, kein Blocking.
- Kein Reasoning-Agent.
- Cache aktiv, kein Auto-Expire.

## Fehlerverhalten
- Adapter-Ausfall → andere laufen weiter, Fehler im Manifest dokumentieren.
- Komplette Recherche-Ausfall → Degraded Mode, Generator informieren, Artefakte ohne externe Quellen mit explizitem Hinweis im Footer.

## Output-Vertrag
`_recherche.yaml` neben TUV. Schema in `specs/06-externe-recherche.md`. Goldstandard-Beispiel in `samples/gold-standard/KW18_Kinderarbeit/_recherche_briefing.yaml`.
