Jede Unklarheit in deiner Spezifikation
ist ein Token, den dein Agent verbrennt.

SpecScore ist ein offenes, lintbares Dateiformat für Spezifikationen, geschrieben in Markdown und YAML (YAML Ain't Markup Language) – wie JSON (JavaScript Object Notation) für Daten – mit einer Befehlszeilenschnittstelle (CLI), die deine Agenten aufrufen, um sie abzufragen und zu bearbeiten, wie jq für JSON.

Erst eine Rückfrage mitten im Build. Dann ein Fix nach dem Release. Dann der Kontext, den du immer wieder neu erklären musst.

Ein Format für die Spezifikationen, die du bereits schreibst.

SpecScore ist ein Markdown + YAML-Format für Features, Anforderungen und Akzeptanzkriterien. Es definiert eine Struktur, die dein Team und deine KI-Agenten gleichermaßen verstehen – und es sind einfach Dateien in deinem Repository.

Ein SpecScore-Projekt besteht aus drei Arten von Artefakten entlang eines Lebenszyklus: Eine Idea erfasst eine grobe Richtung; eine Feature-Spezifikation friert das vereinbarte Verhalten ein; ein Planzerlegt das Feature in geordnete Aufgaben, von denen jede die Akzeptanzkriterien nennt, die sie erfüllt.

Warum es für deinen Agenten wichtig ist. Weil die Struktur maschinenlesbar ist, können KI-Agenten die Spezifikation über die CLI abfragen, anstatt jede Datei einzulesen. Frage „Woran sollte ich als Nächstes arbeiten?“und die CLI liefert offene Features und ungeklärte Fragen. Die gleiche Form, die dein Team prüft; deutlich weniger Kontext, den der Agent laden muss.

Feature → Requirements → Acceptance Criteria → Scenarios.
BEISPIELideas/apply-discount.md
# Idea: Discount codes at checkout

**Status:** Approved
**Date:** 2026-05-19
**Owner:** cart-team
**Promotes To:** features/apply-discount

## Problem Statement

How might we let returning customers redeem a
single promo code at checkout without breaking
the existing cart math or the site-wide promotion
engine?

## Recommended Direction

A registered user can apply **one** valid code per cart.
Codes are time-bounded and replaceable. Stacking
with site-wide promotions follows a deterministic
tiebreak rule (higher discount wins; site-wide
wins on tie).
BEISPIELfeatures/checkout/apply-discount.md
---
status: approved
owners: [cart-team]
---

# Feature: Apply Discount

A registered user can apply one valid discount code to their cart at checkout.

## Requirements

### R1 — Single-code limit

- **AC-1** The cart accepts at most one discount code at a time.
- **AC-2** Applying a second code replaces the first, with a visible confirmation.
- **AC-3** Removing the code restores the original cart total.

### R2 — Code validity

- **AC-1** A code is valid only if `valid_from` ≤ now ≤ `valid_until`.
- **AC-2** Invalid codes show a specific error message.

### R3 — Discount application

- **AC-1** Percentage discounts apply to subtotal, not shipping.
- **AC-2** Discount totals round down to the nearest cent.
- **AC-3** Stacking with site-wide promotions follows the higher-of rule.

## Scenario: Apply a valid percent-off code

**GIVEN** a cart with subtotal $50.00 and shipping $10.00
**WHEN** the user applies code `SAVE20` (20% off)
**THEN** the cart shows subtotal $40.00, shipping $10.00, total $50.00
BEISPIELplans/apply-discount/README.md
# Plan: Apply Discount

**Status:** approved
**Features:**
  - [apply-discount](../../features/apply-discount.md)
**Author:** cart-team
**Effort:** M
**Impact:** high

## Context

The apply-discount Feature is Approved. This plan
breaks it into ordered tasks; each task cites the
acceptance criteria it satisfies.

## Tasks

### T1 — Accept a `code` field on the cart
Cites: R1.AC-1, R1.AC-2, R1.AC-3

### T2 — Validate code time-window
Cites: R2.AC-1, R2.AC-2

### T3 — Apply percentage to subtotal, round down
Cites: R3.AC-1, R3.AC-2

### T4 — Higher-of tiebreak vs site-wide promo
Cites: R3.AC-3

### T5 — Confirmation toast on apply / replace
Cites: R1.AC-2

Spezifikationen sind hierarchisch. Dein Spezifikationsbaum auch.

Eine flache Liste mit fünfzig Features verkommt zur Müllhalde. SpecScore hält den Baum navigierbar: Eltern definieren den Umfang, Kinder die Details, und die Verzeichnisstruktur spiegelt die Produktarchitektur wider, über die dein Team ohnehin nachdenkt.

Offene Fragen steigen nach oben. Unbeantwortete Fragen auf jeder Tiefe erscheinen im Index jedes übergeordneten Elements. Du siehst direkt an der Spitze des Baums, was ein Release blockiert, ohne graben zu müssen.

Die meisten Spezifikationswerkzeuge gehen davon aus, dass eine flache Liste ausreicht. Und das tut sie auch – bis sie es nicht mehr tut. SpecScore ist für den Moment gebaut, in dem die Frage „Wo gehört dieses Feature hin?“ entscheidend wird.

Live in specscore-cli ansehen →

AUSspecscore-cli/spec/features/cli/
spec/features/cli/
├── agent/
│   └── setup/
├── feature/
│   ├── change-status/
│   ├── deps/
│   ├── info/
│   ├── list/
│   ├── new/
│   ├── refs/
│   └── tree/
├── idea/
│   ├── change-status/
│   ├── new/
│   └── relocate/
├── spec/
│   └── lint/
│       ├── issue-rules/     ← Sub-Sub-Feature
│       └── plan-rules/
├── task/
│   ├── info/
│   ├── list/
│   └── new/
└── … 10 weitere Features der obersten Ebene

Was ohne sie schiefgeht.

  • Spezifikationen driften ab.

    Die Spezifikation im Dokument, der Thread in Slack und der Code im PR weichen wochenlang stillschweigend voneinander ab. Niemand weiß, welche Version des Gesprächs kanonisch ist.

    Die Lösung

    Eine einzige kanonische Spezifikation im Repository, versioniert zusammen mit dem Code. specscore lint läuft in der CI bei jedem Push; die Git-Historie ist der Prüfpfad. Spezifikation, Thread und PR können nicht unbemerkt voneinander abweichen – sie teilen sich dieselbe geprüfte Datei.

  • AC bleiben vage.

    „Fehler elegant behandeln“ sollte eigentlich heißen:„Toast anzeigen und zurückrollen.“ Oder war es„loggen und wiederholen“? Der Agent muss raten.

    Die Lösung

    Der Linter fängt mehrdeutige Kriterien ab, bevor auch nur eine Zeile Code geschrieben wird. Das Verb fällt durch das Linting, weil ihm ein konkretes Objekt oder eine Bedingung fehlt. Die Warnung zu beheben zwingt dich aufzuschreiben, was „behandeln“tatsächlich bedeutet.

  • Agenten liefern das Falsche.

    Menschen interpolieren, fragen nach, klären auf. KI-Agenten nicht – sie implementieren das Muster, das in ihren Trainingsdaten am häufigsten vorkam. Der Code besteht das Review, weil er irgendetwas Sinnvolles tut. Nur eben nicht das, was du meintest.

    Die Lösung

    Strukturierte Eingabe. KI-Agenten parsen REQ-IDs, AC-IDs und GIVEN / WHEN / THEN-Szenarien deterministisch – es gibt nichts zu interpolieren. Jeder Plan muss die AC-IDs nennen, die jede Aufgabe erfüllt, sodass das Gebaute immer gegen das Spezifizierte überprüfbar bleibt.

  • Du zahlst doppelt für eine vage Spezifikation.

    Der Agent baut etwas anhand eines mehrdeutigen Briefings, du bemerkst den Fehler und promptest ihn erneut – auf vier verschiedene Arten. Jedes halbfertige Feature und jeder Neuversuch kostet Tokens. Je vager die Spezifikation, desto mehr Runden vergehen bis zum Ziel.

    Die Lösung

    Linte die Spezifikation, bevor der Agent startet.specscore lint weist vage Verben und fehlende Akzeptanzkriterien von vornherein ab, sodass der Agent ein konkretes Briefing einmal umsetzt, anstatt über mehrere Schleifen hinweg zu raten. Der günstigste Agenten-Durchlauf ist der, den du nicht wiederholen musst.

  • Agenten zahlen dafür, deine Spezifikationen neu zu lesen.

    Ein KI-Agent, der beantworten soll: „Was hängt von diesem Feature ab?“, liest das gesamte README des Features. Dann jeden übergeordneten Index. Dann geschwisterliche Features zur Sicherheit. Jede Abfrage ist ein neuer Parsing-Vorgang. Tokens verpuffen; die Latenz steigt; und die Rechnung steigt mit.

    Die Lösung

    Strukturierte Abfragen statt Datei-Lesen.specscore feature tree liefert die Hierarchie als YAML; feature deps durchläuft die transitive Abhängigkeitskette; feature info liefert Status, Owner und offene Fragen – jeweils in einem einzigen Aufruf. Der Agent navigiert den Graphen, nicht die Prosa.

  • Code vergisst seine Spezifikation.

    Sechs Monate später debuggst du eine Funktion und niemand erinnert sich mehr, welches Feature sie implementiert. Die Verknüpfung zwischen Code und Spezifikation lebte in jemandes Kopf – und diese Person ist längst weg. Der PR, der sie einführte, liegt tief im Archiv.

    Die Lösung

    Quellcode-Annotationen. Kommentare wie// specscore: features/checkout/apply-discount/R1.AC-2machen die Verknüpfung maschinenlesbar und überstehen jedes Refactoring. specscore code deps beantwortet„Welche Spezifikation implementiert diese Datei?“ in einem einzigen Aufruf; der Linter markiert Referenzen auf gelöschte Spezifikationen.

  • Statusänderungen laufen auseinander.

    Du änderst ein Feature in seinem README von Draftauf Approved, aber der übergeordnete features-index führt es weiterhin als Draft. Drei Wochen später liest ein Agent den Index und glaubt, es sei noch im Review. Der Status lebt an zwei Stellen – und sie widersprechen sich.

    Die Lösung

    specscore feature change-status schreibt das Status-Feld des Features um und synchronisiert die Zeile im features-index in einem atomaren Schritt neu – schlägt der Lint fehl, wird die Änderung rückgängig gemacht. Der Status existiert an einem einzigen kanonischen Ort; der Index ist eine daraus generierte Ansicht.

  • Spezifikationen vergessen, was sie nicht wissen.

    Eine Spezifikation liest sich, als sei alles geklärt – bis dir einfällt, dass die Frage „Und was ist mit Zeitzonen?“vor zwei Monaten in einem Slack-Thread unterging und nie im Dokument landete. Jetzt bist du mitten in der Implementierung und niemand kennt die Antwort.

    Die Lösung

    Jedes SpecScore-Feature hat einen PflichtabschnittOutstanding Questions. Der Linter lehnt Features ab, die ihn auslassen – leer ist in Ordnung ("None at this time."), aber fehlend nicht. Ungelöste Fragen stehen sichtbar im Dokument, sind per CLI abfragbar und können nicht vergessen werden.

Der einfachste Einstieg: SpecStudio Skills für KI-Agenten.

SpecStudio Skillsist ein Claude Code Plugin, das den SpecScore-Lebenszyklus in vier Slash-Befehle verwandelt. Einmal installieren, danach der Reihe nach ausführen – von der rohen Idee bis zum ausführbaren Plan.

$ /plugin marketplace add specscore/ai-marketplace
$ /plugin install specstudio@specscore
Claude CodeAutovervollständigung
> /specstudio:
   /specstudio:ideate     Eine rohe Idee in eine SpecScore Idea verfeinern
   /specstudio:specify    Eine freigegebene Idea in eine Feature-Spezifikation umwandeln
   /specstudio:plan       Ein Feature in einen Aufgabenplan zerlegen
   /specstudio:implement  Die nächste Aufgabe des Plans ausführen
Claude Code/ideate
> /ideate Lass uns überlegen, wie der Warenkorb für den Checkout aussehen sollte.
Claude Code/specify
> /specify Lass uns spec/ideas/checkout-basket.md spezifizieren
Claude Code/plan
> /plan spec/features/checkout/basket/README.md planen
Claude Code/implement
> /implement spec/plans/checkout-basket/README.md umsetzen

Kostenlos für jede Nutzung, auch kommerziell. Der Quellcode des Plugins liegt aufspecscore/specstudio-skills – unter MIT-Lizenz.

Prüfe deine Spezifikation in zwei Durchgängen.

Ein schneller, deterministischer Linter gefolgt von einem tieferen KI-Review – ausgeführt auf der Spezifikation, die du gerade gesehen hast. Zwei Durchgänge, zwei Arten von Gewissheit.

Linter ausführen.

deterministic

Das gleiche Ergebnis bei jedem Lauf. Kostenlos, blitzschnell, läuft bei jedem Commit.

Mit KI prüfen und bewerten.

non-deterministic

Liest nach Sinn und Logik, genau wie ein menschlicher Reviewer.

Das ist, was es nicht erkennt.

Ein Linter, der behauptet, alles zu finden, lügt. SpecScore ist ein mehrschichtiges System – ein deterministischer Linter, ein KI-Reviewer und dein eigenes Urteilsvermögen – und jede Schicht hat klare Grenzen. Wir haben sie alle aufgeschrieben: was der Linter erkennt, was die KI erkennt und was weiterhin in deiner Verantwortung liegt, weil kein Werkzeug das bisher leisten kann.

Was der Linter nicht erkennt →

Was drin steckt.

Das Format

Markdown + YAML. Funktioniert in jedem Editor, der Text öffnet. Keine neuen Tools erforderlich, um mit dem Schreiben zu beginnen.

Der Linter

Go-CLI. Validiert Struktur, Referenzen und Integrität. Beendet sich mit Exit-Code ungleich null bei Fehlern – funktioniert in deinem Terminal und in deiner CI.

Bring deine eigenen Werkzeuge mit.

SpecScore besteht nur aus Dateien in deinem Repository. Kein SaaS-Abo, kein Pflicht-Orchestrator. Nutze es mit Linear, Jira, GitHub Projects, reinem Markdown in einem Ordner oder ganz ohne Projektmanagement-Tool. Dem Format und dem Linter ist es egal, wo deine Tickets liegen.

Lieber die CLI?

Keine KI-Agenten im Einsatz, oder du brauchst Spezifikationsprüfung in deiner CI-Pipeline? Dafür gibt es eine CLI. Installiert in 60 Sekunden – kein Account, keine Telemetrie, funktioniert in jedem Markdown-Spezifikationsordner.

$ curl -fsSL https://specscore.md/install/get-cli | sh

Prüfe die Beispielspezifikation, die mit der Binärdatei ausgeliefert wird:

$ specscore lint examples/checkout/apply-discount.md

Sieh dir die Ausgabe an:

  examples/checkout/apply-discount.md
    ✓ R1  has acceptance criteria
    ✓ R2  has acceptance criteria
    ✗ R3  no acceptance criteria
    ✗ link     "Related Feature: discount-tiers" not found
    ✗ section  "Open Questions" missing

  3 problems   exit 1

Lies die vollständige DokumentationAuf GitHub beitragen

Auf SpecScore aufgebaut.

  • DataTug

    Datenbankschemata erkunden, Abfragen erstellen und ausführen sowie Ergebnisse verstehen mit DataTug. SpecScore steuert die Anforderungen und Akzeptanzkriterien.

    datatug.app Die Tools dahinter
  • MeaningGraph

    Offene Registry für Datenmodelle und semantische Definitionen – in eigenen Git-Repositories gepflegt und mit Modellen und Code verknüpft.

    meaninggraph.io Registry durchsuchen
  • Codegrapher

    Code-Graph-Engine für schnelle Code-Exploration und bidirektionale Verknüpfung zwischen Spezifikation und Code.

    codegrapher.dev
  • DALgo

    Go-Datenzugriffsschicht, spezifiziert mit SpecScore.

    dal-go.github.io
  • inGitDB

    Git-gestützte versionierte Datenbank, spezifiziert mit SpecScore.

    ingitdb.com
  • Rehearse

    Akzeptanz-Nachweisschicht – führt die Akzeptanzkriterien einer Spezifikation tatsächlich aus, mit wiederverwendbaren Prüfungen und ohne Glue-Code.

    rehearse.ink
  • SpecScore Studio

    Web-Oberfläche zum Anzeigen und Bearbeiten von SpecScore-Spezifikationen.

    specscore.studio

Hast du Fragen?

Hier sind die Fragen, die immer wieder gestellt werden. Jede führt zur vollständigen Antwort auf der FAQ-Seite.

Wie unterscheidet sich SpecScore von spec-kit?

spec-kit ist eine Methodik; SpecScore ist ein Speicherformat für die Spezifikationen, die du schreibst, plus eine CLI. Sie ergänzen sich – eine spec-kit-Erweiterung, die SpecScore schreibt, ist in Arbeit.

Vollständige Antwort →
Wie unterscheiden sich die SpecStudio Skills von Superpowers und agent-skills?

Ähnlich im Ansatz – alle drei führen KI-Agenten durch ideate → specify → plan → implement. SpecStudio Skills schreibt Artefakte im SpecScore-Format und nutzt die CLI specscore für Abfragen und Statusänderungen; die anderen lesen und schreiben Dateien direkt. Wähle SpecStudio, wenn der Token-Verbrauch zählt.

Vollständige Antwort →
Warum eine CLI – reicht es nicht, Skills zu installieren?

Skills können nicht verlässlich referenzielle Integrität garantieren, gefilterte Abfragen zurückgeben, ohne jede Datei zu lesen, oder das richtige Statusfeld im richtigen Moment ändern. Die CLI erledigt jedes dieser Dinge in einem einzigen Aufruf. Skills lesen jede Datei ein, um dasselbe zu tun.

Vollständige Antwort →
Warum „SpecScore“ – was wird bewertet?

Zwei Lesarten, beide beabsichtigt. Partitur – eine strukturierte Gesamtkomposition aus Anforderungen. Und eine buchstäbliche Qualitätsbewertung – der Linter der CLI liefert die deterministische Prüfung, und der Skill/score vergibt eine KI-bewertete Note von A bis F für den Reifegrad des Artefakts.

Vollständige Antwort →
Wo sind die Zahlen zur Token-Ersparnis?

Ein gemessener Direktvergleich ist vor dem Veröffentlichungsbeitrag in Arbeit. Strukturell gesehen: Die CLI liefert eine kurze, strukturierte Liste; ein Agent ohne CLI liest stattdessen N Dokumente in seinen Kontext.

Vollständige Antwort →
Unter welcher Lizenz steht SpecScore?

Spezifikation und Dokumentation im öffentlichen Repository specscore/specscore stehen unter CC BY 4.0. Die Referenz-Befehlszeilenschnittstelle (CLI) in specscore/specscore-cli steht unter Apache-2.0.

Vollständige Antwort →
Braucht SpecScore ein bestimmtes KI-Werkzeug?

Nein. Spezifikationen sind Textdateien im Repository. Die CLI ist ein lokales Programm. Die AI Skills auf dieser Website kapseln diese CLI für Agenten, die Skills ausführen können. Das Format verlangt keinen einzelnen Anbieter.

Vollständige Antwort →
Was ist spezifikationsgetriebene Entwicklung (SDD)?

Spezifikationsgetriebene Entwicklung (SDD) heißt: zuerst eine testbare Spezifikation schreiben — Anforderungen und Akzeptanzkriterien — und das Ergebnis danach dagegen prüfen. SpecScore ist ein Dateiformat für diese Spezifikationen.

Vollständige Antwort →

Definiere Erfolg. Schaffe dann Platz dafür.

SpecScore legt fest, wann dein Projekt fertig ist. Ein Wochenziel hilft dir, den nächsten Schritt zu wählen. Verbinde beides mit einer kurzen Prüfung der Ergebnisse.

Spezifikationen, die den Lint bestehen.

oder lies die Dokumentation

★ Gib uns einen Stern auf GitHub — hilft anderen, das Projekt zu finden.GitHub stars

Have an idea how to improve this page?