Four verbs

Four verbs

Four Claude skills that keep each other honest. The verbs are kept apart on purpose: one builds the structure, one weighs the claims, one generates the candidates, one measures the experience. A conflated verb produces a single tool that does none of them well.

  • İskele builds
  • Mizan weighs
  • Kıyas generates
  • ux-mizan measures experience

This page is the family's canonical description; the four repositories point here rather than each carrying a copy that goes stale on its own.

The skills

One verb each, and the idea that carries it.

builds

İskele

Turns a vague intent into an executable, trackable system of work: domain model, gated phases, an atomic backlog, executable acceptance criteria, and a progress report computed from a tracker rather than estimated by hand.

Every acceptance criterion is a refutation condition written before the work started — which makes the backlog a preregistration set already.

weighs

Mizan

Audits any claim set with evidence tiers and maintains living hypothesis registries. Thresholds lock before results; every hypothesis carries a refutation condition; a refuted entry is never deleted.

A numeric threshold is only as strong as the judge that returns its verdict — if the judge is the claim's own author, the claim cannot count as proven.

generates

Kıyas

Disciplined ideation and analogical inference for a problem that is stuck. Every idea it produces arrives shaped for the audit: its mechanism, its cheapest refutation, its prior art and its tier.

Generation and audit belong in separate tools — a generator that weighs its own idea tunes the scale to the idea.

measures experience

ux-mizan

Carries Mizan's discipline into a domain where the evidence is behavioural rather than documentary: "users get lost", "this screen is confusing". Human-locked gates, metrics gated by application type, thresholds written in advance.

A model cannot measure UX by reading code. It can audit structural conformance and build the measuring rig; the evidence comes from real users.

Status: v0.7 [H] / [KKE]. Younger than the other three. One self-validation run has tested the Layer-A scripts and refuted one design decision; the gates, the walkthrough and every behavioural metric are still untested.

The handoff chain

The tools hand each other files, not prose.

INPUT — AT ANY TURN a document or a chat, a repo, legacy code, a running project, an earlier mode's output Mizan Kıyas İskele ux-mizan gaps · refuted seeds → preregistered worth building criteria tasks findings
Two loops, not one ring. Mizan and Kıyas can go round on their own for as long as the thinking needs — İskele is entered when something survives and is worth building, not on the way past. The dashed box is not a starting gun: material enters at Mizan on any turn, and what an earlier mode produced is legitimate material for the next one.
  • You → Mizan: the entry, and the one arrow that starts outside the system. Something you already have gets atomized into claims and tiered — an AI conversation, an article, an old note, a rough idea, but equally a repository, a legacy codebase, a project already under way: that is what modes 3–5 are for, and in an undocumented project the audit report is the documentation. What an earlier mode produced — a gap map, a bug registry, a gated PRD — re-enters the same way. What survives is [H]; what does not is recorded rather than deleted.
  • The entry is not a one-time event. The dashed box is not the start of a pipeline: while the loop is turning, a new idea, a new document, a fresh piece of code can enter at Mizan on any turn. The registry is append-only precisely so that late material joins what is already there instead of restarting it.
  • Mizan ⇄ Kıyas — the inner loop. The audit's gap map and its refuted entries become Kıyas's brief and its negative constraints; Kıyas's surviving seeds come back as preregistered entries, already carrying the arbiter the registry will demand (mizan_export_refuted.py one way, the registry-entry shape the other). This pair can go round on its own, many times, with no project in sight — which is what happens when the domain shifts, when a case turns out to be special, or when the honest answer is still being looked for.
  • → İskele, when it is worth building. Surviving seeds become backlog tasks (kiyas_to_backlog.py) — a seed is not a plan, and not every seed earns a project. İskele is a branch off the inner loop, not a station on the way.
  • İskele → Mizan: acceptance criteria become preregistration entries (iskele_to_registry.py); every sentence claiming "verified" enters the counter-example sweep. This is the arrow that closes the outer loop.
  • ux-mizan → both. A measured finding is two things at once: a task for the backlog, and a claim about the application. The first goes to İskele with its own acceptance criteria; the second re-enters the inner loop — as an entry for Mizan when it needs tiering, or as the brief for Kıyas when the question is why users do that.

The shared constants

The same few rules in all four — and what holds them together.

ConstantWhat it means
Evidence tiers [K] proven · [H] plausible hypothesis · [S] speculative · [R] refuted · [KKE] critical control missing · [Y] misleading. No untagged assertions.
Threshold before result A threshold written after the measurement has found whatever it was written to find.
Append-only A refuted entry is never deleted. The [R] rows are the method's own error rate.
Name the arbiter "The model" is not an instrument. If the judge is the claim's own author, the claim is capped.
What carries a rule is a script A rule protected only by prose can be negotiated away by the host's prose.
The skill runs inside someone else's setup Do not comply quietly: say which instruction disabled which step.
An escape becomes a class The one signal from outside — a user hit it, it broke in production, the idea came from outside the batch. Not merely counted: the check that should have caught it is named, or the check that now exists is written. A ramp in all four requires it.
What takes things apart puts them back All four proceed by breaking work into parts — claims, tasks, flows, seeds — and anything that exists only while two parts hold at once is destroyed by that act. So all four run a re-assembly pass over pairs. In the auditing three it asks whether a guarantee still holds while both are live; in Kıyas, whether two candidates are two bets or one bet with two faces. The fragile classes: signals computed from an absence, guarantees enforced call site by call site, and seed lists resting on a single premise. A green test suite is not counter-evidence — tests are written per part.
A context with a budget A skill costs tokens the way a dependency costs bytes: to everyone who installs it, on every cold start. In all four, tools/token_budget.py measures three tiers — the description that is in context in every session, the body, and the on-demand files — and enforces preregistered ceilings in CI. Raising a ceiling is a commit with a reason; growing silently is not one of the options.
Cost is measured, ROI is not claimed All four can record what they spent — with the instrument, the window, the attribution and the comparison arm. With no arm the claim cannot be [K]: what the work cost is a measurement, that the tool caused the difference is a claim. And each names the ratio it refuses to compute: Kıyas will not divide cost by seed count, ux-mizan will not divide by finding count — both would improve the number by rewarding the behaviour the discipline exists to prevent.

A worked run

The chain above, on real material — including where it went wrong.

Someone asked four AI assistants what they thought of these skills and brought the answers back to be audited. All four reported the release numbers one version stale; the audit itself then got two of its own findings wrong and had to reverse them on the record. The generator, working under the registry's refuted patterns, found a reward-hacking hole in a proposal three of the four had praised.

Read the case study → Five seeds, three independent bets, one escape turned into the version stamp now in this page's footer — and a closing section on what a single session cannot show.

Current releases

A snapshot. Each repository's Releases page is what binds — the links go there.

SkillVersionWhat is in it
İskele v1.6.0 English report labels: "report_lang": "en" and an English template, Turkish output byte-for-byte unchanged · iskele_results.py writes completed tasks back into the Mizan registry as results · v1.5: the expectation delta, unit cost with two denominators, the pair pass
Mizan v2.9.0 The first rule in this family that doubts the inventory rather than the reading. R28: the audit reads what was written, not what gets produced — slices are cut out of the source tree, which holds exactly what a human typed, so a generated config sits in no slice at all. Six phases, a MERGE, a bug registry and a security probe closed green while a packaging script wrote a BEL character into a shipped web.config: source correct, output corrupt, and reading the script twice could not find it · W8 asks whether an arbiter can return a verdict at all, after a suite sat twenty-five minutes at zero CPU — neither failing nor passing — and was about to be reported as verified · checklist 15 (the file nobody wrote) and 16 (the value you checked is not the value you used) · registry schema 1.12
Mizan v2.7.0 R23–R25, all three written from an audit that MISSED things: MERGE reconciles the slice pairs nobody looked at; the auditor's own instruments get calibrated against a known positive and a known negative; a runtime verdict names the artifact it ran against — a stale build reports green, red and a full passing suite with equal confidence · W6: phases can all close while the domain probe was never answered · registry schema 1.10
Kıyas v1.5.0 G15/W7: a warning can be accepted in the data, with a reason — so --strict stops forcing tier edits — and an acceptance whose warning no longer fires is flagged · W6: a sweep against a partial refuted-patterns export may say "no match found", never "clear" · rule pairs, all 50 codes isolated
ux-mizan v0.7 No rule change. ux_to_backlog.py: a confirmed finding becomes a fix task, an unmeasured one a measure task · lostness ends the task at the first success screen · an empty scan exits 2 instead of reading like a clean app

Install

Two ways, per skill.

  • Claude.ai / desktop / mobile: upload the .skill file from the repository's release (Settings → Capabilities → Skills).
  • Claude Code: copy the skill/<name>/ folder into ~/.claude/skills/. The path must end ~/.claude/skills/<name>/SKILL.md — the most common mistake is a doubly nested folder.
  • Other agents (untested): each skill is a plain SKILL.md folder in the open skill format, so agents that read that format — Cursor, Codex CLI, GitHub Copilot, Gemini CLI and others — are expected to load it from their own skills folder. None of them has been tried. The portability that has been tested is across Claude hosts; elsewhere, treat it as a hypothesis and open an issue with what you saw.

You do not need to configure your assistant for this to work. No custom instructions, no system prompt, no house style. If a skill only behaves when your setup is arranged a particular way, that is a defect in the skill — please open an issue.

Dört fiil

Birbirini dürüst tutan dört Claude skill'i. Fiiller bilinçli olarak ayrıdır: biri yapıyı kurar, biri iddiaları tartar, biri adayları üretir, biri deneyimi ölçer. Karıştırılan fiil, hiçbirini iyi yapmayan tek bir araç üretir.

  • İskele kurar
  • Mizan tartar
  • Kıyas üretir
  • ux-mizan deneyimi ölçer

Bu sayfa ailenin kanonik tanımıdır; dört depo, her biri kendi başına bayatlayacak bir kopya taşımak yerine buraya işaret eder.

Skill'ler

Her birine bir fiil, ve onu taşıyan fikir.

kurar

İskele

Belirsiz bir niyeti yürütülebilir ve izlenebilir bir iş sistemine çevirir: alan modeli, kapılı fazlar, atomik backlog, çalıştırılabilir kabul kriterleri, ve elle tahmin edilmek yerine çizelgeden hesaplanan ilerleme raporu.

Her kabul kriteri, iş başlamadan önce yazılmış bir çürütme koşuludur — bu yüzden backlog zaten bir önkayıt kümesidir.

tartar

Mizan

Herhangi bir iddia kümesini kanıt katmanlarıyla denetler ve yaşayan hipotez registry'leri tutar. Eşikler sonuçlardan önce kilitlenir; her hipotez bir çürütme koşulu taşır; reddedilen kayıt silinmez.

Sayısal bir eşik, ancak hükmü veren hakem kadar güçlüdür — hakem iddianın sahibiyse, o iddia kanıtlanmış sayılamaz.

üretir

Kıyas

Tıkanmış bir problemde ilkeli fikir üretimi ve analojik çıkarım. Ürettiği her fikir denetime hazır biçimde çıkar: mekanizması, en ucuz çürütmesi, prior art'ı ve katmanıyla.

Üretim ile denetim ayrı araçlarda kalmalı — kendi fikrini tartan bir üreteç, tartısını fikrine göre ayarlar.

deneyimi ölçer

ux-mizan

Mizan'ın disiplinini, kanıtın belgesel değil davranışsal olduğu alana taşır: "kullanıcılar kayboluyor", "bu ekran karışık". İnsan-kilitli kapılar, uygulama tipine kapılı metrikler, önceden yazılmış eşikler.

Bir model koda bakarak UX'i ölçemez. Yapısal uygunluğu denetleyebilir ve ölçüm düzeneğini kurabilir; kanıtı gerçek kullanıcı üretir.

Statü: v0.7 [H] / [KKE]. Diğer üçünden genç. Bir öz-doğrulama koşusu Katman-A script'lerini test etti ve bir tasarım kararını çürüttü; kapılar, walkthrough ve davranışsal metriklerin hiçbiri henüz test edilmedi.

Devir zinciri

Araçlar birbirine dosya devreder, düzyazı değil.

GİRDİ — HER TURDA doküman, sohbet, fikir, repo, legacy kod, süren bir proje, önceki modun çıktısı Mizan Kıyas İskele ux-mizan boşluklar · çürütülenler tohumlar → önkayıt inşa etmeye değer kriterler görevler bulgular
Tek halka değil, iki döngü. Mizan ile Kıyas, düşünme ne kadar sürerse o kadar kendi aralarında dönebilir — İskele, sağ kalan bir şey inşa edilmeye değdiğinde devreye girer; yol üstünde uğranan bir durak değil. Kesik çizgili kutu bir başlangıç işareti değildir: malzeme Mizan'a her turda girebilir ve önceki bir modun ürettiği şey bir sonrakinin meşru malzemesidir.
  • Siz → Mizan: giriş, ve sistemin dışından başlayan tek ok. Elinizde zaten olan bir şey iddialara ayrılır ve katmanlanır — bir YZ sohbeti, bir makale, eski bir not, ham bir fikir, ama aynı ölçüde bir repo, bir legacy kod tabanı, hâlihazırda süren bir proje: 3–5. modlar tam bunun için, ve dokümansız bir projede denetim raporunun kendisi dokümantasyondur. Önceki bir modun ürettiği şey — boşluk haritası, bug registry'si, kapıdan geçmiş bir PRD — aynı yoldan yeniden girer. Ayakta kalan [H] olur; kalmayan silinmez, kaydedilir.
  • Giriş tek seferlik değildir. Kesik çizgili kutu bir hattın başlangıcı değil: döngü dönerken yeni bir fikir, yeni bir doküman, taze bir kod parçası her turda Mizan'a girebilir. Registry'nin yalnızca-eklenir olmasının sebebi tam da bu — sonradan gelen malzeme var olanı sıfırlamaz, ona katılır.
  • Mizan ⇄ Kıyas — iç döngü. Denetimin boşluk haritası ve reddedilen kayıtları Kıyas'ın brief'i ve negatif kısıtları olur; Kıyas'ın sağ kalan tohumları, registry'nin isteyeceği hakemi zaten taşıyarak önkayıt girdisi olarak geri döner (mizan_export_refuted.py bir yöne, registry-girdi biçimi diğerine). Bu çift, ortada hiçbir proje yokken kendi arasında defalarca dönebilir — alan farklılaştığında, bir vaka özel çıktığında, ya da dürüst cevap hâlâ aranırken olan tam budur.
  • → İskele, inşa etmeye değdiğinde. Sağ kalan tohumlar backlog görevine dönüşür (kiyas_to_backlog.py) — bir tohum plan değildir ve her tohum bir projeyi hak etmez. İskele, iç döngüden çıkan bir daldır; yol üstünde uğranan bir durak değil.
  • İskele → Mizan: kabul kriterleri önkayıt girdilerine dönüşür (iskele_to_registry.py); "doğrulandı" diyen her cümle karşı-örnek taramasına girer. Dış döngüyü kapatan ok budur.
  • ux-mizan → ikisine birden. Ölçülmüş bir bulgu aynı anda iki şeydir: backlog için bir görev, ve uygulama hakkında bir iddia. Birincisi kendi kabul kriteriyle İskele'ye gider; ikincisi iç döngüye girer — katmanlanması gerekiyorsa Mizan'a girdi, soru kullanıcılar bunu neden yapıyor ise Kıyas'a brief olarak.

Ortak sabitler

Dördünde de aynı birkaç kural — ve onları bir arada tutan şey.

SabitNe demek
Kanıt katmanları [K] kanıtlanmış · [H] makul hipotez · [S] spekülatif · [R] reddedildi · [KKE] kritik kontrol eksik · [Y] yanıltıcı. Etiketsiz iddia yok.
Önce eşik, sonra sonuç Ölçümden sonra yazılan eşik, bulmak için yazıldığı şeyi bulmuş olur.
Yalnızca ekleme Reddedilen kayıt silinmez. [R] satırları yöntemin kendi hata payıdır.
Hakemi adlandır "Model" bir ölçüm aracı değildir. Hakem iddianın sahibiyse iddia tavanlıdır.
Kuralı taşıyan şey betiktir Yalnızca düzyazıyla korunan kural, host'un düzyazısıyla pazarlık edilebilir.
Skill başkasının kurulumunda koşar Sessizce uyma: hangi talimatın hangi adımı devre dışı bıraktığını söyle.
Kaçan, sınıfa dönüşür Dışarıdan gelen tek sinyal — kullanıcının bulduğu, üretimde patlayan, batch'in dışından gelen. Yalnızca sayılmaz: onu yakalaması gereken kontrol adlandırılır, yoksa artık var olan kontrol yazılır. Dördünde de bir rampa bunu zorunlu kılar.
Parçalayan, geri birleştirir Dördü de işi parçalara ayırarak ilerler — iddialar, görevler, akışlar, tohumlar — ve yalnızca iki parça aynı anda geçerliyken var olan şey tam o eylemle yok olur. Bu yüzden dördünde de sonda bir çift pası vardır. Denetim yapan üçünde soru "bu garanti ikisi birden etkinken hâlâ geçerli mi?", Kıyas'ta "bunlar iki bahis mi, iki yüzü olan tek bahis mi?" olur. Kırılgan sınıflar: bir yokluktan hesaplanan sinyaller, tek tek çağrı yerinde uygulanan garantiler, ve tek bir öncüle dayanan tohum listeleri. Yeşil test paketi karşı kanıt değildir — testler parça başına yazılır.
Bütçesi olan bir bağlam Bir skill, bir bağımlılığın bayt harcadığı gibi token harcar: kuran herkese, her soğuk başlangıçta. Dördünde de tools/token_budget.py üç katmanı ölçer — her oturumda bağlamda olan açıklama, gövde, ve talep üzerine okunanlar — ve önkayıtlı tavanları CI'da uygular. Tavanı yükseltmek gerekçeli bir commit'tir; sessizce büyümek seçeneklerden biri değildir.
Maliyet ölçülür, ROI iddia edilmez Dördü de ne harcadığını kaydedebilir — enstrümanıyla, penceresiyle, atfıyla ve karşılaştırma koluyla. Kol yoksa iddia [K] olamaz: işin ne kadara mal olduğu ölçümdür, farkı aracın yarattığı iddiadır. Ve her biri kendi reddettiği oranı adlandırır: Kıyas tohum başına maliyeti bölmez, ux-mizan bulgu başına maliyeti — ikisi de sayıyı, disiplinin önlemek için var olduğu davranışı ödüllendirerek iyileştirir.

Çalışılmış bir koşum

Yukarıdaki zincir, gerçek malzeme üzerinde — yanıldığı yer dahil.

Biri dört yapay zekâya bu skill'ler hakkında ne düşündüklerini sordu ve cevapları denetlenmek üzere geri getirdi. Dördü de sürüm numaralarını tam bir sürüm geride verdi; sonra denetimin kendisi iki bulgusunda yanıldı ve onları kayda geçerek geri aldı. Üreteç ise, registry'nin çürütülmüş örüntüleri altında çalışırken, dördünden üçünün övdüğü bir öneride bir ödül-hackleme açığı buldu.

Vaka çalışmasını oku → Beş tohum, üç bağımsız bahis, bu sayfanın altbilgisindeki sürüm damgasına dönüşmüş bir kaçak — ve tek bir oturumun neyi gösteremeyeceğine dair bir kapanış bölümü.

Şu anki sürümler

Anlık görüntü. Bağlayıcı olan her deponun Releases sayfasıdır — bağlantılar oraya gider.

SkillSürümİçinde ne var
İskele v1.6.0 İngilizce rapor etiketleri: "report_lang": "en" ve İngilizce şablon; Türkçe çıktı bayt bayt aynı · iskele_results.py tamamlanan görevleri Mizan registry'sine sonuç olarak geri yazar · v1.5: beklenti sapması, iki paydalı birim maliyet, çift pası
Mizan v2.9.0 Bu ailede okumadan değil envanterden şüphelenen ilk kural. R28: denetim yazılanı okur, üretileni değil — dilimler kaynak ağacından kesilir, kaynak ağacı tam olarak bir insanın yazdığını tutar; üretilen bir yapılandırma hiçbir dilimde değildir. Altı faz, MERGE, hata registry'si ve güvenlik probu yeşil kapandı; bu sırada bir paketleme betiği gönderilen web.config'e ZİL karakteri yazıyordu: kaynak doğru, çıktı bozuk — ve betiği iki kez okumak bunu bulamazdı · W8, bir hakemin hiç karar verebilip veremediğini sorar: bir süit yirmi beş dakika sıfır CPU'da oturdu, ne kırmızı ne yeşil, ve "doğrulandı" diye raporlanmak üzereydi · kontrol listesi 15 (kimsenin yazmadığı dosya) ve 16 (denetlediğin değer, kullandığın değer değil) · registry şeması 1.12
Mizan v2.7.0 R23–R25, üçü de bir şey BULAN değil bir şey KAÇIRAN denetimden doğdu: MERGE artık kimsenin bakmadığı dilim çiftlerini uzlaştırır; denetçinin kendi enstrümanları bilinen bir pozitif ve bilinen bir negatifle kalibre edilir; runtime kararı koştuğu eseri adlandırır — bayat bir derleme yeşili, kırmızıyı ve geçen tam süiti aynı güvenle bildirir · W6: alan probu hiç yanıtlanmadan bütün fazlar kapanabilir · registry şeması 1.10
Kıyas v1.5.0 G15/W7: bir uyarı veride, gerekçesiyle kabul edilebilir — böylece --strict katman düzenlemeye zorlamaz — ve uyarısı artık ateşlenmeyen bir kabul işaretlenir · W6: kısmi bir çürütülmüş-desen dökümüne karşı tarama "eşleşme bulunmadı" diyebilir, asla "temiz" diyemez · kural çiftleri, 50 kodun hepsi ayrışıyor
ux-mizan v0.7 Kural değişikliği yok. ux_to_backlog.py: doğrulanmış bulgu düzeltme görevine, ölçülmemiş bulgu ölçüm görevine dönüşür · lostness görevi ilk başarı ekranında bitirir · boş bir tarama temiz bir uygulama gibi okunmak yerine çıkış 2 verir

Kurulum

Skill başına iki yol.

  • Claude.ai / masaüstü / mobil: deponun release'indeki .skill dosyasını yükleyin (Ayarlar → Yetenekler → Skills).
  • Claude Code: skill/<ad>/ klasörünü ~/.claude/skills/ içine kopyalayın. Yol ~/.claude/skills/<ad>/SKILL.md ile bitmeli — en sık hata çift iç içe klasördür.
  • Diğer ajanlar (denenmedi): her skill, açık skill formatında düz bir SKILL.md klasörüdür; bu yüzden bu formatı okuyan ajanların — Cursor, Codex CLI, GitHub Copilot, Gemini CLI ve diğerleri — onu kendi skills klasöründen yüklemesi beklenir. Hiçbiri denenmedi. Test edilmiş taşınabilirlik Claude ortamları arasındadır; başka yerde bunu bir hipotez olarak ele alın ve gördüğünüzü bir issue olarak açın.

Bunun çalışması için asistanınızı yapılandırmanız gerekmez. Özel talimat yok, sistem promptu yok, ev stili yok. Bir skill yalnızca kurulumunuz belirli bir şekilde ayarlandığında düzgün davranıyorsa, bu skill'in kusurudur — lütfen issue açın.