---
name: recherche.bilder
description: "MVP-Skill für Bildrecherche aus aktiven Bild-Adaptern (Phase-1: wikimedia). Liest Suchbegriff + lizenz-Whitelist aus Kontext, ruft Adapter, prüft Lizenz via lizenz.pruefen-Skill, cached lokal in core/.cache/bilder/. Triggert NUR aus artefakte-generator oder explizit 'Bildersuche für <Begriff>'. Output: Liste von BildEntry mit lokalem Cache-Pfad + Attribution + Lizenz-Klasse. Phase-2 erweitert um pixabay/pexels/mebis."
domain_scope: universal
schema_pin: tuv_v1
phase: phase_1_mvp
mode: cowork-first
skill_typ: atomar
adr_refs: [ADR_0023, ADR_0025, ADR_0032]
---

# Skill `recherche.bilder` (Phase-1 MVP / Phase-3-Cowork)

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

**Eingabe:** Suchbegriff aus TUV-Thema + Niveau + Lernbereich (für Stereotype-Filter-Hinweis).

**Reasoning-Schritte für Claude:**
1. Pre-Fetch-Hook `pre_bild_fetch_lizenz` aufrufen (Whitelist-Check via `core/config/lizenzquellen.json`)
2. Wikimedia-Adapter via `core/scripts/sources/wikimedia.py` ausführen (HTTP, deterministisch)
3. Pro Candidate: `lizenz.pruefen`-Skill triggern → Klasse + Attribution
4. Im Cowork-Mode rankt Claude semantisch nach Niveau-Passung / Diversität / Stereotype-Risk (kein Reasoning-Agent-Call nötig — Claude reasont direkt)
5. Hard-Excludes (AI-generiert, Stockfoto, Social-Media) per `lizenzquellen.blacklist` bevor Render

**Output:** Liste von `BildEntry` mit `bild_pfad / attribution / lizenz_klasse / stereotype_warning?`

**Anti-Pattern (Cowork-Mode verboten):**
- Bilder ohne Pre-Fetch-Hook laden
- Bilder ohne Attribution rendern
- Hard-Exclude-Bypass via Direkt-URL

Aufgabe: Bilder aus lizenzkonformen Quellen für ein Artefakt beschaffen.

## Eingaben
- `suchbegriff` (Pflicht): Schlagwort z. B. "Kinderarbeit Industrialisierung"
- `lizenz_whitelist` (optional): Liste erlaubter Lizenzen (Default aus `core/config/lizenzquellen.json`)
- `enthaelt_schueler_bezug` (optional): false (Default) — keine Cloud-Caches bei true

## Ablauf
1. Hook `pre_bild_fetch_lizenz` (ADR 0023) wird vom Orchestrator vor jedem fetch ausgeführt.
2. Adapter aufrufen via `core/lib/briefing.py` (Phase 1: wikimedia).
3. Lizenz-Klassifikation pro Treffer via `lizenz.pruefen`-Skill.
4. Cache lokal in `core/.cache/bilder/<sha256>/` mit `meta.json`.
5. Output: `List[BildEntry]` mit `pfad`, `quelle`, `lizenz_klasse`, `attribution`, `disclaimer_text` (falls Pflicht).

## Schema-Pin
TUV-Schema `tuv_v1`. Bei Schema-Bump v2: Re-Pin via Migrations-Pflicht.

## Graceful-Degrade (ADR 0025)
- Wikimedia nicht verfügbar → Skill liefert leeren Result + Warnung; Orchestrator entscheidet ob fail-soft.

## Cross-Refs
- ADR 0023 Hook-Coverage (pre_bild_fetch_lizenz)
- ADR 0025 MCP-Connector-Setup (wikimedia als soft-Connector)
- Skill `lizenz.pruefen` (Lizenz-Klassifikation)
- Spec 06 (Externe-Recherche)
