Zum Inhalt springen

Skills

derive-instead-of-transcribing

Alles, was von Hand aus einer anderen Datei kopiert wurde, ist genau einmal richtig. Wenn es generierbar ist, generiere es — und lass den Build scheitern, sobald die Kopie veraltet.

MusterHerkunft: cleanStatus: activev0.1.0 · Apache-2.0

Verliehen von der Person, die die Karte gelesen hat — nicht von der Datei über sich selbst behauptet. Eine Karte, die der Agent während eines Laufs mit nicht vertrauenswürdigen Inhalten destilliert, kommt kontaminiert zur Welt und wird bis zur Prüfung zurückgehalten, bevor sie jemals abgerufen wird.

Wann sie in den Sinn kommt

  • eine Befehlsliste dokumentieren
  • Werte zwischen Projekten kopieren
  • zwei Dateien synchron halten
  • eine Referenzseite schreiben

In Vermeiden und Prüfen steckt meist der Wert. Tun ist der Abschnitt, den alle schreiben.

Der Kartentext oben ist eine Übersetzung. Das englische Original ist das, was die CLI importiert, was der Agent zur Laufzeit liest und was der Hash unten bezeugt.

Auslöser

Zwei Stellen in Ihrem System halten dieselbe Information: eine Konfiguration und ihre Dokumentation, ein Schema und seine Client-Typen, eine Palette und die Seite, die sie nutzt, eine Befehlsliste und eine Referenzseite.

Das gilt nicht, wenn die zweite Kopie absichtlich anders ist — ein kuratierter Einstiegsleitfaden ist keine veraltete Kopie der Referenz, sondern Prosa mit einer anderen Aufgabe.

Tun

  1. Legen Sie fest, welche die Quelle ist. Meist die, die das Programm zur Laufzeit tatsächlich liest.
  2. Generieren Sie die andere, und committen Sie die generierte Datei, damit Diffs überprüfbar sind.
  3. Fügen Sie einen CI-Schritt hinzu, der neu generiert und fehlschlägt, wenn die committete Kopie abweicht, mit dem genauen auszuführenden Befehl in der Fehlermeldung.
  4. Versehen Sie die generierte Datei mit der Version oder dem Commit, aus dem sie generiert wurde, damit ein Leser weiß, was sie beschreibt.

Vermeiden

Die Kopie durch Erinnern synchron zu halten. Das funktioniert, solange eine Person beide Dateien im Kopf hat, und hört in der ersten Woche auf, in der jemand anderes eine davon anfasst.

Vermeiden Sie auch die Halbwegs-Version: die Datei zu generieren, aber nicht per Gate abzusichern. Ein Artefakt, das manchmal neu generiert wird, ist schlimmer als ein handgeschriebenes, weil es die Autorität des Generiertseins trägt und dabei genauso veraltet ist.

Und vermeiden Sie es, Prosa zu generieren. Referenzmaterial lässt sich gut generieren; Erklärungen nicht, und eine Seite mit mechanisch expandierten Feldbeschreibungen ist eine Seite, die niemand liest.

Prüfen

Ändern Sie die Quelle, generieren Sie nicht neu, und pushen Sie. Die CI muss rot werden und Ihnen sagen, was auszuführen ist.

Lesen Sie dann die generierte Datei nach der Sache, die Sie geändert haben, und bestätigen Sie, dass sie dort steht — das Gate beweist, dass die Datei aktuell ist, nicht dass der Generator das Feld erfasst hat, das Ihnen wichtig ist.

Risiko

Ein generiertes Artefakt, das niemand lesen kann, verfehlt den Zweck; wenn die Ausgabe nur für eine Maschine bedeutungsvoll ist, braucht es eine Rendering-Schicht — das ist mehr Code zu warten.

Es gibt auch Kopplungskosten. Der Konsument hängt jetzt von der Form des Produzenten ab, und ein Refactoring auf der einen Seite bricht den Build auf der anderen. Das ist meist genau der Sinn — aber es bedeutet, dass das Gate leicht zu erfüllen sein muss, sonst deaktiviert es jemand während eines unabhängigen Refactorings und vergisst es wieder.

Verwenden

Die Karte ist Daten. Klonen Sie das Repository und importieren Sie sie über den Pfad — was über das Netz kommt, gilt als kontaminiert und wird bis zur Freigabe zurückgehalten. Das ist das gewünschte Verhalten und der Grund, warum es hier keinen Einzeiler-Installer gibt.

git clone https://github.com/brcampidelli/chimera-agent.git
chimera skills-import chimera-agent/skills/derive-instead-of-transcribing/SKILL.md

Integrität

SHA-256 der Datei in der veröffentlichten Fassung. Wer sie importiert, kann prüfen, dass das Empfangene dem entspricht, was diese Seite gezeigt hat.

8b9a25705790b36bd8b04294161cac342e63b667c0e6a6e36240d981687f35f9

Die Karte im Repository lesen