Ogni ambiguità nella tua specifica
è un token che il tuo agente brucia.

SpecScore è un formato di file aperto e verificabile con un linter per le specifiche, scritto in Markdown e YAML (YAML Ain't Markup Language) — come JSON (JavaScript Object Notation) per i dati — con un'interfaccia a riga di comando (CLI) che i tuoi agenti invocano per interrogarle e modificarle, come jq per JSON.

Poi una domanda di chiarimento a metà sviluppo. Poi una correzione dopo il rilascio. Poi il contesto che continui a rispiegare.

Un formato per le specifiche che già scrivi.

SpecScore è un formato Markdown + YAML per feature, requisiti e criteri di accettazione. Definisce una struttura che il tuo team e i tuoi agenti IA capiscono entrambi — ed è semplicemente composto da file nel tuo repository.

Un progetto SpecScore è formato da tre tipi di artefatti lungo un ciclo di vita: un'Idea cattura una direzione abbozzata; una specifica di Feature congela il comportamento concordato; un Plan scompone la feature in task ordinati, ciascuno dei quali cita i criteri di accettazione che soddisfa.

Perché è importante per il tuo agente. Poiché la struttura è leggibile dalla macchina, gli agenti IA possono interrogare la specifica tramite la CLI invece di leggere ogni singolo file. Chiedi «su cosa dovrei lavorare adesso?» e la CLI restituisce le Feature aperte e le domande irrisolte. La stessa forma che il tuo team revisiona; molto meno contesto che l'agente deve caricare.

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

**Status:** approved
**Promotes To:** features/checkout/apply-discount.md
**Author:** cart-team

## Why

Checkout drop-off is high at the payment step; users
leave to search for coupons and never return. Let them
paste codes directly in the cart before starting checkout.

## Success Criteria

- Users enter promo codes without leaving the cart
- Invalid codes fail fast with actionable copy
- Stacking rules are clear (only one code per order)

## Outstanding Questions

- What happens if a cart's subtotal drops below the
  code's minimum spend after applying?
- Do we support percentage and flat discounts in v1?
ESEMPIOfeatures/checkout/apply-discount.md
---
title: Apply Discount Code at Checkout
status: approved
created: 2026-04-12
promoted_from: ideas/apply-discount.md
---

# Context

Shoppers with a valid coupon code want to apply it
before payment so they can see the reduced total.

# Requirements

## R1 — Code validation
Accept coupon codes up to 16 alphanumeric characters.

- AC-1: Given a valid code, when applied,
  then subtotal decreases by the code's value.
- AC-2: Given an expired code, when applied,
  then show error "This code has expired".
- AC-3: Given an empty input, the apply button
  remains disabled.

## R2 — Single-use enforcement
Enforce one promo code per cart. Applying a second
code replaces the first after confirmation.

- AC-1: Given a cart with an active code, when a
  second code is applied, then prompt to replace.

# Outstanding Questions

None at this time.
ESEMPIOplans/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

Le specifiche sono gerarchiche. Anche il tuo albero delle specifiche lo è.

Una lista piatta con cinquanta Feature diventa un disastro. SpecScore mantiene l'albero navigabile: i genitori governano l'ambito, i figli governano il dettaglio, e la struttura delle directory rispecchia la forma del prodotto su cui il tuo team già ragiona.

Le domande aperte risalgono l'albero. Le domande irrisolte a qualsiasi livello di profondità emergono nell'indice di ogni genitore. Vedi cosa blocca un rilascio dalla cima dell'albero, senza dover scavare per trovarlo.

La maggior parte degli strumenti per specifiche presuppone che un elenco piatto funzioni. Funziona — finché non funziona più. SpecScore è progettato per il momento in cui «dove vive questa Feature?» inizia a contare.

Guardalo dal vivo in specscore-cli →

DAspecscore-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/     ← sotto-sotto-Feature
│       └── plan-rules/
├── task/
│   ├── info/
│   ├── list/
│   └── new/
└── … altre 10 Feature di livello superiore

Cosa si rompe quando non c'è.

  • Le specifiche si disallineano.

    La specifica nel documento, la discussione su Slack e il codice nella PR divergono silenziosamente per settimane. Nessuno sa quale versione della conversazione sia quella canonica.

    La soluzione

    Un'unica specifica canonica, nel repository, versionata insieme al codice. specscore lint viene eseguito in CI a ogni push; la cronologia Git è la traccia di audit. La specifica, la discussione e la PR non possono divergere in silenzio — condividono lo stesso file sotto revisione.

  • I criteri di accettazione restano vaghi.

    "Gestisce gli errori con eleganza" doveva significare"mostra un toast e fai il rollback." O era"registra nei log e riprova?" L'agente deve tirare a indovinare.

    La soluzione

    Il linter individua i criteri ambigui prima ancora che venga scritta una riga di codice. Il verbo fallisce il lint perché privo di oggetto o condizione concreta. Correggere l'avviso ti costringe a specificare cosa significa davvero "gestisce".

  • Gli agenti rilasciano la cosa sbagliata.

    Le persone deducono, chiedono, chiariscono. Gli agenti IA no — implementano il pattern più comune presente nei loro dati di addestramento. Il codice supera la revisione perché faqualcosa di sensato. Solo che non è ciò che intendevi.

    La soluzione

    Input strutturato. Gli agenti IA analizzano gli ID di REQ, gli ID di AC e gli scenariGIVEN / WHEN / THENin modo deterministico — non c'è nulla da dedurre. Ogni task del Plan deve citare gli ID degli AC che soddisfa, in modo che ciò che viene costruito sia sempre verificabile rispetto a quanto specificato.

  • Paghi due volte per una specifica ambigua.

    L'agente costruisce qualcosa a partire da un brief ambiguo, vedi che è sbagliato e glielo richiedi — in quattro modi diversi. Ogni funzione abbozzata e ogni tentativo vengono fatturati in token. Più la specifica è vaga, più round servono per azzeccarla.

    La soluzione

    Esegui il lint della specifica prima che l'agente entri in azione.specscore lint rifiuta fin dall'inizio i verbi vaghi e i criteri di accettazione mancanti, così l'agente implementa un brief concreto una volta sola anziché procedere a tentativi. L'esecuzione più economica è quella che non devi ripetere.

  • Gli agenti pagano per rileggere le tue specifiche.

    Un agente IA che risponde a "cosa dipende da questa feature?" legge l'intero README della feature. Poi ogni indice genitore. Poi le feature correlate — per ogni chiarimento a metà sviluppo. Migliaia di token solo per orientarsi prima di scrivere codice.

    La soluzione

    Interrogazioni tramite CLI. specscore feature deps restituisce solo il grafico delle dipendenze; specscore feature info restituisce solo l'interfaccia. L'agente carica solo le righe necessarie per rispondere alla domanda, anziché inglobare interi file di testo nel proprio contesto.

  • Il codice dimentica la sua specifica.

    Sei mesi dopo, qualcuno refattorizza la funzione di sconto e si chiede perché esista quel branch a tre condizioni. Nessun commento la collega alla specifica; il ticket originale è perso in uno strumento di tracciamento chiuso.

    La soluzione

    Annotazioni nel codice sorgente. Commenti come// specscore: features/checkout/apply-discount/R1.AC-2rendono il collegamento leggibile dalla macchina e resistente a ogni refactoring.specscore code deps risponde a"quale specifica implementa questo file?" in una sola chiamata; il linter segnala i riferimenti che puntano a specifiche cancellate.

  • I cambi di stato non si sincronizzano.

    Sposti una feature da Draft ad Approvednel suo README, ma il features-index genitore la elenca ancora come Draft. Tre settimane dopo, un agente che legge l'indice pensa che sia ancora provvisoria. Lo stato vive in due posti e sono in disaccordo.

    La soluzione

    specscore feature change-status riscrive il campo Status della feature e risincronizza la riga del features-index in un unico passaggio atomico — se il lint fallisce, la modifica viene annullata. Lo stato esiste in un unico punto canonico; l'indice è una vista generata di quello stato.

  • Le specifiche dimenticano ciò che non sanno.

    Una specifica sembra definitiva — finché non ti ricordi che la domanda "e come gestiamo i fusi orari?" è andata persa in un thread di Slack due mesi fa e non è mai finita nel documento. Ora sei in fase di implementazione e nessuno sa quale fosse la risposta.

    La soluzione

    Ogni feature di SpecScore ha una sezione obbligatoriaOutstanding Questions. Il linter rifiuta le feature che la omettono — lasciarla vuota va bene ("None at this time."), ma ometterla no. Le domande irrisolte sono visibili nel documento, interrogabili da CLI e impossibili da dimenticare.

Il modo più semplice per iniziare: SpecStudio Skills per agenti IA.

SpecStudio Skillsè un plugin per Claude Code che trasforma il ciclo di vita di SpecScore in quattro comandi slash. Lo installi una volta, poi li esegui in ordine — dall'idea grezza al piano eseguibile.

> /plugin marketplace add specscore/ai-marketplace
> /plugin install specstudio@specscore
Claude Codecompletamento automatico
> /specstudio:
   /specstudio:ideate     Perfeziona un'idea grezza in una SpecScore Idea
   /specstudio:specify    Trasforma un'Idea approvata in una specifica di Feature
   /specstudio:plan       Scomponi una Feature in un Plan di task
   /specstudio:implement  Esegui il prossimo task in un Plan
Claude Code/ideate
> /ideate Pensiamo a come dovrebbe apparire la schermata del carrello per il checkout.
Claude Code/specify
> /specify Definiamo spec/ideas/checkout-basket.md
Claude Code/plan
> /plan Implementa spec/features/checkout/basket/README.md
Claude Code/implement
> /implement Esegui spec/plans/checkout-basket/README.md

Gratuito per qualsiasi uso, anche commerciale. Il codice sorgente del plugin è suspecscore/specstudio-skills — licenza MIT.

Verifica la tua specifica in due passaggi.

Un linter deterministico e veloce, poi una revisione IA più approfondita — eseguiti sulla specifica che hai appena visto. Due passaggi, due tipi di certezza.

Esegui il linter.

deterministico

Stesso risultato a ogni esecuzione. Gratuito, veloce, viene eseguito a ogni commit.

Revisiona e valuta con l'IA.

non deterministico

Legge per comprenderne il significato, come un revisore umano.

Ecco cosa non rileverà.

Un linter che dichiara di rilevare tutto sta mentendo. SpecScore è un sistema a livelli — un linter deterministico, un revisore IA e il tuo giudizio — e ogni livello ha un limite reale. Li abbiamo messi tutti per iscritto: cosa individua il linter, cosa individua l'IA e cosa dipende ancora da te perché nessuno strumento può farlo per ora.

Cosa il linter non rileverà →

Cosa c'è nella scatola.

Il formato

Markdown + YAML. Funziona in qualsiasi editor di testo. Nessun nuovo strumento richiesto per iniziare a scrivere.

Il linter

CLI in Go. Valida struttura, riferimenti e completezza. Restituisce un codice di uscita diverso da zero in caso di errore — funziona nel tuo terminale e nella tua CI.

Usa gli strumenti che preferisci.

SpecScore è semplicemente un insieme di file nel tuo repository. Nessun SaaS a cui iscriversi. Nessun orchestratore richiesto. Usalo con Linear, Jira, GitHub Projects, semplice Markdown in una cartella o senza alcuno strumento di project management. Al formato e al linter non importa dove si trovino i tuoi ticket.

Preferisci la CLI?

Non usi agenti IA o hai bisogno di validare le specifiche nella tua pipeline di CI? C'è una CLI per questo. Si installa in 60 secondi — nessun account, nessuna telemetria, funziona con qualsiasi cartella di specifiche Markdown.

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

Esegui il lint della specifica di esempio inclusa con il binario:

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

Guarda l'output:

  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

Leggi la documentazione completaContribuisci su GitHub

Costruito su SpecScore.

  • DataTug

    Esplora schemi di database, crea ed esegui query e comprendi i risultati con DataTug. SpecScore guida i suoi requisiti e criteri di accettazione.

    datatug.app Gli strumenti alla base
  • MeaningGraph

    Registro aperto di modelli di dati e definizioni semantiche, mantenute nei propri repository Git e collegate a modelli e codice.

    meaninggraph.io Esplora il registro
  • Codegrapher

    Motore a grafo di codice per un'esplorazione rapida del codice e collegamento bidirezionale spec↔codice.

    codegrapher.dev
  • DALgo

    Livello di accesso ai dati in Go specificato con SpecScore.

    dal-go.github.io
  • inGitDB

    Database versionato basato su Git specificato con SpecScore.

    ingitdb.com
  • Rehearse

    Livello di evidenza di accettazione — esegue realmente i criteri di accettazione di una specifica, con controlli riutilizzabili e senza codice collante.

    rehearse.ink
  • SpecScore Studio

    Interfaccia web per visualizzare e modificare le specifiche SpecScore.

    specscore.studio

Hai domande?

Ecco le domande che ci vengono poste più spesso. Ciascuna rimanda alla risposta completa sulla pagina delle FAQ.

Come si differenzia SpecScore da spec-kit?

spec-kit è una metodologia; SpecScore è un formato di archiviazione per le specifiche che scrivi, più una CLI. Si integrano a vicenda — un'estensione per spec-kit che scrive in formato SpecScore è già in lavorazione.

Risposta completa →
In cosa si differenziano le SpecStudio Skills da Superpowers e agent-skills?

Simili nello spirito — tutte e tre guidano gli agenti IA attraverso ideate → specify → plan → implement. SpecStudio Skills scrive gli artefatti nel formato SpecScore e usa la CLI specscore per interrogazioni e cambi di stato; gli altri leggono e modificano i file direttamente. Scegli SpecStudio quando il consumo di token fa la differenza.

Risposta completa →
Perché una CLI — non posso semplicemente installare le skill?

Le skill non possono, in modo affidabile, garantire l'integrità referenziale, restituire query filtrate senza leggere ogni singolo file, né aggiornare il campo di stato appropriato al momento giusto. La CLI compie ciascuna di queste operazioni in una sola chiamata. Le skill leggerebbero ogni file per fare la stessa cosa.

Risposta completa →
Perché "SpecScore" — cosa misura?

Due significati, entrambi voluti. Partitura — uno spartito strutturato di requisiti. E un voto di qualità letterale — il linter della CLI è il punteggio deterministico, e la skill/score è la valutazione A–F espressa dall'IA sulla maturità dell'artefatto.

Risposta completa →
Dove sono i dati sul risparmio di token?

Un confronto analitico affiancato e misurato è in preparazione prima del post su Habr. Strutturalmente: la CLI restituisce un piccolo elenco strutturato; un agente tradizionale senza CLI legge invece decine di documenti.

Risposta completa →
Con quale licenza è distribuito SpecScore?

La specifica e la documentazione nel repository pubblico specscore/specscore sono CC BY 4.0. L'interfaccia a riga di comando (CLI) di riferimento in specscore/specscore-cli è Apache-2.0.

Risposta completa →
SpecScore richiede un strumento di IA specifico?

No. Le specifiche sono file di testo nel repository. La CLI è un binario locale. Le AI Skills di questo sito avvolgono quella CLI per gli agenti che possono eseguire skill. Il formato non richiede un fornitore.

Risposta completa →
Che cos'è lo sviluppo guidato dalle specifiche (SDD)?

Lo sviluppo guidato dalle specifiche (SDD) significa scrivere una specifica verificabile — requisiti e criteri di accettazione — prima del codice, e poi controllare il risultato rispetto a quella specifica. SpecScore è un formato di file per quelle specifiche.

Risposta completa →

Definisci il successo. Poi fagli spazio.

SpecScore definisce quando il progetto è finito. Un impegno settimanale ti aiuta a scegliere il passo successivo. Collega i due con una breve verifica dei risultati.

Specifiche che superano il lint.

o leggi la documentazione

★ Dacci una stella su GitHub — aiuta altri a trovare il progetto.GitHub stars

Have an idea how to improve this page?