Format
Markdown + YAML. Działa w każdym edytorze tekstu. Nie wymaga nowych narzędzi, aby zacząć pisać.
SpecScore to otwarty format plików dla specyfikacji, sprawdzany linterem, zapisany w Markdown i YAML (YAML Ain't Markup Language) — jak JSON (JavaScript Object Notation) dla danych — z interfejsem wiersza poleceń (CLI), który Twoje agenty wywołują, by je przeszukiwać i edytować, jak jq dla JSON-a.
Potem pytanie doprecyzowujące w trakcie prac. Potem poprawka po wdrożeniu. Potem kontekst, który tłumaczysz w kółko od nowa.

SpecScore to format Markdown + YAML dla funkcji, wymagań i kryteriów akceptacji. Definiuje strukturę zrozumiałą zarówno dla Twojego zespołu, jak i agentów AI — to po prostu zwykłe pliki w Twoim repozytorium.
Projekt SpecScore składa się z trzech rodzajów artefaktów w cyklu życia:Idea rejestruje wstępny kierunek; specyfikacjaFeature zamraża uzgodnione zachowanie;Plan dzieli funkcję na uporządkowane zadania, z których każde wskazuje spełniane kryteria akceptacji.
Dlaczego to ważne dla Twojego agenta. Ponieważ struktura jest czytelna maszynowo, agenci AI mogą odpytywać specyfikację przez CLI zamiast czytać każdy plik. Zapytaj„nad czym powinienem teraz pracować?”, a CLI zwróci otwarte Features i pytania bez odpowiedzi. Ta sama forma, którą weryfikuje Twój zespół; znacznie mniejszy kontekst do załadowania przez agenta.
Płaska lista przy pięćdziesięciu Features staje się wysypiskiem. SpecScore dba o przejrzystość drzewa: elementy nadrzędne określają zakres, podrzędne szczegóły, a struktura katalogów odzwierciedla kształt produktu, o którym Twój zespół już myśli.
Otwarte pytania agregują się w górę. Nierozstrzygnięte pytania na dowolnej głębokości pojawiają się w indeksie każdego rodzica. Widzisz z samego szczytu drzewa, co blokuje wydanie, bez konieczności przeszukiwania każdego pliku.
Większość narzędzi zakłada, że płaska lista wystarczy. I tak jest — do czasu. SpecScore powstał z myślą o momencie, w którym pytanie „gdzie powinna znaleźć się ta Feature?” zaczyna mieć znaczenie.
specscore-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/
└── … jeszcze 10 Features najwyższego poziomuSpecyfikacja w dokumencie, wątek na Slacku i kod w PR po cichu rozmijają się tygodniami. Nikt nie wie, która wersja ustaleń jest kanoniczna.
Rozwiązanie
Jedna kanoniczna specyfikacja, w repozytorium, wersjonowana z kodem.specscore lint uruchamia się w CI przy każdym pushu; historia gita to pełny audyt. Specyfikacja, wątek i PR nie mogą się rozjechać — współdzielą ten sam recenzowany plik.
"Elegancko obsługuje błędy" miało znaczyć"pokaż powiadomienie toast i wycofaj zmiany." A może"zaloguj i ponów próbę?" Agent musi zgadywać.
Rozwiązanie
Linter wychwytuje niejednoznaczne kryteria, zanim powstanie choćby linijka kodu. Czasownik nie przechodzi linta, bo brakuje mu konkretnego obiektu lub warunku. Poprawienie ostrzeżenia zmusza do zdefiniowania, co tak naprawdę oznacza"obsługuje".
Ludzie dopowiadają sobie kontekst, pytają, uściślają. Agenci AI tego nie robią — wdrażają wzorzec, który najczęściej pojawiał się w ich danych treningowych. Kod przechodzi review, bo robi coś sensownego. Tyle że nie to, co miałeś na myśli.
Rozwiązanie
Ustrukturyzowane wejście. Agenci AI deterministycznie parsują identyfikatory REQ, AC oraz scenariuszeGIVEN / WHEN / THEN— nie ma tu miejsca na domysły. Zadania w Planie muszą wskazywać identyfikatory AC, które realizują, dzięki czemu to, co zbudowano, można w każdej chwili zweryfikować ze specyfikacją.
Agent buduje coś na podstawie niejednoznacznego opisu, zauważasz błąd i promptujesz ponownie — na cztery różne sposoby. Każda niedokończona funkcja i każda powtórka kosztują tokeny. Im bardziej mętna specyfikacja, tym więcej rund potrzeba na jej ukończenie.
Rozwiązanie
Przeanalizuj specyfikację linterem, zanim uruchomisz agenta.specscore lint z góry odrzuca nieprecyzyjne czasowniki i brakujące kryteria akceptacji, więc agent od razu implementuje konkretny opis zamiast błądzić w kolejnych próbach. Najtańsze wywołanie agenta to to, którego nie musisz powtarzać.
Agent AI odpowiadając na pytanie "co zależy od tej funkcji?" czyta całe README funkcji. Potem indeks każdego rodzica. Potem sąsiednie funkcje na wszelki wypadek. Każde zapytanie to ponowne parsowanie. Tokeny ulatują, rośnie opóźnienie, a wraz z nim rachunek.
Rozwiązanie
Strukturalne zapytania zamiast czytania plików.specscore feature tree zwraca hierarchię jako YAML; feature deps przechodzi cały łańcuch zależności; feature info zwraca status, właściciela i otwarte pytania — wszystko w jednym wywołaniu. Agent porusza się po grafie, a nie po tekście.
Sześć miesięcy później debugujesz funkcję i nikt nie pamięta, które wymaganie ona realizuje. Powiązanie między kodem a specyfikacją istniało tylko w czyjejś głowie, a ta osoba odeszła z pracy. PR, który ją wprowadził, leży w archiwum.
Rozwiązanie
Adnotacje w kodzie źródłowym. Komentarze takie jak// specscore: features/checkout/apply-discount/R1.AC-2sprawiają, że powiązanie jest czytelne maszynowo i przetrwa każdy refaktoring. specscore code deps odpowiada na pytanie "jaką specyfikację implementuje ten plik?" w jednym wywołaniu; linter natychmiast zgłasza referencje wskazujące na usunięte specyfikacje.
Zmieniasz status funkcji z Draft na Approvedw jej README, ale nadrzędny indeks funkcji wciąż ma wpisane Draft. Trzy tygodnie później agent czytający indeks uważa, że funkcja jest w trakcie zmian. Status istnieje w dwóch miejscach i te miejsca sobie przeczą.
Rozwiązanie
Polecenie specscore feature change-status zmienia pole Status w pliku funkcji i synchronizuje wiersz w indeksie w jednym atomowym kroku — błąd lintera wycofuje zmianę. Status istnieje w jednym kanonicznym miejscu, a indeks jest jego generowanym widokiem.
Specyfikacja wygląda na dopiętą — dopóki nie przypomnisz sobie, że pytanie "a co ze strefami czasowymi?" przepadło w wątku na Slacku dwa miesiące temu i nigdy nie trafiło do dokumentu. Jesteś w trakcie implementacji i nikt nie pamięta odpowiedzi.
Rozwiązanie
Każda funkcja w SpecScore ma obowiązkową sekcjęOutstanding Questions. Linter odrzuca funkcje, które ją pomijają — pusta sekcja jest w porządku ("None at this time."), ale jej brak już nie. Nierozstrzygnięte kwestie są widoczne w dokumencie, dostępne przez CLI i nie da się o nich zapomnieć.
SpecStudio Skillsto wtyczka do Claude Code, która przekształca cykl życia SpecScore w cztery polecenia slash. Zainstaluj ją raz, a potem wywołuj je w kolejności — od surowego pomysłu aż po gotowy plan wykonania.
$ /plugin marketplace add specscore/ai-marketplace $ /plugin install specstudio@specscore
> /specstudio: /specstudio:ideate Dopracuj surowy pomysł w Idea w formacie SpecScore /specstudio:specify Zamień zatwierdzoną Idea w specyfikację Feature /specstudio:plan Podziel Feature na Plan zadań /specstudio:implement Zrealizuj kolejne zadanie z Planu
Bezpłatne do każdego zastosowania, także komercyjnego. Źródła wtyczki:specscore/specstudio-skills — na licencji MIT.
Szybki, deterministyczny linter, a następnie pogłębiony przegląd AI — uruchomione na specyfikacji, którą właśnie widziałeś. Dwa kroki, dwa rodzaje pewności.
$ specscore spec lint features/apply-discount/README.md:0 [error] oq-section: Open Questions section not found features/apply-discount/README.md:0 [error] index-entries: Child directory not listed in index: refunds features/apply-discount/refunds:0 [error] readme-exists: README.md not found 3 violations found (3 errors) # exit code 1
Ten sam wynik przy każdym uruchomieniu. Darmowy, szybki, uruchamiany przy każdym commicie.
> /score apply-discount.md Grade: B — ready with edits AC-2 vague trigger — name the actor and event AC-3 no error path for an expired code prose reads clean; criteria need tightening
Analizuje znaczenie, tak jak recenzent w zespole.
Markdown + YAML. Działa w każdym edytorze tekstu. Nie wymaga nowych narzędzi, aby zacząć pisać.
CLI w Go. Weryfikuje strukturę, odwołania i kompletność. Zwraca niezerowy kod wyjścia przy błędach — działa w Twoim terminalu oraz w CI.
SpecScore to po prostu zwykłe pliki w Twoim repozytorium. Bez konieczności zakładania konta w kolejnym SaaS-ie. Bez wymaganego orkiestratora. Używaj go z Linearem, Jirą, GitHub Projects, czystym Markdownem w katalogu lub całkowicie bez systemu do zarządzania zadaniami. Format i linter nie dbają o to, gdzie żyją Twoje tickety.
Rozwój sterowany specyfikacją (SDD) to dynamiczny obszar. Oto gdzie plasuje się SpecScore na tle alternatyw — bez owijania w bawełnę.
Nie korzystasz z agentów AI lub potrzebujesz walidacji specyfikacji w potoku CI? Jest do tego CLI. Zainstalujesz je w 60 sekund — bez zakładania konta, bez telemetrii, działa w dowolnym katalogu ze specyfikacjami w Markdownie.
$ curl -fsSL https://specscore.md/install/get-cli | sh> irm https://specscore.md/install/get-cli.ps1 | iexUruchom linter na przykładowej specyfikacji dostarczonej z binarką:
$ specscore lint examples/checkout/apply-discount.mdZobacz wynik:
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 1Przeczytaj pełną dokumentacjęWspółtwórz na GitHubie
Eksploruj schematy baz danych, twórz i wykonuj zapytania oraz analizuj wyniki z DataTug. SpecScore kieruje jego wymaganiami i kryteriami akceptacji.
datatug.app Narzędzia, które stworzyliśmyOtwarty rejestr modeli danych i definicji semantycznych, utrzymywanych we własnych repozytoriach Git i powiązanych z modelami i kodem.
meaninggraph.io Przeglądaj rejestrSilnik grafu kodu do szybkiej eksploracji bazy kodu i dwukierunkowego łączenia specyfikacji z kodem.
codegrapher.devWarstwa dostępu do danych w Go, wyspecyfikowana za pomocą SpecScore.
dal-go.github.ioWersjonowana baza danych oparta na Gicie, wyspecyfikowana za pomocą SpecScore.
ingitdb.comWarstwa dowodów akceptacji — uruchamia w praktyce kryteria akceptacji specyfikacji, z weryfikacjami wielokrotnego użytku i bez kodu łączącego.
rehearse.inkInterfejs webowy do przeglądania i edytowania specyfikacji SpecScore.
specscore.studioSpecScore określa, kiedy projekt jest gotowy. Tygodniowe zobowiązanie pomaga wybrać następny krok. Połącz je krótkim przeglądem wyników.
★ Daj nam gwiazdkę na GitHubie — to pomaga innym znaleźć projekt.
Have an idea how to improve this page?