feat: zwei neue Demo-Examples hinzufügen (bash-sysreport, html-joke-ticker)

bash-sysreport: /coder von Null — kein Startcode, demonstriert Neuerstellung
html-joke-ticker: /optimize --no-tests für Frontend-Arbeit + /patch

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
Dieter Schlüter 2026-05-29 21:56:12 +02:00
commit cd7bf38dfa
7 changed files with 171 additions and 6 deletions

View file

@ -1,6 +1,6 @@
# pi-coder Beispielprojekte
Vier kleine, eigenständige Projekte als Demonstrationsgrundlage für die pi-coder-Features.
Sechs kleine, eigenständige Projekte als Demonstrationsgrundlage für die pi-coder-Features.
Jedes Projekt startet bewusst unvollständig — genau der Ausgangspunkt, für den pi-coder gebaut ist.
## Übersicht
@ -11,6 +11,8 @@ Jedes Projekt startet bewusst unvollständig — genau der Ausgangspunkt, für d
| `rust-wordcount/` | Rust | `/optimize` mit `--test-cmd "cargo test"` + `/version` |
| `go-fibonacci/` | Go | `/optimize --interactive` + `/continue` + `/shipit` |
| `c-linkedlist/` | C | `/quick_check` + `/fix` + `/patch` |
| `bash-sysreport/` | Bash | `/coder` von Null (kein Startcode) + `/quick_check` |
| `html-joke-ticker/` | HTML/CSS/JS | `/optimize --no-tests` + `/patch` |
## Demo-Workflow
@ -20,7 +22,7 @@ Jedes Example braucht ein eigenes git-Repo, damit pi-coder commit-basierte
Features nutzen kann (Loop-Erkennung, Diff-Anzeige, `/version`):
```bash
for dir in python-calculator rust-wordcount go-fibonacci c-linkedlist; do
for dir in python-calculator rust-wordcount go-fibonacci c-linkedlist bash-sysreport html-joke-ticker; do
cd examples/$dir
git init -b main && git add -A && git commit -m "feat: initial $dir"
cd ../..
@ -61,8 +63,10 @@ und bereinigt Build-Artefakte (`target/`, `__pycache__` etc.).
|---|---|---|---|
| 1 | `python-calculator` | ~510 min | Einstieg, Test-Loop |
| 2 | `c-linkedlist` | ~5 min | `/quick_check` + `/fix`, kein Loop |
| 3 | `rust-wordcount` | ~1015 min | Loop + `/version` |
| 4 | `go-fibonacci` | ~1520 min | `--interactive` + `/shipit` |
| 3 | `bash-sysreport` | ~58 min | `/coder` von Null, kein Startcode |
| 4 | `html-joke-ticker` | ~812 min | `/optimize --no-tests`, Frontend |
| 5 | `rust-wordcount` | ~1015 min | Loop + `/version` |
| 6 | `go-fibonacci` | ~1520 min | `--interactive` + `/shipit` |
---
@ -71,4 +75,6 @@ und bereinigt Build-Artefakte (`target/`, `__pycache__` etc.).
[python-calculator](python-calculator/README.md) ·
[rust-wordcount](rust-wordcount/README.md) ·
[go-fibonacci](go-fibonacci/README.md) ·
[c-linkedlist](c-linkedlist/README.md)
[c-linkedlist](c-linkedlist/README.md) ·
[bash-sysreport](bash-sysreport/README.md) ·
[html-joke-ticker](html-joke-ticker/README.md)

View file

@ -0,0 +1,16 @@
# Demo-Protokoll: bash-sysreport
## Lauf 1
**Datum:**
**Befehl:**
```
/coder "Schreibe sysreport.sh ..."
```
**Startzeit:**
**Endzeit:**
**Dauer (min):**
**Endergebnis:** OK / PROBLEM
**Besonderheiten / Beobachtungen:**
---

View file

@ -0,0 +1,63 @@
# Bash Sysreport
Leeres Verzeichnis — kein Startcode vorhanden.
pi-coder soll `sysreport.sh` vollständig neu schreiben.
## Aktueller Stand
```
(keine Quelldatei)
```
## Demo: `/coder` ohne Vorlage
```
/coder "Schreibe sysreport.sh — ein Bash-Skript das einen kompakten Systembericht ausgibt.
Abschnitte: Hostname/Datum, Uptime, CPU-Modell + Load Average, RAM (belegt/gesamt/%),
Swap, Festplatten (alle Mounts aus df -h außer tmpfs), Netzwerk-Interfaces mit IP,
Top-5 Prozesse nach RAM-Verbrauch.
Nur Bash + Standard-Coreutils (awk, grep, sed, df, free, uptime, ps, hostname, date).
Kein Python, kein Perl. Exit-Code 0 bei Erfolg."
```
**Was pi-coder hier zeigt:**
- Coder erstellt `sysreport.sh` komplett neu (kein Startcode, keine Vorlage)
- Kein Test-Framework nötig — das Skript läuft direkt als Verifikation
- Zeigt, dass pi-coder auch mit Bash und reinen Shell-Aufgaben umgeht
## Folge-Demo: `/quick_check` zur Verifikation
```
/quick_check "Läuft das Skript fehlerfrei durch? Gibt es Portabilitätsprobleme oder
Fehler bei leeren Werten (kein Swap, keine zweite Festplatte)?"
```
Der Judge analysiert das Skript und gibt `OK` oder `PROBLEM` zurück — ohne vollen Fix-Loop.
## Manueller Test
```bash
bash sysreport.sh
bash -n sysreport.sh # Syntax-Check
```
Erwartete Ausgabe (Beispiel):
```
=== Systemreport: meinrechner — 2026-05-29 20:41:02 ===
Uptime: 3 days, 4:12
CPU: Intel Core i7-10700K (8 Kerne)
Auslastung: 0.42, 0.38, 0.31 (1/5/15 min)
RAM: 4,2 GB / 15,6 GB (27 %)
Swap: 0 MB / 8192 MB (0 %)
Festplatten:
/ 45 GB / 200 GB (23 %)
Netzwerk-Interfaces:
eth0 192.168.1.100
Top-5 Prozesse (RAM):
1234 firefox 512 MB
...
```

View file

@ -0,0 +1,17 @@
# Demo-Protokoll: html-joke-ticker
## Lauf 1
**Datum:**
**Befehl:**
```
/optimize "Ergänze jokes.html ..." --no-tests
```
**Startzeit:**
**Endzeit:**
**Dauer (min):**
**Runden:**
**Endergebnis:** PASS / PASS WITH CONCERNS / SHIP / NO-SHIP
**Besonderheiten / Beobachtungen:**
---

View file

@ -0,0 +1,52 @@
# HTML Witze-Ticker
Minimales HTML-Skelett — Struktur vorhanden, aber keine Logik.
Die Witz-Anzeige, der Timer und die Buttons fehlen noch vollständig.
## Aktueller Stand
```
jokes.html HTML-Skelett: <h1> + leeres <div id="joke"> — kein JavaScript, kein CSS
```
## Demo: `/optimize --no-tests`
```
/optimize "Ergänze jokes.html um eine vollständige Witz-Anzeige:
- JavaScript-Array mit mind. 20 deutschen Witzen (inline, kein externes API)
- Beim Laden: sofort zufälliger Witz
- Automatischer Wechsel alle 60 Sekunden (setInterval)
- Sanfter Fade-Übergang (CSS-Transition)
- Anzeige: Index (3/20) und Countdown-Sekunden bis zum nächsten Witz
- Button 'Nächster Witz' zum manuellen Weiterblättern
Kein Framework, kein Build-Tool — reines HTML/CSS/JS." \
--no-tests
```
**Was pi-coder hier zeigt:**
- Frontend-Arbeit ohne automatische Test-Suite (`--no-tests`)
- Vollständige Implementierung in einer einzigen HTML-Datei
- Judge bewertet Korrektheit durch Code-Review statt durch Tests
## Folge-Demo: `/patch` für Kleinstergänzung
```
/patch "Füge einen 'Vorheriger Witz'-Button hinzu."
```
Zeigt eine gezielte Minimaländerung ohne vollen Judge-Loop.
## Manueller Test
```bash
# Im Browser öffnen:
xdg-open jokes.html
# oder:
firefox jokes.html
```
Prüfen:
- Beim Laden erscheint sofort ein Witz
- Countdown läuft von 60 auf 0
- Nach 60 Sekunden erscheint automatisch ein neuer Witz mit Fade
- „Nächster Witz"-Button wechselt sofort und setzt den Timer zurück

View file

@ -0,0 +1,11 @@
<!DOCTYPE html>
<html lang="de">
<head>
<meta charset="UTF-8">
<title>Witze-Ticker</title>
</head>
<body>
<h1>Witze-Ticker</h1>
<div id="joke"><!-- TODO: Witz hier --></div>
</body>
</html>

View file

@ -19,7 +19,7 @@ done
echo "Stelle Examples-Ausgangszustand wieder her..."
for dir in python-calculator rust-wordcount go-fibonacci c-linkedlist; do
for dir in python-calculator rust-wordcount go-fibonacci c-linkedlist bash-sysreport html-joke-ticker; do
path="$EXAMPLES/$dir"
if [ -d "$path/.git" ]; then
rm -rf "$path/.git"