Die erste Stunde mit Claude Code: vom leeren Ordner zum getesteten Skript

Die erste Stunde mit Claude Code: vom leeren Ordner zum getesteten Skript

Ein Chatbot liefert Code, den man kopieren, einfügen und ausprobieren muss. Ein Coding-Agent erledigt das allein. Er liest die Dateien im Projekt, legt neue an, führt Tests aus und korrigiert sich, wenn etwas fehlschlägt. Claude Code ist so ein Agent. In der ersten Stunde zeigt sich, wie viel man ihm überlassen will.

Spielen wir diese erste Stunde an einem kleinen Beispiel durch: einem Python-Skript, das ein Haushaltsbuch auswertet. Alle Ausgaben, Zahlen und Kosten in diesem Artikel stammen aus einem echten Durchlauf. Wer das Konzept dahinter genauer verstehen will, findet es im Prolog der Agentic-Coding-Reihe.

Installation und Anmeldung

Claude Code läuft im Terminal, also in der Kommandozeile. Auf dem Mac öffnen wir es über Spotlight (Cmd+Leertaste, dann „Terminal“ eintippen). Anthropic empfiehlt laut Doku den nativen Installer, der sich selbst aktuell hält. Auf macOS und Linux genügt eine Zeile:

curl -fsSL https://claude.ai/install.sh | bash

Unter Windows funktioniert der Befehl irm https://claude.ai/install.ps1 | iex in der PowerShell. Homebrew und npm werden ebenfalls unterstützt, aktualisieren sich aber nicht selbst.

Zur Anmeldung starten wir claude einmal, der Browser öffnet sich zum Login. Laut der Doku zur Anmeldung funktionieren die Abos Pro, Max, Team und Enterprise sowie ein API-Konto, das pro Token abrechnet, also nach den Wortstücken, in die Sprachmodelle Text zerlegen. Der kostenlose Plan von claude.ai reicht nicht. Für den Einstieg ist ein Pro- oder Max-Abo am einfachsten, weil dann keine Rechnung pro Anfrage entsteht, sondern nur Nutzungslimits gelten.

Ein Git-Repo als Sicherheitsnetz

Bevor der Agent loslegt, gehört das Projekt unter Versionskontrolle. Git speichert Zwischenstände, sogenannte Commits, zu denen wir jederzeit zurückkehren können, falls der Agent etwas kaputt macht. Unser Ausgangspunkt war ein leerer Ordner mit einer einzigen Datei. Die CSV, eine einfache Tabelle als Textdatei, enthält zwölf Ausgaben aus Juli und August. Wer mitmachen will, speichert diesen Inhalt mit einem Texteditor als ausgaben.csv im Ordner:

datum;kategorie;betrag
2026-07-02;Lebensmittel;54,30
2026-07-05;Miete;950,00
2026-07-09;Lebensmittel;38,75
2026-07-14;Freizeit;42,00
2026-07-21;Lebensmittel;61,20
2026-07-28;Mobilität;49,00
2026-08-01;Miete;950,00
2026-08-04;Lebensmittel;47,90
2026-08-11;Freizeit;120,00
2026-08-15;Mobilität;49,00
2026-08-19;Lebensmittel;52,15
2026-08-30;Freizeit;18,50

Danach machen wir den Ordner zum Git-Repo und die Datei zum ersten Commit:

mkdir erste-stunde && cd erste-stunde
git init
git add ausgaben.csv && git commit -m "Beispieldaten"

Claude Code kann eigene Änderungen zurückspulen, aber nicht alle. Git hilft dort, wo das Zurückspulen nicht reicht.

Der Testaufbau

Damit sich jede Antwort samt Dauer und Kosten festhalten lässt, haben wir die Schritte über claude -p ausgeführt, den nicht-interaktiven Modus. Den Plan-Schritt haben wir mit --permission-mode plan gestartet, die beiden folgenden Schritte mit -c in derselben Sitzung fortgesetzt. Im normalen Terminal sieht das anders aus, der Ablauf ist aber derselbe. Mit --safe-mode haben wir laut claude --help eigene Anpassungen wie CLAUDE.md, Skills, Plugins und Hooks ausgeblendet. Die Modellwahl setzt der Schalter nicht zurück. Deshalb lief der Durchlauf mit Claude Fable 5.1, das in unseren Einstellungen voreingestellt ist, und nicht mit dem Standardmodell (mehr dazu im Abschnitt zu den Kosten). Vorausgesetzt werden Python 3 und pytest, ein verbreitetes Testwerkzeug für Python. Fehlt pytest, installieren wir es mit python3 -m pip install pytest.

RechnerMac, macOS
Claude CodeVersion 2.1.280
KontoMax-Abo
ModellClaude Fable 5.1 (eigene Voreinstellung)
ProjektPython 3.12, pytest, keine weiteren Pakete
Schrittevier Aufrufe, am 24. September 2026

Erst planen, dann bauen

Wer Claude Code zum ersten Mal nutzt, sollte den Agenten nicht sofort loslegen lassen. Im Plan Mode liest Claude das Projekt, entwirft einen Plan und wartet auf ein Okay, bevor es eine Datei verändert. Im interaktiven Modus wechseln wir mit Shift+Tab dorthin. Unser Auftrag war bewusst so formuliert, wie ihn ein Einsteiger stellen würde:

In diesem Ordner liegt ausgaben.csv mit meinen Haushaltsausgaben. Schreib ein Python-Skript, das die Ausgaben pro Monat und Kategorie zusammenfasst und als Tabelle ausgibt. Bitte mit Tests (pytest).

Die Antwort kam nach knapp einer Minute. Claude hatte die CSV gelesen und selbst erkannt, dass sie Semikolons als Trenner und ein deutsches Dezimalkomma nutzt. Es hatte geprüft, dass pytest installiert ist und die Analysebibliothek pandas nicht, und plante deshalb nur mit dem, was Python von Haus aus mitbringt. Der Plan sah ein Skript mit kleinen, einzeln testbaren Funktionen vor, eine Testdatei und sogar die erwartete Ausgabe:

Monat    | Freizeit | Lebensmittel |   Miete | Mobilität |  Gesamt
---------+----------+--------------+---------+-----------+--------
2026-07  |    42,00 |       154,25 |  950,00 |     49,00 | 1195,25
2026-08  |   138,50 |       100,05 |  950,00 |     49,00 | 1237,55
Gesamt   |   180,50 |       254,30 | 1900,00 |     98,00 | 2432,80

Wir haben die Summen von Hand nachgerechnet. Sie stimmen. Ein guter Plan kostet eine Minute und erspart später das Aufräumen einer Lösung, die in die falsche Richtung gelaufen ist. Mehr dazu steht in Teil 2 der Reihe.

Der Auto-Modus ist schon an

Mit „Passt, setz den Plan bitte um.“ gaben wir die Umsetzung frei, ohne dem Agenten ausdrücklich Rechte zu geben. Wir hatten erwartet, dass er an den Stellen scheitert, an denen er Dateien schreiben oder Tests starten will. Stattdessen legte er drei Dateien an, ließ pytest laufen und meldete nach einer Minute „alle 21 Tests laufen grün“.

Der Grund steht im Protokoll, das Claude Code für jede Sitzung unter ~/.claude/projects/ ablegt. Dort ist der Modus auto vermerkt. Laut Doku ist das auf Pro-, Max- und Team-Abos die Voreinstellung. Im Auto-Modus fragt Claude Code nicht mehr den Menschen, sondern ein zweites Modell, einen Klassifikator, der jede Aktion prüft und riskante blockiert. Das ist bequem. Es heißt aber auch, dass ein Einsteiger in seiner ersten Session womöglich gar nicht mitbekommt, was der Agent alles ausführt.

Die Modi im Überblick, laut Doku:

ModusWas ohne Nachfrage läuftWofür
default (Manual)nur Lesenjede Aktion selbst prüfen
acceptEditsLesen, Dateien ändern, einfache DateibefehleCode iterieren, den man prüft
planLesen, dazu vom Klassifikator geprüfte Befehle, keine Dateiänderungenerst verstehen, dann bauen
autoalles, mit Prüfung durch den Klassifikatorlange Aufgaben ohne ständige Rückfragen
bypassPermissionsalles, ohne jede Prüfungnur in abgeschotteten Testumgebungen

Für die ersten Sessions empfehlen wir, mit Shift+Tab auf den Manual-Modus zu wechseln und jede Aktion einmal selbst zu bestätigen. Nach ein paar Durchläufen weiß man, was der Agent typischerweise tut, und kann dann bewusst auf Auto umstellen. Den Modus bypassPermissions, der über den Schalter --dangerously-skip-permissions erreichbar ist, sollte man auf dem eigenen Rechner gar nicht nutzen.

Nachprüfen statt glauben

„21 Tests grün“ ist eine Behauptung des Agenten. Prüfen wir sie selbst:

$ python3 -m pytest -q
21 passed in 0.01s

$ python3 ausgaben.py gibtsnicht.csv
Datei nicht gefunden: gibtsnicht.csv

Die Tests liefen, die Ausgabe entsprach dem Plan, und eine fehlende Datei führte zu einer verständlichen Fehlermeldung. Das erzeugte Skript hat 147 Zeilen, die Tests 172. Es rechnet mit Decimal statt mit Gleitkommazahlen, damit aus 0,1 plus 0,2 nicht 0,30000000000000004 wird. Ein erfahrener Entwickler hätte es genauso gemacht. Die Funktion, die deutsche Beträge umwandelt, sieht so aus:

def parse_betrag(text: str) -> Decimal:
    """Wandelt einen deutsch formatierten Betrag ("1.234,56") in ein Decimal um."""
    bereinigt = text.strip().replace(".", "").replace(",", ".")
    ...
    return Decimal(bereinigt)

Diese Prüfung ist keine Übervorsicht. Sprachmodelle können sich irren, auch wenn sie überzeugt klingen, und ein grüner Test beweist nur, was der Test prüft. Wer den Code nicht selbst lesen kann, sollte zumindest die Tests selbst ausführen und das Ergebnis mit eigenen Beispielen vergleichen. Danach gehört der Stand in einen Commit:

git add -A && git commit -m "Ausgaben-Auswertung mit Tests"

Eine zweite Runde

In derselben Sitzung forderten wir eine Erweiterung an: „Füge eine Option –kategorie hinzu, mit der ich nur eine Kategorie sehe, zum Beispiel –kategorie Lebensmittel. Tests nicht vergessen.“ Claude baute die Option ein, ergänzte fünf Tests und fing auch den Fall ab, dass es die Kategorie nicht gibt. git diff --stat, das die geänderten Dateien seit dem letzten Commit auflistet, zeigte genau zwei Dateien. pytest meldete 26 bestandene Tests, und auch dieser Stand kam in einen Commit.

$ python3 ausgaben.py --kategorie Lebensmittel
Monat   | Lebensmittel | Gesamt
--------+--------------+-------
2026-07 |       154,25 | 154,25
2026-08 |       100,05 | 100,05
Gesamt  |       254,30 | 254,30

Die letzte Sitzung setzen wir im Terminal mit claude -c fort, eine ältere holen wir mit claude -r aus einer Liste zurück.

Die CLAUDE.md mit /init

Der Befehl /init legt eine Datei namens CLAUDE.md an. Claude Code liest sie zu Beginn jeder Sitzung und kennt so die Regeln des Projekts, ohne dass wir sie jedes Mal wiederholen müssen. In unserem Fall waren es 33 Zeilen mit den Befehlen zum Starten und Testen, dem Aufbau des Skripts und den Konventionen, die die Tests festschreiben:

- **Beträge sind immer `Decimal`**, nie `float`.
- **Tabellenformat** ist exakt getestet [...]. Änderungen an der
  Ausgabe erfordern Anpassung der Tests in `test_ausgaben.py`.

Den Zweck des Projekts hat Claude aus dem Ordnernamen erraten, mehr stand ihm nicht zur Verfügung. Die generierte Datei ist ein guter Anfang, mehr nicht. Mit ihr bekam das Repo seinen vierten Commit. Was in eine gute CLAUDE.md gehört und was nicht, beschreibt Teil 1 der Reihe.

Rückgängig machen

Wenn der Agent in die falsche Richtung läuft, stoppt ihn ein Druck auf Esc. Zweimal Esc bei leerer Eingabe oder der Befehl /rewind öffnet laut Doku ein Menü, mit dem wir Code und Gespräch auf einen früheren Stand zurücksetzt. Claude Code legt dafür vor jeder Eingabe automatisch einen Zwischenstand an.

Die Doku nennt auch die Grenze. Änderungen, die über Terminal-Befehle entstehen, etwa gelöschte oder verschobene Dateien, lassen sich damit nicht zurückholen. Auch was außerhalb des Rechners passiert, etwa ein git push, bleibt bestehen. Deshalb gehört vor jede größere Aufgabe ein Commit, und deshalb stand Git am Anfang dieses Artikels.

2,53 Euro für die erste Stunde

SchrittModusDauerKosten zu API-Listenpreisen
Planplan54,4 s0,40 €
Umsetzungauto57,9 s0,77 €
Erweiterungauto35,3 s0,97 €
/init (neue Sitzung)auto44,3 s0,39 €
Summe3 min 12 s2,53 €

Die Kosten sind der Betrag, den Claude Code für dieselben Aufrufe über ein API-Konto berechnet hätte, umgerechnet zum EZB-Kurs vom 22. September 2026 (1 € = 1,1463 $). Über das Max-Abo kostete der Durchlauf nichts zusätzlich, er zählte nur gegen die Nutzungslimits. Den eigenen Verbrauch zeigt der Befehl /usage. Die Rechenzeit des Agenten lag bei gut drei Minuten, der Rest der Stunde ging auf Installation, Lesen und eigenes Prüfen.

Jeder Schritt in derselben Sitzung wurde teurer. Die Sitzungsdaten zeigen den Grund. Claude Code las beim Planen rund 81.000 Token ein, bei der Umsetzung 133.000 und bei der Erweiterung 194.000, weil der bisherige Verlauf jedes Mal mitgeschickt wird. /init lief in einer neuen Sitzung und las nur 114.000 Token. Wer eine neue, unabhängige Aufgabe beginnt, startet deshalb mit /clear ein frisches Gespräch. Das spart Kosten und verhindert, dass alter Kontext, also alles, was das Modell aus dem bisherigen Gespräch noch vor Augen hat, die neue Aufgabe verwirrt.

Die Kosten gelten für Claude Fable 5.1, das leistungsstärkste allgemein verfügbare Modell von Anthropic (mehr zu Fable), das in unseren Einstellungen voreingestellt ist. Ohne eigene Einstellung startet Claude Code laut Doku auf Pro-, Max-, Team- und Enterprise-Abos sowie über ein API-Konto mit Opus 5.5. Fable kostet laut Preisliste pro Token zweieinhalbmal so viel wie Opus 5.5 und braucht das Nutzungslimit eines Abos entsprechend schneller auf. Bei gleichem Tokenverbrauch hätte derselbe Durchlauf mit Opus 5.5 rechnerisch rund 1 € gekostet. Gemessen haben wir das nicht, Opus kann für dieselbe Aufgabe mehr oder weniger Token brauchen. Für ein Projekt dieser Größe reicht das Standardmodell, ein Pro-Abo genügt. Umstellen lässt es sich mit /model, die Denktiefe mit /effort, von low bis max. Wie stark die Denktiefe die Kosten beeinflusst, zeigt unser Kostenvergleich von Opus 5.5 und Opus 5.

Die wichtigsten Befehle für den Anfang

Befehl oder TasteWirkung
claudeSitzung im aktuellen Ordner starten
Shift+TabModus wechseln (Manual, Accept Edits, Plan, Auto)
EscClaude unterbrechen
Esc Esc oder /rewindCode und Gespräch zurücksetzen
/initCLAUDE.md für das Projekt anlegen
/clearneues Gespräch mit leerem Kontext
/compactVerlauf zusammenfassen, um Platz zu sparen
/model, /effortModell und Denktiefe wählen
/usageVerbrauch und Limits anzeigen
claude -c, claude -rletzte Sitzung fortsetzen, ältere auswählen
/helpalle Befehle anzeigen

Das Muster für größere Projekte

Nach der ersten Stunde haben wir ein funktionierendes Skript, 26 Tests, eine CLAUDE.md und vier Commits im Repo. Das Muster dahinter bleibt auch bei größeren Projekten gleich: planen lassen, freigeben, das Ergebnis selbst prüfen, committen. Wer tiefer einsteigen will, findet in der Agentic-Coding-Reihe die nächsten Werkzeuge, von eigenen Skills über Subagents bis zu Hooks, die nach Änderungen automatisch formatieren oder Tests starten.

Der Agent schreibt den Code. Die Verantwortung dafür bleibt bei dem, der ihn freigibt.

Quellen