init: extract limen-wissenstransfer from qognio-bot-widget-template@d2c816f

Source files (src/) and rendered bundle (www/) extracted on 2026-04-29T01:35:48+02:00.
Adds nginx:alpine Dockerfile + docker-compose.yml (Caddy-labels) so the bot
runs stand-alone or as a per-customer template clone.

Parent monorepo commit: d2c816f3edbc9760802a11b29ff4151c7aad4b46
Bot version: 2026-04-25
This commit is contained in:
Qognio Bot Extract 2026-04-29 01:35:48 +02:00
commit 8c5f2dceb7
16 changed files with 3462 additions and 0 deletions

7
.dockerignore Normal file
View file

@ -0,0 +1,7 @@
.git
.gitignore
README.md
bot.json
src/
docker-compose.yml
*.md

4
.gitignore vendored Normal file
View file

@ -0,0 +1,4 @@
.DS_Store
*.log
*.tmp
node_modules/

13
Dockerfile Normal file
View file

@ -0,0 +1,13 @@
# Static-bundle bot — nginx:alpine serves www/ on port 80.
FROM nginx:1.27-alpine
# nginx config: gzip + cache headers + index.html no-store
COPY nginx.conf /etc/nginx/conf.d/default.conf
# Static bundle
COPY www/ /usr/share/nginx/html/
# Run as non-root via nginx's built-in unprivileged image features
EXPOSE 80
HEALTHCHECK --interval=30s --timeout=3s --start-period=5s --retries=3 \
CMD wget -q --spider http://127.0.0.1/index.html || exit 1

67
README.md Normal file
View file

@ -0,0 +1,67 @@
# LIMEN — Wissenstransfer-Begleiter
LIMEN — strukturiertes Wissens-Interview bei Renteneintritt oder Kündigung. 4-6 Sitzungen entlang 12 Achsen, durchsuchbares Playbook für Nachfolger:in. Im deutschen Bunker.
```
slug : limen-wissenstransfer
version : 2026-04-25
accent : #a16207
runtime : nginx:alpine (static bundle)
template : qognio-bot-template-core (former qognio-bot-widget-template)
```
## Layout
```
.
├── src/ source — config.yaml, welcome.html, curricula.json, etc.
├── www/ rendered, directly servable static bundle
├── Dockerfile nginx:alpine + www/ → port 80
├── docker-compose.yml bot-host pattern (Caddy-labels, restart unless-stopped)
├── nginx.conf gzip + cache + SPA fallback
└── bot.json metadata + parent_core_commit
```
## Run locally
```bash
docker compose up --build
# → http://localhost (you'll need to tweak ports for local-only use)
```
## Re-render after upstream core changes
This repo only stores src + rendered output; the rendering engine lives in
`qognio-bot-template-core`. To pull in core changes:
```bash
cd /path/to/qognio-bot-template-core
./scripts/render.sh limen-wissenstransfer --bot-repo /path/to/this/repo
git -C /path/to/this/repo commit -am "render: refresh from core@<sha>"
```
## Per-customer copy (template usage)
This repo is a **template**. To clone for a customer:
```bash
git clone <this-repo> my-customer-limen-wissenstransfer
cd my-customer-limen-wissenstransfer
# tweak src/config.yaml (slug, bot_key_value, accent), src/welcome.html, src/curricula.json
docker compose -f docker-compose.yml up --build
```
## Deploy to qognio bot-host (.42 LXC pattern — legacy)
The bot-manager spawns LXC containers named after the slug. Push www/ via:
```bash
ssh fmh@46.243.203.42
sudo lxc file push /tmp/www/* limen-wissenstransfer/var/www/html/
```
(Or run the docker-compose pattern on a Docker host — same network as Caddy.)
---
Generated by `qognio-bot-template-core/scripts/extract-to-repo.sh` on 2026-04-29T01:35:48+02:00.

14
bot.json Normal file
View file

@ -0,0 +1,14 @@
{
"slug": "limen-wissenstransfer",
"name": "LIMEN",
"title": "Wissenstransfer-Begleiter",
"tagline": "Wissenstransfer",
"description": "LIMEN — strukturiertes Wissens-Interview bei Renteneintritt oder Kündigung. 4-6 Sitzungen entlang 12 Achsen, durchsuchbares Playbook für Nachfolger:in. Im deutschen Bunker.",
"version": "2026-04-25",
"accent": "#a16207",
"extracted_from": "qognio-bot-widget-template",
"parent_core_commit": "d2c816f3edbc9760802a11b29ff4151c7aad4b46",
"extracted_at": "2026-04-29T01:35:48+02:00",
"runtime": "nginx:alpine",
"default_port": 80
}

20
docker-compose.yml Normal file
View file

@ -0,0 +1,20 @@
# Stand-alone bot container.
# Designed for the "caddy" external network on the bot host (qognio pattern).
# Override the hostname via SLUG env var if you reuse this template per customer.
services:
bot:
build: .
image: qognio/bot-limen-wissenstransfer:${TAG:-latest}
container_name: bot-limen-wissenstransfer
restart: unless-stopped
networks:
- caddy
labels:
caddy: "limen-wissenstransfer.on.qognio.com"
caddy.reverse_proxy: "{{upstreams 80}}"
qognio.bot.slug: "limen-wissenstransfer"
qognio.bot.version: "2026-04-25"
networks:
caddy:
external: true

27
nginx.conf Normal file
View file

@ -0,0 +1,27 @@
server {
listen 80;
server_name _;
root /usr/share/nginx/html;
index index.html;
# gzip
gzip on;
gzip_vary on;
gzip_types text/css application/javascript application/json image/svg+xml text/plain;
gzip_min_length 512;
# index.html: never cache (so welcome screen / wiring updates land instantly)
location = /index.html {
add_header Cache-Control "no-store, must-revalidate" always;
}
# static assets: cache 1h
location ~* \.(?:css|js|json|svg|png|jpe?g|webp|gif|ico|woff2?)$ {
add_header Cache-Control "public, max-age=3600" always;
try_files $uri =404;
}
location / {
try_files $uri $uri/ /index.html;
}
}

18
src/check-badges.js Normal file
View file

@ -0,0 +1,18 @@
// Erstes Interview — 1 Quiz im Tagesroutinen-Modul
if ((state.moduleCorrect && state.moduleCorrect['tagesroutinen'] >= 1)) unlockBadge('erstes_interview');
// Quirks-Sammler:in — 5 Quiz korrekt im Ausnahmen-Regeln-Modul (Quirks)
if ((state.moduleCorrect && state.moduleCorrect['ausnahmen-regeln'] >= 5)) unlockBadge('quirks_sammler');
// Lieferanten-Kenner:in — 3 Quiz korrekt im Kontakte-mappen-Modul
if ((state.moduleCorrect && state.moduleCorrect['kontakte-mappen'] >= 3)) unlockBadge('lieferanten_kenner');
// Story-Hüter:in — 3 Quiz korrekt im Krisen-Erinnerungen-Modul
if ((state.moduleCorrect && state.moduleCorrect['krisen-erinnerungen'] >= 3)) unlockBadge('story_hueter');
// Ritual-Wächter:in — Co-Working-Phase-Modul Flashcards bestanden
if ((state.modulePassedFlash && state.modulePassedFlash['co-working-phase'])) unlockBadge('ritual_waechter');
// LIMEN-Meister:in — 9 von 12 Modulen mit ≥80% Quiz-Score abgeschlossen (75% Master-Coverage)
if ((state.completedCurricula || []).length >= 9) unlockBadge('limen_meister');
// Streak 7 — 7 Tage in Folge aktiv (entspricht 1 Interview-Sprint)
if (state.maxStreak >= 7) unlockBadge('streak_7');
// Night Owl & Early Bird (beibehalten)
const h = new Date().getHours();
if (h >= 22) unlockBadge('night_owl');
if (h < 7) unlockBadge('early_bird');

33
src/config.yaml Normal file
View file

@ -0,0 +1,33 @@
slug: limen-wissenstransfer
bot_name: LIMEN
bot_title: Wissenstransfer-Begleiter
brand_letter: L
title: "LIMEN · Wissenstransfer beim Mitarbeiter-Austritt"
tagline: "Strukturiertes Offboarding-Interview entlang 12 Wissens-Achsen"
tagline_short: Wissenstransfer
meta_description: "LIMEN — strukturiertes Wissens-Interview bei Renteneintritt oder Kündigung. 4-6 Sitzungen entlang 12 Achsen, durchsuchbares Playbook für Nachfolger:in. Im deutschen Bunker."
bot_key_var: __LIMEN_KEY__
bot_key_value: qb_a31bm4iumoul
ls_prefix: limen
bot_version: "2026-04-25"
# Color theme — bronze/sepia, sinngemäß "altes Wissen, kostbare Spur"
accent: "#a16207"
accent_2: "#ca8a04"
accent_dark: "#854d0e"
accent_rgb: "161, 98, 7"
accent_rgb_compact: "161,98,7"
success_color: "#22c55e"
msg_strong_color: "#fef08a"
# UI Labels
tab_flash_label: Karten
tab_curriculum_label: Achsen
curriculum_long_label: Wissens-Achsen
# Bot-personality strings
quiz_intro_hint: "Wähle eine Wissens-Achse — LIMEN führt dich durch Interview-Fragen für die ausscheidende Person."
quiz_verb: stellt
quiz_noun: "Interview-Fragen"
flash_intro_hint: "Karteikarten als Gedächtnisstütze für den Wissenstransfer (Was-Wer-Wie-Achsen)."
flash_verb: generiert

157
src/curricula.json Normal file
View file

@ -0,0 +1,157 @@
{
"version": "2026-04-25",
"updated": "2026-04-25",
"curricula": [
{
"id": "prozesse",
"title": "1 · Prozesse & Routinen",
"short": "Was tust du täglich, wöchentlich, jährlich — und warum genau so?",
"icon": "list",
"color": "#a16207",
"description": "Achse 1-3: Tagesroutinen, Wochen-Rituale, Jahres-Zyklen. Implizit-explizit-Mapping mit dem Bot als Interview-Leiter.",
"source_md": "00-prozesse.md",
"modules": [
{
"id": "tagesroutinen",
"title": "Tagesroutinen entlocken",
"objectives": ["Konkrete Fragen für die Morgens-Routine","'Was ist das Erste, was du nach dem Anmelden machst?'","Implizite Reihenfolgen sichtbar machen"],
"topics": ["Tagesablauf","Morgens-Routine","Übergabe Schicht"],
"difficulty": "einfach",
"source_heading": "Tagesroutinen"
},
{
"id": "wochen-rituale",
"title": "Wochen-Rituale & Meetings",
"objectives": ["Welche Meetings sind 'pro forma' vs. 'wirklich wichtig'","Wer muss wann informiert sein","Berichtswege & deren historische Gründe"],
"topics": ["Jour-Fixe","Reporting-Wege","Meeting-Hygiene"],
"difficulty": "mittel",
"source_heading": "Wochen-Rituale"
},
{
"id": "jahres-zyklen",
"title": "Jahres-Zyklen & Saisonales",
"objectives": ["Quartalsabschluss-Spezialitäten","Jahres-Audit-Vorbereitung","Saisonal wiederkehrende Stress-Phasen + Coping"],
"topics": ["Quartalsabschluss","Audit","Hochsaison"],
"difficulty": "mittel",
"source_heading": "Jahres-Zyklen"
}
]
},
{
"id": "quirks",
"title": "2 · Quirks, Ausnahmen, Workarounds",
"short": "Achsen 4-5: 'wenn X passiert, dann Y' — die unsichtbaren Regeln",
"icon": "alert",
"color": "#a16207",
"description": "Ausnahme-Regeln, Workarounds, Hacks, die sich über Jahre eingeschlichen haben. Diese sind Gold für Nachfolger:innen — und unsichtbar für SOPs.",
"source_md": "01-quirks.md",
"modules": [
{
"id": "ausnahmen-regeln",
"title": "Ausnahmen-Regeln",
"objectives": ["'Wenn X passiert, dann musst du Y machen'-Listen","Warum bestehende Workarounds entstanden","Welche Regeln nicht mehr nötig wären (Cargo-Cult)"],
"topics": ["If-then-Regeln","Cargo-Cult-Prozesse","Hacks"],
"difficulty": "mittel",
"source_heading": "Ausnahmen"
},
{
"id": "system-quirks",
"title": "System-Quirks (Software, Tools)",
"objectives": ["'Das SAP-Modul X muss man so klicken, sonst…'","Workarounds für bekannte Bugs","Inoffizielle Tools, die alle nutzen"],
"topics": ["SAP","ERP-Quirks","Inoffizielle Tools"],
"difficulty": "schwer",
"source_heading": "System-Quirks"
}
]
},
{
"id": "lieferanten",
"title": "3 · Lieferanten- & Partner-Netzwerk",
"short": "Achsen 6-7: Personen außerhalb der Firma, die wichtig sind",
"icon": "users",
"color": "#a16207",
"description": "Externe Kontakte: Lieferanten, Dienstleister, Behörden, Verbände. Mit deren Quirks, Vorlieben, persönlichen Beziehungen.",
"source_md": "02-lieferanten.md",
"modules": [
{
"id": "kontakte-mappen",
"title": "Kontakte mappen",
"objectives": ["Wer ist 'Frau Müller bei Lieferant X' wirklich","Wann anrufen vs. mailen","Was vor dem Termin wissen sollte"],
"topics": ["Kontakt-Karte","Beziehungs-Wissen","Etikette"],
"difficulty": "mittel",
"source_heading": "Kontakte mappen"
},
{
"id": "behörden-knowhow",
"title": "Behörden & Verbände",
"objectives": ["Welcher Sachbearbeiter ist hilfreich","Welche Anträge auf welchem Formular","Verband-Mitgliedschaften & Hebel"],
"topics": ["Behörden","Sachbearbeiter","Verbände"],
"difficulty": "schwer",
"source_heading": "Behörden-Knowhow"
}
]
},
{
"id": "storys",
"title": "4 · Storys & Lessons Learned",
"short": "Achsen 8-9: Was schief ging, was glückte — die Erfahrungs-Anekdoten",
"icon": "book",
"color": "#a16207",
"description": "Erzähl-Wissen: Wie der Krise X gelöst wurde, warum Projekt Y schief ging, wer 1998 das Geheim-Rezept etablierte. Story-basiertes Lernen für die Nachfolge.",
"source_md": "03-storys.md",
"modules": [
{
"id": "krisen-erinnerungen",
"title": "Krisen-Erinnerungen",
"objectives": ["'Erzähl mir von einer schwierigen Situation, die du gelöst hast'","Was war der Lerneffekt?","Wem würdest du das gleich erzählen?"],
"topics": ["Krise","Lösung","Lerneffekt"],
"difficulty": "mittel",
"source_heading": "Krisen-Erinnerungen"
},
{
"id": "erfolgsgeschichten",
"title": "Erfolgsgeschichten & 'Wie es kam'",
"objectives": ["'Was war dein größter beruflicher Stolz hier?'","Welche Initiative hat dich am meisten geprägt","Warum hat das funktioniert"],
"topics": ["Erfolg","Initiative","Erkenntnis"],
"difficulty": "einfach",
"source_heading": "Erfolgsgeschichten"
}
]
},
{
"id": "rituale",
"title": "5 · Übergabe-Rituale",
"short": "Achsen 10-12: Wie der Wechsel selbst sauber gestaltet wird",
"icon": "calendar",
"color": "#a16207",
"description": "Übergabe-Mechanik: Co-Working-Phase, Schatten-Wochen, 'Pension-Buddy', Notfall-Hotline für die ersten 3 Monate. Plus DSGVO-Aspekte (was darf in der Doku stehen).",
"source_md": "04-rituale.md",
"modules": [
{
"id": "co-working-phase",
"title": "Co-Working-Phase",
"objectives": ["Welche Aufgaben gemeinsam","Welche allein der/die Nachfolger:in","Schatten-Stunden vs. Lehr-Stunden"],
"topics": ["Co-Working","Schatten-Wochen","Coaching"],
"difficulty": "mittel",
"source_heading": "Co-Working"
},
{
"id": "pension-buddy",
"title": "Pension-Buddy & Hotline",
"objectives": ["3-Monats-Beratungsangebot strukturieren","Honorar-/Vertrags-Form","Erreichbarkeit & Grenzen klären"],
"topics": ["Beratungsvertrag","Honorar","Hotline"],
"difficulty": "schwer",
"source_heading": "Pension-Buddy"
},
{
"id": "dsgvo-doku",
"title": "DSGVO im Übergabe-Doku",
"objectives": ["Welche Personen-Daten dürfen ins Playbook","Konflikt-Anekdoten anonymisieren","Wem gehört das Playbook (Firma vs. Person)"],
"topics": ["DSGVO","Anonymisierung","Eigentum"],
"difficulty": "schwer",
"source_heading": "DSGVO-Doku"
}
]
}
]
}

4
src/levels-fallback.js Normal file
View file

@ -0,0 +1,4 @@
{ min: 0, title: 'Übergabe-Anfänger:in' }, { min: 50, title: 'Übergabe-Begleiter:in' },
{ min: 200, title: 'Wissens-Hüter:in' }, { min: 500, title: 'Übergabe-Architekt:in' },
{ min: 1250, title: 'Wissens-Diplomat:in' }, { min: 2500, title: 'Wissens-Schatzmeister:in' },
{ min: 5000, title: 'Übergabe-Großmeister:in' }

29
src/welcome.html Normal file
View file

@ -0,0 +1,29 @@
<h2>Willkommen bei LIMEN!</h2>
<p>Hi, ich bin LIMEN — der Begleiter für den <strong>Wissenstransfer beim Mitarbeiter-Austritt</strong>. Wenn jemand nach 20 Jahren in Rente geht, hat er Wissen, das in keiner SOP steht: "Wenn X passiert, ruf Frau Y bei Firma Z an." Ich strukturiere 4-6 Interview-Sitzungen entlang <strong>12 Wissens-Achsen</strong> und baue daraus ein durchsuchbares Playbook für die Nachfolge. Sag mir, <strong>wer geht und in welcher Rolle</strong> — ich startete den passenden Interview-Faden.</p>
<div class="mode-grid">
<button class="mode-card" data-goto="chat">
<strong>Chat</strong>
<span>Strukturiertes Interview mit der ausscheidenden Person führen.</span>
</button>
<button class="mode-card" data-goto="quiz">
<strong>Quiz</strong>
<span>Interview-Fragen-Generator pro Wissens-Achse.</span>
</button>
<button class="mode-card" data-goto="flash">
<strong>Flashcards</strong>
<span>Gedächtnisstütze: Was-Wer-Wie für Nachfolger:in.</span>
</button>
<button class="mode-card" data-goto="progress">
<strong>Fortschritt</strong>
<span>Welche Achsen schon abgedeckt sind; Lücken-Anzeige.</span>
</button>
<button class="mode-card" data-goto="curriculum">
<strong>Achsen</strong>
<span>5 Module mit den 12 Wissens-Achsen (Prozesse, Quirks, Lieferanten, Storys, Rituale).</span>
</button>
<button class="mode-card" data-prompt="INTERVIEW_REQUEST: Wissens-Achse [z.B. Lieferanten-Beziehungen], 4 Sitzungen mit [Mitarbeiter:in], Renteneintritt in 6 Wochen">
<strong>Interview-Plan</strong>
<span><code>INTERVIEW_REQUEST</code> + Achse/Person/Frist → strukturierter Interview-Faden als Karte.</span>
</button>
</div>
<p style="font-size:.82rem;color:var(--text-mute)">In 3 Sätzen: Chat zum Interview-Führen → Quiz für Nachfass-Fragen → Flashcards als Cheat-Sheet für die Nachfolge. Alle Daten bleiben im deutschen Bunker. PDF-Export der Interview-Notizen ist Teil der Roadmap (Phase 2).</p>

1749
www/app.js Normal file

File diff suppressed because it is too large Load diff

157
www/curricula.json Normal file
View file

@ -0,0 +1,157 @@
{
"version": "2026-04-25",
"updated": "2026-04-25",
"curricula": [
{
"id": "prozesse",
"title": "1 · Prozesse & Routinen",
"short": "Was tust du täglich, wöchentlich, jährlich — und warum genau so?",
"icon": "list",
"color": "#a16207",
"description": "Achse 1-3: Tagesroutinen, Wochen-Rituale, Jahres-Zyklen. Implizit-explizit-Mapping mit dem Bot als Interview-Leiter.",
"source_md": "00-prozesse.md",
"modules": [
{
"id": "tagesroutinen",
"title": "Tagesroutinen entlocken",
"objectives": ["Konkrete Fragen für die Morgens-Routine","'Was ist das Erste, was du nach dem Anmelden machst?'","Implizite Reihenfolgen sichtbar machen"],
"topics": ["Tagesablauf","Morgens-Routine","Übergabe Schicht"],
"difficulty": "einfach",
"source_heading": "Tagesroutinen"
},
{
"id": "wochen-rituale",
"title": "Wochen-Rituale & Meetings",
"objectives": ["Welche Meetings sind 'pro forma' vs. 'wirklich wichtig'","Wer muss wann informiert sein","Berichtswege & deren historische Gründe"],
"topics": ["Jour-Fixe","Reporting-Wege","Meeting-Hygiene"],
"difficulty": "mittel",
"source_heading": "Wochen-Rituale"
},
{
"id": "jahres-zyklen",
"title": "Jahres-Zyklen & Saisonales",
"objectives": ["Quartalsabschluss-Spezialitäten","Jahres-Audit-Vorbereitung","Saisonal wiederkehrende Stress-Phasen + Coping"],
"topics": ["Quartalsabschluss","Audit","Hochsaison"],
"difficulty": "mittel",
"source_heading": "Jahres-Zyklen"
}
]
},
{
"id": "quirks",
"title": "2 · Quirks, Ausnahmen, Workarounds",
"short": "Achsen 4-5: 'wenn X passiert, dann Y' — die unsichtbaren Regeln",
"icon": "alert",
"color": "#a16207",
"description": "Ausnahme-Regeln, Workarounds, Hacks, die sich über Jahre eingeschlichen haben. Diese sind Gold für Nachfolger:innen — und unsichtbar für SOPs.",
"source_md": "01-quirks.md",
"modules": [
{
"id": "ausnahmen-regeln",
"title": "Ausnahmen-Regeln",
"objectives": ["'Wenn X passiert, dann musst du Y machen'-Listen","Warum bestehende Workarounds entstanden","Welche Regeln nicht mehr nötig wären (Cargo-Cult)"],
"topics": ["If-then-Regeln","Cargo-Cult-Prozesse","Hacks"],
"difficulty": "mittel",
"source_heading": "Ausnahmen"
},
{
"id": "system-quirks",
"title": "System-Quirks (Software, Tools)",
"objectives": ["'Das SAP-Modul X muss man so klicken, sonst…'","Workarounds für bekannte Bugs","Inoffizielle Tools, die alle nutzen"],
"topics": ["SAP","ERP-Quirks","Inoffizielle Tools"],
"difficulty": "schwer",
"source_heading": "System-Quirks"
}
]
},
{
"id": "lieferanten",
"title": "3 · Lieferanten- & Partner-Netzwerk",
"short": "Achsen 6-7: Personen außerhalb der Firma, die wichtig sind",
"icon": "users",
"color": "#a16207",
"description": "Externe Kontakte: Lieferanten, Dienstleister, Behörden, Verbände. Mit deren Quirks, Vorlieben, persönlichen Beziehungen.",
"source_md": "02-lieferanten.md",
"modules": [
{
"id": "kontakte-mappen",
"title": "Kontakte mappen",
"objectives": ["Wer ist 'Frau Müller bei Lieferant X' wirklich","Wann anrufen vs. mailen","Was vor dem Termin wissen sollte"],
"topics": ["Kontakt-Karte","Beziehungs-Wissen","Etikette"],
"difficulty": "mittel",
"source_heading": "Kontakte mappen"
},
{
"id": "behörden-knowhow",
"title": "Behörden & Verbände",
"objectives": ["Welcher Sachbearbeiter ist hilfreich","Welche Anträge auf welchem Formular","Verband-Mitgliedschaften & Hebel"],
"topics": ["Behörden","Sachbearbeiter","Verbände"],
"difficulty": "schwer",
"source_heading": "Behörden-Knowhow"
}
]
},
{
"id": "storys",
"title": "4 · Storys & Lessons Learned",
"short": "Achsen 8-9: Was schief ging, was glückte — die Erfahrungs-Anekdoten",
"icon": "book",
"color": "#a16207",
"description": "Erzähl-Wissen: Wie der Krise X gelöst wurde, warum Projekt Y schief ging, wer 1998 das Geheim-Rezept etablierte. Story-basiertes Lernen für die Nachfolge.",
"source_md": "03-storys.md",
"modules": [
{
"id": "krisen-erinnerungen",
"title": "Krisen-Erinnerungen",
"objectives": ["'Erzähl mir von einer schwierigen Situation, die du gelöst hast'","Was war der Lerneffekt?","Wem würdest du das gleich erzählen?"],
"topics": ["Krise","Lösung","Lerneffekt"],
"difficulty": "mittel",
"source_heading": "Krisen-Erinnerungen"
},
{
"id": "erfolgsgeschichten",
"title": "Erfolgsgeschichten & 'Wie es kam'",
"objectives": ["'Was war dein größter beruflicher Stolz hier?'","Welche Initiative hat dich am meisten geprägt","Warum hat das funktioniert"],
"topics": ["Erfolg","Initiative","Erkenntnis"],
"difficulty": "einfach",
"source_heading": "Erfolgsgeschichten"
}
]
},
{
"id": "rituale",
"title": "5 · Übergabe-Rituale",
"short": "Achsen 10-12: Wie der Wechsel selbst sauber gestaltet wird",
"icon": "calendar",
"color": "#a16207",
"description": "Übergabe-Mechanik: Co-Working-Phase, Schatten-Wochen, 'Pension-Buddy', Notfall-Hotline für die ersten 3 Monate. Plus DSGVO-Aspekte (was darf in der Doku stehen).",
"source_md": "04-rituale.md",
"modules": [
{
"id": "co-working-phase",
"title": "Co-Working-Phase",
"objectives": ["Welche Aufgaben gemeinsam","Welche allein der/die Nachfolger:in","Schatten-Stunden vs. Lehr-Stunden"],
"topics": ["Co-Working","Schatten-Wochen","Coaching"],
"difficulty": "mittel",
"source_heading": "Co-Working"
},
{
"id": "pension-buddy",
"title": "Pension-Buddy & Hotline",
"objectives": ["3-Monats-Beratungsangebot strukturieren","Honorar-/Vertrags-Form","Erreichbarkeit & Grenzen klären"],
"topics": ["Beratungsvertrag","Honorar","Hotline"],
"difficulty": "schwer",
"source_heading": "Pension-Buddy"
},
{
"id": "dsgvo-doku",
"title": "DSGVO im Übergabe-Doku",
"objectives": ["Welche Personen-Daten dürfen ins Playbook","Konflikt-Anekdoten anonymisieren","Wem gehört das Playbook (Firma vs. Person)"],
"topics": ["DSGVO","Anonymisierung","Eigentum"],
"difficulty": "schwer",
"source_heading": "DSGVO-Doku"
}
]
}
]
}

125
www/index.html Normal file
View file

@ -0,0 +1,125 @@
<!DOCTYPE html>
<html lang="de">
<head>
<meta charset="utf-8">
<title>LIMEN · Wissenstransfer beim Mitarbeiter-Austritt</title>
<meta name="viewport" content="width=device-width,initial-scale=1,viewport-fit=cover">
<meta name="theme-color" content="#0a0a0f">
<meta name="description" content="LIMEN — strukturiertes Wissens-Interview bei Renteneintritt oder Kündigung. 4-6 Sitzungen entlang 12 Achsen, durchsuchbares Playbook für Nachfolger:in. Im deutschen Bunker.">
<link rel="stylesheet" href="styles.css">
<script>window.__LIMEN_KEY__ = 'qb_a31bm4iumoul';</script>
</head>
<body>
<div class="app" role="application" aria-label="LIMEN Strukturiertes Offboarding-Interview entlang 12 Wissens-Achsen">
<header class="topbar">
<div class="brand">
<span class="brand-icon" aria-hidden="true">L</span>
<span>LIMEN <small>Wissenstransfer</small></span>
</div>
<div class="spacer"></div>
<span class="status" role="status" aria-live="polite">Online</span>
</header>
<nav class="tabbar" role="tablist" aria-label="Modi">
<button class="tab" role="tab" aria-selected="true" aria-controls="view-chat" data-mode="chat">
Chat
<span class="tab-kbd">⌃1</span>
</button>
<button class="tab" role="tab" aria-selected="false" aria-controls="view-quiz" data-mode="quiz">
Quiz
<span class="tab-kbd">⌃2</span>
</button>
<button class="tab" role="tab" aria-selected="false" aria-controls="view-flash" data-mode="flash">
Karten
<span class="tab-kbd">⌃3</span>
</button>
<button class="tab" role="tab" aria-selected="false" aria-controls="view-progress" data-mode="progress">
Fortschritt
<span class="tab-kbd">⌃4</span>
</button>
<button class="tab" role="tab" aria-selected="false" aria-controls="view-curriculum" data-mode="curriculum">
Achsen
<span class="tab-kbd">⌃5</span>
</button>
</nav>
<main class="main">
<!-- CHAT -->
<section id="view-chat" class="view" role="tabpanel" aria-labelledby="tab-chat" data-active="true">
<div id="welcome-screen" class="welcome hidden" aria-hidden="true">
<h2>Willkommen bei LIMEN!</h2>
<p>Hi, ich bin LIMEN — der Begleiter für den <strong>Wissenstransfer beim Mitarbeiter-Austritt</strong>. Wenn jemand nach 20 Jahren in Rente geht, hat er Wissen, das in keiner SOP steht: "Wenn X passiert, ruf Frau Y bei Firma Z an." Ich strukturiere 4-6 Interview-Sitzungen entlang <strong>12 Wissens-Achsen</strong> und baue daraus ein durchsuchbares Playbook für die Nachfolge. Sag mir, <strong>wer geht und in welcher Rolle</strong> — ich startete den passenden Interview-Faden.</p>
<div class="mode-grid">
<button class="mode-card" data-goto="chat">
<strong>Chat</strong>
<span>Strukturiertes Interview mit der ausscheidenden Person führen.</span>
</button>
<button class="mode-card" data-goto="quiz">
<strong>Quiz</strong>
<span>Interview-Fragen-Generator pro Wissens-Achse.</span>
</button>
<button class="mode-card" data-goto="flash">
<strong>Flashcards</strong>
<span>Gedächtnisstütze: Was-Wer-Wie für Nachfolger:in.</span>
</button>
<button class="mode-card" data-goto="progress">
<strong>Fortschritt</strong>
<span>Welche Achsen schon abgedeckt sind; Lücken-Anzeige.</span>
</button>
<button class="mode-card" data-goto="curriculum">
<strong>Achsen</strong>
<span>5 Module mit den 12 Wissens-Achsen (Prozesse, Quirks, Lieferanten, Storys, Rituale).</span>
</button>
<button class="mode-card" data-prompt="INTERVIEW_REQUEST: Wissens-Achse [z.B. Lieferanten-Beziehungen], 4 Sitzungen mit [Mitarbeiter:in], Renteneintritt in 6 Wochen">
<strong>Interview-Plan</strong>
<span><code>INTERVIEW_REQUEST</code> + Achse/Person/Frist → strukturierter Interview-Faden als Karte.</span>
</button>
</div>
<p style="font-size:.82rem;color:var(--text-mute)">In 3 Sätzen: Chat zum Interview-Führen → Quiz für Nachfass-Fragen → Flashcards als Cheat-Sheet für die Nachfolge. Alle Daten bleiben im deutschen Bunker. PDF-Export der Interview-Notizen ist Teil der Roadmap (Phase 2).</p>
</div>
<div id="chat-box" class="chat-box" aria-live="polite" aria-label="Gespräch"></div>
</section>
<!-- QUIZ -->
<section id="view-quiz" class="view" role="tabpanel" aria-labelledby="tab-quiz">
<div id="quiz-host"></div>
</section>
<!-- FLASHCARDS -->
<section id="view-flash" class="view" role="tabpanel" aria-labelledby="tab-flash">
<div id="flash-host"></div>
</section>
<!-- PROGRESS -->
<section id="view-progress" class="view" role="tabpanel" aria-labelledby="tab-progress">
<div id="progress-host"></div>
</section>
<!-- CURRICULUM -->
<section id="view-curriculum" class="view" role="tabpanel" aria-labelledby="tab-curr">
<div id="curr-host"></div>
</section>
</main>
<form id="composer-form" class="composer" aria-label="Nachricht verfassen">
<div id="attach-strip" class="attach-strip" aria-live="polite"></div>
<div class="composer-row">
<button type="button" class="btn-attach" id="composer-attach" aria-label="Datei anhängen" title="Datei anhängen (PDF, Bild, Text — max 5 Dateien, 8 MB)">📎</button>
<input type="file" id="composer-file" multiple accept=".pdf,.txt,.md,.csv,.json,.xml,.yaml,.yml,.log,.png,.jpg,.jpeg,.webp,.gif" hidden>
<textarea id="composer" rows="1" placeholder="Frag LIMEN — Enter zum Senden, Shift+Enter für Zeilenumbruch" aria-label="Nachricht"></textarea>
<button type="submit" class="btn-primary" id="composer-send">Senden</button>
</div>
</form>
<footer class="footer">
Sovereign AI · Deutscher Bunker · <a href="https://qognio.com">Qognio</a> &nbsp;·&nbsp; DSGVO-konform · Keine externen Fonts · Keine Cookies
</footer>
</div>
<div id="toast-stack" class="toast-stack" aria-live="polite"></div>
<script src="app.js"></script>
</body>
</html>

1038
www/styles.css Normal file

File diff suppressed because it is too large Load diff