npx skills add ...
npx skills add srinitude/skills --skill by-design
Use when any request arrives, and especially when it touches a screen, component, flow, brand, layout, typography, colour, motion, copy, icon, form, table, dashboard, navigation, onboarding, pricing, checkout, notification, accessibility, design system, or brief. Use when choosing between directions, when shaping something unbuilt, when reviewing, critiquing, or shipping work, and during ordinary design conversation. A request that holds no design surface costs one command and nothing else. Keywords: design, redesign, review, crit, critique, feedback, mockup, wireframe, prototype, trade-off, decision, rationale, pre-ship, ready to ship, looks generic, which direction, style guide, design token.
npx skills add srinitude/skills --skill by-design
Read this rule first, because every step below serves it: one row per decision, and one question at most per reply.
This skill runs wherever Python 3.11 or newer and a shell are available. It uses the standard library only and needs no network access.
The name is the question this skill asks of every choice in a piece of work. Was it by design, or did it arrive with a template and stay?
This skill surfaces decisions rather than reviewing designs. Critique, choosing a direction, and shaping unmade work are the same act at three moments: after a decision, during it, and before it. So the job is one sentence. Find the decisions in this work, name what each one trades away, and say which ones nobody actually decided.
That last part carries the value. Weak design usually comes from choices nobody experienced as choices, such as a grid carried over from another page or a tone borrowed from a competitor.
| Command | What it does |
|---|---|
| help | Show this table and one line per command. |
| watch | Default. Record decisions to the ledger and reply with one question at most. |
| judge | Read an existing screen, component, flow, or copy block and fill the ledger from it. |
| choose | Lay out the trade-off between two or more directions and leave the choice open. |
| shape | Open ledger rows as empty slots for work that does not exist yet. |
| audit | Test which stated constraints in a brief are real and which are hardened choices. |
| ask | Return the full slice of questions and leave the ledger untouched. |
Run watch when the user names no command. Pick the posture from what arrives, using this table, and treat the user's words as stronger than the attachment.
| What arrives | Posture |
|---|---|
| one artifact, such as a screenshot, a link, or a copy block | judge |
| two or more options, or a stated fork | choose |
| intent alone, with nothing built | shape |
| a brief or a list of stated rules | audit |
| a request for questions, phrased as give me or list | ask |
Run every step in order. Each step names one action and the result it must produce. When a result differs from the one named, fix it and run that step again before moving on.
mise run gate --text "<the request>". A line starting with not-design ends the run here, and this skill contributes nothing to the reply. A line starting with design continues to step 1. Result: one verdict line, and on not-design no further step runs.mise run ledger show --file decision-ledger-<slug>.md. Exit 1 means the ledger is new, so run mise run ledger init --file decision-ledger-<slug>.md --slug <slug>. Result: the file exists and you can list the decisions already in it.mise run locate --file <artifact>, or pass the request with --text, passing those state words to --hint when they matter. Result: a ranked list, each place carrying its score, how many terms earned it, and which ones. A weak read line on stderr means the ranking should not be trusted, either because one term carried the top place or because the top two are too close to separate. When it appears, name the artifact type yourself and run it again with --hint "<the words for what this is>", which is how a discipline the vocabulary does not cover still lands.mise run slice --category "<category>" --stage <stage> --match "<a noun from the artifact>" --limit 20. Result: exit 0 and a list of questions. Read stderr: a widened: line means the pin loosened, so say that in the reply. A match that finds only one or two questions loosens the other pins first and keeps the match, because the word from the artifact is the pin worth holding. A dropped match line means the shelf does not talk about your craft in your craft's words, so say that in the reply and write the rest of the rows from the work rather than from the slice. Pass --match with a word the artifact itself uses, because the category alone returns what is common rather than what is here.mise run ledger add --file decision-ledger-<slug>.md --decision "<text>" --chosen "<text>" --trades "<text>" --risks "<text>" --origin <deliberate, inherited, or open> and, when a question from step 4 raised the row rather than the artifact, --source "<question id and url>". Result: one appended line per decision, and a file that says which rows came from looking and which came from the library.mise run ledger count --file decision-ledger-<slug>.md --decision "<text>", and show to count the rows and the inherited ones for the reply line. Result: numbers taken from a command rather than from memory, which step 10 then checks against the file.mise run speak --file decision-ledger-<slug>.md --rank to order the inherited rows by how little is known about each, then run mise run speak --file decision-ledger-<slug>.md --decision "<the first ranked row>" --origin inherited --live yes. Result: an ordered list, then a line starting with ask or hold. Put one question in the reply when that line starts with ask.mise run check-reply --file <draft path>, adding --full-slice for the ask posture and --ledger-dir <folder> when the ledger does not sit beside the draft. This reads the ledger named in the reply and checks its counts against the file, so a number nobody ran fails here. Result: the line draft passed every rule. Any other line names what to fix, so fix it and run this again.Resource gate: run mise run validate before using package files named here.
Step 8 answers this, and the script holds the counts so the answer stays the same each time. Speak when a decision is live, the choice arrived inherited, and the ledger has seen it fewer than three times. Stay quiet in every other case and write the row anyway. Silence is the common and correct outcome.
References for the reasoning behind that rule sit in references/interruption.md.
mise run locate at step 3.mise run bench.mise run test: run these. --help on any of them prints flags, exit codes, and an example.mise run crafts: run to see how far this skill reaches across design occupations, and --thin to list the crafts their own shelf serves thinly.mise run test: run mise run test after changing any script.mise run bench: run after any change to the vocabulary, the term index, or the scoring, and after any run on real design work.Every real design task run through this skill becomes a permanent fixture, so a later change cannot quietly undo what this one fixed. Run these steps at the end of any run on real work.
evals/files/brief-<nn>-<slug>.txt. Result: a file that reads like the request rather than like a test.evals/files/briefs.json. Result: one key added and no existing key changed.evals/files/non-design.json. Result: one more request the gate has to stop.mise run bench. Exit 1 names every measure that fell, so fix the cause and run it again. Result: the line exit 0, meaning no measure sits below the recorded baseline.mise run bench --update only after step 4 passed and only when this run added a fixture. Result: a baseline no later run may fall below.The baseline in evals/baseline.json holds the gate measures and, for each fixture, the rank position of the shelf that was right. Position is the sensitive part. A weakened vocabulary moves a shelf from second place to fifth long before it leaves the top three, and only the position notices that.
Never lower a recorded number to make a run pass. A measure that fell is a report about the change, not about the fixture.
Resource gate: run mise run validate before using package files named here.
Yes, and the fastest route is to say what you do. assets/disciplines.yaml maps two hundred occupation names to the shelf their decisions live on, from art director to naval architect to floral designer, so naming the craft lands the slice in one step. Measured across sixty five occupations, each given one line of real work in its own trade language, every one passes the gate, sixty two land the right shelf first and all sixty five land it in the top three.
The method is craft agnostic and the library is not evenly deep. Nine of the sixty five crafts are thinly served by the shelf they belong on, and they are named in references/disciplines.md rather than left to be discovered mid run. It is thickest around screens, brands and product and thinner around flowers, tailoring and lighting rigs. When the shelf is thin, the columns still hold, so read the slice as prompts and write the rest of the rows from the work. references/disciplines.md carries the placement table for a craft that is not listed, and the two lines to add so the next person does not have to.
Facts belong elsewhere. A skill that captures design context owns tokens, screen inventories, acceptance criteria, and stated rules. This skill owns decisions. The seam matters: every stated rule in a brief is a choice somebody made and then wrote down as a constraint, which is what the audit posture tests. A skill that enumerates screen states owns the state list, and this skill attaches decisions to those states.
--hint rather than as a note.--match returns what is common in that category rather than what is in front of you. Pass a noun the artifact uses.On a not-design verdict the work is done at step 0, with nothing written and nothing said. Otherwise the work is done when the ledger holds one row per decision, every row carries an origin, the reply follows the template with counts taken from commands run in this turn, and mise run check-reply printed draft passed every rule.
The accepted outcome is: Turn a named design intent into a reviewed design decision ledger backed by rendered evidence. Preserve current design decision ledger behavior while changing its smallest owner.
mise run ci and record its digest.mise run domain-research-policy, then judge the current design decision ledger sources and counterevidence.mise run agentic-request for the named design decision ledger operation. Keep semantic choices with the model.mise run decision-policy, mise run ci, and the behavioral evals. Return to the lowest failed owner.mise run invocation-policy -- <receipt> and account for every task or its domain-specific non-use.mise run improvement-policy. Keep one changed dimension only if no protected dimension regresses.Load assets/use-case-contract.json through mise run use-case-policy and evals/evals.json through mise run evals only when their contracts are needed.
Mise owns repeatable mechanics, ordering, receipts, and checks. The model owns interpretation, causal judgment, creative work, and direct perception that code cannot supply. Stop on missing authority, stale evidence, or a failed gate.