Skip to content
Skillv1.0.0

bbw-hko-3er-set

Native bbw-hko skill: transforms Swiss ABU vocational textbook content into a coherent 3er-Set Einheit and writes it directly into src/data/einheiten/{X.Y.Z}_{slug}/. Produces a Prinzip-Dokument, 3 va

by allgemeinbildung(0) 0 installs
Free
Sign in to install

Free account. Installing gives you the manifest plus copy-paste snippets.

See reviews

About

Imported from allgemeinbildung/bbw-hko (.claude/skills/bbw-hko-3er-set/SKILL.md). Install upstream with npx skills add allgemeinbildung/bbw-hko --skill bbw-hko-3er-set. Copyright stays with the author.

bbw-hko 3er-Set Generator — Prinzip-First + KN-Backwards

Transforms Swiss ABU Lehrmittel content into HKO 3er-Set Einheiten for bbw-hko — a Prinzip-Dokument plus 3 validated Herausforderung JSONs plus a Set-Dokument plus an inline Kompetenznachweis plus a Lehrperson-Begleitdokument — written directly into src/data/einheiten/{X.Y.Z}_{slug}/.

The architecture is Prinzip-first AND KN-backwards: before any Herausforderungen are generated, a prinzip.json defines the shared red thread for the 3er-Gruppe — Kern-Versprechen, Herausforderungen, SK-Schnittmenge, Mehrdeutigkeits-Architektur, Hybrid-Herausforderung-Spec. All 3 Herausforderungen carry an anchor back to this Prinzip. The KN is generated inline as Phase 4 — no downstream skill, no handoff. It consists of one Hybrid-Herausforderung that combines the three Lernaufgaben-Prinzipien plus three KN-Typen (Fachgespraech, Mini Case schriftlich, Werkschau + Transfer-Reflexion) plus one bi-dimensional rubric.


Schema-Compliance (zwingend, nicht verhandelbar)

Die generierten JSONs landen pro Einheit in src/data/einheiten/{X.Y.Z}_{slug}/ und werden vom Einheiten-Loader (src/lib/einheiten/index.ts) sowie dem Index-Build (scripts/build-einheiten-index.mjs) gelesen. Sie tragen template: "default_4page_v3" (Gold-Layout, Standard fuer neu generierte Einheiten seit 2026-08; "default_4page_v2" bleibt den publizierten Bestands-Einheiten bis zu deren Migration). Zwei Konsumenten, zwei Sichtbarkeiten: DocS rendert den Schuelerbogen, src/lib/einheiten/deck-builder.ts das Unterrichtsdeck fuer die Lehrperson. Die LP-Felder leitfragen[].loesung (C10) und handlungsprodukt.musterloesung (C7) speisen ausschliesslich das Deck und duerfen nie im Schuelerbogen landen.

Wahrheits-Quellen (in dieser Reihenfolge):

  1. assets/mission-template.json — vollstaendige Skelett-Struktur fuer eine Herausforderung (mit allen 3er-Anpassungen: 4-Zeilen-bewertungsraster mit vollstaendig_wenn, handlungsprodukt.scaffolding, neue 3er-Felder, ohne gruppenpuzzle/vorgespraech, ohne emotion_tag).
  2. assets/prinzip-template.json — Prinzip-Struktur (3 Herausforderungen, hybrid_situation_spec, kein kn_vorgabe).
  3. assets/set-template.json — Set-Dokument-Struktur (austausch_phase, dekontextualisierungs_aufgabe).
  4. assets/kn-template.json — KN-Dokument-Struktur (Hybrid + 3 Typen + bi-dim Rubrik).
  5. references/json-field-mapping.md — Feld-fuer-Feld-Vorgaben mit Datentyp, Quelle, Beispiel.
  6. src/data/einheiten/1.1.1_konflikt_kommunizieren/herausforderung_A.json — kanonische 5er-Referenz fuer renderer-konforme Strukturen (Felder, die zwischen 5er und 3er gleich sind).

Verbotene Aenderungen am JSON-Schema:

  • Felder umbenennen (text vs. frage, bloom vs. k_stufe, titel vs. label, punkte vs. inhalte, mindmap_zentrum flat vs. nested mindmap.zentrum)
  • nrlp.gesellschaft als Object statt Array
  • handlungsprodukt.schritte als Strings statt {label, hint}-Objekten
  • template aendern (Standard fuer NEUE Einheiten ist "default_4page_v3". KORREKTUR 2026-09: die Bogen-Kopplungs-Felder brauchen v3 NICHT — im Auftrag stehen zwei Leitfragen pro Seite, die Rail passt auf v2 wie auf v3. isV3() verschiebt nur die Checkliste. Bestands-Einheiten auf v2 duerfen bleiben.)
  • gruppenpuzzle_fragen oder vorgespraech_fragen in sit_*.json einfuegen (wandern auf Set-Ebene)
  • bewertungsraster mit Transfer-Zeile oder ohne vollstaendig_wenn (C1: genau 4 Zeilen — Leitfragen/Mindmap/Handlungsprodukt/Reflexion — je mit 2-4 vollstaendig_wenn-Bullets; der Transfer lebt im set-level Austausch-&-Transfer-Dokument)
  • emotion_tag neu generieren (C1: deprecated, wird nicht mehr gerendert; bestehende Werte bleiben stehen)

Verbotene Aenderungen am Frontend-Text (Umlaut-Regel, NEU in v1.4 — verbindlich):

Alle Prosa-Felder, die im Frontend gerendert werden, MUESSEN echte Umlaute ä/ö/ü/Ä/Ö/Ü verwenden. Transliteration (ae/oe/ue/Ae/Oe/Ue) in Prosa ist ein Bug, kein Stil. Eszett ß bleibt verboten — immer ss.

Prosa-Felder (vollstaendige Liste, Pre-Write-Scan Pflicht):

Datei Felder
sit_*.json titel, situation_text, leitfrage, leitfragen_intro, leitfragen[].text, mindmap_zentrum, mindmap_aeste[].text, handlungsprodukt.{titel, format_detail, beschreibung, schreib_label, schreib_note}, handlungsprodukt.schritte[].{label, hint}, reflexion_fragen[].text, mehrdeutigkeit.{trade_off, hint}, dekontextualisierung.{frage, ziel}, prinzip_handoff.{kernkonzept, lehrmittel_anker, kn_aktivierung, transfer_check}, sk_anker[].wo, persona.{beruf, betrieb, ort}, zahlen_tabelle[].label, bewertungsraster[].kriterium, wochen_plan[].text, quellen_anker.chapters[], quellen_anker.konzepte[], lernfortschritt.*
prinzip.json kern_kompetenzversprechen, herausforderungen[].{herausforderung, konfliktart, handlungsprodukt_typ}, mehrdeutigkeits_architektur.{trade_off_raum[], verbindlich}, dekontextualisierungs_anker.{anker_statement, transferfeld}, aspekte Werte-Strings, quellen_anker.{chapters[], konzepte[]}
set.json austausch_phase.*, dekontextualisierungs_aufgabe.*, konzept_progression[].konzept
kn.json hybrid_situation.{titel, text, leitfrage, alignment_note.*}, kn_typen[].fragestruktur[].frage, kn_typen[].aufgaben[].aufgabe, kn_typen[].reflexionsfragen[], rubrik_shared.kriterien[].{name, stufen[].text, niveaubaender[].text}
begleiter.md Alle sichtbaren Prosa-Abschnitte, Tabellen-Zellen, Callouts, Headings

NICHT betroffen (Transliteration bleibt zwingend):

  • id, prinzip_ref, kn_ref, set_ref, anchored_situations[], herausforderungen[]
  • topic_slug, alle Filenames, Pfade
  • JSON-Object-Keys, HTML-Class-Names
  • nrlp.modul, modul_titel (NRLP-Kuerzel)
  • Interne Lookup-IDs (z.B. abteilung, beruf_id, ort_id, node_id)
  • wissensknoten[] (Slug-Form)

Validierung (verschaerfte Form von Phase 2 Pre-Write-Spellcheck):

  1. Vor jedem JSON-Write: regex-Scan jedes Prosa-Feldes nach Pattern /(ae|oe|ue|Ae|Oe|Ue)/ ausserhalb von Eigennamen-Whitelists (z.B. Aarau, Olten — Whitelist in _common_misspellings.md)
  2. Bei Match: Pauschal-Transliterations-Tabelle aus references/_common_misspellings.md Section „Pauschal-Transliterations-Fixes" anwenden
  3. Wenn nach Auto-Fix noch verdaechtige Sequenzen bleiben: WARN_UMLAUT_RESIDUE + Stelle ausgeben, User reviewt
  4. Bei Fund von ß: ERR_ESZETT_FOUND — Auto-Fix zu ss

Prosa-Begriff Trade-off → Zielkonflikt / Spannungsfeld (verbindlich, NEU):

In allen gerenderten Prosa-Feldern (Liste oben + begleiter.md) ist der Anglizismus „Trade-off" verboten — er ist fuer Lernende schwer nachvollziehbar. Er ist die Operationalisierung der Schluesselkompetenz SK11 „Mehrdeutigkeit" und wird im Text durch Zielkonflikt (wenn benannt/entschieden wird) oder Spannungsfeld (wenn die Spannung/der Raum gemeint ist; deckt sich mit dem Renderer-Callout SPANNUNGSFELD) ersetzt. Vollstaendige Regel + Wann-welcher-Begriff: references/language-rules.md §5.4. JSON-Keys (trade_off_raum, mehrdeutigkeit.trade_off, aktivierte_trade_offs …), Fehler-/Warncodes (ERR_* / WARN_*) und die Feld-Werte (Form „X vs. Y") bleiben unveraendert — nur das sichtbare Wort wird ersetzt.

Erlaubte additive Ergaenzungen:

  • prinzip_ref, herausforderung, mehrdeutigkeit, dekontextualisierung, zirkularitaet_anker, quellen_anker, lernfortschritt (Prinzip-First-Felder, additiv)
  • prinzip_handoff, sk_anker, lehrgang (NEU im 3er-Set)

Fixwerte:

  • template: "default_4page_v3"
  • wochen: 3
  • legacy / source_refs / registry_tags: {}
  • bewertungsraster: 4 Eintraege (siehe assets/mission-template.json), je mit vollstaendig_wenn (2-4 Bullets); keine Transfer-Zeile; gewicht/abgabe optional und unrendered
  • handlungsprodukt.scaffolding: {satzanfaenge, strategien, struktur}, je >=1 Eintrag (ausgerichtet am HP-Format + Output-Sprachmodus)
  • leitfragen[].nr: Integer 1-4
  • leitfragen[].feld_hoehe_mm: 15
  • leitfragen[].loesung: {kern, zeilen[{label?, text, quelle?}]} — 3-6 Zeilen, zusammen max. ~900 Zeichen (C10)
  • reflexion_fragen[].feld_hoehe_mm: 10, sub: null
  • mindmap_aeste: 4 Items, Ast 4 mit optional: true
  • handlungsprodukt.schritte: 5 Items, je {label, hint} Objekt

Downstream-Felder (NICHT in dieser Skill erzeugen):

  • ki_vertiefung → wird von .claude/skills/hko-ki-vertiefung-generator/ (oder einem 3er-Pendant) nachtraeglich geschrieben
  • scaffolding (top-level KI-Scaffolds) → wird von .claude/skills/hko-scaffolding-generator/ (oder einem 3er-Pendant) nachtraeglich geschrieben. NICHT zu verwechseln mit handlungsprodukt.scaffolding (satzanfaenge/strategien/struktur), das seit dem Auftrag/Dossier-Redesign (C6) DIREKT in Phase 2 erzeugt wird.

Diese Skill produziert das Kern-Set-JSON ohne ki_vertiefung und ohne top-level scaffolding (aber MIT handlungsprodukt.scaffolding).

Output — alle Dateien in src/data/einheiten/{X.Y.Z}_{topic_slug}/, unpraefixierte Namen:

  • prinzip.json — roter Faden
  • herausforderung_A.json, herausforderung_B.json, herausforderung_C.json — 3 Herausforderung-JSONs
  • set.json — Set-Dokument (Austausch + Transfer)
  • kn.json — Kompetenznachweis (Hybrid + 3 Typen + Rubrik)
  • begleiter.md — Lehrperson-Begleitdokument (vollstaendiges Markdown-Kompendium)

KANONISCHE NAMEN (Stand 2026-06, verbindlich): Dateien herausforderung_{A|B|C}.json, id: {X.Y.Z}_{topic_slug}_hf_{LETTER}, Buchstaben-Feld buchstabe, Set-Array herausforderungen[], KN-Array anchored_situations[]. Jede sit_*/_sit_{LETTER}-Kurzform in diesem Skill und in den References meint diese Herausforderung-Dateien. bbw-hko (scripts/build-einheiten-index.mjs + src/lib/einheiten/index.ts) lädt ausschliesslich herausforderung_A/B/C.json — ein sit_A.json-Deployment würde stillschweigend NICHT geladen.

Alle Outputs landen in src/data/einheiten/{X.Y.Z}_{topic_slug}/. Danach nur noch Index-Rebuild (siehe DEPLOYMENT am Ende).

Templates (in assets/)

  • mission-template.json — Struktur fuer eine Herausforderung
  • prinzip-template.json — Prinzip-Dokument
  • set-template.json — Set-Dokument
  • kn-template.json — KN-Dokument

References (in references/)

  • prinzip-architecture.md — Phase 0.5 Design-Regeln
  • kn-architecture.md — Phase 4 Design-Regeln (Hybrid-Herausforderung, 3 KN-Typen, Rubrik)
  • json-field-mapping.md — Feld-fuer-Feld Mapping
  • coherence-checklist.md — 32 Checks v2.4 (Phase 2: 1-9+14+17-WARN+18-Sit+19-24+30+31+32, Phase 4: 10-13+15-16-WARN+18-KN, Phase 5/Begleiter: 25-29)
  • references/_common_misspellings.md — Bekannte Spell-Halluzinationen, Pre-Write-Check-Liste
  • hko-framework.md — 12 SK, 9 Sprachmodi, 8 Aspekte, 8 Themen, Bloom, IPERKA, AViVA, bi-dim Rubric
  • language-rules.md — Swiss Standard German, ICH-Perspektive, verbotene Phrasen
  • _migration_notes.md — 5er-zu-3er Delta-Doku

Input Format

Der User gibt drei Dinge:

  1. NRLP-Subkapitel-Referenz — String in X.Y.Z-Format (z.B. 2.1.2 fuer «Manipulation und Desinformation erkennen»)
  2. Lehrgang — eines von EBA_2J / EFZ_3J / EFZ_4J (default EFZ_3J, wird in Phase 2 erfragt falls nicht im Input)
  3. Textbook chapter texts — als Pfad oder Inline-Paste
  4. Fokus-Hinweis (optional) — kurze Phrase, die die Linse des Sets signalisiert (z.B. „Kommunikation", „Marktlogik", „Identitaet")

Wenn der User keinen Fokus angibt: Skill schlaegt in Phase 0.5 drei Kandidaten vor.

Lehrmittel Source Files

Textbook chapters liegen unter material/_lehrmittel/ (Ausgabe LM-26, 73 Kapitel) mit Page-Markers [seite: XX]. Dateinamen: {kap}_{Titel_mit_Unterstrichen}.md.

Lookup: ausschliesslich ueber references/nrlp-lehrmittel-crosswalk.md.

nRLP-Nummerierung und Lehrmittel-Nummerierung sind zwei unabhaengige Systeme. Aus nRLP X.Y.Z folgt nicht Lehrmittel-Kapitel X.YnRLP 2.1.2 (Desinformation) wuerde sonst 2.1 Lohnbestandteile ziehen statt 7.1 Medien / 20.7 Medienkompetenz. Nur in T1 faellt die Kollision zufaellig nicht auf. Niemals den Dateinamen aus der nRLP-Nummer ableiten.

Der Crosswalk ist nach Lehrgang und Lebensbezug geschluesselt — 3J und 4J nummerieren unterschiedlich (Konsum ist 3.1 im 3J, aber 1.3 im 4J). Fehlt ein Lebensbezug in der Tabelle: nicht raten, sondern ueber Kapiteltitel suchen, der Lehrperson vorlegen und den Crosswalk danach ergaenzen.


Six-Phase Workflow

PHASE 0     NRLP-Lookup                     → nrlp Extraktion, Kapitel-Index
PHASE 0.5   Prinzip-Formulierung            → prinzip.json (roter Faden)
PHASE 1     Herausforderung-Ideation (3 facets)   → 6 Optionen anchored an 3 Herausforderungen
PHASE 2     JSON-Generation (3 Herausforderungen) → 3 sit_*.json mit prinzip_ref
PHASE 3     Set-Dokument                    → set.json (Austausch + Transfer)
PHASE 4     KN-Generierung (INLINE)         → kn.json (Hybrid + 3 Typen + Rubrik)
PHASE 5     Begleiter-Dokument              → begleiter.md (vollst. Lektion-fuer-Lektion Kompendium)
DEPLOY      Index-Rebuild                   → npm run build:einheiten-index

Jede Phase finished bevor die naechste startet. Nach Phase 0.5 (Step 3), nach Phase 1 (Selektion), in Phase 4 Step 2 (Hybrid-Herausforderung-Approval) und in Phase 2 bei jeder knoten_ref-Ausnahme ueber 3 Seiten (Check 31) stoppt die Skill und wartet auf User-Input. Phasen 3 und 5 laufen sequentiell ohne Confirmation; Phase 2 ebenfalls, ausser es faellt eine knoten_ref-Ausnahme an. Phase 4 darf isoliert nachgezogen werden, wenn Phasen 0-3 bereits gelaufen sind. Phase 5 darf ebenfalls isoliert nachgezogen werden, wenn Phasen 0-4 bereits abgeschlossen sind.


PHASE 0 — NRLP-Lookup

NRLP X.Y.Z parsen, den zum Lehrgang passenden Datensatz lesen (EFZ_3Jpublic/nrlp_3j.json, EFZ_4Jpublic/nrlp_4j.json, EBA_2Jpublic/nrlp_2j.json — siehe Addendum §B; es gibt keine Datei nrlp.json), hierarchisch extrahieren (Thema → Lebensbezug → Kompetenz), Kapitel-Index aus [seite: XX]-Markers bauen.

Step 1 — Parse: thema_nr = X, lebensbezug_nr = "X.Y", kompetenz_nr = "X.Y.Z", modul = "X.Y".

Step 2 — Extract:

Level Felder
Thema titel, leitidee, Schluesselkompetenzen → Step 2a
Lebensbezug text, lektionen
Kompetenz text, gesellschaftliche_inhalte[], sprachmodi[]

Step 2a — Thema-SK aus der Zirkularitaet ableiten, nicht aus themen[] (verbindlich, NEU):

Die SK eines Themas stehen im Datensatz zweimal:

  • themen[].schluesselkompetenzen — Array von SK-Langtexten
  • zirkularitaet.schluesselkompetenzen[].wiederholungen — Map SK → {"T5": "R2", …}; spiegelt die SK-Spirale auf S. 5 des Bildungsrats-SLP

Die beiden sind schon einmal auseinandergedriftet: von 2026-06-14 bis 2026-08-16 fuehrte nrlp_4j.json fuer T5 eine SK, wo die Spirale sechs nennt (T4: 5 statt 7, T6: 4 statt 5). Wer nur themen[] liest, baut die Einheit auf einer zu schmalen SK-Basis auf — und nichts schlaegt fehl, das Set wirkt bloss duenn. Genau so ist der Fehler im August 2026 aufgefallen.

Regel: Die Thema-SK-Liste immer aus zirkularitaet.schluesselkompetenzen[].wiederholungen['T{X}'] ableiten. themen[].schluesselkompetenzen dient nur als Gegenprobe und liefert die Langtexte.

  • Beide Listen gleich lang und deckungsgleich → weiter.
  • Abweichung → WARN_SK_DRIFT ausgeben (beide Listen zeigen, R-Stufen mitliefern), die Zirkularitaets-Liste verwenden und Pietro informieren, damit der Datensatz repariert wird. Nicht stillschweigend weiterarbeiten und nicht selbst am Datensatz herumschreiben.

Repo-seitiger Waechter: npm run check:nrlp (scripts/check-nrlp-consistency.mjs) laeuft als erster Prebuild-Schritt und bricht ab, wenn die beiden Seiten sich widersprechen oder ein SK-Langtext nicht exakt einem der zwoelf kanonischen Strings entspricht. Bei Zweifeln am Datensatz einmal laufen lassen. Hintergrund: docs/nrlp-4j-sk-bug-2026-08.md.

Step 3 — Derive nrlp-Felder: siehe references/json-field-mapping.md Paragraph 1.

Step 4 — Kapitel bestimmen + Index bauen. Zuerst references/nrlp-lehrmittel-crosswalk.md fuer (lehrgang, lebensbezug_nr) nachschlagen — nie die Datei aus der nRLP-Nummer raten. Dann Kapitel-Index aus [seite: XX]-Markers bauen. Bei fehlenden Markers: Fallback-Modus mit "Kap. X.Y" ueberall.

Fehlt die Zeile oder bestehen Zweifel: Gegenlesung mit dem NotebookLM-Notebook «Allgemeinbildung26» — Vorgehen, Query-Vorlage und Filterregeln im Abschnitt «Gegenlesung mit NotebookLM» desselben Crosswalks. Der Notebook fuettert die Tabelle, er ersetzt sie nicht: Ergebnis eintragen, Aenderungsprotokoll nachfuehren, danach mit der Tabelle weiterarbeiten. Nicht bei jeder Generierung live abfragen — das macht Einheiten unreproduzierbar.

Step 5 — Confirm + proceed zu Phase 0.5:

NRLP X.Y.Z geladen:
Thema: T{X} — {titel}
Lebensbezug: {X.Y} — {text}
Kompetenz: {kompetenz.text}
Gesellschaft: {aspekte mit iterationen}
Sprachmodi: {liste}
SK (Thema-Ebene, aus Zirkularitaet): {nummern + namen + R-Stufe}
  Gegenprobe themen[]: {deckungsgleich | WARN_SK_DRIFT — Abweichung benennen}
Kapitel-Index: {Liste}

PHASE 0.5 — Prinzip-Formulierung

Read references/prinzip-architecture.md fuer Design-Regeln. Read assets/prinzip-template.json fuer Zielstruktur.

Step 1 — Drei Kandidaten-Kern-Versprechen vorschlagen

Aus Chapter-Content + NRLP-Kompetenz-Text drei Kandidaten ableiten. Jeder Kandidat:

  • Ein Satz, ICH-Perspektive
  • Endet auf K3- oder K4-Verb
  • Paraphrasiert mindestens ein Aktionsverb der Kompetenz
  • Impliziert eigenen SK-Schwerpunkt (unterscheidbar von den anderen Kandidaten)
  • Ermoeglicht Mehrdeutigkeit (Spannungsfeld-Raum, der ueber 3 Herausforderungen traegt)

Praesentiere als kompakten Block:

Drei moegliche Kern-Versprechen fuer das 3er-Set X.Y.Z:

1) {KANDIDAT 1 IN GROSSBUCHSTABEN}
   "{Ich-Satz, K3/K4-Verb}"
   SK-Kern: {2 Nummern}, Modi: {schriftlich/muendlich/audiovisuell}, Mehrdeutigkeit: {zielkonflikt}
   3 Herausforderungen leicht differenzierbar / mittel / schwer

2) {KANDIDAT 2}
   ...

3) {KANDIDAT 3}
   ...

Welcher Kern soll der rote Faden werden? (1, 2 oder 3)
Wenn keiner passt, beschreib in einem Satz, was du suchst.

Stop. Wait for user selection.

Step 2 — Selektion zu Prinzip expandieren

Vollstaendiges prinzip.json gemaess assets/prinzip-template.json. Felder:

Feld Inhalt
id "{X.Y.Z}_{topic_slug}_prinzip"
modul / kompetenz_nr / lehrgang aus NRLP / User-Input
topic_slug abgeleitet aus Chapter + Fokus, snake_case, ohne Umlaute, 2-4 Worte
kern_kompetenzversprechen gewaehlter K3/K4-Satz in ICH-Form
bloom_zielprofil LF1=K2, LF2=K3, LF3=K3, LF4=K3+/K4 (verbindlich fuer Phase 2)
herausforderungen 3 Eintraege A/B/C, je {herausforderung, konfliktart, handlungsprodukt_typ, transferrable: true}
sk_pro_situation provisorisch je 2-3 SK pro A/B/C
sk_schnittmenge_kn.primary SK in >=2 der 3 Herausforderungen (kein secondary)

Step 2a — Aspekt-Antizipation aus Konfliktarten

NACH Definition der drei herausforderungen[*].konfliktart, VOR Befuellung von aspekte. Pruefe jede Konfliktart gegen folgende Heuristik:

Konfliktart-Signalwort Aktivierter Aspekt
fair / gerecht / ethisch / Verantwortung / Werthaltung Ethik
Recht / Regel / Vorschrift / Pflicht / Vertrag Recht
Identitaet / Rolle / Zugehoerigkeit / Sozialisation Identitaet und Sozialisation
Umwelt / Ressource / Bilanz / CO2 / Nachhaltigkeit Oekologie
Markt / Preis / Wert / Konsum / Wertschoepfung Wirtschaft
Macht / Politik / Regulation / Staat Politik
Digital / Technologie / Automatisierung Technologie und digitale Transformation
Kultur / Tradition / Norm-Konflikt Kultur

Strikte Anwendung (NEU in v1.2): Die Heuristik greift NUR, wenn das Signalwort in der herausforderungen[*].konfliktart-String selbst auftaucht — nicht in situation_text, nicht in reflexion_fragen, nicht in irgendeinem anderen Sit-Inhalt.

Wenn ein Aspekt didaktisch wichtig ist, aber das Signal NICHT in der konfliktart liegt: die konfliktart umformulieren, sodass das Signal explizit wird. Beispiel: "Marktlogik vs. knappe Ressourcen + Ich-Konsumreflexion" aktiviert Identitaet und Sozialisation legitim.

Reine narrative Praesenz (z.B. Ich-Form in situation_text) ist KEIN Aspekt-Aktivator.

prinzip.aspekte wird befuellt mit:

  • NRLP-Aspekten aus nrlp.kompetenz.gesellschaftliche_inhalte[]
  • PLUS allen Aspekten, die durch mindestens eine konfliktart aktiviert werden (Signalwort muss im konfliktart-String enthalten sein)

Bei Review (Step 3) explizit ausgewiesen (mit Begruendung):

Aspekte (mit Begruendung):
  - Wirtschaft (NRLP-Kompetenz, R1)
  - Oekologie (NRLP-Kompetenz, R1)
  - Ethik (antizipiert: Herausforderung B konfliktart 'fair/Verantwortung'
     → Signal 'Verantwortung')
  - Identitaet und Sozialisation (NICHT antizipiert — kein Signal in
     konfliktart_A/B/C)

Pietro kann jeden antizipierten Aspekt einzeln entfernen, oder die
konfliktart-Formulierung anpassen, damit ein neuer Aspekt legitim
aktiviert wird.

User kann widersprechen und das Set anpassen.

| aspekte | Object aspekt → R-Stufe | | modi_units / modi_kn | siehe Template |

modi_units-Befuellung (gefiltert, v1.1):

  1. Kandidaten = nrlp.kompetenz.sprachmodi[].modus
  2. Filter: nur Modi, die durch mindestens ein herausforderungen[*].handlungsprodukt_typ aktiv trainiert werden (Heuristik siehe coherence-checklist.md Check 5a)
  3. modi_units = gefilterte Liste

modi_kn-Befuellung:

modi_kn = modi_units (Pflicht-Obermenge) ∪ {Produktion muendlich, Interaktion und Kollaboration muendlich} (fuer Fachgespraech-KN-Typ) ∪ {Produktion schriftlich und bildlich, Rezeption schriftlich und bildlich} (fuer Mini Case schriftlich) | mehrdeutigkeits_architektur | trade_off_raum[] (>=2), verbindlich (Regel) | | dekontextualisierungs_anker | generisches Prinzip-Statement + Transferfeld | | zirkularitaet | r1_aktuell, r2_voraussicht, r3_voraussicht | | quellen_anker.chapters[] / .konzepte[] | Lehrmittel-Anker + Vokabular | | persona_pool_units / persona_pool_kn_neu | entfallen (Persona-Regel 2026-09) — Personas sind neutral, Stufe 1 oder 2 | | hybrid_situation_spec | Constraints fuer Phase 4 (max 120 Woerter, ICH, must_activate_trade_offs_min: 1, ...) |

Personas: neutral, in zwei Stufen (Persona-Regel 2026-09, verbindlich).

Es werden keine berufsspezifischen Personas mehr erzeugt — weder in den drei Herausforderungen noch in der Transfer-Aufgabe noch im Kompetenznachweis. Grund ist nicht Stil, sondern Reichweite: Unter Variante C (Jigsaw) sieht eine lernende Person genau eine Herausforderung. Eine rotierende Berufspersona trifft dort in einer gemischten Klasse fast immer den falschen Beruf und schliesst den Rest aus. Ausserdem zieht eine Berufspersona die Aufgabe zu Daten hin, die nur sie hat — der haeufigste Ursprung von Vorlauf-Verstoessen (Check 34).

Die Konkretheit wandert von der Person in das Ereignis und die Zahlen. Zwei zulaessige Stufen, pro Herausforderung genau eine:

Stufe persona Woher die Konkretheit kommt Wann
1 — eigener Kontext {beruf: "Lernende/r EFZ, N. Lehrjahr", betrieb: "eigener Lehrbetrieb", ort: "eigener Wohnort"} die lernende Person setzt ihren eigenen Fall ein Standard. Deckt auch Betriebs-Themen ab: Arbeitsrecht, Konflikt, Lehrvertrag — jede lernende Person hat einen Betrieb, und der eigene ist konkreter als ein erfundener
2 — gemeinsamer Fall dieselbe neutrale Persona ein konkreter aeusserer Fall im situation_text: eine Abstimmungsvorlage, ein Vertragsauszug, ein Aushang, eine Etikette wenn alle denselben Fall brauchen, um vergleichen zu koennen — Recht, Politik, Wirtschaft

Bei EBA analog mit "Lernende/r EBA, N. Lehrjahr".

Auffangformulierung Pflicht. Nicht alle haben einen Lehrbetrieb (zwischen zwei Vertraegen, schulisch organisierte Grundbildung). Wo der situation_text oder ein schritte[].hint den Betrieb braucht, steht die Alternative dabei: «in Ihrem Lehrbetrieb — oder dort, wo Sie zuletzt gearbeitet haben».

Die Gegenprobe, die den Unterschied macht. Neutral heisst nicht blass. Nimm den situation_text und streiche den Beruf: Bleibt eine Situation mit Reibung stehen? Wenn nicht, trug nicht der Beruf die Situation, sondern es gab keine. Positivbeispiel im Bestand: 1.1.1_ausbildung_erfassen_zeigen A — «Gestern kam per Post das ueK-Aufgebot fuer zwei Tage im November, im Betrieb sagt man mir, davon wisse niemand etwas.» Kein Beruf, trotzdem ein Konflikt mit Datum und Beteiligten. Negativbeispiel: 1.3.1_konsum_verantworten A nannte «Informatiker/in EFZ in Winterthur» in einer Situation ueber Kopfhoererkauf — der Beruf kostete die Identifikation aller anderen und trug nichts.

Was damit entfaellt: persona_pool_units, persona_pool_kn_neu, die Abteilungs-Mix-Pflicht, der Pool-Vollverbrauch (Check 14), die Disjunktheits-Pruefung zwischen Unit- und KN-Persona (Check 9 / Check 11) und die Fehlercodes ERR_PERSONA_NOT_CANONICAL, ERR_PERSONA_ABTEILUNG_MONO, ERR_PERSONA_DUPLICATE_USE, ERR_PERSONA_POOL_MISUSE, WARN_PERSONA_KN_NEU_NO_NEW_ABTEILUNG. Die Kanonischen-Lehrberufe-Tabelle in references/hko-framework.md §11 bleibt als Nachschlagewerk bestehen, wird aber fuer die Generierung nicht mehr gebraucht.

Auch der Kompetenznachweis ist neutral (Entscheid Pietro, 2026-09-04). Das kostet etwas: Ein fremder Kontext im KN war bisher Teil des Transfer-Tests. Der Transfer wird jetzt ueber die Sache hergestellt, nicht ueber die Person — die hybrid_situation muss einen Fall bringen, den die Lernenden in den drei Herausforderungen nicht bearbeitet haben (Stufe 2). Vorbild im Bestand: 3.2.1_ernaehrung_nachhaltig_gestalten — neutrale Persona, aber der Fall «Der Automat und die 40 Prozent» ist neu und zwingt zur Uebertragung.

Step 3 — User Review (Markdown, nicht raw JSON)

PRINZIP {X.Y.Z}_{topic_slug}

Kern: "{kern_kompetenzversprechen}"

Herausforderungen:
  A: {herausforderung} — {konfliktart} → {handlungsprodukt_typ}
  B: ...
  C: ...

SK-Architektur:
  Pro Unit: A={sk}, B={sk}, C={sk}
  KN-Schnittmenge (primary, SK in >=2/3): {sk}

Aspekte (mit Begruendung):
  {fuer jeden NRLP-Aspekt: "- {aspekt} (NRLP-Kompetenz, R{stufe})"}
  {fuer jeden antizipierten Aspekt: "- {aspekt} (antizipiert: Herausforderung {X} konfliktart '{signal}' → Signal '{wort}')"}
  {wenn kein Signal: "- {aspekt} (NICHT antizipiert — kein Signal in konfliktart_A/B/C)"}

Pietro kann jeden antizipierten Aspekt einzeln entfernen, oder die
konfliktart-Formulierung anpassen, damit ein neuer Aspekt legitim
aktiviert wird.

Mehrdeutigkeit (Spannungsfelder):
  - {trade_off_1}
  - {trade_off_2}
  ...

Transfer-Anker:
  "{generisches Prinzip}"

Hybrid-Herausforderung-Spec:
  max 120 Woerter, ICH, mind. 1 Spannungsfeld, neutrale Persona (Stufe 1 oder 2); der FALL muss neu sein

Personas:
  Units (3): {berufe + orte}
  KN-neu (2): {berufe + orte}

Passt das? (ja / Aenderungen)

Stop. Wait for user approval.

Step 4 — Save Prinzip

Schreibe src/data/einheiten/{X.Y.Z}_{topic_slug}/prinzip.json. Confirm: ✓ {X.Y.Z}_{topic_slug}/prinzip.json gespeichert. Proceed zu Phase 1.


PHASE 1 — Herausforderung-Ideation

Niemals JSON oder HTML in Phase 1 generieren.

Step 1 — 6 Optionen (2 pro Herausforderung A/B/C)

Pro Herausforderung zwei Kandidaten-Herausforderungen. Jeder Kandidat:

  • Matched die Konfliktart + Handlungsprodukt-Typ der Herausforderung
  • ICH-Perspektive
  • K3/K4 (kein purer K1)
  • Neutrale Persona nach Stufe 1 oder 2 — nie ein spezifischer Beruf
  • Mindestens ein Trade-off aus trade_off_raum
  • Konkrete Kapitel + Seite aus Kapitel-Index

Step 2 — Tabelle praesentieren

| # | Herausforderung | Titel | Emotion-Tag | Kern-Problem (ICH) | Handlungsprodukt | Quellen |
| 1 | A: {herausforderung} | "..." | Ueberraschung | Ich ... | {format} | Kap. X.Y S. NN |
| 2 | A: {herausforderung} | "..." | ... | ... | ... | ... |
| 3 | B: {herausforderung} | "..." | ... | ... | ... | ... |
| 4 | B: {herausforderung} | "..." | ... | ... | ... | ... |
| 5 | C: {herausforderung} | "..." | ... | ... | ... | ... |
| 6 | C: {herausforderung} | "..." | ... | ... | ... | ... |

Below:

Waehle eine Variante pro Herausforderung (z.B. „1, 3, 5" oder „2, 4, 6"). Bei Bedarf zwei neue Varianten fuer eine Herausforderung anfordern.

Stop. Wait for user selection.

Bei <3 Selektionen: abort mit Hinweis „Mindestens 3 Herausforderungen gewaehlt — sonst ist der Set-Austausch nicht durchfuehrbar und die Hybrid-KN ist nicht entwickelbar."


PHASE 2 — JSON-Generation

Read assets/mission-template.json + references/json-field-mapping.md.

Schritt 1 — Lehrgang bestaetigen. Falls noch nicht im User-Input: kurz erfragen (Default EFZ_3J).

Schritt 2 — Pro Herausforderung (A, B, C in Selektions-Reihenfolge) fuellen:

Feld Quelle
id {X.Y.Z}_{topic_slug}_hf_{LETTER}
modul / modul_titel NRLP
lehrgang User-Input
buchstabe A/B/C
sit_farbe/_light/_mid Farb-Triple-Tabelle (json-field-mapping.md)
titel aus Phase 1 (kein emotion_tag mehr generieren — C1)
wissensknoten mind. 1 node_id-Slug
nrlp.* aus Phase 0 (sk situationsspezifisch!)
persona neutral: {beruf: "Lernende/r EFZ, N. Lehrjahr", betrieb: "eigener Lehrbetrieb", ort: "eigener Wohnort"} — Stufe 1; bei Stufe 2 identisch, der Fall steht im situation_text

Mehrfachabdeckung (B1): nrlp.nr_primary listet die Kompetenz-Nummern, die diese Herausforderung tatsächlich übt/prüft. Default = nur die Primär-Kompetenz ["{X.Y.Z}"]. Deckt die Herausforderung nachweislich eine weitere nRLP-Kompetenz mit ab, deren Nummer ergänzen (z. B. ["1.1.1","1.1.3"]). Welche Sekundär-Kompetenzen gelten, entscheidet Pietro — nicht raten; im Zweifel nur Primär.

Persona-Verbrauchstracking (NEU in v1.1):

Beim Befuellen von herausforderung_{LETTER}.persona:

  • Alle drei Herausforderungen tragen dieselbe neutrale Persona. Kein Pool, keine Rotation, kein Verbrauch — die Unterscheidung zwischen A, B und C liegt in der Sache, nicht in der Person.
  • Pro Herausforderung Stufe 1 oder Stufe 2 waehlen und im situation_text durchhalten.
  • Gegenprobe vor dem Schreiben: Beruf aus dem situation_text streichen — bleibt eine Situation mit Reibung stehen? Wenn nicht, fehlt das Ereignis, nicht der Beruf.
  • Fehlerfall: ERR_PERSONA_SPEZIFISCH (ein Berufsname, Firmenname oder Ortsname statt der neutralen Form)

Schritt 2f — Autarkie-Klaerung (VOR allem anderen in Schritt 2, Autarkie-Regel 2026-09, verbindlich).

Stell dir vor dem Entwurf genau eine Frage: Was muss existieren, damit die erste Lektion dieser Herausforderung funktioniert? Ist die Antwort mehr als «das Blatt und das Lehrmittel», ist der Zuschnitt falsch — nicht die Formulierung.

  • Jede Herausforderung startet kalt. Sie verlangt nichts, was vor ihrer ersten Lektion existieren muesste, und nichts aus einer anderen Herausforderung. Das ist keine Stilfrage: Die Durchfuehrungs-Varianten B (Auswahl) und C (Jigsaw) geben einer lernenden Person genau eine der drei Herausforderungen. Jede harte Abhaengigkeit auf A bricht beide Varianten.
  • A traegt zusaetzlich eine Rolle: A ist der Einstieg, definitionsgemaess ohne Vorgeschichte. A darf Material erzeugen, das B und C weiterverwenden duerfen — als Angebot, nie als Bedingung. Wer B ohne A bearbeitet, darf nichts vermissen. Sichtbar gemacht wird das mit bereitet_vor (verbindlich immer false); im Text von B/C erscheint es als zweiter Satz («Haben Sie Herausforderung A bearbeitet, nehmen Sie …»), nie als erster.
  • Mehrtaegiges Material gehoert in den Bogen, nicht davor. Was ueber Tage entsteht — eine Erhebung, ein Beleg, eine Beobachtung — wird in der ersten Lektion angestossen und ist zur zweiten faellig. Es ist ein Schritt der Herausforderung mit LF-Absender, kein Vorlauf. wochen_plan W1 nennt den Anstoss, W2 die Auswertung.
  • Keine Abhaengigkeit von Dritten. «Erfragen Sie im Betrieb …» als Voraussetzung ist doppelt unzulaessig: Es ist ein Vorlauf, und es bestraft Lernende, deren Betrieb nicht antwortet. Als Angebot innerhalb der Lektion ist es erlaubt.

Fehlerfaelle: ERR_VORAUSSETZUNG_VOR_START · ERR_QUERVERWEIS_ALS_BEDINGUNG · WARN_SAMMELPHASE_OHNE_ANSTOSS (Check 34).

Schritt 2g — Gold-Reihenfolge: Handlungsprodukt VOR den Leitfragen (Bogen-Kopplung 2026-08, 4+1-Regel 2026-09, verbindlich).

Der rote Faden Situation → Leitfragen → Methoden → Handlungsprodukt entsteht konstruktiv, nicht nachtraeglich (Gold-Referenz: 5.4.2_internationale_entscheide_wirken_4j — dort mussten die Luecken nachtraeglich geschlossen werden, weil die LFs vor dem Produkt geschrieben waren). Innerhalb von Schritt 2 gilt darum diese Erzeugungs-Reihenfolge, unabhaengig von der Feldreihenfolge im JSON:

  1. Erst das Ziel: handlungsprodukt vollstaendig entwerfen — format/titel/beschreibung aus prinzip.herausforderungen[LETTER].handlungsprodukt_typ, die abgaben, die 5 schritte (Labels + vorlaeufige hints), scaffolding.struktur.
  2. Die Kopplung ist Bauart, nicht Redaktion — 4+1: schritte[0..3] gehoeren index-treu zu leitfragen[0..3]. Schritt 1 ← LF1, Schritt 2 ← LF2, Schritt 3 ← LF3, Schritt 4 ← LF4. Es gibt keine Matrix und keine Wahl. schritte[4] ist der Kontrollschritt und hat bewusst keinen LF-Absender: Er prueft, er liefert nicht. Passen die vier Produktionsschritte nicht auf die vier Bloom-Sprossen, ist die Herausforderung zu breit geschnitten — dann den Zuschnitt kuerzen (einen Lehrmittel-Anker in eine andere Herausforderung geben), nicht einen fuenften Produktionsschritt erfinden.
  3. Der Kontrollschritt (schritte[4]) ist eng definiert, sonst wird er die neue Sammelstelle fuer alles ohne Absender:
    • erscheint nicht in abgaben[] — er erzeugt kein Produktteil,
    • sein hint verweist auf die vollstaendig_wenn-Kriterien des bewertungsraster,
    • Verifikationssprache («pruefen», «abgleichen», «gegenlesen», «eine Stelle ueberarbeiten»), nie Produktionssprache. Bei mündlichen Produkten wandert die Aufnahme auf Schritt 4 und der Kontrollschritt wird die Ueberarbeitungsschlaufe («Hoeren Sie Ihre Aufnahme gegen die Kriterien ab und nehmen Sie eine Stelle neu auf»). Damit bekommen die Lernenden das Bewertungsraster zum ersten Mal auf ihr eigenes Blatt.
  4. Leitfragen als Bestellungen schreiben: Jede LF wird aus ihrem Schritt heraus formuliert — die Frage bestellt genau den Baustein, den der Schritt braucht. liefert und scaffolding (inkl. produkt-Satz) entstehen im selben Zug wie der LF-Text, nie als Nachtrag. Eine LF traegt einen Auftrag. Drei Imperative in einem LF-Text heissen: Der Schritt ist zwei Schritte, oder ein Anker gehoert nicht hierher (WARN_LF_MEHRFACHAUFTRAG).
  5. Rueckweg zementieren: schritte[0..3].hint nennt den Absender woertlich («Uebernehmen Sie aus LF_n …»); handlungsprodukt.scaffolding.struktur verortet die LF-Bausteine (z. B. «Ausgangslage (Satz aus LF2)»); methoden[].tun und bewertungsraster[].vollstaendig_wenn erzaehlen dieselbe Kopplung — pro LF ein Kriterium, das ihren Beitrag prueft.
  6. Zuletzt der Auftakt: leitfragen_intro erzaehlt den Pfad durch die vier Kopplungen (welche LF welchen Baustein liefert). auftakt_typ waehlen — und dabei wissen, was das Feld tut: vorbereitung verschiebt den Absatz als Kasten auf Seite 1 und entfernt ihn von der Leitfragen-Seite; pfad und kontext lassen ihn ueber LF1 stehen und setzen nur eine Beschriftungszeile davor. vorbereitung darum nur, wenn auf Seite 1 wirklich etwas eingerichtet wird, das vor den Leitfragen gelesen werden muss. Im Zweifel pfad — sonst fehlt den Lernenden die Anleitung genau dort, wo sie zu arbeiten beginnen, und das merkt man erst am gedruckten Bogen.

| situation_text | 4-6 Saetze, Ich-Form (1. Person Singular), mit CHF/Fakten | | zahlen_tabelle | [] oder [{label, wert}] | | leitfrage (singular) | kondensierte Haupt-Frage | | leitfragen[] | 4 Items, K2/K3/K3/K3+ oder K4; LF4 = fokussierte Output-Sprachmodus-Teilaufgabe (ein Baustein), nicht das ganze Handlungsprodukt (C4). knoten_ref Richtwert 3 Seiten, Seitenzahlen aus echten [seite: NN]-Markern, Abschnitt ueber Ueberschriften bestimmen — nie den ganzen Kapitelbereich einsetzen. Mehr als 3 Seiten sind erlaubt, wenn der Inhalt wirklich verteilt steht, aber nur nach Ruecksprache (C9, Check 31). Je LF eine loesung {kern, zeilen[]} — Lehrpersonen-Antwort auf der Bloom-Stufe der Frage, aus dem knoten_ref-Abschnitt gehoben (C10, Check 32). Je LF ein liefert — 3-7 Woerter, nominal, ohne Verb: der Baustein des Handlungsprodukts, den diese LF liefert; jeder handlungsprodukt.schritte[]-Eintrag braucht mind. einen LF-Absender (Check 33). LF-Texte, liefert und scaffolding entstehen aus der Kopplungsmatrix von Schritt 2g — NACH dem Handlungsprodukt | | mindmap_zentrum / mindmap_aeste | flat top-level; genau 4 Aeste, Ast 4 optional: true (radial/Quadrant) | | handlungsprodukt.* | ZUERST erzeugen (Schritt 2g) — aus prinzip.herausforderungen[LETTER].handlungsprodukt_typ; inkl. scaffolding {satzanfaenge/strategien/struktur} (C6) und musterloesung {hinweis, abschnitte[]} (C7); schritte[].hint nennt den LF-Absender woertlich | | reflexion_fragen | Template-Defaults, situationsspezifisch anpassbar | | bewertungsraster | 4 Eintraege, je mit vollstaendig_wenn (2-4 Bullets); keine Transfer-Zeile (C1) | | wochen_plan | 3 Eintraege Template-Default | | Prinzip-First additiv | prinzip_ref, herausforderung, mehrdeutigkeit, dekontextualisierung, zirkularitaet_anker, quellen_anker, lernfortschritt | | NEU 3er | prinzip_handoff (kernkonzept, lehrmittel_anker, kn_aktivierung, transfer_check), sk_anker (Laenge == nrlp.sk.length) |

Validation pro Herausforderung (vor dem Schreiben):

  • Alle Renderer-Pflichtfelder gesetzt
  • id, prinzip_ref, herausforderung.label passen
  • nrlp.sk und sk_anker haben gleiche Laenge (Check 8)
  • Mindestens eine LF auf K3+/K4 (Check 7)
  • mehrdeutigkeit.trade_offprinzip.mehrdeutigkeits_architektur.trade_off_raum (Check 6 — alle 3 Pflicht)
  • Keine Eszett, keine gruppenpuzzle_fragen / vorgespraech_fragen, kein neu generiertes emotion_tag
  • bewertungsraster.length === 4, jede Zeile mit 2-4 vollstaendig_wenn; keine Transfer-Zeile (Check 19)
  • handlungsprodukt.scaffolding mit je >=1 Eintrag in satzanfaenge/strategien/struktur (Check 23)
  • handlungsprodukt.musterloesung mit 3-5 abschnitte, je {titel, zeilen[]}; pro Abschnitt max. ~900 Zeichen text (Check 30)
  • Jede leitfragen[] mit loesung (3-6 Zeilen, ~900 Zeichen); Sachaussagen durch den knoten_ref-Abschnitt gedeckt; Entscheiden-LF mit Alternativ-/Ausschluss-Zeile (Check 32)
  • Jede leitfragen[] mit liefert (3-7 Woerter, nominal, ohne Verb — der Produktbaustein, den diese LF liefert); schritte[i]leitfragen[i] index-treu fuer i = 0..3, schritte[4] ist Kontrollschritt ohne Absender (Check 33)
  • Kein LF-Text mit 3+ Arbeitsauftraegen (Imperativen); kein LF-Text, der einen Vorlauf-Vollzug und die eigene Bloom-Aufgabe zugleich verlangt (Check 34)
  • Voraussetzungsfreier Start: kein Verweis auf eine andere Herausforderung in tragender Position, kein Material, das vor der ersten Lektion existieren muss (Check 34)
  • Jede leitfragen[] mit scaffolding {strategien (1-2, Sie-Form, je ≤90 Z.), satzanfaenge (1-2, neutral/Ich-Form, je ≤60 Z.), produkt (1 Satz ≤110 Z., konsistent mit liefert)} — quellengebunden aus loesung/schritte/handlungsprodukt.scaffolding gehoben (Rail auf Seite 2)
  • nrlp.sprachmodus_ids.length === nrlp.sprachmodi.length (Check 21)
  • LF4 ist fokussierte Output-Sprachmodus-Teilaufgabe, nicht das ganze Handlungsprodukt (Check 20)
  • mindmap_aeste.length === 4, Ast 4 optional: true (Check 22)

Schritt 2b — Leitfragen-Loesungen aus dem Lehrmittel heben (C10, NEU in v2.4):

Die Loesungen werden nicht formuliert, sondern gehoben — Quelle ist derselbe Abschnitt, den knoten_ref der jeweiligen Leitfrage benennt. Pro Leitfrage:

  1. Abschnitt oeffnen. knoten_ref → Kapiteldatei in material/_lehrmittel/ (Kapitelnummer via references/nrlp-lehrmittel-crosswalk.md), zu den [seite: NN]-Markern springen. Steht die Antwort dort nicht, ist knoten_ref falsch — erst den Anker korrigieren (Check 31), dann die Loesung schreiben.
  2. Sachaussagen extrahieren, je eine pro Zeile, in eigenen Worten verdichtet — keine abgeschriebenen Gesetzes- oder Lehrbuchsaetze. Die Fundstelle wandert als quelle-Chip mit ("OR 321e", "ArG 31", "Kap. 19.2"); nur Artikel und Kapitel, die im gelesenen Abschnitt wirklich stehen.
  3. Nach Bloom-Stufe formen — die Loesung muss die Frage auf ihrer eigenen Stufe beantworten:
bloom Zeilen-Muster
Verstehen (LF1) 4-6 Sachzeilen mit label = Begriff ("Treuepflicht", "Sachinhalt"), je ein quelle-Chip. Deckungsgleich mit den Pflicht-Aesten von mindmap_aeste.
Anwenden (LF2) Pro Fallbestandteil eine Zeile mit Urteil im label ("Unzulässig 1", "Zulässig bleibt"), plus eine Zeile "Häufiger Fehler" aus dem [!warnung]-Stolperstein derselben Sektion.
Entscheiden (LF3) Pflicht: eine Zeile "Erwartet" (die auf Stufe 3 erwartete Wahl mit Begruendung) und mindestens eine Zeile "Ebenfalls tragfähig" oder "Nicht tragfähig". Beide Pole stammen aus mehrdeutigkeit.hint — eine Entscheidungsfrage mit nur einer zulaessigen Antwort war keine.
Formulieren (LF4) Der eine Baustein, den LF4 verlangt, ausformuliert (Satz/Absatz/Zeilen), label = Bauteil aus handlungsprodukt.scaffolding.struktur, plus eine Zeile "Massstab". Nie das ganze Handlungsprodukt (C4) — das steht in musterloesung.
  1. Kuerzen auf 3-6 Zeilen / ~900 Zeichen. Die Deck-Folie ist ein Akkordeon mit genau einer offenen Leitfrage; laenger passt nicht auf die Folie.
  2. Gegenprobe: Wuerde eine Lehrperson, die nur diese Zeilen sieht, die Antwort einer lernenden Person fair beurteilen koennen — ohne im Lehrmittel nachzuschlagen und ohne den [!tafelbild]-Callout zu widerlegen?

Kein Vorlese-Skript: Die Zeilen sind der Massstab, nicht die eine richtige Formulierung. Diesen Rahmen setzt das Deck bereits in den Referentennotizen; die Daten muessen ihn nur einhalten. Feldspezifikation: references/json-field-mapping.md §leitfragen[].loesung. Pruefung: Check 32.

Nur ins JSON schreiben, nie in begleiter.md. Der Begleiter bekommt die Loesungen automatisch: loadEinheit spiegelt sie beim Laden als > [!loesung]-Callouts je Herausforderung ein (src/lib/einheiten/begleiter-loesungen.ts), Word-Export und HTML-Ansicht inklusive. Wer sie zusaetzlich ins Markdown schreibt, erzeugt eine zweite Quelle, die driftet.

Single-Format-Pflicht (NEU in v1.2):

handlungsprodukt.format_detail darf KEINE Format-Alternativen enthalten, die einen anderen Sprachmodus implizieren. Verbotene Muster:

  • "... Alternativ: ..." (wenn die Alternative einen anderen Modus traegt)
  • "... oder ..." (analog)
  • "... auch moeglich: ..."

Erlaubt sind Modus-konsistente Variationen:

  • "Video-Statement 1-2 Min., entweder mit Smartphone oder Stativ-Kamera"
  • "Praesentation 5-7 Folien, Canva oder PowerPoint"

Pre-Write-Check: regex-Suche in format_detail nach /(Alternativ(es)?|oder als|moeglich)/i. Bei Match: WARN_MULTI_FORMAT_AMBIGUITY — Skill bietet User-Entscheidung an: (a) Singularisieren auf primaeres Format (Modus bleibt) (b) Beide Formate beibehalten, modi_units um beide Modi erweitern (mit Konsequenz fuer Check 5b)

Pre-Write-Spellcheck (NEU in v1.2, verschaerft in v1.4):

Vor jedem _herausforderung_{LETTER}.json-Write:

  1. Lade references/_common_misspellings.md
  2. Iteriere durch die text-relevanten Felder (Liste siehe Section „Verbotene Aenderungen am Frontend-Text" oben sowie Liste in _common_misspellings.md)
  3. Umlaut-Restitution (NEU v1.4): Wende die Section „Pauschal-Transliterations-Fixes" aus _common_misspellings.md auf jedes Prosa-Feld an. ae/oe/ue/Ae/Oe/Ue → ä/ö/ü/Ä/Ö/Ü, ausser in Eigennamen-Whitelist (z.B. Aarau, Olten, Goethe-Zitate). Persona.beruf wird aus der kanonischen Tabelle in hko-framework.md §11 mit Umlauten uebernommen — kein Re-Transliterieren.
  4. Spell-Tabelle anwenden, logge SPELLCHECK_FIX: {falsch} → {korrekt} in {feld}
  5. Nach allen Fixes: zweiter Scan auf Residual-Pattern /(ae|oe|ue|Ae|Oe|Ue)/ in Prosa-Feldern. Bei Fund ausserhalb Whitelist: WARN_UMLAUT_RESIDUE: {wort} in {feld} — User reviewt
  6. Eszett-Scan: /ß/ → Auto-Fix zu ss, logge ERR_ESZETT_FOUND (wird automatisch gefixt, aber gemeldet)
  7. Bei mehr als 5 Fixes in einem File: WARN_SPELLCHECK_HEAVY — User-Review empfohlen

Schritt 2c — Werkzeugseite (methoden) fuellen — pro Herausforderung genau 4 Eintraege.

Volle Referenz: docs/methodenkartei.md. Das Handlungsprodukt bekommt eine eigene Seite, die benennt, womit es hergestellt wird. Ohne dieses Feld entfaellt die Seite — die Einheit haette dann 7 statt 8 Seiten und die Luecke, die das Feature schliessen soll.

  1. Abgaben zerlegen. Jede Zeile aus handlungsprodukt.abgaben[] fragt: Womit macht man das? Typisch 3–5 Werkzeuge, auf genau vier verdichten.
  2. Zuerst die Kartei fragen: ls src/data/methoden/. Passt eine Karte, referenzieren — nicht neu schreiben.
  3. Dann das Lehrmittel fragen. Die Methodenkapitel-Spalte in references/nrlp-lehrmittel-crosswalk.md ist der Einstieg. Neue Lehrmittel-Karte anlegen als src/data/methoden/lm-{kap-mit-bindestrich}-{slug}.json mit quelle: "lehrmittel", kap, lesen (zwei Saetze — die Karte ersetzt das Kapitel nicht), merk. seiten nur, wenn die Zahl am Buch verifiziert ist — sonst weglassen. Eine geratene Seitenzahl im Schuelerheft ist schlimmer als keine.
  4. Erst wenn beides nichts hergibt: eigene Karte hko-{slug}.json mit quelle: "hko", schritte (4 nummerierte), ankommt, merk. Sie muss vollstaendig sein, dahinter kommt kein Kapitel. Die vier bekannten Luecken des Lehrmittels: mediale Produktion, gestaltete Kurzformate, digitale Zusammenarbeit, KI.
  5. Referenz schreiben in herausforderung_{LETTER}.json: { "ref": "<id>", "fuer": "<wofuer in dieser Abgabe>", "tun": "<Uebertragung>" }. tun nur bei Lehrmittel-Karten — es ist der Grund, warum die Karte existiert; ein blosser Kapitelverweis steht schon auf Seite 5. tun und fuer sind einheitenspezifisch und gehoeren nie auf die Karte.
  6. Musterbeispiel + Fehler (beispiel, fehler) auf genau zwei der vier Karten — sie landen im Layout automatisch in der unteren, doppelt hohen Reihe. Bei dreien wird die Seite still abgeschnitten; bei nur einer steht unten eine kurze Karte neben einer langen und wird gestreckt. Zwei ist der ausbalancierte Fall. beispiel braucht ein neutrales Sujet, das mit dieser Einheit nichts zu tun hat (wie die Musterbriefe im Lehrmittel). fehler nennt ein beobachtbares Symptom plus Abhilfe, nicht die Verneinung von ankommt.

Nicht nach Herkunft sortieren — das macht der Renderer. Kein Index-Rebuild noetig.

Schritt 3 — Coherence-Audit ueber alle 3 Herausforderungen (Checks 1-9 in coherence-checklist.md). Bei Fehler stoppen.

Schritt 4 — Files schreiben, A → B → C:

src/data/einheiten/{X.Y.Z}_{topic_slug}/herausforderung_{LETTER}.json

Confirm jedes: ✓ {filename} gespeichert.

Proceed zu Phase 3.


PHASE 3 — Set-Dokument

Read assets/set-template.json. Generiere set.json mit:

  • id, prinzip_ref, kn_ref (kn_ref zeigt auf zukuenftige Phase-4-Datei — das ist OK)
  • herausforderungen[] = 3 IDs
  • konzept_progression[] = 3 Eintraege, je {position, situation, konzept} (konzept aus sit_*.prinzip_handoff.kernkonzept)
  • austausch_phase = template-konstant; generiere ALLE drei Sozialform-Schluss-Varianten fuer das set-level "Austausch & Transfer"-Dokument (C8): einzelauftrag (EA — Einzel-Synthese, ~5 Saetze + je ein Beispiel), gruppenarbeit_jigsaw (GA — 3 Runden; optional Alias gruppenpuzzle), einzelarbeit_plenum (PL — Plenum-Synthese; optional Alias plenum)
  • dekontextualisierungs_aufgabe = template-konstant + ziel aus prinzip.dekontextualisierungs_anker.anker_statement. Bildet zusammen mit den drei sit.dekontextualisierung.frage (als Beispiele) die Transfer-Haelfte des Austausch-Dokuments.
  • status: "entwurf" (aus dem Template uebernehmen) — JEDE neu generierte Einheit startet als Entwurf und ist damit nur fuer KT1 sichtbar. Erst nach interner Abstimmung wird sie publiziert: status auf "publiziert" setzen (oder Feld entfernen) -> npm run build:einheiten-index -> deploy. Fuer selektives Publizieren einzelner Bausteine einer sonst live Einheit dient entwurf_komponenten (z. B. ["ki-fluency"]).

Output: src/data/einheiten/{X.Y.Z}_{topic_slug}/set.json.

Proceed zu Phase 4.


PHASE 4 — KN-Generierung (INLINE)

Read assets/kn-template.json + references/kn-architecture.md.

Step 1 — Prerequisites laden

  • prinzip.json, herausforderung_A/B/C.json, set.json
  • Cross-Ref-Check: prinzip_ref matched ueber alle vier Files
  • Bei Fehler: ERR_KN_INPUTS, Phase stoppt, schreibt nichts

Step 2 — Hybrid-Herausforderung generieren

Read kn-architecture.md Paragraph 2. Konstruiere eine eine Szene:

  • Neutrale Persona wie in den Herausforderungen. Der Transfer entsteht ueber den Fall, nicht ueber die Person: die hybrid_situation bringt eine Lage, die in A/B/C nicht vorkam (Stufe 2). Vorbild: 3.2.1_ernaehrung_nachhaltig_gestalten — «Der Automat und die 40 Prozent»
  • max. 120 Woerter, ICH-Perspektive
  • Aktiviert alle drei herausforderung.konfliktart-Aspekte gleichzeitig (sichtbar, nicht explizit benannt)
  • Aktiviert mindestens einen Trade-off aus prinzip.mehrdeutigkeits_architektur.trade_off_raum
  • Endet mit genau einer Leitfrage, die die Spannung benennt
  • alignment_note: 1-2 Saetze Mapping (welcher Trade-off, welche Herausforderung aus welcher Herausforderung aktiviert)

User-Review (Markdown, kompakt):

HYBRID-SITUATION fuer KN {X.Y.Z}_{topic_slug}

Persona: {beruf} bei {betrieb} in {ort}
Emotion-Tag: {emotion}
Titel: "{titel}"

Szene ({woerter}/{max_woerter} Woerter, im text-Feld):
> {hybrid_situation.text}

(Persona, Titel, Leitfrage und alignment_note werden separat gezeigt und zaehlen nicht zur Wort-Quote.)

Leitfrage: "{leitfrage}"

Aktiviert: {trade_offs}
Alignment:
  A: {alignment_note.herausforderungen_mapping[A].scene_element}
  B: {alignment_note.herausforderungen_mapping[B].scene_element}
  C: {alignment_note.herausforderungen_mapping[C].scene_element}
{wenn new_dimensions nicht leer: "⚠ WARN_HYBRID_NEW_DIMENSION: Neue Dimension(en): {new_dimensions}"}

{wenn Lehrjahr-Sprung und lehrjahr_constraint == 'match_units': "⚠ WARN_HYBRID_LJ_MISMATCH: Hybrid-Persona ist im LJ{X}, Sit-Personas alle im LJ{Y}. Beabsichtigt?"}

Passt das? (ja / Aenderungen)

Stop. Wait for user approval.

Nach Hybrid-Generierung, vor User-Review:

  1. Lehrjahr-Check: Vergleiche Lehrjahr der Hybrid-Persona gegen Lehrjahre der Sit-Personas. Bei Sprung und lehrjahr_constraint == "match_units": WARN_HYBRID_LJ_MISMATCH ausgeben. User-Bestaetigung erforderlich.

  2. New-Dimension-Check: Pruefe ob die Hybrid-Szene Konfliktdimensionen enthaelt, die in keiner sit_*.herausforderung.konfliktart vorkommen. Wenn ja: in alignment_note.new_dimensions[] aufnehmen, WARN_HYBRID_NEW_DIMENSION ausgeben. User-Bestaetigung: "Ist diese neue Dimension fuer den KN didaktisch erwuenscht?"

  3. Trade-off-Konsolidierung (NEU in v1.2):

    Nach User-Approval der Hybrid-Szene, mechanisch aus herausforderungen_mapping[] ableiten:

    1. Sammle fuer jede gemappte Herausforderung den sit_X.mehrdeutigkeit.trade_off
    2. Dedupliziere die Liste (Set-Logik)
    3. Schreibe in hybrid_situation.aktivierte_trade_offs

    Beispiel: herausforderungen_mapping enthaelt A, B, C — dann werden A.trade_off, B.trade_off, C.trade_off gesammelt und dedupliziert. Wenn zwei Herausforderungen denselben trade_off aktivieren, erscheint er nur einmal.

    Manuelle Erweiterung ueber herausforderungen_mapping hinaus ist moeglich (Hybrid-Szene aktiviert einen weiteren Trade-off, der in keiner Herausforderung zentral ist), aber ungewoehnlich — sollte in alignment_note.additional_trade_offs[] separat begruendet werden.

Step 3 — KN-Typ 1 (Fachgespraech)

Aus kn-template.json fragestruktur-Skelett. Fuelle 5 Fragen (K2 → K3 → K3 → K4 → K4):

  • Frage 1 (Erklaeren, K2): bezieht sich auf zentrales Hybrid-Element
  • Frage 2 (Anwenden, K3): Konzept-Logik aus herausforderung_B (mittlere Herausforderung)
  • Frage 3 (Beurteilen, K3): "beide Aspekte gleich bewerten? warum?"
  • Frage 4 (Transfer, K4): Vergleich mit einer der drei Lernaufgaben
  • Frage 5 (Werthaltung, K4): Akteur + Begruendung, weshalb nicht nur Marktfrage (oder topic-spezifische Analogform)

sk = Union der 3 sit_.nrlp.sk dedupliziert, max 3 (Prioritaet: SK6 > SK11 > situativ). aspekte = Union der 3 sit_.nrlp.gesellschaft. sprachmodi = konstant (Rezeption schriftlich+bildlich, Produktion muendlich, Interaktion muendlich).

Step 4 — KN-Typ 2 (Mini Case schriftlich)

Aus kn-template.json aufgaben-Skelett. Fuelle 4 Aufgaben (K2 → K3 → K3 → K4):

  • Aufgabe 1 (Erklaeren): Fakten/Diagramm
  • Aufgabe 2 (Unterscheiden): forciert Mehrdeutigkeit ("Beide ... entstehen durch ... Warum ist X ethisch anders zu beurteilen als Y?")
  • Aufgabe 3 (Entscheiden): konkrete Entscheidung im Hybrid-Kontext
  • Aufgabe 4 (Forderung): Policy/Intervention in Ich-Form

sk/aspekte analog zu Typ 1. sprachmodi = konstant (Rezeption + Produktion schriftlich+bildlich).

Step 5 — KN-Typ 3 (Werkschau + Transfer-Reflexion)

Template-konstant: format, ablauf, reflexionsfragen, sprachmodi.

SK adaptiv (NEU in v1.1):

  1. Basis-Kandidaten = [5, 6, 10] (Werthaltungen, Standpunkte, Anpassung)
  2. Filter: nur SK, die in Union(herausforderung_A.nrlp.sk, herausforderung_B.nrlp.sk, herausforderung_C.nrlp.sk) vorkommen, bleiben
  3. Wenn nach Filter weniger als 2 SK uebrig: aus prinzip.sk_schnittmenge_kn.primary ergaenzen, bis 2-3 SK erreicht
  4. Maximal 3 SK im Endergebnis

Beispiel 3.2.2: Union sit-SK = {1, 5, 6, 9, 11}. Basis [5, 6, 10] ∩ Union = [5, 6]. Ergaenzung aus primary [9, 11]: nimm SK11 (naeher zur Werkschau-Reflexion). Endergebnis: [5, 6, 11].

Rename-Touchpoint (D4): Label «Werkschau + Transfer-Reflexion» und Key werkschau_transfer sind ein kuenftiger Rename-Touchpoint (Kanton-Begriff Werkschau/Portfolio noch ausstehend). Der Key bleibt stabil; bei einem Rename nur das sichtbare Label in assets/kn-template.json (label) + die Vorkommen in SKILL.md/References aendern — jetzt nicht umbenennen.

Step 6 — Rubrik-Anpassung

Lies kn-architecture.md Paragraph 6. Bestimme dominanter_aspekt:

  • aus sit_*.nrlp.gesellschaft[].aspekt: jener, der in >=2 von 3 Herausforderungen vorkommt
  • bei Gleichstand: erster Eintrag der NRLP-Kompetenz gesellschaftliche_inhalte[]

Passe rubrik_shared.kriterien[2].name an:

Dominanter Aspekt Kriterium-3-Name
Wirtschaft Wirtschaftliches Prinzip
Recht Rechtliches Prinzip
Ethik Ethisches Prinzip
Identitaet und Sozialisation Identitaetskonstrukt
Kultur Kulturelles Prinzip
Oekologie Oekologisches Prinzip
Politik Politisches Prinzip
Technologie und digitale Transformation Technologisches Prinzip
Gleichstand "Fachliches Prinzip aus {Aspekt}"

Punktbaender-Beschreibungen + Niveaubaender bleiben konstant.

Step 7 — Coherence-Audit (Checks 10-13, 16)

Aus coherence-checklist.md:

  • Check 10: Hybrid aktiviert mind. 1 Trade-off, alignment_note benennt Mapping
  • Check 11: Hybrid-Fall disjunkt von allen 3 Herausforderungen (die Persona ist bewusst dieselbe neutrale)
  • Check 12: KN-Typ 1 + 2 sk ⊆ Union(sit_*.nrlp.sk)
  • Check 13: Rubrik-Shape (4 Kriterien, 2 SuK + 2 Ges, je 4 Punktbaender à 0–3, 3 Niveaubaender)
  • Check 16: aktivierte_trade_offs enthaelt alle trade_offs der gemappten Herausforderungen

Bei Fehler stoppen, kein File schreiben, Pietro reviewen lassen.

Step 8 — File schreiben

Pre-Write-Spellcheck: analog Phase 2 Step 2. Felder siehe references/_common_misspellings.md.

src/data/einheiten/{X.Y.Z}_{topic_slug}/kn.json

Confirm: ✓ {X.Y.Z}_{topic_slug}/kn.json gespeichert. Proceed zu Phase 5.


PHASE 5 — Begleiter-Dokument (begleiter.md)

Generiere das Lehrperson-Begleitdokument als strukturiertes Markdown mit YAML-Frontmatter. Output: src/data/einheiten/{X.Y.Z}_{topic_slug}/begleiter.md.

Feld-Marker statt Kopien (Begleiter-Injektion 2026-09, verbindlich).

Der Begleiter zitiert Inhalte, die kanonisch in den JSONs stehen — Persona, Situationstext, Leitfragen, Checkliste, KN-Szene, KN-Fragen. Schreibe sie nie als Kopie hinein. Fasse sie in einen Marker; loadEinheit ersetzt ihn beim Laden durch den aktuellen Wert (src/lib/einheiten/begleiter-felder.ts), und HTML, Word und ZIP sehen dieselbe Form. Dasselbe Prinzip wie bei den Leitfragen-Loesungen und den Methodenkarten.

| Persona | <!--hko:hf_A.persona|persona-->Lernende/r EFZ, 1. Lehrjahr — eigener Lehrbetrieb, eigener Wohnort<!--/hko--> |

<!--hko:hf_A.situation_text|quote-->
> Ich bin im 1. Lehrjahr und …
<!--/hko-->

<!--hko:hf_A.bewertungsraster[2].vollstaendig_wenn|checkliste-->
☐ Die Kette hat 4 bis 6 Schritte …
<!--/hko-->
  • Der Text zwischen den Markern ist Rueckfall und wird trotzdem geschrieben — wer die Datei roh oeffnet, soll den Inhalt lesen, nicht einen leeren Kommentar. Er muss beim Schreiben mit der Quelle uebereinstimmen; WARN_BEGLEITER_DRIFT meldet, wenn nicht.
  • Formatierer: ohne Angabe Rohtext · |persona → «Beruf — Betrieb, Ort» · |quote → Blockzitat (Marker auf eigener Zeile, sonst liest Markdown das > als Text) · |checkliste-Zeilen aus einem Array · |liste--Zeilen.
  • Nicht ins Frontmatter — ein HTML-Kommentar bricht dort den Parser. Die kompetenz:-Zeile bleibt Kopie.
  • Was NICHT verdrahtet wird: Coaching-, Warnungs- und Troubleshooting-Callouts, Erwartungshorizonte, die 8-Merkmale-Begruendungen, der Unterrichtsfahrplan. Sie kommentieren den Auftrag und haben keine Quelle im JSON — das ist der eigentliche Wert des Begleiters und bleibt Handarbeit.
  • Pruefung: node scripts/check-einheiten.mjs <slug> meldet WARN_BEGLEITER_KOPIE_OHNE_MARKER, sobald ein JSON-Text woertlich und unmarkiert im Begleiter steht.

Das begleiter.md ist das vollstaendige Unterrichts-Kompendium — Lektion fuer Lektion, mit fertigen Scaffolds, Coaching-Moves und bi-dim Bewertungsbeispiel. Es wird vom begleiter-builder.ts zu einem gestalteten .docx umgewandelt und liegt in jedem ZIP-Bundle (EinheitWorkbenc

Truncated - read the full file at https://github.com/allgemeinbildung/bbw-hko/blob/6886d21a7ed697b0a9d5cb5cd12e65f3a54eb2a7/.claude/skills/bbw-hko-3er-set/SKILL.md.

Use it

Copy one of these into your project. Installing also returns the manifest and these snippets.

yaml
targets:
  - https://api.opensmartroute.ai/api/v1/registry/allgemeinbildung-bbw-hko-bbw-hko-3er-set/manifest   # or paste the manifest below

Manifest

An Open Capability Manifest: the router reads it to know what this does, what it costs and when to pick it.

allgemeinbildung-bbw-hko-bbw-hko-3er-set.ocm.jsonjson
{
  "ocm": "1",
  "id": "allgemeinbildung-bbw-hko-bbw-hko-3er-set",
  "kind": "skill",
  "name": "bbw-hko-3er-set",
  "description": "Native bbw-hko skill: transforms Swiss ABU vocational textbook content into a coherent 3er-Set Einheit and writes it directly into src/data/einheiten/{X.Y.Z}_{slug}/. Produces a Prinzip-Dokument, 3 validated Herausforderung JSONs (A/B/C), a Set-Dokument with Austausch-Phase and Transfer-Aufgabe, a KN-Dokument with one Hybrid-Herausforderung, three KN-Typen (Fachgespraech / Mini Case schriftlich / Werkschau + Transfer-Reflexion) and a bi-dimensional rubric, plus a Lehrperson-Begleitdokument (begleiter.md). Use this skill whenever Pietro uploads textbook chapters and wants to generate HKO 3er-Set Einheiten for bbw-hko, when the user requests Lernsituationen-Sets fuer ABU Reform 2030, or when the user says 'generate a 3er-set', 'create the new HKO Einheit', 'make Lernsituationen 3er'. Triggers on textbook content + HKO/ABU/3er keywords together. The skill is Prinzip-first AND KN-backwards: a shared red thread is formulated before situations are generated, and the KN is designed with the situations as Lernaufgabe",
  "publisher": "allgemeinbildung",
  "version": "1.0.0",
  "capabilities": {
    "domains": [
      "general"
    ],
    "tags": [
      "skill-md",
      "github"
    ],
    "languages": [
      "en"
    ]
  },
  "quality_prior": 0.6,
  "examples": [
    "Native bbw-hko skill: transforms Swiss ABU vocational textbook content into a coherent 3er-Set Einheit and writes it directly into src/data/einheiten/{X.Y.Z}_{slug}/. Produces a Prinzip-Dokument, 3 validated Herausforderung JSONs (A/B/C), a Set-Dokument with Austausch-Phase and Transfer-Aufgabe, a KN-Dokument with one Hybrid-Herausforderung, three KN-Typen (Fachgespraech / Mini Case schriftlich / Werkschau + Transfer-Reflexion) and a bi-dimensional rubric, plus a Lehrperson-Begleitdokument (begleiter.md). Use this skill whenever Pietro uploads textbook chapters and wants to generate HKO 3er-Set Einheiten for bbw-hko, when the user requests Lernsituationen-Sets fuer ABU Reform 2030, or when the user says 'generate a 3er-set', 'create the new HKO Einheit', 'make Lernsituationen 3er'. Triggers on textbook content + HKO/ABU/3er keywords together. The skill is Prinzip-first AND KN-backwards: a shared red thread is formulated before situations are generated, and the KN is designed with the situations as Lernaufgabe"
  ],
  "primary": false,
  "metadata": {
    "source": {
      "provider": "github",
      "repository": "https://github.com/allgemeinbildung/bbw-hko",
      "path": ".claude/skills/bbw-hko-3er-set/SKILL.md",
      "ref": "6886d21a7ed697b0a9d5cb5cd12e65f3a54eb2a7",
      "url": "https://github.com/allgemeinbildung/bbw-hko/blob/6886d21a7ed697b0a9d5cb5cd12e65f3a54eb2a7/.claude/skills/bbw-hko-3er-set/SKILL.md",
      "key": "allgemeinbildung/bbw-hko/.claude/skills/bbw-hko-3er-set/SKILL.md"
    }
  },
  "instructions": "# bbw-hko 3er-Set Generator — Prinzip-First + KN-Backwards\n\nTransforms Swiss ABU Lehrmittel content into HKO 3er-Set Einheiten for bbw-hko — a Prinzip-Dokument plus 3 validated Herausforderung JSONs plus a Set-Dokument plus an inline Kompetenznachweis plus a Lehrperson-Begleitdokument — written directly into `src/data/einheiten/{X.Y.Z}_{slug}/`.\n\n**The architecture is Prinzip-first AND KN-backwards:** before any Herausforderungen are generated, a `prinzip.json` defines the shared red thread for the 3er-Gruppe — Kern-Versprechen, Herausforderungen, SK-Schnittmenge, Mehrdeutigkeits-Architektur, ",
  "cost": {
    "context_tokens": 26104
  }
}

Fetch it by URL: GET /api/v1/registry/allgemeinbildung-bbw-hko-bbw-hko-3er-set/manifest?version=1.0.0

Reviews

Star ratings from people who tried it. One review per account; edit yours any time.

No reviews yet. Install it, try it, and be the first to rate it.