1 Claude Code öffnen — nicht die App, der Prompt schreibt ein Skript und führt es aus 2 Prompt reinhauen 3 den Rest fragt er dich. Voraussetzung: eine aktive Whoop-Mitgliedschaft.
Du richtest mit mir Whoops offizielle Schnittstelle für mein eigenes Konto ein, holst meine komplette Geschichte auf meinen Rechner und baust daraus ein Dashboard, das mir jeden Morgen eine Entscheidung abnimmt. Du arbeitest Schritt für Schritt. Nach jedem Schritt zeigst du mir, was du gefunden hast, und wartest, bis ich Weiter sage. Du überspringst nichts, du baust die Seite nicht vor Schritt 7, und du erfindest keine Zahl, die du nicht aus einer Datei gelesen hast. Wenn du eine Bestätigung für einen Befehl brauchst, frag einfach - ich sage dann Ja. Wenn ich an einer Stelle hängen bleibe, gib mir nicht mehr Text, sondern die eine Sache, die ich als Nächstes anklicken oder eintippen soll. SCHRITT 1 - DIE EINE VORAUSSETZUNG Frag mich zuerst, ob mein Whoop gerade aktiv ist und ob ich es in den letzten Wochen getragen habe. Die Schnittstelle gibt nur Daten aus, solange die Mitgliedschaft läuft. Ohne aktives Band funktioniert die ganze Einrichtung genau so, und am Ende kommt jeder Abruf leer zurück - das ist dann kein Fehler im Code, und ich soll nicht stundenlang danach suchen. Sag mir außerdem in einem Satz, was ich NICHT brauche: keine Website, keinen Server, keine Domain, kein Hosting. Das ist die Hürde, an der die meisten aufhören. SCHRITT 2 - DIE EIGENE APP BEI WHOOP Schick mich auf Whoops Entwicklerseite und führ mich durch die Anmeldung mit meinem normalen Whoop-Konto. Sag mir dazu drei Dinge, die die Seite selbst nicht sagt: Erstens: Ich muss zuerst ein Team anlegen, bevor ich eine App anlegen darf. Der Name ist egal. Zweitens: Beim Anlegen der App wollen vier Felder gefüllt werden - Name, Kontaktadresse, eine Datenschutzerklärung als Link und eine Weiterleitungs- Adresse. Die letzten beiden sehen aus, als bräuchten sie eine Website. Tun sie nicht. Drittens: Alles muss ausgefüllt sein, sonst speichert die Seite nicht. Frag mich dann, ob ich beim Formular stehe, und geh erst dann weiter. SCHRITT 3 - DIE ZWEI FELDER, AN DENEN ALLE HÄNGEN BLEIBEN DIE DATENSCHUTZERKLÄRUNG Lass mich ein leeres Textdokument anlegen - ein Google Doc reicht - und gib mir vier Zeilen zum Hineinkopieren, die ehrlich beschreiben, was hier passiert: dass die App meine eigenen Whoop-Daten für meinen eigenen Gebrauch liest, dass die Daten auf meinem Rechner bleiben und nicht weitergegeben werden, dass nichts verkauft, an Dritte übertragen oder für Werbung genutzt wird, und meine Kontaktadresse. Dann der Punkt, der wirklich zählt: Ich soll das Dokument ÜBER DATEI, FREIGEBEN, IM WEB VERÖFFENTLICHEN öffentlich machen und den VERÖFFENTLICHTEN Link nehmen - nicht den normalen Teilen-Link. Erklär mir den Unterschied in einem Satz: Ein veröffentlichter Link ist eine öffentliche Seite und braucht kein Konto. Ein Teilen-Link kann jedem, dem Whoop ihn vorlegt, eine Zugriffsanfrage zeigen. Eine Datenschutzerklärung, die niemand öffnen kann, ist keine. DIE WEITERLEITUNG Gib mir eine Adresse auf meinem eigenen Rechner, Schema https, Port 8080, Pfad callback. Schreib sie mir ausgeschrieben hin, damit ich sie abtippen kann. Und sag mir dazu die Regel, die dahintersteckt: Whoop prüft das SCHEMA, nicht die Erreichbarkeit. Eine Adresse ohne Verschlüsselung wird abgelehnt, dieselbe Adresse mit Verschlüsselung angenommen. Es muss dort NIE etwas laufen. Warum das reicht, sieht man in Schritt 5. SCHRITT 4 - DIE BERECHTIGUNGEN Lass mich alle Berechtigungen anhaken: Erholung, Zyklen, Schlaf, Training, Profil, Körpermaße - und die siebte, die nicht nach Daten aussieht und offline heißt. Erklär mir, warum genau die entscheidend ist: Ohne sie bekomme ich einen Zugang, der nach einer Stunde stirbt, und keinen Erneuerungsschlüssel. Ich müsste dann jedes einzelne Mal von Hand neu autorisieren. Mit ihr erneuert sich das Skript für immer selbst. Danach speichere ich die App und habe zwei Werte vor mir: eine Kennung und ein Geheimnis. Sag mir, dass ich das Geheimnis wie ein Passwort behandeln soll - nicht posten, nicht in ein öffentliches Verzeichnis legen, nicht in einen fremden Chat kopieren. Frag mich, ob beide Werte da sind. Lass sie mich in eine lokale Datei schreiben, nicht in den Chat, wenn dir das lieber ist - sag mir dann genau, wie. SCHRITT 5 - DIE VERBINDUNG, OHNE DASS IRGENDWO ETWAS LÄUFT Das ist der Teil, der schwer aussieht und neunzig Sekunden dauert. Bau mir aus meiner Kennung einen Autorisierungs-Link. Er zeigt auf Whoops Autorisierungsadresse und trägt fünf Angaben: meine Kennung, meine Weiterleitungs-Adresse in url-kodierter Form, den Antworttyp Code, die Liste aller sieben Berechtigungen, und einen frei gewählten Zufallstext. Der Zufallstext braucht MINDESTENS ACHT ZEICHEN. Ist er kürzer, schlägt der Aufruf fehl, ohne zu sagen warum. Schlag mir einen vor. Gib mir den fertigen Link zum Anklicken. Ich melde mich an, ich bestätige. Und jetzt sag mir vorher, was gleich passiert, damit ich nicht denke, es sei kaputt: DIE SEITE WIRD NICHT LADEN. Auf meinem Rechner läuft dort nichts, also kommt eine Fehlerseite. Das ist genau richtig. Der ganze Vorgang steht trotzdem in der Adresszeile. Lass mich die komplette Adresszeile kopieren und dir zurückgeben. Zieh dir selbst den Code daraus. Prüf dabei, ob der Zufallstext derselbe ist, den du vergeben hast, und sag mir, warum du das prüfst. Sag mir zum Schluss den Satz, der die ganze Hürde auflöst: Es braucht keinen Rückruf-Server. Ich bin der Rückruf-Server. Wenn der Tausch mit einer Meldung über eine ungültige Genehmigung abbricht: Der Code ist unter einer Minute gültig und war schon abgelaufen. Nichts ist kaputt. Schick mich zurück auf den Link, hol einen frischen Code, mach sofort weiter. SCHRITT 6 - DAS SKRIPT, DAS SICH SELBST ERNEUERT Schreib mir eine einzige Python-Datei in den aktuellen Ordner. Nur Standard- bibliothek, keine Installation. Sie soll folgendes tun: Beim ersten Lauf tauscht sie den Code gegen ein Zugangs- und ein Erneuerungs- paar und legt es in einer eigenen Datei neben sich ab, zusammen mit dem Zeitpunkt, an dem der Zugang abläuft. Bei jedem weiteren Lauf schaut sie in diese Datei. Ist der Zugang noch mehr als zwei Minuten gültig, benutzt sie ihn. Sonst erneuert sie ihn. UND JETZT DIE EINE ZEILE, DIE ÜBER ALLES ENTSCHEIDET: Sie schreibt das neue Paar auf die Platte, BEVOR sie es benutzt. Grund: Beim Erneuern rotiert das Paar, und das alte stirbt im selben Moment - der vorige Zugang antwortet beim nächsten Aufruf mit einer Abweisung. Erneuert das Skript und stürzt danach ab, ohne gespeichert zu haben, bin ich ausgesperrt und darf im Browser von vorn anfangen. Schreib mir diese Begründung als Kommentar an genau diese Zeile. Dann holt sie die Daten: mein Profil, meine Körpermaße, und in Schleifen meine Erholungen, meine Zyklen, meinen Schlaf und meine Trainings. Die Schnittstelle gibt HÖCHSTENS FÜNFUNDZWANZIG Einträge pro Aufruf zurück und reicht einen Zeiger auf die nächste Seite mit - eine vollständige Geschichte ist also eine Schleife, kein einzelner Aufruf. Bau eine kurze Pause zwischen die Aufrufe und eine Obergrenze ein, damit sie nicht ewig läuft. Am Ende schreibt sie alles in EINE Datei neben sich und gibt mir eine Zeile mit den Anzahlen aus, damit ich sofort sehe, ob etwas angekommen ist. Lass mich das Skript einmal laufen. Zeig mir die Ausgabe. Wenn alle Anzahlen null sind, ist es fast immer die Mitgliedschaft aus Schritt 1 und fast nie der Code. SCHRITT 7 - WAS DA WIRKLICH DRIN IST Bevor du irgendetwas baust: Lies die Datei und sag mir ehrlich, womit ich arbeite. Beschönige nichts. Wie viele Tage Geschichte habe ich wirklich, und was ist der älteste und der jüngste Tag? Welche Felder sind durchgehend gefüllt, welche lückenhaft, welche über die ganze Reihe leer? Wie sehen meine aktuelle Erholung, meine Belastung und mein Schlaf im Vergleich zu meinen eigenen Durchschnitten der letzten dreißig Tage aus? Sieht irgendetwas falsch, veraltet oder fragwürdig aus? Und der wichtigste Satz dieses Schritts: WENN MEINE GESCHICHTE ZU KURZ IST, UM EINEN TREND ZU TRAGEN, DANN SAG MIR DAS UND SAG MIR, WIE LANGE ICH WARTEN MUSS. Eine heute angelegte Verbindung liefert Daten ab heute. Die Hälfte von dem, was Leute hiermit bauen, geht kaputt, weil sie drei Jahre Geschichte angenommen haben und drei Wochen hatten. SCHRITT 8 - DAS INTERVIEW Jetzt frag mich aus. Die Fragen kommen EINZELN, in dieser Reihenfolge, und du wartest nach jeder auf meine Antwort. Keine Sammelabfrage, kein Vorgreifen, und du fängst nicht an zu bauen, bevor alle acht durch sind. Halt jede Frage auf zwei Zeilen. TRAINING Eins. Worauf trainiere ich? Hol dir den Wettkampf, das Datum und mein Ziel. Wenn ich auf nichts Bestimmtes trainiere, finde heraus, was ich in den nächsten sechs Monaten von meinem Körper will - und lass mir "fitter werden" nicht durchgehen, sondern dräng auf etwas Messbares. Zwei. Wie sieht eine normale Woche gerade aus? Einheiten pro Woche, welche davon hart sind, und welcher Tag mein größter ist. Drei. Was ist meine Geschichte damit? Habe ich diese Strecke oder diese Sportart schon einmal gemacht, und was ist beim letzten Mal passiert? Vier. Welche Entscheidung soll mir dieses Dashboard jeden Morgen abnehmen? Dräng, bis ich eine echte Entscheidung nenne. "Meine Daten sehen" ist keine Entscheidung. "Ob ich die Intervalle heute ziehe oder auf Donnerstag schiebe" ist eine. DAS DASHBOARD Fünf. Was hat Whoop mir nie gesagt, das ich immer wissen wollte? Sechs. Wie soll sich das anfühlen, wenn ich es aufmache? Lass mich eine echte Vorlage nennen - eine App, ein Autocockpit, ein Zifferblatt, ein Gerät, ein Film. Wenn ich "clean und modern" sage, lehn das ab und frag noch einmal. Sieben. Will ich die Kugel? Beschreib sie mir zuerst in einer Zeile: eine langsam drehende Kugel, die atmet, mit einer großen Zahl in der Mitte. Dann frag mich zwei Dinge. WELCHE ZAHL steht drin, und WO sitzt sie: Mittelpunkt der Seite, kleiner an der Seite, oder gar nicht. Biete mir für die Zahl das hier an, und sag mir VORHER, welche Möglichkeiten meine Daten tatsächlich tragen: eine zusammengesetzte Bereitschaft, die du aus Erholung, Schlaf und dem Verhältnis von akuter zu chronischer Belastung selbst baust meine Erholung allein ein Alterstempo - dafür brauchst du zwei Werte, die die Schnittstelle nicht hergibt, also musst du mich nach meinem VO2max und meinem Körperfettanteil fragen die Tage bis zu dem Wettkampf aus Frage eins meine aufgelaufene Schlafschuld Acht. Mache ich das um fünf Uhr morgens am Telefon auf, am Schreibtisch auf dem Laptop, oder beides? Wenn das Interview durch ist, lies mir meine Antworten in fünf Zeilen zurück und lass sie mich bestätigen, bevor du baust. SCHRITT 9 - BAUEN Eine einzige, in sich geschlossene HTML-Datei. Und dabei gelten neun Regeln: Jede Zahl kommt aus meinen echten Daten. Was sich aus dem, was ich habe, nicht rechnen lässt, lässt du weg - du füllst es nicht mit einem Platzhalter. Die Entscheidung aus Frage vier steht ganz oben, als ein Satz, vor jedem Diagramm. Zu allem, was du rechnest, schreibst du die Formel in normaler Sprache auf die Seite. Nicht in den Code, auf die Seite. Ich will mit ihr streiten können. Jede Annahme, die du treffen musstest, wird ein Regler, den ich verstellen kann - keine Konstante, die im Code vergraben ist. Du benutzt die echten Feldnamen der Schnittstelle im Code, damit die Seite weiterläuft, wenn ich meine Daten neu ziehe. Am Ende sagst du mir, welche Teile GEMESSEN und welche MODELLIERT sind. In zwei Listen, nicht in einem Absatz. Wenn ich in Frage sieben Ja zur Kugel gesagt habe, dann führ die Farbe der Kugel aus dem Wert, den sie zeigt: ein schlechter Tag darf nicht aussehen wie ein guter. Und respektier die Systemeinstellung für reduzierte Bewegung - dann zeigst du ein Standbild statt der Drehung. Wenn ich in Frage acht Telefon gesagt habe, baust du für das Telefon zuerst. Ein Dashboard, das für einen Laptop gebaut ist, ist um fünf Uhr morgens am Telefon unlesbar - und das ist die einzige Uhrzeit, zu der ich wirklich hineinschaue. Du übernimmst KEINE fremde Wortmarke, kein fremdes Logo und keine fremden Markenfarben. Die Form gehört niemandem, die Marke schon. Sonst sieht meine eigene Seite aus wie das Produkt von jemand anderem. SCHRITT 10 - WAS DAS NICHT IST Sag mir das am Ende ehrlich zurück, ich will es lieber wissen: Healthspan, Whoop Age, Alterstempo, VO2max und Körperzusammensetzung kommen nicht aus der Schnittstelle. Was auf meiner Seite dazu steht, ist deine Nachbildung aus den Bausteinen, die es gibt, plus den Werten, die ich dir gegeben habe. Sag das auf der Seite, nicht nur im Chat. Meine Zahlen sind Vergleiche mit mir selbst, keine Norm und keine Diagnose. Kein Arzt, kein Schlaflabor, kein Trainer. Schlafphasen werden auf jedem verkauften Gerät geschätzt, auf meinem auch. Niemand an meinem Handgelenk liest Hirnströme. Wenn dir in meinen Daten etwas auffällt, das nach einem medizinischen Problem aussieht - eine Sauerstoffsättigung, die immer wieder einbricht, ein Ruhepuls, der über Wochen steigt, eine Hauttemperatur, die aus der Reihe fällt -, dann sag mir das in einem Satz und schick mich zu einem Menschen, statt daraus einen Trainingshinweis zu machen. SCHRITT 11 - AB JETZT VON ALLEIN Zeig mir zum Schluss, wie ich das Skript wieder laufen lasse, damit die Seite frische Daten bekommt. Es soll sich dabei selbst erneuern und mich nie wieder in den Browser schicken. Und sag mir, wo meine Zugangsdaten liegen, damit ich weiß, welche Dateien ich nicht weitergebe und nicht in ein öffentliches Verzeichnis lege. — Dieser Prompt ist Folge 15 von 100 aus "Sport KI" von Dan Felser. Instagram: @felsr — alle Prompts der Reihe: felsr.com