Skip to content

Case study · Jul 2026 to present

Considered

A skill that makes AI coding agents write their design reasoning to disk before they build, deal a structure instead of picking one, and pass a fresh-context review they are not allowed to grade themselves. Reviewers preferred its output in both matched comparisons.

Role
Creator, designer, and product owner
Company
Considered (Simple Cortex)
Dates
Jul 2026 to present
The consider.style home page at desktop width. The headline reads Your agent can render. Considered makes it design.
Considered · consider.style · Design reasoning for coding agentsThe storefront for the skill, designed and reviewed with the skill. The page you are looking at is also its first dogfood.

TL;DR

Ask a coding agent for a dashboard and you get a plausible one. Nobody decided what question it answers. I built Considered to force that decision onto disk before any code exists, and to hand the verdict on the result to a fresh reviewer instead of the builder. I designed it, wrote its rules, and ran its evaluations, with executors writing code from my specs. It installs as a skill for Claude Code and other coding agents, ships under the Simple Cortex name, and has a marketing and docs site at consider.style. Work began on 2026-07-30 and continues. In a matched comparison against the same model without the skill, reviewers chose the Considered build in 24 of 30 pairings, and a fabrication problem the first evaluation exposed closed to parity in the second.

.CONSIDERED / SURFACE-ID /EVERY STEP READS FILES, NOT CHAT01initPRODUCT.mdreusable product context02GATEframeFRAME.mdbrief gate: 8 dims, /1603ROLLstructureSTRUCTURE.mdCONTRACT.mdthe dealt hand04composethe surfacecontract first, then build05FRESH CONTEXTcritiqueREVIEW-PACKET.mdREVIEW.jsona fresh context reads it06subtractremoval-only passupdates DELETED07hardenreal statesextremes and recovery08documentDESIGN.mdportable system recordA SESSION CAN DIE BETWEEN ANY TWO STEPS. THE NEXT ONE RESUMES FROM DISK.
The chain, left to right. Each command writes one file under .considered/ and the next command refuses to start without it. No build code exists before the contract does.

A plausible layout is not a decision

Three failures kept showing up, first in my own agent work.

Structure by accident: the biggest number on the screen is whatever came first in the data. Template gravity: left alone, a model reaches for the same card grid every time, so everything comes out competent and interchangeable. Self-certified quality: the agent that built the thing announces it is done, and nothing can tell it no.

All three trace to one cause. The reasoning happens in a single pass, inside a context window that is gone tomorrow, and the same model grades it. A better prompt does not fix that. Artifacts and a gate do. So the product is not advice about design. It is a sequence of files and a check that a bad build can actually fail.

What I did

I built the chain: init, frame, structure, compose, critique, subtract, harden, document. Each step writes a file under .considered/ (a product file, a frame, a structure, a contract, a review packet, a verdict). The rule that holds it together is that no code gets written until the contract exists on disk.

The first gate is on the brief itself. frame scores it on eight dimensions out of 16: who the human is, what they decide, the consequence, how often, how success is measured, scope, constraints, and what exists today. Below 8, the agent may not design. Its only deliverable is a short question loop, at most three ranked questions at a time. Questions come in tiers, exactly one of them the focal point, and every element on the surface has to trace back to a question or be deleted.

Then the part I changed my mind about most: who picks the structure.

The obvious design, and the one the research I started from prescribes, has the agent propose two or three structures and choose. I ruled that out. Ask a model for options and it produces a varied shortlist, then crowns the same winner nearly every run. Any selector I bolted on, including the model itself, collapsed back to option one. So the skill deals instead. roll hashes the surface, the mode, and a generation number into a deck of 26 structure laws and 30 visual directions, and returns three laws (an organizing axis, a depth strategy, a framing) plus one direction. The same key always yields the same hand, so a bad draw in the field is a replayable bug report. A reroll chains from the same key and excludes everything already dealt. The agent may not choose. The skill's own rule says it plainly: taste-picking is the failure the roll removes.

I did not invent assigned direction. It comes from published research by Impeccable, which I credit in the README. I extended it from visual direction to structure, and I bounded it with a rule that the direction serves the genre, so a dealt style can never override what the surface is for. Dropping the source's "two options minimum" was a deliberate break, and I recorded it: a new rule, ROLL-01, supersedes the old one with its rationale instead of quietly reusing its id.

A bad hand costs a build. In one informal round the settings surface drew a plain form stack and sat below the reference builds in two of three judgings. I took that over letting the agent shop, because the analytics surface won blind panels twice under two entirely different dealt hands, which told me the structure was doing the work and the costume was not. These were informal rounds, run before I found the register confound, so I read them as direction, not evidence.

KEYcns-…same key, same handROLLone pick per layerrerolls chain from the keyORGANIZING AXIS1 of 10what the surface is sorted byDEPTH STRATEGY1 of 6how much shows at restFRAMING1 of 10what the first screen leads withVISUAL DIRECTION1 of 30the look, from a named sourceAGENTpicks by tasteNOT ALLOWEDTASTE-PICKING IS THE FAILURE THE ROLL REMOVES
One key, one hand: three structure laws and one visual direction, dealt the same way every time. A reroll moves forward from the same key and never lets the agent pick.

Then the review. The builder freezes a review packet. A fresh reviewer sees only that packet, the built artifact, and a reference marked reviewer-only. It runs eight passes and scores nine dimensions to a total of 140, with findings graded from blocker to polish. Ship takes a score of 120 or better, zero blockers, at most two major findings, and a floor of 3 on purpose, information architecture, hierarchy, accessibility, and craft. Those five cannot be bought back by strength elsewhere. And an unverified check is recorded as blocked, never as passed.

An honesty clamp rides alongside: every claim a surface renders must trace to a fact the brief supplied, and the chain's own vocabulary never shows up as interface copy. In September I ported the deterministic commands to a native Rust engine with a Node fallback.

NINE DIMENSIONS, WEIGHT 2 TO 5, SCORED 0 TO 4D1Purposex5FLOOR 3D2Architecturex5FLOOR 3D3Hierarchyx5FLOOR 3D4Action clarityx4D5Contentx4D6Statesx3D7Accessibilityx4FLOOR 3D8Craftx3FLOOR 3D9Responsivex235 weight x 4 = 140WEIGHTED SCORE OF 140REDESIGN 83 OR LESSREVISE 84-119SHIP 120 UPSHIP120 or more, no S1, at most 2 S2, floors at 3REVISEshort of the line, or a floor missedREDESIGN83 or less, D1 or D2 at 1, or over 4 S2WHY FLOORS129 of 140 with D7 at 2 is Revise.Strength elsewhere does not buy it back.
Nine weighted dimensions to 140. Five carry a floor that strength elsewhere cannot buy back. Ship, Revise, and Redesign are decided by the reviewer, never the builder.

What the measurements said

I tested it the way I wanted a stranger to: same builder model in both arms, ten scenarios, three model reviewers per scenario, with the build labels hidden. The hiding was imperfect, and I say where below.

The first matched evaluation came back with a headline I liked and a number I did not. Reviewers preferred the Considered build in 26 of 30 pairings, 87 percent. They also flagged unsupported claims more than twice as often in its output, 11 flags against 5 for the unassisted build. The structure that makes surfaces richer also gives a model more room to invent: fabricated names and email addresses, policies nobody supplied, made-up durations. I put that finding in the README with equal billing, and the next day I wrote the first five honesty rules to clamp it.

The second evaluation reran the protocol against the corrected skill. Reviewers chose Considered in 24 of 30 pairings, 80 percent, and gave it a Ship verdict 16 times against 4 for the baseline. Unsupported-claim flags landed at 8 against 9. The deficit that undercut the first result was gone. The accessibility floor held in 29 of 30 Considered builds against 18 of 30 for the baseline.

It also lost two scenarios, and the record keeps them. A dense settings screen lost unanimously. That build had marked its own render checks blocked under browser contention and then self-gated Ship anyway. The reviewers found a permanently visible unsaved-changes bar, an illegible wayfinding badge, and a broken focus trap in a live keyboard run. That is self-certified quality, caught in my own evaluation. The skill's own fallback under browser contention had let it through. The portfolio scenario lost two to one, and its recurring complaint, that case modules held no evidence until you interacted with them, became a new rule the same day.

CONSIDEREDUNASSISTED BASELINEBLIND PAIRWISE PREFERENCEvotes out of 30, higher is better for each armm0-001264m0-002246UNSUPPORTED-CLAIM FLAGSfabrication, lower is betterm0-001115AGAINST CONSIDEREDm0-00289PARITYD7 ACCESSIBILITY FLOOR PASSreviews out of 30, measured in m0-002m0-0022918
Two matched evaluations. Preference held at 26 of 30 and 24 of 30. Unsupported-claim flags went from 11 against 5 to 8 against 9. The accessibility floor held in 29 of 30 builds against 18 of 30.

The reviewers are models, not people, and ten scenarios is small. I treat every number here as descriptive. How I found the harness quietly leaning in my favor is told in Blind, or It Does Not Count.

Outside the evaluations, I use it. A volunteer-organization dashboard scored 79 of 140 on its first review and shipped at 133 on its fourth. The Floor You Cannot Buy Back tells that story. The Considered landing page itself shipped at 121 after repeated re-reviews.

A consider.style documentation page on a phone.
The docs site on a phone. It went through the same chain and the same gate as everything it describes.

Reflection

The gate is the product. The deal tables and the question loops get the attention, but the thing that changed outcomes was a verdict nobody on the build side can write. The settings build that lost had marked its own render checks blocked and still called itself done. A reviewer with no stake in the build is the only fix I have found.

The evidence is a published protocol. Model reviewers, ten scenarios, one builder model, and a partial unblinding in 14 of 30 review forms. What the results show is a repeatable procedure, including the two places it lost. Adoption is not the claim here. The method is.

A rule corpus is a liability I signed up for. There are 193 rules at the latest release. The rules added since the early releases were each minted from a documented finding, and all 193 are now mine to keep true. The cost showed up as drift between documents. That is why the gate's numbers live in a data file the gate reads. The prose still has to catch up, and in October it had not.