Feature: Add Stagebuilder Challenges

- 5 interactive story missions in challenges category
- 🎭 Stage Builder: Build web stages with AI assistants
- 🤡 Bugsy On Stage: Interactive clown show
- 🕰️  Zeitreise: Learn Unix time with forest characters
- 🐍 Snake & Dumbo Show: Interactive character show
- 📡 Terminal Funk: Learn Bash commands with a show

Each challenge has:
- Metadata with icon, description, difficulty
- Interactive story elements
- AI assistant integration (optional)
- Activity logging
- requires_ai flag for future filtering
This commit is contained in:
Branko May Trinkwald
2025-12-21 14:24:02 +01:00
parent db8efaf5e6
commit 90f77be9fb
10 changed files with 306 additions and 0 deletions

View File

@@ -0,0 +1,12 @@
{
"icon": "🎭",
"title": "Stage Builder - Bühne bauen",
"description": "Baue mit Schnippsi und Templatus eine eigene Web-Bühne",
"category": "challenges",
"difficulty": "intermediate",
"duration_minutes": 10,
"requires_ai": true,
"enabled": true,
"author": "Crumbforest Team",
"version": "1.0"
}

View File

@@ -0,0 +1,40 @@
#!/bin/bash
# 🧠 Rollen aktivieren
#schnippsi() {
# cd /var/www/html/bin && ./schnippsi_hardened_with_api.sh "$@"
#}
#templatus() {
# cd /var/www/html/bin && ./templatus_hardened_with_api.sh "$@"
#}
# 🌟 Intro
clear
echo "🎭 Willkommen zur Crumbforest-Mission: Stage Builder!"
echo "✨ Heute baust du mit Schnippsi und Templatus eine eigene Bühne im Web."
echo ""
# 📐 Templatus fragt nach Struktur
read -p "📜 Wie soll dein HTML-Bühnenrahmen heißen? (z.B. buehne, stage) " html_id
templatus "Ich brauche ein HTML5 Grundgerüst mit einer Bühne namens <$html_id>"
# 🎨 Schnippsi bringt Stil ins Spiel
read -p "🎨 Welche Farbe hat dein Vorhang? (z.B. crimson, blue, forestgreen) " vorhangfarbe
schnippsi "Bitte zeige mir CSS für eine Bühne mit dem Vorhang in der Farbe $vorhangfarbe"
# 🧩 Jetzt kommst du, Krümel!
read -p "✨ Welche Figur möchtest du auf deiner Bühne sehen? (z.B. 🐻, 🐱, 🎭) " figur
# 💾 Log
LOG_PATH="/home/zero/.missionstage_log/stage_builder_log.jsonl"
TS=$(date -Iseconds)
echo "{\"timestamp\": \"$TS\", \"buehne\": \"$html_id\", \"vorhangfarbe\": \"$vorhangfarbe\", \"figur\": \"$figur\"}" >> "$LOG_PATH"
echo ""
echo "🎉 Deine Bühne wurde im Geiste gebaut!"
echo "🧩 Denk daran: Mit CSS, HTML und Fantasie wird jede Szene lebendig."
echo ""
echo "👀 Wenn du willst, dass sich der Vorhang öffnet, sag einfach:"
echo "💬 'Schnippsi, lass den Vorhang aufgehen!'"

View File

@@ -0,0 +1,12 @@
{
"icon": "🤡",
"title": "Bugsy On Stage - Der Clown",
"description": "Bugsy stolpert auf die Bühne - stelle ihm Fragen!",
"category": "challenges",
"difficulty": "beginner",
"duration_minutes": 5,
"requires_ai": true,
"enabled": true,
"author": "Crumbforest Team",
"version": "1.0"
}

View File

@@ -0,0 +1,33 @@
#!/bin/bash
# 🎭 Crumbforest Show Act 4: Bugsy stolpert ins Herz
clear
echo "🎭 Willkommen zur Crumbforest Bühnenshow: Bits On Stage Bugsy der Clown!"
sleep 1
echo ""
echo "🤡 Bugsy betritt die Bühne mit einem Hüpfer und einer Rolle!"
echo "💥 Er stolpert ... doch steht sofort wieder auf."
sleep 2
read -p "❓ Was möchtest du Bugsy fragen oder zeigen? (z.B. ein Kommando, ein Gefühl, eine Frage) " bugsy_input
echo ""
echo "🧠 Bugsy analysiert: \"$bugsy_input\""
# Aufruf der Bugsy-Rolle
if command -v bugsy &> /dev/null; then
bugsy "$bugsy_input"
else
echo "🚨 Kein Bugsy-Skript gefunden! Bugsy braucht einen Techniker."
fi
# Logging
timestamp=$(date -Iseconds)
logpath="$HOME/.bits_logs/bits_on_stage_bugsy_log.jsonl"
mkdir -p "$HOME/.bits_logs"
echo "{\"timestamp\": \"$timestamp\", \"act\": \"Act 4: Bugsy\", \"bugsy_input\": \"$bugsy_input\"}" >> "$logpath"
echo ""
echo "🎉 Bugsy verbeugt sich der Fehler war nur ein Schritt zur Einsicht!"
echo "🌲 Act 4 endet mit einem kleinen Stolpern ... und einem großen Lächeln."

View File

@@ -0,0 +1,12 @@
{
"icon": "🐍",
"title": "Snake & Dumbo Show",
"description": "Interaktive Show mit Snake und Dumbo",
"category": "challenges",
"difficulty": "beginner",
"duration_minutes": 5,
"requires_ai": true,
"enabled": true,
"author": "Crumbforest Team",
"version": "1.0"
}

View File

@@ -0,0 +1,39 @@
#!/bin/bash
# 🎭 Crumbforest Show Bits On Stage: Why Us?
clear
echo ""
echo "🎭 Willkommen zu Bits On Stage Why Us?"
echo "🌳 Dumbo und Snake stehen auf der Bühne..."
sleep 2
# 🐘 Dumbo spricht
echo ""
echo "🐘 Dumbo spricht:"
echo "\"Ich trage Wissen in Spalten und Zeilen... doch ohne euch bin ich nur Struktur.\""
read -p "❓ Was möchtest du Dumbo fragen? " dumbo_frage
echo "🐘 Dumbo denkt nach: \"$dumbo_frage\""
dumbo "$dumbo_frage"
# 🐍 SnakePy spricht
echo ""
echo "🐍 SnakePy flüstert:"
echo "\"Ich bin Sprache, ich bin Schleifen aber ohne eure Bedeutung bin ich nur Syntax.\""
read -p "❓ Was möchtest du Snake fragen? " snake_frage
echo "🐍 Snake schlängelt: \"$snake_frage\""
snake "$snake_frage"
# 🧠 Krümel spricht
echo ""
read -p "🧠 Warum glaubst du, braucht der Code dich? " kruemel_antwort
echo "📜 Deine Antwort wird im Wald notiert..."
# 📁 Logging
LOG_PATH="$HOME/.bits_logs/bits_on_stage_whyus_log.jsonl"
mkdir -p "$HOME/.bits_logs"
TIMESTAMP=$(date -Iseconds)
echo "{\"timestamp\": \"$TIMESTAMP\", \"dumbo_question\": \"$dumbo_frage\", \"snake_question\": \"$snake_frage\", \"kruemel_answer\": \"$kruemel_antwort\"}" >> "$LOG_PATH"
# 🎉 Abschluss
echo ""
echo "🎉 Act 5 ist vorbei die Bühne gehört nun dir, Krümel!"

View File

@@ -0,0 +1,12 @@
{
"icon": "📡",
"title": "Terminal Funk - Kommando-Show",
"description": "Lerne Bash-Kommandos mit einer interaktiven Show",
"category": "challenges",
"difficulty": "intermediate",
"duration_minutes": 10,
"requires_ai": true,
"enabled": true,
"author": "Crumbforest Team",
"version": "1.0"
}

View File

@@ -0,0 +1,62 @@
#!/bin/bash
# 🎭 Crumbforest Stage Terminal Funk
clear
echo ""
echo "🎭 Willkommen zur Crumbforest Show: Bits On Stage Terminal Funk!"
sleep 1
# 1⃣ Rolle: ASCII-Monster
echo ""
echo "🎤 Das ASCII-Monster zaubert die Überschrift:"
echo ""
ascii "Bits On Stage Terminal Funk"
sleep 1
# 2⃣ Rolle: FunkFox Rap
echo ""
echo "🦊 FunkFox kommt mit Beats!"
read -p "🎶 Was soll FunkFox heute rappen? " funkline
echo "🧠 FunkFox denkt nach ..."
funkfox "$funkline"
# 3⃣ Rolle: Schnippsi CSS-Trick
echo ""
echo "🎨 Schnippsi designt live mit dir!"
sleep 1
schnippsi "Wie kann man mit CSS einen Button cool machen?"
# 4⃣ Kindlicher Input (immer abschließen mit eigener Stimme)
echo ""
read -p "🧩 Und was willst du der Bühne sagen, Krümel? " kruemel_input
echo "📜 Danke. Das war deine Stimme: $kruemel_input"
# 5⃣ Logging in JSONL (maschinenlesbar)
#timestamp=$(date -Iseconds)
#echo "{\"timestamp\": \"$timestamp\", \"act\": \"Terminal Funk\", \"funkfox\": \"$funkline\", \"krümel_input\": \"$kruemel_input\"}" >> /var/www/html/tmp/bits_on_stage_log.jsonl
# 5⃣ Logging (zero-spezifisch)
timestamp=$(date -Iseconds)
LOGFILE="/home/zero/.stage_logs/terminal_funk_log_test.jsonl"
mkdir -p "$(dirname "$LOGFILE")"
echo "{\"timestamp\": \"$timestamp\", \"act\": \"Terminal Funk\", \"funkfox\": \"$funkline\", \"kruemel_input\": \"$kruemel_input\"}" >> "$LOGFILE"
# 6⃣ Abschied
#echo ""
#echo "🎉 Der Vorhang fällt. Doch das Echo bleibt ..."
# 5⃣ Logging in JSONL (maschinenlesbar im Home-Pfad von zero)
timestamp=$(date -Iseconds)
logfile="/home/zero/.bits_logs/bits_on_stage_log.jsonl"
mkdir -p "$(dirname "$logfile")"
jq -n \
--arg timestamp "$timestamp" \
--arg act "Terminal Funk" \
--arg funkfox "$funkline" \
--arg kruemel_input "$kruemel_input" \
'{timestamp: $timestamp, act: $act, funkfox: $funkfox, kruemel_input: $kruemel_input}' \
>> "$logfile"
# 6⃣ Abschied
echo ""
echo "🎉 Der Vorhang fällt. Doch das Echo bleibt ..."

View File

@@ -0,0 +1,12 @@
{
"icon": "🕰️",
"title": "Zeitreise - Unix Time verstehen",
"description": "Reise durch die Zeit mit Eule, Snake und Pepper",
"category": "challenges",
"difficulty": "intermediate",
"duration_minutes": 10,
"requires_ai": true,
"enabled": true,
"author": "Crumbforest Team",
"version": "1.0"
}

View File

@@ -0,0 +1,72 @@
clear
echo "🔀 Willkommen zur Mission: Die Zeitreise im Crumbforest"
sleep 1
echo ""
echo "🦉 Die Eule spricht:"
echo "„Zeit, kleiner Krümel, ist wie das Rascheln der Blätter du hörst sie, aber kannst sie nicht festhalten.“"
echo ""
read -p "❓ Was möchtest du die Eule fragen? " eulenfrage
echo ""
echo "🦉 Die Eule antwortet dir achtsam auf: \"$eulenfrage\""
sleep 2
eule "$eulenfrage"
echo "„Vielleicht findest du die Antwort nicht in Sekunden, sondern in Geschichten.“"
echo ""
read -p "🐍 Snake möchte dir beim Zählen der Sekunden helfen. Wie viele Sekunden hat eine Stunde? " sekunden
if [ "$sekunden" -eq 3600 ]; then
echo "✅ Richtig! Snake schnattert zufrieden."
else
echo "❌ Fast ... Snake murmelt: „Ich glaube, es sind 3600 Sekunden.“"
fi
echo ""
read -p "🐘 Pepper wartet auf eine Unix-Zeit. Gib ein beliebiges Datum (YYYY-MM-DD): " datum
timestamp=$(date -d "$datum" +"%s" 2>/dev/null)
if [ $? -eq 0 ]; then
echo "📿 Unix-Zeit für $datum ist: $timestamp"
pepper "Wie viele Sekunden sind das seit 1970?"
else
echo "❌ Das versteht Pepper leider nicht. Versuch's mit YYYY-MM-DD."
fi
#echo ""
#read -p "🛠️ Bugsy untersucht dein Zeitgefühl. Was ist ein Moment für dich? " moment
#if [[ "$moment" =~ ^[0-9]+$ ]]; then
# moment="Ein Zahlencode: $moment"
#fi
#echo ""
#echo "🧠 Bugsy notiert dein Gefühl:"
#echo "„$moment“ — das wird ins Log geschrieben."
echo ""
read -p "🐞 Bugsy untersucht dein Zeitgefühl. Was ist ein Moment für dich? " moment
# Wenn nur Zahlen eingegeben wurden, umwandeln in eine verständlichere Beschreibung
if [[ "$moment" =~ ^[0-9]+$ ]]; then
moment="Ein Zahlencode: $moment"
fi
echo ""
echo "🧠 Bugsy notiert dein Gefühl:"
echo "📜 \"$moment\" — das wird ins Log geschrieben."
# Sicherer Logpfad
#LOG_PATH="$HOME/.bits_logs/zeitreise_log.jsonl"
#TIMESTAMP=$(date -Iseconds)
#mkdir -p "$(dirname "$LOG_PATH")"
#echo "{\"timestamp\": \"$TIMESTAMP\", \"source\": \"mission_zeitreise\", \"eulenfrage\": \"$eulenfrage\", \"moment\": \"${moment//\"/\\\"}\"}" >> "$LOG_PATH"
# Sicherer Logpfad
LOG_PATH="/home/zero/.bits_logs/zeitreise_log.jsonl"
TIMESTAMP=$(date -Iseconds)
mkdir -p "$(dirname "$LOG_PATH")"
echo "{\"timestamp\": \"$TIMESTAMP\", \"source\": \"mission_zeitreise\", \"eulenfrage\": \"$eulenfrage\", \"moment\": \"${moment//\"/\\\"}\"}" >> "$LOG_PATH"
echo ""
echo "🎉 Mission Zeitreise abgeschlossen. Die Bewohner danken dir für deine Gedanken über die Zeit."