# Cardecky Seed-Decks — Audit-Trail Reproduzierbare Deck-Erzeugung. Pro Deck eine Sub-Direktive mit allen Stages des `/cards-deck`-Skill-Runs: ``` seed// ├─ plan.md Stage 1: Thema, Subtopics, Card-Count, Type-Mix ├─ research/ │ ├─ sources.md Stage 2: Quellen-Liste mit URLs + Zugriffsdatum │ └─ notes.md Stage 2: Recherche, Streitfall-Auflösungen ├─ design/ │ ├─ outline.md Stage 3: Subtopic-Counts + F-Range │ ├─ build_cards.py Stage 3: deterministischer Generator │ └─ cards.jsonl Stage 3: 1 Karte/Zeile, mit source_refs ├─ validate/ │ └─ report.md Stage 4: 5 Standard-Checks (atomicity, │ source-coverage, dedupe, type-fit, │ mission-check) └─ publish/ ├─ deck.json Stage 5: Server-Response auf POST publish └─ cards.log Stage 5: Audit-Log mit Round-Trip-Zeit ``` ## Wofür dieser Trail dient 1. **Reproduzierbarkeit** — bei jedem Skill-Re-Run mit derselben `build_cards.py` muss die identische cards.jsonl entstehen (deterministisch via random.seed). Jede Abweichung deutet auf einen Bug oder eine bewusste Schema-Änderung. 2. **Editorial-Transparenz** — User können in `research/sources.md` sehen, welche Quellen Cardecky-Decks zugrunde liegen. Sie können `notes.md` lesen, um die Streitfall-Entscheidungen zu verstehen. 3. **Versions-Bumps via PR-Merge** — wenn der Marketplace einen PR auf den Deck merged, entsteht eine neue Version 1.1.0 ohne dass dieser Trail mit-aktualisiert wird. Das ist OK: der Trail dokumentiert die **initiale Veröffentlichung** v1.0.0; spätere Versionen leben in der DB + im PR-Verlauf. 4. **Compliance / DSGVO** — falls jemand fragt, woher Cardecky die deutsche Übersetzung von „neighbor" hat: `research/sources.md` sagt PONS [4], `research/notes.md` zeigt die US-Spelling- Disziplin. ## Konventionen - **Slug = Verzeichnis-Name = Marketplace-Slug.** Genau dasselbe in cards-drafts/ und seed/. Slug-Validation in `cards/apps/api/src/lib/marketplace/slug.ts`. - **Quellen werden nicht mit-versioniert.** URLs in sources.md bleiben wie sie zum Skill-Run-Zeitpunkt waren. Wenn eine URL später dead ist, wird sie hier nicht ersetzt — der historische Wahrheits-Stand bleibt erhalten. - **`build_cards.py` ist die Wahrheits-Quelle, cards.jsonl der Output.** Bei Bug-Reports auf einer einzelnen Karte: in `build_cards.py` korrigieren, neu generieren, neuen Publish. - **Keine Geheimnisse hier.** Cardecky-PW liegt in `memory/ secret_cardecky_user.md` (chmod 600), nicht hier. Die `publish/deck.json`-Response enthält die Server-IDs, aber keine Auth-Token. ## Liste | Slug | Karten | Lizenz | Stand | |---|---|---|---| | `geografie-welt-top30` | 30 | CC0-1.0 | v1.0.0 (2026-05-09) | | `english-a2-grundwortschatz` | 500 | CC-BY-4.0 | v1.0.0 (2026-05-09) | | `periodensystem-elemente` | 118 | CC0-1.0 | v1.0.0 (2026-05-09) | CONTENT_PLAN-Stand: 3 / 20 Phase-1-Seed-Decks done. ## Wenn ein neuer Cardecky-Deck dazu kommt 1. Skill-Run via `/cards-deck`, Workspace unter `~/Documents/cards-drafts//`. 2. Nach Stage 5 published: `cp -R ~/Documents/cards-drafts/ docs/marketplace/seed/`. 3. Liste oben aktualisieren. 4. Commit als `seed: cardecky/ v1.0.0 — Karten`. ## Wenn eine Karte falsch ist 1. PR auf `/d/` direkt im Marketplace einreichen (User- facing Mechanik), Cardecky merged. 2. `build_cards.py` hier nachziehen, sodass eine Re-Generation denselben Stand liefern würde. 3. Commit als `seed/: card F-NNN korrigiert (Spiegelung von PR #X)`.