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