This commit is contained in:
Team3
2026-07-04 23:47:04 +02:00
parent 2d9ca00b47
commit 4105146c59
40 changed files with 2053 additions and 3208 deletions

View File

@@ -0,0 +1,21 @@
You are the quality checker for the learning artefacts of ONE block of the topic "{topic}". Another agent produced question patterns and worked examples. Check both.
GROUND TRUTH — the supported facts (measure only against these):
{facts}
QUESTION PATTERNS (rows: (subblock) question):
{table}
{fehlend}
WORKED EXAMPLES (numbered; PROBLEM / STEPS / RESULT):
{examples}
TASKS:
1. **pattern** — return the CLEANED-UP final version of ALL patterns: each question EXACTLY ONE question mark, one thing, 12 sentences, neutral, hits the subblock's core, answerable from the facts without invented assumptions. Keep good ones unchanged; rephrase violations. Exactly one pattern per subblock; carry `block`/`subblock` over unchanged. Questions in GERMAN.
2. **pattern_ergaenzt** — for each subblock listed above as MISSING a question: create ONE pattern (same rules). Empty list if none are missing.
3. **examples_probleme** — object to an example ONLY if clearly faulty: calculation error, wrong inference, contradicts/invents beyond the facts, or would imprint a wrong path. Recompute yourself; conservative — when in doubt, keep. Give 1-based `index`.
Reply with ONLY the JSON — no code fences, no other text. Format:
{{"pattern": [{{"block": "…", "subblock": "…", "question": "…"}}],
"pattern_ergaenzt": [{{"block": "…", "subblock": "…", "question": "…"}}],
"examples_probleme": [{{"index": 2}}]}}
{extra}

View File

@@ -0,0 +1,25 @@
Build the learning artefacts for the subblocks of ONE block of the topic "{topic}": per subblock ONE question pattern and ONE flashcard, plus a worked example where it carries.
BLOCK WITH SUBBLOCKS AND THEIR FACTS (process EVERY subblock):
{blocks}
1. **pattern** — exactly ONE question pattern per subblock (exam question pool):
- ONE concrete, concise question about the subblock's CORE concept, phrased neutrally (difficulty is set later by the learner's level). Exactly one question mark, one thing — no multi-parter, no "name three …". At most 12 sentences, no scenario build-up.
- Answerable from the supplied core points and cited facts. Assume NOTHING that is not in the facts (no "shown" code/diagrams, no invented values).
2. **cards** — exactly ONE flashcard per subblock (active recall):
- `question`: brief recall question testing exactly one key point (≤ 15 words). `answer`: the short, precise answer from the supported facts (≤ 25 words). No prose, no lead-in, invent nothing.
3. **examples** — a worked example ONLY where it carries understanding:
- `problem` (1 sentence) → `steps` (25 followable steps, right order) → `result` (1 sentence). Rely on `example_idea` and the supported facts; compute cleanly. A pure definition or meta-knowledge gets NO forced example — leave it out.
Common rules:
- `block`/`subblock` are exactly the titles above.
- **Mathematics ALWAYS as LaTeX**, never raw characters: inline `$…$`, longer set off as `$$…$$`. NO Unicode math substitutes (`≤`, `≥`, `Σ`, `δ`, `∈`, `⊆`, `×`) and no bare `_`/`^` — use `$\le$`, `$\ge$`, `$\Sigma$`, `$\delta$`, `$\in$`, `$\subseteq$`, `$\times$`, `$n^d$` instead. The supplied facts often contain raw Unicode math — convert it. Real code/paths/identifiers in backticks.
- ALL content in GERMAN.
Reply with ONLY the JSON as your final message — no code fences, no other text. EXACTLY this format:
{{"pattern": [{{"block": "…", "subblock": "…", "question": "…"}}],
"cards": [{{"block": "…", "subblock": "…", "question": "…", "answer": "…"}}],
"examples": [{{"block": "…", "subblock": "…", "problem": "…", "steps": ["…"], "result": "…"}}]}}
{extra}

View File

@@ -1,25 +0,0 @@
You are a correctness checker for worked examples on the topic "{topic}". Another agent produced them — they are meant to demonstrate a **correct** solution to the learner. A wrong example imprints a wrong solution path. Find the faulty ones.
GROUND TRUTH — the supported facts (measure only against these):
{facts}
EXAMPLES TO CHECK (numbered; PROBLEM / STEPS / RESULT):
{examples}
Object to an example if ANY of these applies:
- **Calculation error** in a step (a number, a transformation, a unit).
- **Wrong inference:** a step does not follow from the previous one; the RESULT does not follow from the steps.
- **Not covered:** a step/value contradicts the facts or invents something not stated there.
- **Incomplete/misleading:** the path would lead the learner to a wrong conclusion.
Rules:
- Measure ONLY against the facts + internal logic. Recompute it yourself.
- **Conservative:** object only to what is **clearly** wrong. When in doubt, keep it.
- Give the 1-based number (`index`) of each faulty example.
Reply with ONLY the JSON — no other text, no code fences — one of the two:
{{"ok": true}}
{{"problems": [{{"index": 2}}, {{"index": 5}}]}}
Output no other text.
{extra}

View File

@@ -1,24 +0,0 @@
Build a worked example for the subblocks of the topic "{topic}" — a fully worked-through case that carries understanding.
BLOCKS WITH SUBBLOCKS AND THEIR FACTS (go through EVERY subblock):
{blocks}
A good worked example:
- **problem**: a concrete, small task/question about the subblock (1 sentence).
- **steps**: 25 followable steps from the problem to the solution. Each step a brief sentence, in the right order.
- **result**: the final result / the insight (1 sentence).
- Rely on `example_idea` and the supported facts of the subblock. Compute cleanly; invent no values that contradict the facts.
- **Only where it carries:** if a subblock cannot be sensibly shown with an example (a pure definition, meta-knowledge), LEAVE IT OUT — no forced example.
- **Mathematics ALWAYS as LaTeX**, never as raw characters: inline `$…$` (e.g. `$T_A(n)$`, `$\Sigma^*$`, `$|x| = 5$`, `$O(n^d)$`, `$q_a$`), longer/worked-through formulas set off as `$$…$$`. NO Unicode math substitutes (`≤`, `≥`, `Σ`, `δ`, `∈`, `⊆`, `×`) and no bare `_`/`^` — use `$\le$`, `$\ge$`, `$\Sigma$`, `$\delta$`, `$\in$`, `$\subseteq$`, `$\times$`, `$n^d$`, `$q_a$` instead. Real code/paths/identifiers (not math) in backticks.
- **The supplied facts often contain math as raw Unicode — convert it to LaTeX, do not take it over raw.**
Write `problem`, the `steps` and `result` in GERMAN.
Reply with ONLY the JSON (all examples) as your final message — no code fences, do NOT write a file. EXACTLY like this:
{{"examples": [
{{"block": "<exact block title>", "subblock": "<exact subblock title>",
"problem": "…", "steps": ["…", "…"], "result": "…"}}
]}}
Output no other text.
{extra}

View File

@@ -1,23 +0,0 @@
Build ONE flashcard (question→answer) for active recall for each subblock of the topic "{topic}".
BLOCKS WITH SUBBLOCKS AND THEIR FACTS (process EVERY subblock):
{blocks}
A good flashcard:
- **question**: a brief recall question that tests exactly one key point (not "explain everything"). One question, one thing.
- **answer**: the short, precise answer — based on the supported facts/key points of the subblock. Invent nothing extra.
- Rely on the supplied facts. Where a supported fact exists, the answer must match it.
- Brief: question ≤ 15 words, answer ≤ 25 words. No prose, no lead-in.
- **Mathematics ALWAYS as LaTeX**, never as raw characters: inline `$…$` (e.g. `$T_A(n)$`, `$\Sigma^*$`, `$|x| = 5$`, `$O(n^d)$`, `$q_a$`), longer calculations set off as `$$…$$`. NO Unicode math substitutes (`≤`, `≥`, `Σ`, `δ`, `∈`, `⊆`, `×`) and no bare `_`/`^` — use `$\le$`, `$\ge$`, `$\Sigma$`, `$\delta$`, `$\in$`, `$\subseteq$`, `$\times$`, `$n^d$`, `$q_a$` instead. Real code/paths/identifiers (not math) in backticks.
- **The supplied facts often contain math as raw Unicode — convert it to LaTeX, do not take it over raw.**
Write `question` and `answer` in GERMAN.
Reply with ONLY the JSON (all cards) as your final message — no code fences, do NOT write a file. EXACTLY like this:
{{"cards": [
{{"block": "<exact block title>", "subblock": "<exact subblock title>",
"question": "…", "answer": "…"}}
]}}
Output no other text.
{extra}

View File

@@ -1,26 +0,0 @@
You are the fact-checker for the learning facts of the topic "{topic}". Another agent has extracted facts per subblock. Check ONLY the **backed facts** for truth — not the examples.
{source}
FACTS TO CHECK (per subblock):
{facts}
Check per subblock:
1. **Evidence fidelity**: Does each `cited_facts` entry appear that way in the source (accurate in substance)? Is the source citation correct? With source material (folder or excerpts): check against it. Without a source: is it established standard knowledge?
2. **Factual correctness**: Are formulas, values, definitions, signatures technically correct? A wrong formula/value is a defect.
3. **Fact vs. example**: Is a self-computed/invented example wrongly declared as `cited_facts`? That is a defect — it belongs in `example_idea`.
4. Do NOT check examples (`example_idea`) for source evidence — they are generative.
Note only REAL defects (wrong fact, wrong source, example disguised as a fact). Not matters of taste.
**Discard vs. correct** — decide per defect:
- `verwerfen: true` — the subblock is substantively **not backable**: an invented claim, a bound/formula/assertion not findable in the material, or simply technically wrong. The subblock is then REMOVED. Be sure — when in doubt, `false`.
- `verwerfen: false` — the core is right, only a fact/value/source is imprecise and correctable.
Reply with ONLY the JSON — no other text, no code fences.
Format — all in order:
{{"ok": true}}
Otherwise (subblock title EXACTLY as above):
{{"problems": [{{"subblock": "<exakter Subblock-Title>", "problem": "…", "discard": true}}]}}
{extra}

View File

@@ -1,30 +0,0 @@
Extract the learning facts for each subblock of the topic "{topic}". These facts are the binding basis from which the guide text, the levels, and the exam questions are later created — they must be **correct**.
{source}
BLOCKS WITH SUBBLOCKS (process EVERY subblock):
{blocks}
Collect per subblock ONLY the essentials (superfluous material harms learning); write all field content in GERMAN (technical terms/code identifiers stay original):
- **key_points**: 13 concise statements — what must one understand about this subblock?
- **prerequisites**: what must one know beforehand (a half-sentence)? Empty if nothing.
- **hurdles**: typical beginner misconception (a half-sentence). Empty if none.
- **cited_facts**: hard facts (definitions, formulas, values, names, signatures) — **only what you can back up**. Each with a source:
- With a source file/script: cite **accurately in substance** and give the location (e.g. „Skript Def. 6.3, Z.66"). Invent no values, compute nothing yourself.
- Without a source (pure topic): only established standard knowledge; verify uncertain points via web search; source = „allgemein" or the URL.
- **example_idea**: ONE example that carries understanding — freely phrased. **Here** is where self-formed sentences, mini-scenarios, worked examples belong. Empty if an example adds nothing.
HARD SEPARATION — important:
- `cited_facts` = only backable material from the source/established knowledge. **NEVER** output a self-computed or invented example as a backed fact.
- A worked example, an invented sentence, a constructed case → belongs in `example_idea`, not in `cited_facts`.
- When in doubt: better to leave out than to claim falsely.
Reply with ONLY the JSON as your final message — no code fences, no prose around it. Do NOT write any file; your tools are for research only. EXACTLY this format:
{{"facts": [
{{"block": "<exakter Block-Title>", "subblock": "<exakter Subblock-Title>",
"key_points": ["…"], "prerequisites": "…", "hurdles": "…",
"cited_facts": [{{"text": "…", "source": "…"}}], "example_idea": "…"}}
]}}
Output no other text.
{extra}

View File

@@ -1,25 +0,0 @@
You are filling **gaps**. For each subblock of the topic "{topic}", the facts already captured are listed below. A first pass extracted them — and experience shows backable material slips through. Your task: add **only what is missing** from the source.
{source}
SUBBLOCKS WITH FACTS ALREADY CAPTURED:
{blocks}
Rules:
- Output **only NEW** points per subblock that are backed by the source and still **missing** above.
- **Repeat nothing** from what is already "captured" — not even rephrased. If it's already there → leave it out.
- **Only backable material.** With a source file/script: cite accurately in substance + give the location. Invent no values, compute nothing yourself. Without a source file (pure topic): only established standard knowledge.
- **HARD SEPARATION:** `cited_facts` = only backable material. A self-computed/invented example belongs in `example_idea`, NEVER in `cited_facts`.
- Add `key_points` only if an **essential** aspect is missing — no duplications, no trivialities.
- **If you find nothing new for a subblock → leave it out.** If you find nothing at all → empty list. Better nothing than fabrication.
- Write all field content (key_points, prerequisites, hurdles, cited_facts text, example_idea) in GERMAN, matching the source material (technical terms/code identifiers stay original).
Reply with ONLY the NEW facts as ONE JSON in your final message — no code fences, no file writing (tools are for research only). EXACTLY this format:
{{"facts": [
{{"block": "<exakter Block-Title>", "subblock": "<exakter Subblock-Title>",
"key_points": ["…"], "prerequisites": "…", "hurdles": "…",
"cited_facts": [{{"text": "…", "source": "…"}}], "example_idea": "…"}}
]}}
Output no other text.
{extra}

View File

@@ -1,21 +0,0 @@
Several agents have classified the subblocks of the topic "{topic}" by learning-path position. On some they disagree. Decide the final level for each disputed subblock.
DISPUTED SUBBLOCKS (with the votes cast):
{disputed}
Level = learning-path position (WHEN you need the point), NOT difficulty:
- **beginner**: foundation — what you need first/at all; a prerequisite for the rest. Even if conceptually demanding.
- **advanced**: builds on it; common variants, typical application.
- **expert**: subtleties, special cases, niches, rare details — even if substantively simple (e.g. an obscure flag, a version detail).
Rules:
- A simple niche detail is `expert`; a fundamental complex concept is `beginner`.
- Weigh the votes, decide on the merits by learning-path position.
- **`advanced` is not a fallback choice.** Don't pick the middle because the votes are scattered — decide by the criterion "when do you need this?". Hit `beginner`/`expert` clearly where they apply.
- Exactly one level for EACH disputed number.
Reply with ONLY the JSON — no other text, no code fences.
Format (no other text):
{{"levels": {{"1": "beginner", "4": "expert"}}}}
{extra}

View File

@@ -1,33 +0,0 @@
Assign each subblock of the topic "{topic}" to its **learning-path position**: beginner, advanced, or expert. The level controls when a learner sees the point (beginners see only „beginner", advanced learners more).
SUBBLOCKS (grouped by block; many state their core points with „Kern:"):
{subblocks}
Use the core points for a well-founded classification — judge on the content, not just the title.
DECISIVE — the level measures WHEN you need the point in the learning path, NOT how hard it is to understand:
- **beginner**: foundation. What you need first/at all to understand the block in the first place. A prerequisite for the rest. Even if the concept is conceptually demanding — if it is the foundation, it belongs here.
- **advanced**: builds on the foundation. Common variants, typical application, the next step.
- **expert**: subtleties, special cases, edge cases, niches, rare details. What you need only once you've mastered the basics — **even if it is substantively simple** (e.g. an obscure flag, a version detail).
IMPORTANT — difficulty is NOT the criterion:
- A **simple niche detail** (rarely needed, e.g. „seit 6.4.12.0") is `expert`, not `beginner`.
- A **fundamental but complex concept** (needed early) is `beginner`, not `expert`.
- Ask: "when in the learning path do you need this?" — not "how hard is it?".
Rules:
- Level RELATIVE within each block: what is foundation here, what is build-up, what is fine detail?
- Not every block needs a `beginner` point. Some topics presuppose prior knowledge and are entirely `advanced`/`expert` — that is intended. Level honestly by learning-path position, without inventing an artificial entry point.
- Only judge — invent nothing, change no subblocks.
Don't flee to the middle:
- **`advanced` is not a fallback choice.** Don't pick the middle because you're unsure.
- Decide each level by the question **"when in the learning path do you need this?"** — not by the safest middle option.
- **Differentiate within the block:** What is foundation (beginner), what is build-up (advanced), what is fine detail (expert)? Not everything is the middle.
- Hit `beginner` and `expert` clearly where they apply — no bonus for the middle.
Reply with ONLY the JSON — no other text, no code fences.
Format (exactly one level for EACH number; no other text):
{{"levels": {{"1": "beginner", "2": "advanced", "3": "expert"}}}}
{extra}

View File

@@ -1,23 +0,0 @@
You are the quality reviewer for the question pool of a learning exam on the topic "{topic}". Another agent created question patterns for **several blocks** — exactly one pattern per subblock. Review them and return a **cleaned-up** final version.
PATTERNS TO REVIEW (grouped by block; rows: (subblock) question):
{table}
REVIEW AND CLEAN UP AGAINST THESE CRITERIA (per block, separately):
- **Style:** each question is EXACTLY ONE question, one question mark, one thing. No "and"/"as well as", no enumeration. At most 1-2 sentences. Violations → rephrase.
- **Unambiguously answerable:** clearly answerable from the block's knowledge, with no invented assumptions. Unanswerable ones → fix.
- **Core hit:** the question targets the subblock's core concept, phrased neutrally (not deliberately easy or hard — the difficulty is set later by the learner's level). If it misses the core → rephrase.
- **Exactly one per subblock:** exactly one pattern remains per subblock. Duplicates → keep one.
- Carry over the `block` and `subblock` of the entries unchanged (only `question` may change); do not invent new ones.
Keep good patterns unchanged. Change only what genuinely violates the criteria.
Keep every question in GERMAN (the questions are for German-speaking learners), even though these instructions are in English.
Reply with the cleaned-up final version of ALL blocks as ONE JSON — no other text, no code fences — EXACTLY in this format:
{{"pattern": [
{{"block": "<exact block title>", "subblock": "<exact title>", "question": "<one concrete question>"}}
]}}
Output no other text.
{extra}

View File

@@ -1,28 +0,0 @@
You are building the question pool for a learning exam on the topic "{topic}". Create **question patterns****exactly one** concrete example question **per subblock**. Each pattern is later turned, at exam time, into a slightly varied question — matched to the learner's level (beginner to expert). So the difficulty is NOT in the pattern; it only comes in at exam time. Therefore ask about the **core concept** of the subblock, phrased neutrally.
You are working on **several blocks**. Each block has its own subblocks — many with core points, cited facts, and an example:
{blocks}
TASK (for **each** of the blocks above):
- For **each** of its subblocks, create **exactly one** pattern — a concrete, concise question about that subblock's core concept.
- Each pattern is ONE concrete question (1-2 sentences, exactly one question mark, one thing) — no multi-parter, no enumeration.
- The question must be answerable from the block's knowledge. Do not invent extra assumptions.
- Base the question on the supplied **core points and cited facts** (the reliable foundation). Hit the CORE CONCEPT of the subblock, not a detail to be memorized. Assume NOTHING that is not in the facts: no "shown" code snippets/diagrams, no concrete values/lists/numbers from some later guide text.
- The question hits the **core** of the subblock — the central point one must have understood. Not too narrow on a detail, not too broad across the whole block.
- `block` is exactly one of the block titles above. `subblock` is exactly one of the subblock titles of the respective block.
HARD STYLE RULES PER QUESTION:
- Exactly ONE question, one question mark, one thing. No "and"/"as well as", no "name three …".
- At most 1-2 sentences, no preamble, no scenario build-up.
- Phrased neutrally — not deliberately easy, not deliberately hard. The difficulty is set by the exam via the learner's level.
- Direct address, clear German.
Write every question in GERMAN (the questions are for German-speaking learners), even though these instructions are in English.
{extra}
Reply with ONLY the JSON (all patterns of all blocks) as your final message — no code fences, do NOT write a file. EXACTLY this format:
{{"pattern": [
{{"block": "<exact block title>", "subblock": "<exact subblock title>", "question": "<one concrete question>"}}
]}}
Output no other text.

View File

@@ -1,18 +0,0 @@
Several agents have rated the subblocks of the topic "{topic}" by relevance (relevant/peripheral). For some they disagree. Decide the final relevance for each disputed subblock.
DISPUTED SUBBLOCKS (with the votes cast):
{disputed}
Relevance:
- **relevant**: core/standard knowledge that carries the topic — central concepts, definitions, properties. For theoretical topics, also central theorems with no practical use.
- **peripheral**: a side note, niche/special case, "nice to know", deprecated/exotic, purely historical details, concrete numeric examples, mere cross-references. NOT peripheral: a central theorem or a fundamental property. For the complete guide only.
Rules:
- Weigh the votes and decide by the criterion **core vs. peripheral within ITS OWN block**. `peripheral` is a genuine category — mark peripheral items deliberately as such. Only true core concepts/central theorems are never `peripheral`.
- Exactly one value for EACH disputed number.
Reply with ONLY the JSON — no other text, no code fences.
Format (no other text):
{{"relevance": {{"1": "relevant", "4": "peripheral"}}}}
{extra}

View File

@@ -1,24 +0,0 @@
Rate each subblock of the topic "{topic}" by relevance: relevant or peripheral. The relevance controls whether a point goes into the focused guides or only into the complete guide.
SUBBLOCKS (in brackets the parent block of the number; many state their core points with "Kern:"):
{subblocks}
Use the core points for a well-grounded rating — judge on the content, not just the title.
Relevance:
- **relevant**: core/standard knowledge that CARRIES the topic — central concepts, definitions, properties, common practice. For practical topics: what you need in actual use. For theoretical topics: central theorems/properties, EVEN without practical use. What you genuinely should know.
- **peripheral**: a side note, special/niche case, "nice to know", deprecated/exotic — PLUS purely historical details (who/when), concrete numeric examples of a general principle, mere cross-references. NOT peripheral: a central theorem or a fundamental property just because it seems "theoretical". Belongs only in a complete guide.
Rules:
- These subblocks **all already** belong to the topic — the question is not *whether* but *how central*. Judge **core vs. peripheral within its own block**, one at a time.
- **The basic syntax / core rule of a block — what the block TITLE promises — is NEVER peripheral.** A block "Headings" without its heading syntax marked relevant is broken. Check this per block before anything else.
- **When the BLOCK itself is a fringe/extension feature** (non-standard, niche, an add-on rather than core of the topic), only its basic syntax and purpose are relevant — its detail rules and special cases are `peripheral`. A fringe feature must not be decomposed deeper than the core topics (measured: a non-standard block carried 22 "relevant" detail rules while core blocks had 6).
- `peripheral` is a **genuine category** for clear cases: nice-to-know, special/niche cases, detail/numeric examples, historical notes, cross-references, style tips.
- `peripheral` items are CUT from the focused guides — a wrong `peripheral` loses content, a wrong `relevant` only adds a paragraph. **When in doubt → relevant.**
- Only judge — invent nothing, change no subblocks.
Reply with ONLY the JSON — no other text, no code fences.
Format (exactly one value for EACH number; no other text):
{{"relevance": {{"1": "relevant", "2": "peripheral", "3": "relevant"}}}}
{extra}

View File

@@ -0,0 +1,22 @@
You are correcting and completing the subblocks of ONE block of the topic "{topic}" — strictly from the source excerpts.
BLOCK: {block}
{source}
TASKS:
{auftraege}
Rules:
- Work ONLY from the excerpts. Invent no values, compute nothing yourself.
- For corrections: return the subblock with its EXACT title and the complete corrected fact set.
- For gaps: ONE new subblock per gap, atomic, GERMAN title (max ~10 words), fully backed — if the excerpts don't support it, leave it out entirely.
- Field rules as always: key_points 13; cited_facts only backable with location; example_idea free; level beginner|advanced|expert; relevance relevant|peripheral. All content in GERMAN.
Reply with ONLY the JSON — no code fences, no other text. EXACTLY this format (empty list if nothing is backable):
{{"subs": [
{{"title": "…", "level": "…", "relevance": "…",
"key_points": ["…"], "prerequisites": "…", "hurdles": "…",
"cited_facts": [{{"text": "…", "source": "…"}}], "example_idea": "…"}}
]}}
{extra}

View File

@@ -0,0 +1,35 @@
Break the block below (topic "{topic}") into its SUBBLOCKS — the individual learnable sub-points — and extract per subblock the learning facts from the material. A later guide writes a short text PER subblock; the facts are the binding basis for guide text, levels, and exam questions — they must be **correct**.
BLOCK:
{block}
{source}
What a subblock is:
- A single sub-point you must learn for the block. One statement, one aspect, one pitfall.
- Examples: block `<img>``src` (Bildquelle), `alt` (Alternativtext), empty `alt` for decorative images. Block `<p>` → text paragraph as a block, allowed inline children, no nesting.
DECISIVE — the count follows the difficulty:
- A simple, trivial block has FEW subblocks (12). Do NOT inflate it.
- A complex, rich block has MANY subblocks. Leave out nothing essential the material covers.
- Each subblock is atomic (one sub-point), backed by the excerpts — a point the excerpts do not support is left out.
- Subblock titles in GERMAN (code identifiers stay original), max. ~10 words, one statement.
{seeds}
Per subblock, collect ONLY the essentials (all field content in GERMAN; technical terms/code identifiers stay original):
- **level**: beginner | advanced | expert — difficulty within this block.
- **relevance**: relevant (core of the topic) | peripheral (edge knowledge).
- **key_points**: 13 concise statements — what must one understand?
- **prerequisites**: what must one know beforehand (a half-sentence)? Empty if nothing.
- **hurdles**: typical beginner misconception (a half-sentence). Empty if none.
- **cited_facts**: hard facts (definitions, formulas, values, names) — **only what the excerpts back**, each with the location (e.g. „Skript Def. 6.3, Z.66"). Invent no values, compute nothing yourself.
- **example_idea**: ONE example that carries understanding — freely phrased. Empty if an example adds nothing.
HARD SEPARATION: `cited_facts` = only backable material. A worked example, an invented sentence, a constructed case → `example_idea`, NEVER `cited_facts`. When in doubt: better to leave out than to claim falsely.
Reply with ONLY the JSON as your final message — no code fences, no other text. EXACTLY this format:
{{"subs": [
{{"title": "…", "level": "beginner|advanced|expert", "relevance": "relevant|peripheral",
"key_points": ["…"], "prerequisites": "…", "hurdles": "…",
"cited_facts": [{{"text": "…", "source": "…"}}], "example_idea": "…"}}
]}}
{extra}

View File

@@ -1,29 +0,0 @@
Du prüfst die Zerlegung EINES Lernbausteins in Subbausteine für das Thema "{topic}". Jeder Subbaustein wird später ein eigener Absatz im Lernguide. Ziel ist eine 100%-Zerlegung: keinen Eintrag kann man weglassen, ohne dass eine Lücke entsteht — und keinen ergänzen, ohne dass Dopplung entsteht.
BLOCK: {block}
SUBBAUSTEINE (nummeriert, mit ihren Kernpunkten):
{subs}
## Auftrag (vier Urteile)
1. **gruppen — Dopplungen**: Einträge, die DIESELBE Aussage treffen (anders formuliert) oder reine TEILMENGE eines anderen sind. Pro Gruppe: `haupt` = der GRUNDLEGENDSTE, allgemeinste Eintrag (Basis vor Detail, Grundsyntax vor Sonderfall, nie ein inhaltsleerer Stub).
2. **kataloge — Aufzählungs-Bündel**: Einträge, die REINE Nachschlage-Listen gleicher Art sind (z. B. Symbol-, Befehls-, Namenslisten ohne eigene Verhaltensregel). Solche Listen bündelst du zu EINEM Katalog-Eintrag mit sprechendem Titel. Einträge mit eigener Regel oder eigenem Verhalten gehören NICHT in ein Bündel.
3. **fremd — Weglass-Test**: Einträge, deren Aussage nicht zum Thema "{topic}" gehört (anderes Fachgebiet, Grundlagen einer anderen Technologie) — auch wenn die Aussage stimmt und belegbar ist. Ließe man sie weg, fehlte dem Thema nichts.
4. **luecken**: Ein KERN-Aspekt des Blocks fehlt — ohne ihn ist die Zerlegung UNVOLLSTÄNDIG (die Grundregel oder ein Pflichtbestandteil fehlt). Katalog-, Detail- und Randwissen ist KEINE Lücke. Was man ergänzen KÖNNTE, ist keine Lücke — nur was fehlen DARF nicht. Im Zweifel: keine Lücke. Meist ist die Liste leer.
## Regeln — der häufigste Fehler zuerst
- **Verschiedene Schreibweisen, Marker, Befehle oder Syntaxen sind IMMER eigene Einheiten** — auch wenn sie derselben Kategorie angehören oder im selben Satz erklärt werden könnten. „Gehört zusammen" oder „ähnliches Thema" ist KEIN Gruppierungs-Grund. Nur „sagt DASSELBE" zählt.
- Zwei Einträge zum gleichen Konzept mit VERSCHIEDENEN Facetten (Grundregel vs. Sonderfall vs. Randbedingung) sind KEINE Dopplung.
- Eine benannte Variante oder ein Spezialfall ist NIE Dopplung seiner Basis.
- Einträge mit gegensätzlicher Aussage (Negation) nie gruppieren.
- Ein inhaltsleerer oder generischer Eintrag, dessen Titel ein anderer Eintrag vollständig abdeckt, ist Teilmenge → gruppieren, der konkrete Eintrag ist `haupt`.
- Im Zweifel: NICHT gruppieren, NICHT bündeln, NICHT als fremd markieren.
Antworte NUR mit JSON, ohne weiteren Text:
{{"gruppen": [{{"haupt": 1, "weitere": [4]}}], "kataloge": [{{"titel": "Symbolkatalog: Operatoren und Relationen", "mitglieder": [2, 5, 9]}}], "fremd": [7], "luecken": ["fehlender Kernaspekt"]}}
- gruppen: pro Gruppe haupt + weitere (Nummern). Keine Dopplungen → [].
- kataloge: pro Bündel Titel + Mitglieds-Nummern. Keine → [].
- fremd: Nummern themenfremder Einträge. Keine → [].
- luecken: fehlende Kernaspekte in Stichworten. Keine → [].
{extra}

View File

@@ -1,27 +0,0 @@
Below, for each block of the topic "{topic}", are the subblocks found. Return the **cleaned** final list per block.
{source}
FOUND SUBBLOCKS (two groups per block):
{blocks}
The groups:
- **Consensus (≥2 finders):** found independently multiple times — keep by default. Remove only fabrications/duplicates.
- **Uncertain (1×):** named by only one finder — **scrutinize strictly**. Include an uncertain entry ONLY if it is **clearly backed by the source AND a standalone point**. When in doubt, leave it out.
Rules:
- **Evidence check (important):** Check each subblock against the source. **Discard whatever is NOT backable in the material or clearly invented** — fabricated bounds, formulas, values, or claims not actually in the source. With source material (folder or excerpts): check against it. Without a source (pure topic): keep only established standard knowledge, drop the doubtful/false.
- **Merge duplicates:** Subblocks that state the same point in other words are ONE. Keep the clearest, drop the rephrasings. (e.g. „Broadcast Mode verfügbar" and „Broadcast-Modus aktivieren" → one.)
- Keep all technically **DISTINCT** and backable sub-points in full — leave out nothing essential.
- Discard whatever is too fine-grained, at the edge of the topic, or technically doubtful.
- Each point atomic (one statement). Copy kept points VERBATIM, do not rephrase, invent nothing.
- The count follows the difficulty: better few distinct than many redundant points.
Reply with ONLY the final lists — no other text, no code fences. One block marker per block (title EXACTLY as above), with the final subblock list below it:
<!-- block: Exact block title -->
- Subblock
- Subblock
Output the marker line exactly like this. Every block must appear. No text outside the blocks.
{extra}

View File

@@ -1,27 +0,0 @@
Break each assigned block of the topic "{topic}" into its SUBBLOCKS — the individual learnable sub-points the concept is made of. A later guide will write a short text PER subblock.
Assigned to you — binding: every block must appear, invent no additional ones:
{assignment}
{material}
What a subblock is:
- A single sub-point you must learn for the block. One statement, one aspect, one pitfall.
- Examples: block `<img>``src` (Bildquelle), `alt` (Alternativtext), empty `alt` for decorative images, `width`/`height` against layout shifts, void element without a closing tag. Block `<p>` → text paragraph as a block, allowed inline children, no nesting.
DECISIVE — the count follows the difficulty:
- A simple, trivial block has FEW subblocks (12). Do NOT inflate it.
- A complex, rich block has MANY subblocks. Leave out nothing essential.
- There is NO target count. `<img>` must have noticeably more subblocks than `<p>`.
Rules:
- Each subblock is atomic: exactly one sub-point. No two aspects in one point.
- Only what THIS block yields (scope). Don't inflate anything mentioned only in passing.
- {backing}
- Subblock titles in GERMAN (code identifiers stay original), max. ~10 words, one statement.
Reply with ONLY the subblock lists in this exact marker format — one block marker per block (title EXACTLY from the assignment), the subblocks as a list below it. No code fences, no text outside the blocks:
<!-- block: Exact block title -->
- First subblock
- Second subblock
{known}
{extra}

View File

@@ -0,0 +1,26 @@
You are auditing the decomposition of ONE block of the topic "{topic}" into subblocks. Below are the numbered subblocks with their captured facts, then source excerpts. Apply the 100%-decomposition test: no entry removable without a gap, none addable without duplication — and verify the facts.
BLOCK: {block}
SUBBLOCKS (numbered; key points indented):
{subs}
{unsicher}
{source}
Judge ALL of the following (use the numbers):
1. **gruppen** — entries that state the SAME thing or where one is a subset of the other: group them and name the number that should remain (`haupt` = the base statement, not the detail).
2. **kataloge** — pure enumeration entries of ONE kind (e.g. five option rows): bundle them under ONE short GERMAN collective title.
3. **fremd** — entries off-topic for the topic "{topic}" (not this block — the TOPIC).
4. **luecken** — essential aspects of THIS block that the excerpts cover but no entry captures (short German phrases). Only real gaps, no nice-to-haves.
5. **uebernehmen** — for each UNSICHER-numbered entry: "ja" if the excerpts back it and it fills a real spot, else "nein".
6. **facts_probleme** — entries whose facts contain something wrong or unbackable: `discard: true` ONLY if the entry as a whole is unsupportable in substance; otherwise `discard: false` with a short `hinweis` what to correct.
7. **levels** / **relevanz** — ONLY entries whose level (beginner/advanced/expert) or relevance (relevant/peripheral) is clearly wrong: number → correct value.
Judge ONLY from the excerpts. If everything is fine, return empty lists/objects.
Reply with ONLY the JSON — no code fences, no other text. Format:
{{"gruppen": [{{"haupt": 1, "weitere": [4]}}], "kataloge": [{{"titel": "…", "mitglieder": [2, 5]}}],
"fremd": [7], "luecken": ["…"], "uebernehmen": {{"9": "ja"}},
"facts_probleme": [{{"nr": 3, "discard": false, "hinweis": "…"}}],
"levels": {{"2": "expert"}}, "relevanz": {{"5": "peripheral"}}}}
{extra}