İskele
Docs

Methodology — the core skill

Mirrored from the skill package. This is the canonical English text that Claude actually loads, published here so it can be read next to its Turkish mirror instead of only on GitHub. Edit the source above, not this page; the Turkish mirror is docs/tr/metodoloji.md.

Iskele

It builds a project: it turns a vague intent into an executable, trackable system of work.

The trio’s verbs are separate — iskele builds, mizan weighs, kiyas generates. Do not mix them: an evidence or audit question goes to mizan, an idea or stuck-point question goes to kiyas.

Why this skill exists

Planning output fails in two typical ways:

  1. A plan you cannot execute — there is a handsome roadmap, but “what do I do today” is unclear; tasks are not atomic, there are no acceptance criteria, and whether something is finished is open to argument.
  2. A plan you cannot track — a task list exists, but progress is estimated by hand; the report reflects the author’s feeling rather than the truth.

Iskele closes both: every task is atomic and carries an acceptance criterion, progress is computed from data, and the report becomes a derivative of the tracker.

When to use it, when not to

Use: a new project, product or major feature is being planned; an existing project has no backlog, no tracking or no acceptance criteria; the question is “where do I start”.

Do not use: a single file or function change (just do it); pure ideation (kiyas); auditing existing claims only (mizan); an urgent bug (fix it first).

The core loop — seven steps

Do not break the order. Each step takes the previous one’s output as input; a skipped step collapses in the next.

1. Elicit the constraints (ask; do not assume)

Architecture is decided by constraints, not preferences. Settle at least:

If the answers are unclear, ask in one round; never more than three questions. If the user already said it, do not ask again — derive it from the conversation.

Never ask empty-handed. Every question carries your own recommendation and its reason: situation, options, recommendation, why, and what it costs if the recommendation is wrong. A recommendation can be rejected in one word; a bare question hands the work back to the person who came for a plan. The decision stays theirs — a recommendation is not approval, and an unanswered recommendation is not consent. The same rule applies to every open item later: a blocked step, an ambiguity, a constraint that turned out wrong (references/recovery.md RR-10).

2. Find the domain model — look for the split (the critical step)

This step cannot be mechanised; but the question to ask is fixed: are there two things in this domain that get conflated but have separate life cycles?

Do not write a schema before the split is found. A schema built on the wrong split collapses mid-build and pushes rework onto every phase.

For the split patterns and how to hunt for them, read references/domain-model.md.

Output: entities, relationships, and the rationale for why the split is kept apart.

3. Build the phases and their gates

Phases are a dependency chain, not a calendar. Put a gate (milestone + go/no-go) at each phase exit. The rule: the next phase’s data to record must come from the previous one.

Per phase: purpose, scope, explicit out-of-scope (this is what prevents scope drift), exit criterion.

4. Atomise the backlog

Every task: ID · epic · layer · estimate (S/M/L) · dependency · acceptance criterion.

The concrete failure that produced this rule: a notification task was closed on the criterion “the relevant event produces a notification”. The endpoints and twelve tests were in place; the front end made not one notification call — the user could see no notification at all. One of the tests was named read_all_clears_the_badge: it was testing a badge that did not exist. The same class recurred four times in that project (audit trail, attachment deletion, password, notifications) and none of them came out of the plan — all four were noticed by accident.

5. Write the quality gates

Two levels:

6. Set up tracking and the generator

Setup and contracts: read references/tracking.md.

7. Hand off

When the kit is complete:

The handoff is a file, not prose. Two adapters carry it:

python scripts/iskele_to_registry.py --backlog 03-gorev-listesi.md --out registry.yaml
python scripts/kiyas_to_backlog.py --seeds tohumlar.yaml --phase F2 --out yeni.md
python scripts/iskele_results.py --xlsx tracker.xlsx --registry registry.yaml

Every acceptance criterion is a refutation condition written before the work started — precisely what Mizan’s R1 asks for. So the backlog is already a preregistration set; the adapter converts it into the schema Mizan reads, and in the other direction Kiyas’s “cheapest refutation” becomes an acceptance criterion directly.

The arbiter defaults to author, and it should stay that way. The person doing the work fills in the tracker’s Durum (status) column; that is self-report, not measurement, and Mizan closes promotion to K on it. If a task’s arbiter really is executable, name it in the backlog:

- *Kabul:* Yetkisiz istek 403 alır. **Hakem:** pytest tests/test_authz.py

The adapter will not upgrade the class unless you write it — a silent promotion is the most expensive kind of silent assumption.

The handoff is also a context cut point. In a long session every turn re-sends the whole conversation: the cost grows with the transcript, not with the finding. The moment the kit is written to files there is no reason to carry that weight — the next phase can start in a fresh session, because everything it needs (backlog, ADR log, tracker, handoff note) is on disk. Say so explicitly at the phase boundary; carrying the whole history forward out of habit defeats the kit’s reason to exist.

The everyday version of the same principle: read ranges, not files (search first, then open the lines you need), give fan-out searching to a subagent (let it return a conclusion, not raw material), and write a finding to the file the moment it is produced — a finding saved for the end is paid for on every turn and lost at the first context reset.

The loop closes: iskele builds → mizan weighs → kiyas generates → back into iskele.

The output manifest

The full kit is twelve pieces. On a small project you may shorten it, but say which piece you skipped and why — never silently.

# File Required Function
00 00-BASLA-rehber.md ✓ Map of the kit, reading order, working discipline
01 01-mimari-ve-veri-modeli.md ✓ Domain model, schema, architectural decisions
02 02-yol-haritasi.md ✓ Phases, gates, dependency chain
03 03-gorev-listesi.md ✓ Atomic backlog, acceptance criteria
04 04-kalite-kapilari.md ✓ DoD + go/no-go + security list
05 05-gelistirme-kurulumu.md — Local environment, run steps
06 06-riskler-ve-kararlar.md ✓ Risk register + ADRs (decision rationale)
07 07-ilerleme-raporu.html ✓ High-level report (GEN-marked)
08 tracker.xlsx ✓ Live tracking sheet
09 08-onboarding.md — One page of context for the team
10 09-kurtarma-rampalari.md ✓ Recovery ramps: what to do when a task, a gate or the plan does not hold
11 AGENTS.md ✓ The machine-facing signpost: what this project is, where each rule lives, what is forbidden

The file names above come from the templates in assets/templates/ and are examples; the order and the fields are what must not change (see the language note below).

Reading surface — the kit grows, the handoff cost must not

The manifest says which pieces exist; this section says how large they may get. Because if the kit’s handoff is cheap the session can be cleared, and that cheapness is not self-maintaining.

Two files are append-only by nature and must stay that way: the ADR log (a decision’s rationale is never deleted) and the closed part of the backlog (the evidence for an acceptance criterion is never deleted). Both are correct rules. Their intersection is expensive: the handoff surface grows without bound until “clear it and continue from the files” costs more than continuing to talk — which inverts the kit’s reason to exist.

Three moves, all the same pattern — the source stays, what is read shrinks:

When: at a phase close — the handoff is being written at that moment anyway (step 7).

A measured example, including the part that lowers expectations. On one project the handoff surface fell from 420 KB to 133 KB (ADR log: 177 KB of source → 19 KB of index, 9x); the arbiters and the progress generator were unaffected. But when the same handoff task was given to two fresh agents, the token difference was only 16% — while bytes fell 3.2x. The ratio does not carry, because the agent reads what it needs rather than the whole file. Write it that way: “we shrank the reading surface” is true in bytes and still overstates the token gain. The index’s real benefit is not size but direction — the indexed agent ran the generator and got the exact number, while the other read an estimate out of the prose. Justify it by going to the right place, not by size.

Templates: assets/templates/. The rationale for the piece list and what each file contains: references/kit-manifest.md.

Operating assumptions (this skill runs inside someone else’s setup)

Iskele is loaded into an environment that already has its own instructions — a project’s CLAUDE.md, org policy, other skills — and those take precedence. The resulting failure is quiet: a plan is still produced, it just stops being a kit and becomes prose. And a prose roadmap is exactly what this skill exists to prevent.

Red lines

These are real failure patterns; each has been seen in the field.

False precision. Do not present estimates as exact numbers. “~78.5 days” may be arithmetically correct and is still speculative as a duration estimate: the weights are the author’s choice and there is no velocity data. When you give effort numbers, state the basis and that they are uncalibrated; recalibrate once the first phase lands.

Happy-path verification. Before saying “verified”, ask: with what input? Verification run on well-behaved data never tests input validation. Try at least one edge case (invalid value, empty record, localised text).

Silent assumption. The generator must not fall back to a default for an unknown value; warn visibly, or do not write it. A silently wrong indicator is worse than a missing one. (In mixed Turkish/English data the ı/i folding is the classic trap.)

Skipping phases and scope drift. Do not enter the next phase before the gate is passed; write each phase’s out-of-scope list explicitly.

Auditing your own work. If you produced the kit and you are also auditing it, arbiter = author. Declare it plainly, and stop treating judgement claims as proven.

Invented numbers. Every number in the report is either computed from data or marked as an estimate. If it is neither, do not write it.

References