Communitygithub.com

atishaytuli07/versioning-ai-work

Weist jeder Änderung an KI-erstellter Arbeit eine eigene Versionsnummer zu (v1.2.3), behält jede Version bis zur manuellen Löschung durch den Nutzer und ermöglicht Vergleiche und Zurücksetzungen ohne Datenverlust. Verwende dies bei jeder mehrschrittigen Erstellung oder Bearbeitung von Dateien für einen Nutzer (Designs, Webseiten, Apps, Dokumente, Code), selbst wenn Versionen nie erwähnt werden, und immer dann, wenn der Nutzer nach Speichern, Verlauf, Vergleichen, Rückgängigmachen, Wiederherstellen oder Zurückkehren zu einer früheren Version fragt.

Was ist versioning-ai-work?

Dieses Skill automatisiert die Versionsverwaltung für KI-generierte Arbeit in Entwicklerwerkzeugen. Es erstellt nach jeder Änderung automatisch eine neue nummerierte Version (z. B. v1.2.3) und bewahrt alle Versionen auf, bis der Nutzer sie löscht. Dadurch können Nutzer jederzeit den Verlauf einsehen, Versionen vergleichen oder zu einem früheren Stand zurückkehren, ohne Arbeit zu verlieren. Es funktioniert mit Claude Code, Cursor, Codex, Windsurf, Copilot, Gemini CLI, Replit Agent, claude.ai (mit Code-Ausführung) und anderen. Das Skill definiert drei Kernregeln: Jede Änderung erhält eine Version, Zurücksetzen löscht nie eine Version, und Zurücksetzen selbst erzeugt eine neue Version. Es bietet einen CLI-Befehlssatz (`init`, `save`, `restore`, `diff`, `list`, `status`, `backup`, `import` usw.) und unterstützt sowohl einen dateibasierten Modus (mit einem Python-Skript) als auch einen GitHub-Workflow-Modus. Der Nutzer kann zwischen verschiedenen Bump-Leveln (patch, minor, major) wählen, um die Art der Änderung zu kennzeichnen. Das Skill verhindert versehentliches Löschen von Versionen und stellt sicher, dass auch ein Zurücksetzen rückgängig gemacht werden kann, da es als neue Version gespeichert wird. Für vergessene Speicherungen gibt es Hooks für Claude Code und Cursor.

Funktioniert mit✓Claude Code✓Codex CLI✓Cursor✓Gemini CLI✓Windsurf
npx skills add https://github.com/atishaytuli07/ai-version-history/tree/HEAD/skills/versioning-ai-work

In Ihrer bevorzugten KI fragen

Öffnet einen neuen Chat, in dem dieser Agent-Skill bereits geladen ist.

Dokumentation

Versionierung von KI-Arbeit

Menschen, die iterativ mit KI arbeiten, verlieren gute Versionen: Eine Neuerstellung überschreibt sie, ein Rückgängigmachen geht zu weit oder das Gespräch driftet ab. Dieses Skill macht jede Änderung zu einer nummerierten Version, die bleibt, bis der Nutzer sie löscht, sodass er jeden früheren Zustand einsehen, vergleichen und wiederherstellen kann.

Die drei Regeln

  1. Jede Änderung erhält eine Version. Eine Nutzeranfrage, die Dateien ändert, ist eine Version, die am Ende dieses Bearbeitungsschritts gespeichert wird, bevor du antwortest. Das Speichern pro Anfrage (nicht pro Dateibearbeitung) hält den Verlauf lesbar.
  2. Zurückgehen löscht niemals eine Version. Nur das Skript schreibt in .ai-versions/. Bearbeite, verschiebe oder lösche dort niemals etwas, selbst wenn der Nutzer um Aufräumen bittet. Verweise den Nutzer stattdessen auf backup.
  3. Zurückgehen ist eine neue Version. Stelle mit dem Skript wieder her; baue niemals alte Arbeit aus dem Gedächtnis neu auf. Eine Wiederherstellung wird als neue Version gespeichert, sodass auch sie rückgängig gemacht werden kann.

Das Skript wählt jede Versionsnummer aus. Rate niemals eine; gib die Nummer aus, die es ausgibt.

Wähle den Modus einmal pro Projekt

  • Du kannst Befehle ausführen und Dateien bearbeiten (Claude Code, Cursor, Codex, Windsurf, Copilot, Gemini CLI, Replit Agent, claude.ai mit Code-Ausführung): Verwende den Dateimodus unten.
  • Das Projekt hat .github/workflows/ai-versions.yml: Es verwendet die GitHub-Versionsebene. Führe init nicht aus. Überschreibe stattdessen bei jeder Änderung .ai-versions/pending.json, und schreibe zum Zurückgehen .ai-versions/restore.json. Beides wird in assets/rules/github-layer-rules.md beschrieben.
  • Du kannst keine Befehle ausführen (ein reiner Chat): Folge references/chat-mode.md.
  • Der Nutzer arbeitet in Lovable, Bolt oder v0 (Bolt und v0 sind in Beta: noch nicht live getestet) oder Figma Make und fragt nach der Versionierung dort: Lies references/app-builders.md.

Dateimodus

Das Skript ist scripts/aiv.py im Ordner dieses Skills (dem Ordner, der diese SKILL.md enthält). Rufe es mit seinem vollständigen Pfad auf und weise mit --root auf das Projekt:

python3 "<Ordner dieses Skills>/scripts/aiv.py" --root "<Projektordner>" <Befehl>
# Windows: py statt python3

Nach init hat jedes Projekt auch eine eigene Kopie, sodass im Projektordner python3 .ai-versions/aiv.py <Befehl> genauso funktioniert. Im Folgenden steht aiv für beide Formen. Wenn Python nicht installiert ist, teile dem Nutzer mit, dass es benötigt wird (python.org), und verwende bis dahin den Chat-Modus.

Start

Führe vor deiner ersten Bearbeitung in einem Projekt ohne .ai-versions/ init aus. Es speichert die aktuellen Dateien als v1.0.0, sodass der Nutzer jederzeit zum Zustand vor deiner Bearbeitung zurückkehren kann.

Wenn der Ordner mehr als das Projekt enthält (eine Sandbox, ein Home-Ordner, ein Downloads-Ordner), grenze ihn ein: init --only poster.html assets/. init lehnt Ordner mit über 5.000 Dateien ab, da das normalerweise auf den falschen Ordner hindeutet.

Nach jeder Änderung

aiv save --bump minor --summary "Preisbereich mit 3 Plänen hinzugefügt" \
  --reason "Neuer Abschnitt; Layout und Stil unverändert" --prompt "Preise mit 3 Plänen hinzufügen"
--bumpDem Nutzer angezeigt alsWann
patchKleine AnpassungGleiche Funktionen, kleine Anpassung: Text, Farbe, Abstand, Größe, eine kleine Korrektur
minorNeue FunktionEtwas Neues, gleiche Richtung: ein Abschnitt, eine Seite, eine Komponente, ein Feature
majorGroße ÄnderungDie Richtung hat sich geändert: Neugestaltung, neues Layout, neues Stilsystem, Entfernen einer Funktion

Eine Anfrage mit mehreren Änderungen erhält die höchste Stufe. Bei Unsicherheit zwischen zwei Stufen: Nimm die niedrigere und erwähne dies in --reason. Randfälle (Dokumente, Refactorings, Inhaltsaktualisierungen) sind in references/bump-levels.md.

Schreibe --summary für den Nutzer, nicht für einen Entwickler: "Hero-Bild vergrößert", nicht "Hero.tsx aktualisieren". Setze die Anfrage des Nutzers, auf eine Zeile gekürzt, in --prompt.

Beende dann deine Antwort mit einer Zeile, zum Beispiel: Gespeichert v1.3.0 (Neue Funktion): Preisbereich mit 3 Plänen hinzugefügt.

Wenn save sagt, dass die Dateien exakt mit einer älteren Version übereinstimmen, zeichnet es den Speichervorgang als Rückkehr zu dieser Version auf. Teile dem Nutzer mit, dass dies passiert ist.

Wenn der Nutzer fragt

Der Nutzer sagtFühre ausDann
"Versionen anzeigen", "Verlauf"listZeige eine kurze Tabelle. Für eine visuelle Zeitleiste führe view aus und teile die HTML-Datei, die es erstellt.
"Was hat sich in v1.3.0 geändert"diff v1.3.0^ v1.3.0Erkläre in einfachen Worten. vX^ bedeutet die Version vor vX.
"Vergleiche v1.2 und v2.0"diff v1.2.0 v2.0.0 --stat, dann ohne --stat für DetailsSage, was sich geändert hat, was besser wurde, was schlechter wurde. Wenn du die Arbeit rendern kannst (HTML, Bilder), zeige beide nebeneinander.
"Geh zurück zu v1.2.0", "Mach das rückgängig"restore v1.2.0 oder restore prev für RückgängigFühre dann den Schritt unten aus.
"Nur den alten Header zurückbringen", "Altes Design, aber den neuen Text behalten"restore v1.2.0 --path <dateien>Nur diese Dateien ändern sich; es wird als Kleine Anpassung gespeichert.
"Andere Richtung ab v1.2.0 versuchen"restore v1.2.0Mache dann die neue Änderung und speichere sie wie gewohnt.
"Was ist die aktuelle Version", "Gibt es ungespeicherte Änderungen"status
"Gib mir v1.2.0 als Dateien"export v1.2.0 --out v1.2.0.zip
"Führe dies in einem anderen Chat oder Tool fort"backup --out history.zipAm neuen Ort: import history.zip.

Wenn der Nutzer eine Version vage benennt ("die Blaue", "vor dem Redesign"), führe list aus und gleiche die Zusammenfassungen ab. Wenn zwei Versionen passen, frage nach.

Nach dem Zurückgehen

Eine vollständige Wiederherstellung setzt alle Projektdateien in den ursprünglichen Zustand zurück, einschließlich Dateien, die der Nutzer möglicherweise nicht als Teil der Arbeit betrachtet, wie Notizen oder Daten. Teile dem Nutzer mit, welche Dateien sich geändert haben (das Skript listet sie auf). Wenn es zuerst ungespeicherte Arbeit gespeichert hat, sage, welche Version sie enthält, und biete an, bestimmte Dateien mit restore <diese Version> --path <datei> zurückzubringen. Wenn die Anfrage eindeutig nur einen Teil des Projekts betrifft ("die alten Farben"), verwende von Anfang an --path.

Führe handoff <wiederhergestellte Version> aus und behandle dessen Ausgabe als aktuelle Wahrheit, bevor du die nächste Änderung vornimmst. Es listet nur die Entscheidungen auf, die zu dieser Version geführt haben, und benennt die verworfenen, damit Anweisungen aus aufgegebenen Richtungen nicht zurückkriechen. Wenn die Unterhaltung lang ist, biete an, in einem neuen Chat fortzufahren, und gib dem Nutzer den Handoff-Text zum Einfügen dort.

Sicherheitsnetz für vergessene Speicherungen

Biete in Claude Code oder Cursor dies einmal pro Projekt an: install-hooks claude-code oder install-hooks cursor. Es fügt einen Hook hinzu, der jede vergessene Änderung als Kleine Anpassung speichert, wenn du fertig bist. Installiere es nur, nachdem der Nutzer zugestimmt hat, da es in seine Tool-Einstellungen schreibt.

Über Versionen sprechen

Verwende die Worte des Nutzers: Kleine Anpassung, Neue Funktion, Große Änderung, Zurückgegangen. Erwähne Versionsnummern, nicht Commits, Dateien in .ai-versions/ oder Hashes. Toolspezifische Hinweise (claude.ai, Replit, Windows) sind in references/tools.md.

Wenn ein Nutzer zurückgeht, erinnere ihn einmal daran, dass nur Dateien zurückkommen: Datenbankzeilen und andere Live-Daten bleiben wie sie sind.

Alle Befehle

BefehlWas es tut
init [--only PFAD...]Starte den Verlauf und speichere v1.0.0
save --bump B --summary S [--reason R] [--prompt P]Speichere die aktuellen Dateien als neue Version
statusAktuelle Version und ungespeicherte Änderungen
list [--all] [--json]Versionen, neueste zuerst
show VDetails einer Version und geänderte Dateien
diff [A] [B] [--stat] [--path P...]Keine Argumente: ungespeicherte Änderungen. Eins: A bis zur neuesten. Zwei: A bis B
restore V [--path P...] [--note N]Gehe zurück (alle Dateien oder nur einige); speichert zuerst ungespeicherte Arbeit, dann die Wiederherstellung als neue Version
handoff [V]Sauberer Kontext für die Fortsetzung ab V
view [--out DATEI]HTML-Zeitleiste aller Versionen
export V --out VERZ_ODER_ZIPDie Dateien einer Version
backup --out DATEI.zip / import DATEI.zipVerschiebe den gesamten Verlauf
`install-hooks claude-codecursor`
setup-github [--with-pill]Füge die GitHub-Ebene zu einem App-Builder-Repository hinzu
doctorÜberprüfe den Verlauf auf fehlende Teile

Versionen können geschrieben werden als v1.2.0, 1.2.0, latest, prev oder v1.2.0^.

Verwandte Skills