CommunityCodierung & Entwicklunggithub.com

tderoussel/ship-gate

Verifikations-Gate für einen Next.js-auf-Vercel + Supabase + GitHub Actions Stack, das ausgeführt wird, bevor behauptet wird, etwas sei ausgeliefert, deployed, live, gemerged, bestanden oder erledigt. Verwende es, bevor du sagst, dass eine Änderung in Produktion ist, bevor du einen PR mergeest, bevor du CI als grün meldest und bevor du einen Status in ein Dokument schreibst – auch wenn der Benutzer nicht nach einer Verifikation fragt. Auslösephrasen sind „is it live“, „did it deploy“, „ship it“, „merge it“, „is CI green“, „confirm prod“, „did that work“. Enthält Fallen, bei denen die offensichtliche Prüfung ein falsches Positiv zurückgibt.

Was ist ship-gate?

Die Fähigkeit „Ship Gate“ ist ein strenges Verifikations-Gate, das entwickelt wurde, um falsche Behauptungen über den Zustand einer Anwendung zu verhindern, die auf einem Next.js-Stack basiert, der auf Vercel deployed wird, Supabase als Datenbank nutzt und GitHub Actions für CI/CD verwendet. Ihre Kernphilosophie ist, dass eine Behauptung über die Produktion eine Abfrage gegen die Produktion erfordert – ein bestandener Test, ein gemergter PR oder ein grünes Deployment sind nicht gleichbedeutend mit einer Live-Schaltung. Die Fähigkeit umfasst Überprüfungen für Deployments (z. B. Überprüfung des tatsächlichen deployed SHA, Sicherstellung, dass Edge/Serverless-Funktionen separat deployed werden), CI (Vermeidung von Piped-Befehlen, Erkennung von nie ausgeführten Jobs), Type- und Lint-Gates (Heap-Größen, abgedeckte Verzeichnisse, Bereinigung von Arbeitsverzeichnissen), Datenbankoperationen (niemals Schemaänderungen gegen die Produktion, Überprüfung von Stored Procedures mit der echten Datenbank) und Umgebungsfallen (Zeitzonen, Git-Identität, Umgebungsvariablen). Sie gibt klare Ergebnisse als BESTANDEN (mit Nachweis) oder NICHT GEPRÜFT (mit Begründung) aus. Die Fähigkeit ist plattformunabhängig im Kern, aber speziell für den erwähnten Stack optimiert.

Funktioniert mit~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/tderoussel/agent-skills/tree/main/skills/ship-gate

Installed? Explore more Codierung & Entwicklung skills: steipete/bluebubbles, steipete/eightctl, steipete/blucli · View all 6 →

In Ihrer bevorzugten KI fragen

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

Dokumentation

Ship Gate

Jede Regel hier existiert, weil die offensichtliche Prüfung einmal ein falsches Positiv zurückgegeben hat. Führe das Gate vor der Behauptung aus, nicht danach.

Passe die Einzelheiten an deinen Stack an; die Form – Was würde diese Behauptung falsch machen? – ist der übertragbare Teil.

Die Behauptungsregel

Eine Behauptung über die Produktion erfordert eine Abfrage gegen die Produktion.

Ein bestandener Test ist nicht die Produktion. Ein gemergter PR ist nicht die Produktion. Ein grünes Deployment ist nicht die Produktion. Jede davon ist eine Behauptung über ein anderes System als das, über das du eine Aussage triffst.

Wenn kein Mensch das Ergebnis überprüft hat, ist es nicht „verifiziert“ – sag stattdessen, was du tatsächlich überprüft hast.

Deployment-Verifikation

  • Wisse, was tatsächlich ein Deployment auslöst. Bei einem git-integrierten Host ist es der Push, nicht ein CLI-Aufruf. Ein Deployment über die CLI, wenn das Projekt per Push deployed, erzeugt einen Build, den die Benutzer nicht bekommen.
  • Überprüfe das Konto, dem das Projekt gehört. Ein lokal eingeloggtes CLI kann als persönliches Konto authentifiziert sein, dem das Produktionsprojekt nicht gehört – dann gelingen alle Befehle gegen das falsche Ziel, stillschweigend.
  • Verifiziere mit dem Commit-Status gegen den deployed SHA, nicht mit einem Dashboard-Blick.
  • Bestätige das Deployment, das aktuelle Produktion ist, nicht nur eines, das READY ist. Mehrere können gleichzeitig bereit sein.
  • Edge-/Serverless-Funktionen werden separat von der App deployed. Ein gemergter PR deployed keine Edge-Funktion; überprüfe ihre Version explizit.
  • Nur-Client-Änderungen benötigen möglicherweise kein Funktionsdeployment – warte nicht auf eines, das nie kommt.
  • Rufe das Live-Manifest erneut ab, bevor du eine Version bestätigst. Parallele Arbeit erhöht Versionen unter dir.

CI-Verifikation

  • Prüfe auf jeden erforderlichen Kontext, nicht auf den ersten grünen.
  • Prüfe niemals einen Piped-Befehl. some-check | tail meldet den Exit-Code von tail und maskiert den eigentlichen Fehler. In Shells ohne PIPESTATUS (zsh unterscheidet sich hier von bash) ist das leicht falsch zu machen – überprüfe den eigenen Status des Befehls.
  • steps: 0 bedeutet, dass der Job nie gelaufen ist, nicht dass er bestanden hat. Eine Checks-API kann eine Schlussfolgerung für einen Job melden, der keine Arbeit erledigt hat.
  • Ein verdächtig schneller Fehler ohne Schritte ist normalerweise ein Abrechnungs- oder Berechtigungsproblem, kein YAML-Problem.
  • Das erneute Ausführen nur fehlgeschlagener Jobs spielt einen veralteten Snapshot des Branches ab. Aktualisiere zuerst den Branch, dann führe erneut aus.
  • Eine Checkliste lässt Jobs aus, die nie erstellt wurden. Das Fehlen eines Fehlers ist kein Beweis für ein Bestehen.
  • gh pr create erfordert ein explizites --base. Verkettete Heredocs darum können stillschweigend fehlschlagen.

Type- und Lint-Gates

  • Große TypeScript-Projekte benötigen möglicherweise einen erhöhten Node-Heap; ohne ihn stirbt tsc auf eine Weise, die wie ein Codefehler aussieht.
  • Wisse, welche Verzeichnisse dein Typechecker und Linter tatsächlich abdecken. Edge-Funktionsverzeichnisse sind häufig von beiden ausgeschlossen. Wenn sie mit einer anderen Laufzeitumgebung laufen, überprüfe sie mit dem eigenen Checker dieser Laufzeit – ein Test-Job ist kein Type-Gate.
  • Baue in Worktrees oder sauberen Checkouts, nicht in einem Arbeitsverzeichnis mit nicht committedem Drift.

Datenbank

  • Schiebe Schema niemals beiläufig oder führe Migrationen gegen die Produktion durch. Wende Schema über den überprüften Pfad an, den das Projekt gewählt hat, einmal.
  • Rufe neue Stored Procedures gegen die echte Datenbank auf, bevor du ihnen glaubst. Mocks verbergen Laufzeitfehler, die nur mit echten Typen und echter Ambiguität auftreten.
  • Wenn die Testsuite die Datenbank global mocked, beweist ein bestandener Unit-Test nichts über die Datenbank.
  • Führe niemals Compare-and-Set auf einer Trigger-verwalteten Spalte durch – der Trigger ändert sie unter dem Schreibvorgang.
  • Messe die Auswirkung einer Änderung gegen Produktionsdaten, bevor du mergeest. Ein Filter, der gegen einen lokalen Seed schmal aussieht, kann einen sehr anderen Anteil echter Zeilen treffen.

Umgebungsfallen

  • Gehe niemals von der Zeitzone der Maschine aus – führe date aus. Datumsabhängige Tests schlagen am Offset fehl, und der Fehler sieht wie ein Codefehler aus.
  • Eine nicht gesetzte Git-Identität kann Deployments blockieren und als unzusammenhängender Netzwerkfehler erscheinen.
  • Setze Host-Umgebungsvariablen aus einer Datei, nicht durch Inline-Zuweisung; Shells und CLIs können abschließende Zeilenumbrüche einbetten, die den Wert unsichtbar beschädigen.
  • Der Erfolg eines geplanten Jobs ist nicht der Erfolg des Job-Effekts: Ein Runner, der succeeded meldet, bedeutet, dass der Aufruf zurückgekehrt ist, nicht dass die Arbeit stattgefunden hat. Verifiziere den Effekt.

Ausgabe

Gib jedes Gate als BESTANDEN (Nachweis) oder NICHT GEPRÜFT (Warum) aus.

Gib niemals vor, dass ein Gate ausgeführt wurde, wenn es das nicht wurde. Wenn ein Gate fehlschlägt oder nicht geprüft ist, sage klar, dass die Änderung nicht verifiziert ist – die Behauptung zurückzuhalten ist korrekt.

Individual skills in this repo

This repo contains 8 individual skills — each has its own dedicated page.

tderoussel/codebase-audit

Runs a ranked, evidence-backed audit of a product, codebase, or subsystem, ending in a verify list that separates proven findings from inferred ones. Use when the user asks for an audit, a gap analysis, a deep read, a bug hunt, a readiness check, a re-audit, a state reconciliation, or asks what they are not seeing. Trigger phrases include "audit", "gap analysis", "what am I missing", "deep audit", "readiness", "bug hunt", "review the whole thing". Produces findings and a verify list; does not fix.

tderoussel/competitive-teardown

Researches a competing product against your own and produces a ranked build-or-ignore verdict, plus optional comparison-page copy. Use when the user names a competitor or asks how their product stacks up against one. Trigger phrases include "vs us", "competitor", "what does X have", "should we copy", "competitive gap", "teardown", "are we behind". Produces a ranked verdict with effort estimates and an explicit not-worth-copying list.

tderoussel/decision-council

Run a structured multi-perspective review of a decision instead of getting one agreeable answer. Use when the user says run a council, get me perspectives on this, should I do X, stress-test this decision, or is this a good idea.

tderoussel/fleet-brief

Authors a workstream brief for dispatching multiple parallel build agents across one codebase, with per-lane file ownership, shared-ground warnings, and a derived DO-NOT list. Use whenever work is about to be split across concurrent agents, workers, lanes, or waves — even if the user does not say "write a brief". Trigger phrases include "fan out", "parallel agents", "orchestrate this", "split into lanes", "workstreams", "run these in parallel", "review-gated build". Produces the brief; does not dispatch.

tderoussel/inbox-triage

Triage an email inbox — sort what needs a reply, draft the replies, flag what needs a decision, and surface what can be ignored or unsubscribed. Use when the user says triage my inbox, do my email, what's in my inbox, or clean up my email.

tderoussel/overnight-build

Composes an autonomous unattended Claude Code build prompt that survives usage-limit resets via BUILD_LOG.md checkpointing, plus the launcher that restarts it. Use when the user asks for an overnight build, an autonomous build, a build to run while they sleep, an unattended or unsupervised session, or any long build they will not be monitoring. Trigger phrases include "overnight build", "run overnight", "build while I sleep", "autonomous build", "let it run", "unattended". Produces a single copyable prompt; does not run the build.

tderoussel/session-log

Write a durable record of a work session — what was built, root-caused, or shipped — into the project's notes. Use when the user says log this session, write a session log, record this, or when a substantial piece of work has just finished and needs to be handed off to a future session.

tderoussel/vault-doctor

Audits and repairs an Obsidian vault's structural health — broken [[wikilinks]], ambiguous duplicate filenames, missing or malformed frontmatter, stale status markers, and hub notes whose state sections have gone cold. Use when the user asks about vault health, broken links, vault cleanup, dead links, orphan notes, tag consistency, or says the vault feels messy or out of date. Trigger phrases include "vault health", "broken links", "clean up the vault", "audit the vault", "is the vault current". Read-only by default; every repair is proposed before it is made.

Verwandte Skills