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:
parent
1c773029b5
commit
cd7bf38dfa
7 changed files with 171 additions and 6 deletions
|
|
@ -1,6 +1,6 @@
|
||||||
# pi-coder Beispielprojekte
|
# 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.
|
Jedes Projekt startet bewusst unvollständig — genau der Ausgangspunkt, für den pi-coder gebaut ist.
|
||||||
|
|
||||||
## Übersicht
|
## Ü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` |
|
| `rust-wordcount/` | Rust | `/optimize` mit `--test-cmd "cargo test"` + `/version` |
|
||||||
| `go-fibonacci/` | Go | `/optimize --interactive` + `/continue` + `/shipit` |
|
| `go-fibonacci/` | Go | `/optimize --interactive` + `/continue` + `/shipit` |
|
||||||
| `c-linkedlist/` | C | `/quick_check` + `/fix` + `/patch` |
|
| `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
|
## 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`):
|
Features nutzen kann (Loop-Erkennung, Diff-Anzeige, `/version`):
|
||||||
|
|
||||||
```bash
|
```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
|
cd examples/$dir
|
||||||
git init -b main && git add -A && git commit -m "feat: initial $dir"
|
git init -b main && git add -A && git commit -m "feat: initial $dir"
|
||||||
cd ../..
|
cd ../..
|
||||||
|
|
@ -61,8 +63,10 @@ und bereinigt Build-Artefakte (`target/`, `__pycache__` etc.).
|
||||||
|---|---|---|---|
|
|---|---|---|---|
|
||||||
| 1 | `python-calculator` | ~5–10 min | Einstieg, Test-Loop |
|
| 1 | `python-calculator` | ~5–10 min | Einstieg, Test-Loop |
|
||||||
| 2 | `c-linkedlist` | ~5 min | `/quick_check` + `/fix`, kein Loop |
|
| 2 | `c-linkedlist` | ~5 min | `/quick_check` + `/fix`, kein Loop |
|
||||||
| 3 | `rust-wordcount` | ~10–15 min | Loop + `/version` |
|
| 3 | `bash-sysreport` | ~5–8 min | `/coder` von Null, kein Startcode |
|
||||||
| 4 | `go-fibonacci` | ~15–20 min | `--interactive` + `/shipit` |
|
| 4 | `html-joke-ticker` | ~8–12 min | `/optimize --no-tests`, Frontend |
|
||||||
|
| 5 | `rust-wordcount` | ~10–15 min | Loop + `/version` |
|
||||||
|
| 6 | `go-fibonacci` | ~15–20 min | `--interactive` + `/shipit` |
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
|
|
@ -71,4 +75,6 @@ und bereinigt Build-Artefakte (`target/`, `__pycache__` etc.).
|
||||||
[python-calculator](python-calculator/README.md) ·
|
[python-calculator](python-calculator/README.md) ·
|
||||||
[rust-wordcount](rust-wordcount/README.md) ·
|
[rust-wordcount](rust-wordcount/README.md) ·
|
||||||
[go-fibonacci](go-fibonacci/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)
|
||||||
|
|
|
||||||
16
examples/bash-sysreport/PROTOKOLL.md
Normal file
16
examples/bash-sysreport/PROTOKOLL.md
Normal 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:**
|
||||||
|
|
||||||
|
---
|
||||||
63
examples/bash-sysreport/README.md
Normal file
63
examples/bash-sysreport/README.md
Normal 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
|
||||||
|
...
|
||||||
|
```
|
||||||
17
examples/html-joke-ticker/PROTOKOLL.md
Normal file
17
examples/html-joke-ticker/PROTOKOLL.md
Normal 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:**
|
||||||
|
|
||||||
|
---
|
||||||
52
examples/html-joke-ticker/README.md
Normal file
52
examples/html-joke-ticker/README.md
Normal 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
|
||||||
11
examples/html-joke-ticker/jokes.html
Normal file
11
examples/html-joke-ticker/jokes.html
Normal 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>
|
||||||
|
|
@ -19,7 +19,7 @@ done
|
||||||
|
|
||||||
echo "Stelle Examples-Ausgangszustand wieder her..."
|
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"
|
path="$EXAMPLES/$dir"
|
||||||
if [ -d "$path/.git" ]; then
|
if [ -d "$path/.git" ]; then
|
||||||
rm -rf "$path/.git"
|
rm -rf "$path/.git"
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue