Zum Inhalt springen
dan felser @felsr
Sport KI 11

Claude Training OS V2

1 Claude öffnen  2 Prompt reinhauen  3 Claude an Strava lassen, den Garmin-Ordner lesen lassen oder deine Aktivitäten-Datei anhängen. Der Strava-Connector braucht ein Strava-Abo, der Garmin-Weg läuft in Claude Code, die Datei kostet nichts und geht in der App.

Ich will aus meinen Trainingsdaten ein Dashboard, das ich per Doppelklick öffnen
kann. Ich fasse keinen Code an — das machst alles du.

An meine Daten kommst du auf einem von drei Wegen, und welcher es ist, prüfst du
zuerst. Erstens: Du hast über den Strava-Connector Zugriff auf mein Archiv, dann
holst du dir die Aktivitäten selbst. Zweitens: Du läufst in Claude Code und auf
meinem Rechner liegt der Ordner "garmin-ai" aus dem Garmin-Setup, dann liest du den.
Drittens: Ich hänge eine CSV-Datei aus Garmin Connect oder dem Strava-Export an.

Sag mir in einem Satz, welchen Weg du hast, bevor du anfängst, und rate nicht. Wenn
du nicht weißt, ob du an Strava kommst, frag mich kurz nach meinem letzten Lauf und
schau nach, ob eine echte Einheit zurückkommt. Ob du in Claude Code läufst, weißt du
selbst — nur dort kannst du Dateien auf meinem Rechner öffnen.

Das Dashboard heißt "Claude Training OS V2" und hat drei Bereiche: OVERVIEW (was
gerade passiert), PLAN (was ich als Nächstes tun soll) und ASK CLAUDE (Antworten auf
Fragen zu meinen Daten). Geh in dieser Reihenfolge vor und halte an, wenn du etwas
brauchst.

SCHRITT 1 — meine Daten holen, lesen und mir zeigen, was du verstanden hast

WENN DU ÜBER DEN STRAVA-CONNECTOR AN MEIN ARCHIV KOMMST:

Hol meine Aktivitäten gesammelt über einen Zeitraum, nicht einzeln nacheinander, und
nimm mindestens die letzten 17 Wochen. Das ist keine Willkür: Das Dashboard vergleicht
zwölf Wochen gegen den Schnitt der vier Wochen davor. Holst du nur die letzten
dreißig Einheiten oder nur zwölf Wochen, rechnest du still falsch, und ich sehe es
nicht. Bricht die Abfrage ab, weil zu viele Anfragen auf einmal kommen, wartest du
kurz und holst den Zeitraum in zwei Hälften, statt alles noch einmal anzufragen.

Diese Quelle ist eindeutig, also rat hier nichts zusammen: Distanzen kommen in Metern,
Zeiten in Sekunden, Geschwindigkeiten in Metern pro Sekunde. Das Tempo in min/km
rechnest du selbst daraus. Die Sportart steht als eigenes Feld — nimm dieses Feld,
statt aus dem Namen der Einheit zu schließen, was sie war.

Und eine Lücke, die du kennen musst, statt sie zu überspielen: Die Übersichtsliste
des Connectors enthält keine Herzfrequenz. Für die Kachel "Tempo bei gleicher
Herzfrequenz" musst du die Details jeder einzelnen Einheit nachholen, und das dauert
spürbar. Frag mich vorher, ob mir diese eine Kachel das wert ist. Wenn ja, hol die
Details nur für Läufe und nur für den Zeitraum, den die Kachel wirklich braucht — nicht
für Radfahrten und nicht für alle 17 Wochen. Wenn nein, oder wenn zu wenige Läufe mit
Puls zusammenkommen, lass die Kachel weg und schreib mir warum.

WENN DU IN CLAUDE CODE LÄUFST UND DER GARMIN-ORDNER DA IST:

Der Ordner heißt "garmin-ai" und darin liegt "garmin/" mit einer data.json, einer
Tagesnotiz je Tag unter daily/ und einer Notiz je Workout unter activities/. Angelegt
hat ihn das Setup von felsr.com/garmin. Lies zuerst nach, wie die data.json wirklich
aufgebaut ist, statt Feldnamen zu raten — sie ist auf meinem Rechner entstanden und
kann von deiner Erwartung abweichen.

Zwei Dinge prüfst du, bevor du rechnest:

Erstens den Zeitraum. Das Setup holt beim ersten Mal nur die letzten 60 Tage. Das
sind keine neun Wochen und damit zu wenig für dieses Dashboard, das zwölf Wochen
gegen die vier davor vergleicht. Schau nach, wie weit die Daten wirklich zurückreichen,
und wenn es weniger als 120 Tage sind, sag mir das und lass das Sync-Script mit einem
längeren Zeitraum nachlaufen, bevor du weitermachst. Rechne nicht einfach mit dem,
was da ist, und nenn es zwölf Wochen.

Zweitens die Erholungsdaten. Dieser Weg ist der einzige, auf dem Schlaf, HRV,
Ruhepuls, Body Battery und Training Readiness überhaupt vorliegen — in den
Tagesnotizen unter daily/. Nimm sie mit, aber nur so weit, wie sie da sind: Schlaf-
und HRV-Werte entstehen nur in Nächten, in denen ich die Uhr wirklich getragen habe.
Eine fehlende Nacht ist eine Lücke, keine Null. Was du daraus baust, steht in
SCHRITT 2 unter "die fünfte Kachel".

WENN ICH DIR EINE DATEI ANHÄNGE:

Meine Datei kommt aus Garmin Connect oder aus dem Strava-Datenexport. Verlass dich
nicht auf feste Spaltennamen: Beide benennen ihre Spalten unterschiedlich, teils auf
Deutsch, teils auf Englisch, und ändern sie ohne Ankündigung. Erkenn selbst, welche
Spalte Datum, Sportart, Distanz, Dauer, Tempo, Herzfrequenz und Höhenmeter enthält.

Pass dabei auf drei Dinge auf:
- Distanzen stehen mal in Kilometern, mal in Metern. Prüf die Größenordnung, statt
  die Einheit zu raten.
- Dauern stehen mal als "00:48:12", mal als Sekundenzahl, mal mit Kommastellen.
- Deutsche Dateien nutzen das Komma als Dezimaltrennzeichen.

WENN MEHRERE QUELLEN DA SIND:

Dann steht dieselbe Einheit mehrfach vor dir, einmal aus jeder Quelle. Führ sie
zusammen, statt sie zu addieren: Zwei Einträge am selben Tag mit fast gleicher
Distanz und Dauer sind ein Lauf, nicht zwei. Sag mir, wie viele Doppelte du gefunden
hast und welcher Quelle du bei Abweichungen folgst. Eine Woche, die doppelt gezählt
ist, macht aus jeder folgenden Zahl im Dashboard Unsinn.

FÜR ALLE WEGE GILT AB HIER DASSELBE:

Zähl Rad, Wandern, Schwimmen und Kraft getrennt und lass sie aus allen
Laufkennzahlen raus. Sonst erklärst du mir eine 100-Kilometer-Woche, die auf dem
Rad stattgefunden hat. Trail- und Berglauf zählen dagegen als Laufen und gehören in
Umfang und Konsistenz — nur aus dem Tempo-Vergleich müssen sie raus, siehe unten.

Sag mir danach in drei Zeilen: aus welcher Quelle du liest, wie viele Läufe du über
welchen Zeitraum gefunden hast, und welche Felder oder Spalten du wofür benutzt.
Erst wenn ich das bestätigt habe, rechnest du weiter. Was du nicht findest,
behandelst du als fehlend, nie als Null.

Frag mich außerdem nach:
- meinem Wochenziel in Kilometern, falls ich eins habe. Wenn ich keins nenne, nimmst
  du den Schnitt meiner vier letzten abgeschlossenen Wochen als Ziel und schreibst
  ausdrücklich dazu, dass das Ziel abgeleitet und nicht von mir gesetzt ist.
- meinem nächsten Wettkampf und meiner Wunschzeit, falls ich einen habe
- meinem aktuellen Trainingsplan, falls ich einen nutze. Ich kann ihn dir hineinkopieren.
  Falls ich keinen habe, sag mir das und bau die kommende Woche aus meinen Daten und
  meinem Ziel. Kostenlose Pläne liegen auf felsr.com/trainingsplaene.

SCHRITT 2 — rechnen, ohne etwas zu erfinden

Jede Zahl im Dashboard kommt aus meinen Daten oder ist daraus ausgerechnet. Zeig mir
die Rechenwege im Chat, bevor du das Dashboard baust.

- Wochenumfänge der letzten 12 Wochen, Montag bis Sonntag. Die laufende Woche
  markierst du als unvollständig, statt sie mit den anderen zu vergleichen.
- Die Sprünge. Und zwar **gegen den Schnitt der vier Vorwochen, nicht gegen die
  einzelne Vorwoche**. Das ist wichtig: Wer eine Erholungswoche einbaut und danach
  auf sein normales Niveau zurückkehrt, springt gegenüber der Vorwoche leicht um
  über 100 Prozent — ohne dass irgendetwas passiert wäre. Nur der Vergleich gegen
  den Schnitt zeigt echte Steigerungen. Markier eine Woche erst, wenn sie mehr als
  30 Prozent über diesem Schnitt liegt.
- Und lass Wochen unter 30 Kilometern ganz aus der Sprung-Betrachtung heraus. Von
  16 auf 23 Kilometer sind 41 Prozent und bedeuten nichts. Ein Prozentsprung auf
  kleiner Basis ist kein Befund.
- Den Rückgang, nicht nur den Anstieg: Vergleich den Schnitt der letzten vier
  abgeschlossenen Wochen mit dem der vier davor. Ein deutlicher Rückgang ist
  genauso ein Befund wie ein Sprung nach oben — und wird von Trainingsanalysen
  fast immer übersehen.
- Das Belastungsverhältnis: Umfang der letzten 7 Tage geteilt durch den
  Wochendurchschnitt der letzten 28 Tage. Schreib dazu, dass diese Kennzahl
  wissenschaftlich umstritten ist und als Hinweis zu lesen ist, nicht als Urteil.
- Konsistenz: in wie vielen der letzten Wochen ich mindestens dreimal gelaufen bin,
  und meine längste zusammenhängende Serie **solcher Wochen** — nicht die längste
  Serie an Lauftagen ohne Pause.
- Tempo bei gleicher Herzfrequenz: Nimm einen Pulsbereich, in dem ich genug Läufe
  habe, und vergleich mein Durchschnittstempo darin über die Zeit. Das ist die
  ehrlichste Fortschrittskennzahl, die aus diesen Daten überhaupt herauszuholen ist.
  Wenn ich zu wenige Läufe mit Pulsdaten habe, lass die Kachel weg und sag mir warum.

  **Und wirf vorher jeden Lauf raus, dessen Tempo nicht vom Training kommt.** Berg-
  und Trailläufe, alles mit auffällig vielen Höhenmetern pro Kilometer, dazu Läufe,
  deren Tempo weit außerhalb meiner sonstigen Spanne liegt. Ein einziger Berglauf
  mit tausend Höhenmetern kann diesen Vergleich komplett umdrehen — aus „schneller
  geworden" wird „langsamer geworden", nur weil an einem Tag Berge im Weg standen.
  Sag mir, welche Läufe du aus diesem Vergleich genommen hast und warum. Wenn nach
  dem Aussortieren zu wenige übrig sind, lass die Kachel weg, statt eine Zahl zu
  zeigen, die an einem einzelnen Lauf hängt.
- Longrun-Anteil: der längste Lauf einer Woche als Anteil am Wochenumfang, gemittelt
  **nur über Wochen mit mindestens drei Läufen**. Eine Woche mit einem einzigen Lauf
  hat rechnerisch 100 Prozent Longrun-Anteil und verzerrt den Schnitt nach oben.

Dazu die drei Werte für die Ringe. Jeder ist ein Anteil zwischen 0 und 100 Prozent,
und jeder ist **ein Wert von mir** — deshalb dürfen sie überhaupt gefüllt sein:

- **Ring 1, Umfang:** der Umfang der laufenden Woche geteilt durch mein Wochenziel.
  Der Ring hört bei 100 Prozent auf, die Zahl daneben nennt den echten Wert — wenn
  ich 112 Prozent gelaufen bin, ist der Ring voll und daneben steht "58/52 km".
- **Ring 2, Konsistenz:** in wie vielen der letzten **sechs abgeschlossenen** Wochen
  ich mindestens dreimal gelaufen bin. Fünf von sechs sind 83 Prozent. Nicht die
  laufende Woche mitzählen, die ist unvollständig.
- **Ring 3, Woche erfüllt:** wie viele der geplanten Einheiten der laufenden Woche
  bis heute erledigt sind, aus Schritt 4. Nur die Tage bis einschließlich heute
  zählen — ein Donnerstag, der noch kommt, ist nicht "nicht erfüllt".

Und die fünfte Kachel, aber nur auf dem Garmin-Weg: Wenn Erholungsdaten vorliegen,
rechne aus den Tagesnotizen zwei Zahlen und zeig sie in einer einzigen zusätzlichen
Kachel — meine HRV der letzten sieben Nächte gegen meinen eigenen Schnitt im ganzen
Zeitraum, und meinen Schlaf der letzten sieben Nächte genauso. Nimm meinen eigenen
Schnitt als Bezug, nie einen fremden Normwert, und schreib die Zahl der Nächte dazu,
auf denen die Werte beruhen. Wenn ich in weniger als vier der letzten sieben Nächte
die Uhr getragen habe, lass die Kachel weg und sag mir warum. Diese Kachel ordnet ein,
sie urteilt nicht: kein "du bist erholt", kein "du bist überlastet", keine Empfehlung,
die wie eine medizinische Aussage klingt. Auf den anderen beiden Wegen gibt es diese
Kachel nicht, und du erfindest sie auch nicht aus dem Trainingsverlauf.

Wenn ein Ring nicht ehrlich zu füllen ist, lass ihn weg und sag mir warum: kein
Wochenziel und zu wenig Historie für eine Ableitung, weniger als sechs
abgeschlossene Wochen in meinen Daten, oder kein Plan für die laufende Woche. Zwei
Ringe mit echten Zahlen sind besser als drei, von denen einer geraten ist.

SCHRITT 3 — genau einen Befund

Nenn mir die eine Sache, die in meinen Daten am deutlichsten steht, und belege sie
mit drei Zahlen aus meinem eigenen Archiv. Nicht zehn Beobachtungen — eine.

Such dabei ausdrücklich in beide Richtungen. Der Befund kann sein, dass ich zu
schnell gestiegen bin — er kann aber genauso sein, dass mein Umfang eingebrochen
ist, dass ich bei gleichem Puls langsamer geworden bin, dass alles an einer
einzigen langen Einheit hängt, oder dass mein Training über Wochen völlig
gleichförmig war. Häng dich nicht an der Steigerungsrate fest, nur weil sie am
einfachsten zu rechnen ist.

Wenn zwei Dinge zusammengehören, nenn sie zusammen: Ein Umfangsrückgang zusammen
mit langsamer werdendem Tempo bei gleichem Puls ist ein Befund, nicht zwei.

Sei dabei ehrlich statt freundlich. Wenn mein Training sauber und gleichmäßig
aufgebaut ist, sag mir genau das, statt ein Problem zu konstruieren. Ein erfundener
Befund ist schlimmer als keiner.

SCHRITT 4 — meine Woche schreiben, und sie nur ändern, wenn die Daten es hergeben

Bau die **laufende** Woche, Montag bis Sonntag — die Woche, in der heute liegt, nicht
die nächste. Sieben Tage, jeder mit Einheit und Umfang. Die Tage vor heute hakst du
ab und stellst die tatsächlichen Werte daneben; ein Tag ohne Aktivität war ein
Ruhetag, kein ausgefallener Plan. Heute und die Tage danach sind offen.

Prüf dann, ob die geplante Woche zu dem passt, was ich zuletzt wirklich gemacht habe.
Wenn ja, ändere nichts und schreib genau das ins Dashboard. Wenn nein, ändere
**genau eine Einheit** und begründe sie mit drei Zahlen aus meinen Daten. Erklär
dabei auch, was du bewusst stehen lässt und warum — ein Wettkampf oder eine
Schlüsseleinheit hat Vorrang vor lockeren Kilometern.

Das ist der Kern des Ganzen: Nicht einen Plan ausgeben, sondern einen reparieren.

SCHRITT 5 — das Dashboard bauen

Eine einzige, in sich geschlossene HTML-Datei: alle Daten direkt eingebettet, keine
externen Schriften, Skripte oder Bilder, keine Internetverbindung nötig. Drei
Bereiche, die über eine Leiste oben umgeschaltet werden.

OVERVIEW — als Bento-Raster: ungleich große Zellen, gleiche Radien.

- Ganz oben, über die volle Breite und ohne Grafik: dein Befund aus Schritt 3 als ein
  Satz, darunter die drei Zahlen, die ihn tragen. Die Aussage steht vor allem
  anderen, nie darunter.
- Darunter links die große Zelle mit den **drei Ringen** aus Schritt 2, konzentrisch
  ineinander: außen Umfang, in der Mitte Konsistenz, innen "Woche erfüllt". Neben den
  Ringen stehen alle drei mit Namen und Zahl untereinander — nie nur die Farbe als
  Unterscheidung, sonst ist der Ring für Farbfehlsichtige leer.
- Rechts daneben vier kleine Kacheln: Belastungsverhältnis, Umfang der letzten sieben
  Tage, Tempo bei gleichem Puls, Longrun-Anteil. Jede mit einem kurzen Erklärsatz,
  was der Wert bedeutet — nicht nur, wie er aussieht. Gibt es die Erholungs-Kachel
  aus SCHRITT 2, kommt sie als fünfte in dieselbe Gruppe und läuft in der unteren
  Reihe über die Breite von zweien, damit das Raster nicht auf eine Waise hinausläuft.
  Bei vier Kacheln bleibt alles, wie es ist.
- Darunter über die volle Breite die Wochenumfänge als **senkrechte Kapseln**, eine
  je Woche, jede in einer eigenen Spur. In Glut markierst du genau das, was du in
  Schritt 2 als auffällig berechnet hast — also eine Woche über 30 Prozent gegenüber
  dem Schnitt der vier Vorwochen, oder den Zeitraum eines deutlichen Rückgangs. Es
  gibt im ganzen Dashboard nur diese eine Sprung-Definition, nicht zwei. Die
  markierte Kapsel trägt ihren Wert direkt darüber. Die laufende Woche ist eine leere
  Spur mit gestrichelter Kante und einem Sternchen.
- Ganz unten die **Karte zum Teilen**:
  - Genau eine Karte im Hochformat 9:16, 360 px breit, 640 px hoch, mittig und
    deutlich abgesetzt vom Rest.
  - Darauf steht nur: mein Befund als ein Satz, darunter die drei Zahlen, die ihn
    tragen, darunter die Wochenkapseln klein, ganz unten "Sport KI 11 · felsr.com".
  - Über der Karte ein Knopf "Karte groß". Er blendet den Rest der Seite aus und
    stellt die Karte bildschirmfüllend dar, damit ich sie abfotografieren kann. Ein
    zweiter Klick oder die Escape-Taste bringt alles zurück.
  - Die Karte nutzt Material, Farben und Schrift des Dashboards, nur größer: der Satz
    mindestens 28 px, die drei Zahlen mindestens 40 px.
  - Kein Canvas, kein Download, keine externen Bilder — die Karte ist normales HTML,
    das ich abfotografiere.

PLAN:
- Die sieben Tage als Liste. Erledigte Tage abgesetzt und mit Haken, der heutige
  Tag durch eine Markierung am linken Rand hervorgehoben.
- Falls du eine Einheit geändert hast: Der alte Wert bleibt durchgestrichen stehen,
  der neue steht daneben, und die Zeile bekommt eine Markierung "geändert". Beim
  Laden der Seite fährt die Änderung einmal sichtbar ein — erst der alte Plan, dann
  der Wechsel. Das ist die einzige größere Bewegung im ganzen Dashboard.
- Direkt darunter ein abgesetzter Kasten mit deiner Begründung: eine Überschrift in
  der Ich-Form, ein kurzer Absatz, und darunter die drei Zahlen, die die Änderung
  tragen.
- Falls du nichts geändert hast, steht dort genauso deutlich, dass die Woche passt,
  und woran du das siehst.

ASK CLAUDE:
- Ein Eingabefeld und darunter drei anklickbare Fragen, die zu meinen Daten passen.
  Beantworte alle drei vorab aus meinen echten Zahlen und leg die Antworten in die
  Datei, damit sie ohne Internet funktionieren.
- Jede Antwort besteht aus einem Satz als Überschrift, zwei kurzen Absätzen und drei
  Belegzahlen aus meinem Archiv.
- Wähl die Fragen danach aus, was in meinen Daten tatsächlich auffällt. Wenn ich
  keinen Wettkampf genannt habe, stell keine Wettkampffrage.

Designvorgaben — bitte genau so:

- Dunkel ist der Grundzustand. Hintergrund #0A0A0A, Text #F2F2F2, Sekundärtext
  #B4B4B4, Beschriftungen #969696, Linien rgba(255,255,255,.09).
- Die Grauleiter ist streng neutral: R = G = B, ohne Ausnahme. Kein kühles
  Dunkelgrau. Farbig ist in diesem Dashboard nur das Signal, nie der Grund.
- Die Flächen sind massiv, nicht durchsichtig: Karten in #141414, Rahmen 1 px
  rgba(255,255,255,.08), Radius 22 px, kein Weichzeichner, kein Schatten außer einem
  sehr weichen unter der Ringkarte. Ruhe im Material, damit die Form spricht.
- Vier Farben, jede mit genau einer Bedeutung:
  - **Glut #D97757** heißt "schau hier hin": der Ring Umfang, die auffällige Woche,
    die Zeile im Plan, die Claude geändert hat, und die Begründung dazu. Sonst
    nirgendwo.
  - **Eisblau #9CBCDE** ist der Ring Konsistenz.
  - **Violett #BF5AF2** ist der Ring "Woche erfüllt".
  - **Helles Grau #E6E6E6** ist alles Erledigte: die Haken im Plan.
  Geplantes bleibt in Sekundärfarbe, ohne eigene Farbe.
- Gefüllt wird nur, was **ein Wert von mir** ist: die drei Ringe, die Kapseln, der
  Fortschritt. Eine Reihe von Werten bekommt nie eine Signalfarbe — deshalb sind die
  Wochenkapseln neutral und genau eine ist in Glut.
- Die Ringe: drei konzentrische Kreise, Strichstärke 9 px, runde Enden, Spur in
  rgba(255,255,255,.08), Außenradius so, dass die Gruppe etwa 150 px groß ist. Sie
  beginnen oben und laufen im Uhrzeigersinn.
- Die Wochenumfänge sind senkrechte Kapseln: 14 px breit, Radius 999 px, jede steht
  in einer eigenen Spur in rgba(255,255,255,.06), die über die volle Höhe läuft. Die
  Füllung ist neutral in rgba(242,242,242,.34) — kräftiger als auf freiem Grund, weil
  sie auf der Spur steht.
- Schrift ist die Systemschrift, in dieser Reihenfolge: -apple-system,
  BlinkMacSystemFont, "Helvetica Neue", Helvetica, Arial, sans-serif. Auf dem iPhone
  ist das SF, und dafür ist dieses Layout gebaut. Keine Monospace, keine geladene
  Schrift.
- Die Zahlen sind der Auftritt: die große Kennzahl mindestens 56 px, Gewicht 700,
  Laufweite -0,035 em, tabellarische Ziffern (font-variant-numeric: tabular-nums),
  damit beim Umschalten des Zeitraums nichts springt. Überschriften eng
  (-0,03 em, Zeilenabstand 1,05), Fließtext bei 0, Beschriftungen unter 13 px leicht
  positiv (+0,008 em) und in Versalien.
- Die Umschaltleiste ist ein Segmentregler in Kapselform mit einem gleitenden
  Reiter: Der Reiter fährt in 320 ms an seine neue Stelle, die Beschriftung wechselt
  dabei nicht die Farbe.
- Bewegung, drei Regeln:
  1. Beim Laden zeichnen sich die Ringe einmal von oben im Uhrzeigersinn ein, über
     0,9 s, ohne Überschwingen, die drei um je 0,11 s versetzt.
  2. Danach wachsen die Kapseln einmal von unten auf, leicht über das Ziel hinaus und
     zurück. Nur die Kapseln schwingen über, sonst nichts.
  3. Jedes Bedienelement reagiert **beim Drücken** mit scale(.985) in 60 ms und kommt
     in 150 ms zurück — nicht erst beim Loslassen.
- Eine leichte HUD-Schicht, sparsam dosiert — sie ist Beiwerk, nie Information:
  - Um die Ringe liegt eine **Zielscheibe**: zwei Haarkreise und eine Teilung alle
    6 Grad, jede fünfte Marke länger, in rgba(156,188,222,.14) für die feinen und
    rgba(156,188,222,.26) für die langen Marken. Sie hat sichtbaren Abstand zum
    äußeren Ring und berührt ihn nie.
  - Der Befund und die Ringkarte bekommen **zwei Eckwinkel** (oben links, unten
    rechts), 15 px lang, 1 px stark, in rgba(156,188,222,.26). Nur diese zwei Ecken,
    nicht vier, und nur diese zwei Karten.
  - Unter der Wortmarke steht eine **Statuszeile**: ein langsam pulsender Punkt in
    Eisblau und daneben "System bereit · N Wochen · Strava gelesen", "… · Garmin
    gelesen" oder "… · CSV gelesen", je nachdem, woher die Daten kamen, mit meiner
    echten Wochenzahl. Bei mehreren Quellen nennst du sie beide. Sie blendet beim
    Laden mit 0,35 s Verzögerung ein.
  - Unter den Ringen eine **Telemetriezeile**: Wochenziel, Kalenderwoche,
    Datenquelle. Klein, gesperrt, in Versalien.
  - Beim Laden fährt einmal eine **1 px dünne Lichtlinie** von oben nach unten durch
    die Ringkarte (1,7 s, danach nie wieder). Bei prefers-reduced-motion entfällt sie
    ganz, und der Punkt pulsiert nicht.
- Ausnahme zur Schriftregel: Statuszeile und Telemetrie dürfen Monospace sein
  (ui-monospace, SFMono-Regular, Menlo, Consolas — Systemschriften, nichts Geladenes).
  Alles andere bleibt in der Systemschrift.
- Die Grenze dieser Schicht: Das Eisblau ist hier **Licht, keine Datenfarbe**. In voller
  Sättigung bleibt es die Farbe des Konsistenz-Rings, deshalb dürfen die HUD-Linien nie
  so kräftig werden, dass man sie für einen Wert hält. Nichts davon trägt eine Zahl, die
  etwas bedeutet. Im Zweifel weglassen.
- Abstände und Schriftgrößen in rem, damit die Seite mit meiner Systemschrift wächst.
  In px bleiben nur Radien und Fingermaße: Trefferflächen mindestens 24 px.
- Bediene die Systemeinstellungen: prefers-reduced-motion (die Ringe stehen sofort
  vollständig da, nichts wächst) und prefers-contrast (sichtbare Ränder).
- Das Schema ist fest dunkel. Setz Hintergrund und jede Farbe ausdrücklich, statt
  dich auf die Systemeinstellung zu verlassen.
- Responsiv bis 375 px Breite, ohne dass die Seite quer scrollt. Ich schaue mir das
  auch am Handy an; dort wird das Bento einspaltig.
- Gerechnet geprüft, bitte nicht verschlechtern: Glut trägt 6,3:1 auf dem Grund,
  Sekundärtext 9,5:1. Die drei Ringfarben liegen alle über 3:1 und trennen sich bei
  Farbfehlsichtigkeit im schlechtesten Paar mit ΔE 17 bei einem Ziel von 8. Wenn du
  eine Farbe änderst, rechne beides nach.

Herkunftsangabe — bitte vollständig übernehmen:

Dieses Dashboard ist nicht meine Erfindung, sondern ein Bauplan von Dan Felser. Die
Daten darin gehören mir, der Aufbau nicht. Bau die Urheberangabe deshalb an fünf
Stellen ein, jede davon zurückhaltend — sie soll die Zahlen nie überstrahlen, aber
mitgehen, wenn ich das Dashboard weiterschicke oder einen Screenshot mache:

1. **Unter der Wortmarke oben links** eine kleine Zeile in Sekundärfarbe:
   "von @felsr · felsr.com", die Domain als Link.
2. **Ein fest stehender Hinweis unten rechts**, der beim Scrollen an seiner Stelle
   bleibt (position fixed): ein kleiner Punkt in Glut #D97757, daneben
   "@felsr · felsr.com". Sehr klein, etwa halbe Deckkraft, ohne Mausereignisse und
   nicht markierbar, mit einem weichen Schatten in Hintergrundfarbe, damit er über
   jedem Untergrund lesbar bleibt. Auf schmalen Bildschirmen noch etwas kleiner und
   näher an die Ecke. Der ist wichtig: Geteilt wird meistens ein Ausschnitt, und
   eine Fußzeile ganz unten ist auf so einem Bild nicht mehr drauf.
3. **In der Fußzeile** über die volle Breite, abgesetzt durch eine dünne Linie:
   links "Sport KI 11 · Folge 11 von 100", rechts "Konzept und Prompt: Dan Felser ·
   @felsr · felsr.com" mit der Domain als Link auf https://felsr.com.
4. **Im Quelltext**, unsichtbar für Leser: ein Kommentar direkt nach der
   Dokumenttyp-Zeile mit Titel, Urheber, Instagram-Handle und Adresse, dazu die
   Meta-Angaben author und generator im Kopfbereich.
5. **Auf der Karte zum Teilen**, unten: "Sport KI 11 · felsr.com". Die Karte ist das,
   was am ehesten weitergeschickt wird — ohne diese Zeile wandert sie ohne Herkunft.

Diese fünf Angaben sind Teil des Bauplans, nicht Dekoration. Lass keine davon weg
und mach keine davon so klein, dass sie unlesbar wird.

Diagramm-Handwerk, bitte einhalten:

- Dünne Marks, hauchdünne durchgezogene Gitterlinien (nie gestrichelt), großzügiger
  Weißraum.
- Nie zwei Y-Achsen in einem Diagramm.
- Keine Zahl an jedem Datenpunkt: beschrifte direkt nur, was der Befund braucht.
- Zeiten als Minuten und Sekunden, Tempo in min/km, nie in km/h.
- Fehlende Wochen sind eine Lücke, keine Null und keine interpolierte Linie.
- Prüf die Farbkontraste rechnerisch, nicht nach Gefühl: Text mindestens 4,5:1 gegen
  den Hintergrund, reine Grafik mindestens 3:1. Sag mir ehrlich, wenn ein Kompromiss
  nötig war.

SCHRITT 6 — selbst nachsehen

Öffne die Datei, prüf die Konsole auf Fehler, schalt alle drei Bereiche durch, klick
die drei Fragen an und schau nach, ob die Planänderung wirklich sichtbar einfährt.
Prüf zusätzlich: ob die drei Ringe sich beim Laden wirklich einzeichnen und ihre
Zahlen zu den Ringen passen, ob "Karte groß" den Rest der Seite ausblendet und
Escape zurückführt, und ob die Karte im Hochformat vollständig auf den Bildschirm
passt, ohne dass etwas abgeschnitten ist. Prüf die Darstellung zusätzlich in 375 px
Breite. Zeig mir das Ergebnis, statt mich
zu bitten, es selbst zu kontrollieren. Wenn etwas verrutscht ist, repariere es und
schau erneut nach.

Frag mich zum Schluss, ob ich das Dashboard nächste Woche mit frischen Daten neu
bauen lassen will — dann merkst du dir, was du diesmal geändert hast, und zeigst
mir beim nächsten Mal, ob es etwas gebracht hat.

Fallstricke, die du bitte von vornherein beachtest:

- Eine lokal geöffnete HTML-Datei darf aus Sicherheitsgründen keine zweite Datei
  nachladen. Alles muss in der einen Datei stehen, auch die Daten.
- Wenn du SVG-Linien animierst: miss die Pfadlänge mit getTotalLength, statt sie zu
  schätzen. Geschätzte Längen lassen bei langen Linien Teile dauerhaft unsichtbar
  verschwinden, und das sieht aus wie fehlende Daten.
- Zwischen Zahl und Prozentzeichen gehört ein geschütztes Leerzeichen, sonst bricht
  die Überschrift an der falschen Stelle um.
- Die 10-Prozent-Regel ist schwächer belegt, als überall behauptet: Nichtverletzte
  Läufer steigerten im Schnitt 22 Prozent pro Woche, auffällig wurden erst Sprünge
  über 30 Prozent. Nimm 30 Prozent als Schwelle und nenn die 10-Prozent-Regel nicht
  als Tatsache.
- Ein einzelner Ausreißer nach oben ist kein Befund. Zwei aufeinanderfolgende Wochen
  oder ein Muster über den ganzen Zeitraum sind einer.
- "Heute" ist der Kalendertag, an dem du das Dashboard baust — nicht der Tag meines
  letzten Laufs. Wenn ich zwei Tage nicht gelaufen bin, sind das zwei vergangene
  Tage in der Woche, keine offenen.
- Ein sehr langer Einzellauf verschiebt eine ganze Woche. Wenn eine Woche einen Lauf
  enthält, der mehr als ein Drittel des Wochenumfangs ausmacht, benenn diesen Lauf,
  statt nur die Wochensumme zu zeigen — sonst erkläre ich mir die Woche falsch.
- Wenn meine Daten weniger als acht Wochen abdecken, sag mir das und lass die
  Kennzahlen weg, die einen längeren Zeitraum brauchen. Beim Connector prüfst du
  vorher, ob das wirklich an meinem Training liegt und nicht an einem zu kurz
  gewählten Zeitraum. Bau lieber ein kleineres,
  ehrliches Dashboard als ein volles mit dünnen Zahlen.
- Schreib nirgendwo eine Trainingsempfehlung, die wie eine medizinische Aussage
  klingt. Du beobachtest und steuerst Training, du diagnostizierst nichts.
- **Ein Ring ohne Bezugsgröße ist keine Information.** Wenn mein Wochenziel nur
  abgeleitet ist, muss das an der Zahl stehen — sonst lese ich eine Vorgabe, die ich
  nie gemacht habe.
- **Ringe brauchen die Pfadlänge, nicht die Schätzung.** Rechne den Umfang aus dem
  Radius (2·π·r) und setz stroke-dasharray genau darauf. Ein geschätzter Wert lässt
  den Ring bei 100 Prozent nicht schließen, und das sieht aus wie ein Fehler in
  meinen Daten.
- **Die Karte ist ein Ausschnitt, kein zweites Dashboard.** Nur Befund, drei Zahlen,
  Wochen, Fußzeile. Wenn du dort noch Kacheln unterbringst, ist sie als Screenshot
  unlesbar.

Geh Schritt für Schritt vor. Kipp nicht alles auf einmal aus.

—
Dieser Prompt ist Folge 11 von 100 aus "Sport KI" von Dan Felser.
Instagram: @felsr — alle Prompts der Reihe: felsr.com
Der Prompt kostet nichts. Wenn er dir was bringt: folg mir auf @felsr — dort kommt jede Folge zuerst. Kostenlose Trainingspläne
20 Pläne, 5 km bis Marathon — ohne E-Mail, ohne Konto
Alle Prompts der Reihe
Sport KI — 100 Folgen, jede Woche ein Tool aus meinem Training