Format
Markdown + YAML. Metin açabilen her editörde çalışır. Yazmaya başlamak için yeni araçlar gerekmez.
SpecScore, spesifikasyonlar için açık ve linter ile denetlenebilir bir dosya formatıdır; Markdown ve YAML (YAML Ain't Markup Language) ile yazılır — veriler için JSON (JavaScript Object Notation) neyse öyle — ve ajanlarınızın bunları sorgulamak ve düzenlemek için çağırdığı bir komut satırı arayüzü (CLI) ile birlikte gelir, JSON için jq gibi.
Ardından geliştirme ortasında gelen bir soru. Dağıtım sonrasında gereken bir düzeltme. Ve sürekli yeniden açıklamak zorunda kaldığınız bağlam.

SpecScore, özellikler (features), gereksinimler ve kabul kriterleri için bir Markdown + YAML formatıdır. Ekibinizin ve yapay zeka ajanlarınızın aynı şekilde anladığı bir yapı tanımlar — ve bunlar reponuzdaki sıradan dosyalardır.
Bir SpecScore projesi, bir yaşam döngüsü boyunca üç tür yapı taşından (artifact) oluşur: bir Idea henüz olgunlaşmamış bir yönü yakalar; bir Featurespesifikasyonu üzerinde anlaşılan davranışı dondurur; bir Plan ise özelliği, her biri karşıladığı kabul kriterlerine atıfta bulunan sıralı görevlere böler.
Ajanınız neden önemser? Yapı makine tarafından okunabilir olduğu için, yapay zeka ajanları her dosyayı okumak yerine spesifikasyonu CLI aracılığıyla sorgulayabilir. «Sırada ne üzerinde çalışmalıyım?» diye sorun; CLI açık Feature'ları ve yanıtlanmamış soruları döndürür. Ekibinizin incelediği yapının aynısı; ajanın yüklemek zorunda olduğu çok daha az bağlam.
Elli Feature içeren düz bir liste zamanla çöplüğe döner. SpecScore ağacı gezilebilir tutar: üst öğeler kapsamı, alt öğeler ayrıntıları yönetir ve dizin yapısı ekibinizin ürün hakkında zaten akıl yürüttüğü biçimi birebir yansıtır.
Açık sorular yukarı taşınır. Hangi derinlikte olursa olsun çözülmemiş sorular her üst öğenin dizininde görünür. Bir sürümü neyin engellediğini ağacın tepesinden, derinlemesine kazmak zorunda kalmadan görürsünüz.
Çoğu spesifikasyon aracı düz bir listenin yeterli olacağını varsayar. Yeterli de gelebilir — ta ki gelmeyene kadar. SpecScore, «bu Feature nerede duruyor?» sorusunun önem kazandığı anlar için tasarlanmıştır.
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/ ← alt-alt-Feature
│ └── plan-rules/
├── task/
│ ├── info/
│ ├── list/
│ └── new/
└── … 10 üst düzey Feature dahaBelgedeki spesifikasyon, Slack'teki tartışma ve PR'daki kod haftalarca sessizce birbirinden uzaklaşır. Kimse konuşmanın hangi sürümünün kanonik olduğunu bilemez.
Çözüm
Tek bir kanonik spesifikasyon; reponun içinde, kodla birlikte sürüm kontrolünde. specscore lint her push'ta CI üzerinde çalışır; git geçmişi denetim izidir. Spesifikasyon, tartışma ve PR sessizce ayrılamaz — inceleme altındaki aynı dosyayı paylaşırlar.
"Hataları zarif bir şekilde ele al" ifadesi"bir toast mesajı göster ve geri al" anlamına mı geliyordu? Yoksa "logla ve yeniden dene" miydi? Ajan tahmin yürütmek zorunda kalır.
Çözüm
Linter, tek bir satır kod yazılmadan önce belirsiz kriterleri yakalar. Fiil linter'dan geçemez çünkü somut bir nesnesi veya koşulu yoktur. Uyarıyı çözmek, "ele al" ifadesinin gerçekte ne anlama geldiğini açıkça yazmanızı zorunlu kılar.
İnsanlar yorumlar, soru sorar, netleştirir. Yapay zeka ajanları ise bunu yapmaz — eğitim verilerindeki en yaygın deseni uygularlar. Kod incelemeden geçer çünkü mantıklı bir şeyleryapıyordur. Yalnızca sizin amaçladığınız şey değildir.
Çözüm
Yapılandırılmış girdi. Yapay zeka ajanları REQ ID'lerini, AC ID'lerini ve GIVEN / WHEN / THENsenaryolarını deterministik olarak ayrıştırır — yorumlanacak hiçbir şey kalmaz. Her Plan görevi karşıladığı AC ID'lerine atıfta bulunmalıdır; böylece inşa edilen şey, belirtilen şeye karşı her zaman doğrulanabilir.
Ajan belirsiz bir talimata dayanarak bir şeyler inşa eder, yanlış olduğunu görürsünüz ve dört farklı şekilde yeniden istersiniz. Yarım yamalak her özellik ve her yeniden deneme token olarak faturalandırılır. Spesifikasyon ne kadar belirsizse, doğru sonuca ulaşmak o kadar çok tur gerektirir.
Çözüm
Ajan çalışmadan önce spesifikasyonu lint edin.specscore lint belirsiz fiilleri ve eksik kabul kriterlerini en başından reddeder; böylece ajan denemeler arasında tahmin yürütmek yerine tek seferde somut bir talimatı uygular. En ucuz çalıştırma, tekrarlamak zorunda kalmadığınız çalıştırmadır.
"Bu özelliğe ne bağımlı?" sorusuna yanıt veren bir yapay zeka ajanı özelliğin tüm README'sini okur. Ardından her üst dizin indeksini. Ardından ne olur ne olmaz diye kardeş özellikleri. Her sorgu yeni bir ayrıştırmadır. Tokenlar erir, gecikme artar ve maliyet yükselir.
Çözüm
Dosya okuma yerine yapılandırılmış sorgular.specscore feature tree hiyerarşiyi YAML olarak döndürür;feature deps geçişli bağımlılık zincirini tarar;feature info durumu, sorumluyu ve açık soruları sunar — her biri tek bir çağrıda. Ajan düz metni değil, grafı dolaşır.
Altı ay sonra bir fonksiyonu debug ediyorsunuz ve kimse onun hangi özelliği uyguladığını hatırlamıyor. Kod ile spesifikasyon arasındaki bağ birinin aklındaydı ve o kişi artık şirkette değil. Onu getiren PR ise arşivlerde kayboldu.
Çözüm
Kaynak kod içi açıklamalar (annotations).// specscore: features/checkout/apply-discount/R1.AC-2gibi yorumlar bağı makine tarafından okunabilir kılar ve her refactoring'e dayanır. specscore code deps tek çağrıda"bu dosya hangi spesifikasyonu uyguluyor?" sorusunu yanıtlar; linter silinmiş spesifikasyonları gösteren referansları uyarır.
Bir özelliği README dosyasında Draft durumundanApproved durumuna taşırsınız, ancak üst dizindeki features-index onu hala Draft olarak listeler. Üç hafta sonra indeksi okuyan bir ajan özelliğin hala incelemede olduğunu düşünür. Durum iki yerde yaşar ve birbiriyle çelişir.
Çözüm
specscore feature change-status özelliğin Status alanını yeniden yazar ve features-index satırını tek bir atomik adımda yeniden senkronize eder — lint başarısız olursa değişiklik geri alınır. Durum tek bir kanonik yerde yaşar; indeks bu durumun oluşturulmuş bir görünümüdür.
Bir spesifikasyon tamamlanmış gibi görünür — ta ki"peki saat dilimlerine ne oluyor?" sorusunun iki ay önceki bir Slack yazışmasında kaybolduğunu ve hiçbir zaman belgeye girmediğini hatırlayana kadar. Şimdi geliştirme aşamasındasınız ve kimse cevabın ne olduğunu bilmiyor.
Çözüm
Her SpecScore özelliğinin zorunlu bir Outstanding Questionsbölümü vardır. Linter bu bölümü atlayan özellikleri reddeder — boş olması kabul edilir ("None at this time."), ancak tamamen eksik olması reddedilir. Çözülmemiş sorular belgede görünür, CLI'dan sorgulanabilir ve unutulması imkansızdır.
SpecStudio Skills, SpecScore yaşam döngüsünü dört eğik çizgi (slash) komutuna dönüştüren bir Claude Code eklentisidir. Bir kez yükleyin, ardından sırayla çalıştırın — ham fikirden yürütülebilir bir plana kadar.
$ /plugin marketplace add specscore/ai-marketplace $ /plugin install specstudio@specscore
> /specstudio: /specstudio:ideate Ham bir fikri bir SpecScore Idea'sına dönüştürün /specstudio:specify Onaylanmış bir Idea'yı bir Feature spesifikasyonuna dönüştürün /specstudio:plan Bir Feature'ı görevlerden oluşan bir Plan'a bölün /specstudio:implement Plan'daki bir sonraki görevi yürütün
Ticari kullanım dahil her kullanım için ücretsizdir. Eklenti koduspecscore/specstudio-skills adresindedir — MIT lisanslıdır.
Hızlı, deterministik bir linter ve ardından daha derin bir yapay zeka incelemesi — az önce gördüğünüz spesifikasyon üzerinde çalıştırılır. İki adım, iki tür kesinlik.
$ 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
Her çalıştırmada aynı sonuç. Ücretsiz, hızlı, her commit'te çalışır.
> /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
İnsan bir incelemeci gibi anlam arayarak okur.
Markdown + YAML. Metin açabilen her editörde çalışır. Yazmaya başlamak için yeni araçlar gerekmez.
Go ile yazılmış CLI. Yapıyı, referansları ve bütünlüğü doğrular. Hata durumunda sıfırdan farklı bir çıkış kodu verir — hem terminalinizde hem de CI ortamınızda çalışır.
SpecScore sadece reponuzdaki dosyalardan ibarettir. Kaydolmanız gereken bir SaaS yoktur. Zorunlu bir orkestratör yoktur. Linear, Jira, GitHub Projects, bir klasördeki düz Markdown ile veya hiçbir proje yönetim aracı olmadan kullanın. Format ve linter için görevlerinizin nerede yaşadığı fark etmez.
Spesifikasyon odaklı geliştirme kalabalık bir alan. İşte alternatiflere kıyasla SpecScore'un tam olarak durduğu yer — dürüstçe.
Yapay zeka ajanları kullanmıyor musunuz veya CI hattınızda spesifikasyon doğrulamasını mı istiyorsunuz? Bunun için bir CLI var. 60 saniyede yüklenir — hesap yok, telemetri yok, Markdown spesifikasyonları içeren herhangi bir klasörde çalışır.
$ curl -fsSL https://specscore.md/install/get-cli | sh> irm https://specscore.md/install/get-cli.ps1 | iexİkili dosya ile birlikte gelen örnek spesifikasyona linter'ı uygulayın:
$ specscore lint examples/checkout/apply-discount.mdÇıktıya bakın:
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 1DataTug ile veritabanı şemalarını keşfedin, sorgular oluşturup çalıştırın ve sonuçları anlayın. Gereksinimlerini ve kabul kriterlerini SpecScore yönlendirir.
datatug.app İş akışı araçlarıVeri modelleri ve anlamsal tanımlar için açık kayıt; tanımlar kendi Git depolarınızda tutulur, modellere ve koda bağlanır.
meaninggraph.io Kaydı keşfedinHızlı kod tabanı keşfi ve spesifikasyonlar ile kod arasında çift yönlü bağlantı için kod grafiği motoru.
codegrapher.devGo için veri erişim katmanı, SpecScore ile belirtilmiştir.
dal-go.github.ioGit tabanlı, sürüm kontrollü veritabanı, SpecScore ile belirtilmiştir.
ingitdb.comKabul kanıtı katmanı: bir spesifikasyonun kabul kriterlerini yeniden kullanılabilir kontrollerle ve ara kod yazmadan gerçekten çalıştırın.
rehearse.inkSpecScore spesifikasyonlarını görselleştirmek ve düzenlemek için web arayüzü.
specscore.studioSpecScore projenizin ne zaman tamamlandığını tanımlar. Haftalık taahhüt, sıradaki adımı seçmenize yardımcı olur. İkisini kısa bir kanıt değerlendirmesiyle birleştirin.
veya belgeleri okuyun
★ GitHub'da yıldız verin — projenin başkaları tarafından keşfedilmesine yardımcı olur.
Have an idea how to improve this page?