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:
12
missions/challenges/stagebuilder_basis.meta.json
Normal file
12
missions/challenges/stagebuilder_basis.meta.json
Normal 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"
|
||||||
|
}
|
||||||
40
missions/challenges/stagebuilder_basis.sh
Executable file
40
missions/challenges/stagebuilder_basis.sh
Executable 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!'"
|
||||||
|
|
||||||
12
missions/challenges/stagebuilder_bugsy.meta.json
Normal file
12
missions/challenges/stagebuilder_bugsy.meta.json
Normal 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"
|
||||||
|
}
|
||||||
33
missions/challenges/stagebuilder_bugsy.sh
Executable file
33
missions/challenges/stagebuilder_bugsy.sh
Executable 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."
|
||||||
12
missions/challenges/stagebuilder_snakedumbo.meta.json
Normal file
12
missions/challenges/stagebuilder_snakedumbo.meta.json
Normal 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"
|
||||||
|
}
|
||||||
39
missions/challenges/stagebuilder_snakedumbo.sh
Executable file
39
missions/challenges/stagebuilder_snakedumbo.sh
Executable 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!"
|
||||||
12
missions/challenges/stagebuilder_terminalfunk.meta.json
Normal file
12
missions/challenges/stagebuilder_terminalfunk.meta.json
Normal 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"
|
||||||
|
}
|
||||||
62
missions/challenges/stagebuilder_terminalfunk.sh
Executable file
62
missions/challenges/stagebuilder_terminalfunk.sh
Executable 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 ..."
|
||||||
12
missions/challenges/stagebuilder_zeitreise.meta.json
Normal file
12
missions/challenges/stagebuilder_zeitreise.meta.json
Normal 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"
|
||||||
|
}
|
||||||
72
missions/challenges/stagebuilder_zeitreise.sh
Executable file
72
missions/challenges/stagebuilder_zeitreise.sh
Executable 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."
|
||||||
Reference in New Issue
Block a user