agentleFS
ArcticFox2029ArcticFox2029/chamnan/skills/decide/SKILL.md

decide

Skill10 starsChanged 7 days agoMITView on GitHub

A reusable decision procedure, and a copyable prototype for the guard that encodes it — derive the population, set one threshold by what being wrong costs, name the offender, and break it once to prove it can fail. Use when writing a check, guard, gate or validation of any kind, or when deciding whether something is safe, done, duplicated, stale, or worth doing — so the shape is the same every time instead of re-derived per session.

51 other projects use a version of this.

Adopted by

Most recently taken up by

Used with

Projects with it also use redesign, weekly and 10 more.

Other files people use alongside this one.

Files found in the same public projects as a version of this one, more often than they turn up anywhere else. Each project counts once, large collections count for less, and this file's own repository is left out.
  • arjunkshahSkill

    redesign

    Redesign existing interfaces to premium quality while preserving product goals and functional behavior.

    Also in 3 projects that use this

  • gaiaaiagentSkill

    weekly

    Generate a weekly digest rolling up dailies into higher-level pattern analysis

    Also in 3 projects that use this

  • SethGammonSkill

    experiment

    Automated optimization loop with scalar fitness function. Proposes changes in isolated worktrees, measures with a metric command, keeps improvements, discards failures. Supports convergence detection and diminishing returns.

    Also in 3 projects that use this

  • kv0906Skill

    inbox

    Quick capture mode (with content) or batch processing mode (no content). GTD-style routing of inbox items to proper folders. Use "/inbox thought to capture" or "/inbox" to process.

    Also in 3 projects that use this

  • AnthropicSkill

    brief

    Generate contextual briefings for legal work — daily summary, topic research, or incident response. Use when starting your day and need a scan of legal-relevant items across email, calendar, and contracts, when researching a specific legal question across internal sources, or when a developing situation (data breach, litigation threat, regulatory inquiry) needs rapid context.

    Also in 5 projects that use this

  • genomewalkerSkill

    health

    Soul system health check with remediation

    Also in 3 projects that use this

The file

We split this skill into the rules it gives an agent

5 rules. 0 are common, 5 are distinctive, and 0 are very specific to this project.

  • 0

    Common

    Most of the 50 edited versions we read keep these.

  • 5

    Distinctive

    This author's own choices. Worth a look.

  • 0

    Very specific

    Tied to their project's names, files or tools. Probably skip.

  • Common
  • Distinctive
  • Very specific
  1. Distinctive:

    Write both before looking at anything.

    line 19
  2. Distinctive:

    Write down the question, the count, the band and what was done.

    line 93
  3. Distinctive:

    pinning the spelling of an implementation: instead of its behaviour — run it and read the outcome.

    line 157
  4. Distinctive:

    It is not a gate that blocks: Every decision here ends in an action, a notice, or a person — never in a refusal the reader cannot override.

    line 163
  5. Distinctive:

    It is not a confidence generator: If step 3 has nothing to count, the honest output is the bottom band.

    line 170

“Common” is measured: kept by at least 6 in 10 of the 50 edited versions of this file we could read. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.

Keep what fits and drop the rest. Your version, ready for your agents.
Files
SKILL.md

Decide from counted evidence, not from an impression

Code calculates. A model reasons. This decides. The pattern is borrowed openly from the decision models now being built for agent systems, and one thing is deliberately different: the confidence here does not come from a model. It comes from evidence you counted. Nothing in this procedure calls out, and nothing about it needs a network.

That difference is the whole reason it can be trusted offline — and the reason step 3 is the one that cannot be skipped.


1 · Name the decision, and what being wrong costs

Write both before looking at anything. The cost sets the threshold; there is no global one.

"Is this file safe to edit?" Being wrong means the edit is silently discarded. "Does this component already exist?" Being wrong means a wasted afternoon, recoverable. "Is this a credential?" Being wrong once is the whole product failing.

One threshold per action, scaled to that cost. A single number for the whole system is how a gate ends up too strict for cheap mistakes and too loose for expensive ones.

2 · Write the questions before you look

Each question gets a type, and the type is one of three:

typeshapeexample
choiceone value from a set you namedgenerated · hand-written · cannot tell
counta number, with what it is out of26 of 28 planted credentials caught
yes/nowith the evidence that decides itis a test command in this session's log?

Never a free-prose answer. Prose cannot be thresholded, cannot be compared to last week's, and cannot be checked by anybody else. If a question can only be answered in prose, it is not a decision — it is a discussion, and it belongs with a person.

3 · Answer each from something you counted — and record the count

This is the step that makes the rest honest.

A number you did not count is an impression wearing a number's clothes.

Where the counts come from, offline:

question shapewhat counts it
is this name used anywhere elsechamnan-where <name> — uses, not lines that mention it
what breaks if this changeschamnan-impact <file> — importers, covering tests
has this been decided beforechamnan-recall <subject>
does the behaviour holdthe check, run — and seen to fail before it is believed
does it hold on somebody else's codethe corpus, with the count it returns

Record what you EXAMINED, not only what you found. "No references" from a scan that skipped a file is not the same answer as "no references", and the difference is invisible unless the skipped count is on the line. Every report in this procedure carries both numbers.

4 · Three bands, and the middle one is not a failure

bandwhat happens
the evidence is complete and agreesact
the evidence is partial, or two signals disagreesay so and continue — name what is missing
the evidence cannot be counted, or being wrong is expensivehand it to a person

The bottom band is an answer. Routing a decision to a human is the procedure working, not the procedure giving up — and pretending to a number you could not count is the only real failure here.

5 · Test the threshold before trusting it

A threshold nobody has tested is a guess with a number on it.

Find a case where the answer is already known and check the band lands right. Where there is no such case, build one: a repository that has the defect, a file that names a path that has gone. Then break it the other way and confirm the band moves.

A credential-shaped fixture is the one case with a hard boundary, and it is not a style rule. Build it in a throwaway directory outside any repository, or in a corpus repository that exists for the purpose — never in a tracked file, and never anything that can be pushed. GitHub's secret scanning forwards a live-looking key to the provider within minutes of it reaching a remote, and the account that owns it is marked. A test fixture is not worth that, and the damage is not yours to undo. If a threshold can only be tested with a real-looking key, test it against a corpus somebody built for testing rather than against the repository you are working in.

A threshold that has never been seen to reject anything has not been tested, only run.

6 · Log the decision, then compare it with what actually happened

Write down the question, the count, the band and what was done. Later, check whether the decision was right. A threshold that is never compared with the outcome drifts silently, and the drift is only visible against a record.


7 · Encode the decision in a guard, so nobody decides it again

Steps 1-6 are how a decision gets made once. This is how it stops costing anything afterwards.

A model can reason its way to a good judgement every time — and pays for it every time, in the thinking and in the code it writes to express it. Where the answer is already settled, the cheap form is a guard that carries the decision, not a person or a model re-deriving it.

The prototype. Copy it and change the subject; do not re-invent the shape.

# 1 · the population, DERIVED — never a list you typed
subjects = scan(where)                    # glob, walk, parse — anything but a literal list

# 2 · the measurement is a failure when it finds nothing
assert_that("the scan found the things it judges", len(subjects) >= floor,
            saw=f"{len(subjects)} found — every assertion below is vacuously true on zero, "
                f"which is how a broken measurement reports itself as a pass")

# 3 · one threshold, set by what being wrong costs (step 1), stated here and not in a model
offenders = [s for s in subjects if not holds(s)]

# 4 · the message says what to DO, and names the offender
assert_that("<the property, as a sentence that is true when it passes>", not offenders,
            saw=f"{offenders} — <what goes wrong for the reader if this is false>")

Six decisions it encodes, so they are made once and not per use:

in the prototypethe decision it carries
scan(where)derive the population; a typed list forgets the member added tomorrow
len(subjects) >= flooran empty population is a failure, not a quiet pass
offenders as a listreport WHO, not just that something is wrong
saw=the reader acts without opening the guard
the name as a true sentenceit reads as a property, not as a test id
threshold in the codenot in a prompt, not in a model, not re-argued

Then the one step that makes it real: break the thing and watch it go red. A guard never seen to fail has been run, not tested. If breaking it is impractical, assert the inverse in the same breath — assert_that("...", A and not B) — so a change in either direction is caught.

And the half everybody skips: show it can go GREEN for the right reason. Red proves the guard reacts to something; it does not prove it reacts to the thing you meant, and a guard that can only ever fail is indistinguishable from a broken measurement. So keep a known-good case beside the broken one and check it passes — the same shape a benchmark calls an oracle, a solution shipped with the task so that "nobody can pass this" and "the scorer is broken" stop looking identical.

assert_that("<the property>", holds(known_bad) is False)   # it can go red
assert_that("<the property>", holds(known_good) is True)   # ...for the right reason

The cheap version costs one extra line: whenever you build a fixture that the guard should reject, build its twin that it should accept, and assert both.

Four traps, each of which has produced a guard that passed while measuring nothing:

  • searching a whole document for a name that appears in it twice — slice to the region first
  • reading a value before the thing that sets it — compute into a name, then assert
  • pinning the spelling of an implementation instead of its behaviour — run it and read the outcome; pin text only where there is no runtime signature, and say why
  • a mutation that changes no verdict — it proves nothing; find the case that discriminates

What this is not

It is not a gate that blocks. Every decision here ends in an action, a notice, or a person — never in a refusal the reader cannot override. A tool that stops work on a number it could not fully justify will be turned off, and then none of its decisions matter.

It is not for choices with one obvious answer. Running six steps on something a glance settles is overhead dressed as rigour.

It is not a confidence generator. If step 3 has nothing to count, the honest output is the bottom band. Inventing a number to get past it is the one thing this procedure exists to prevent.

Download now (ZIP)

Does it work?

Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.

No reviews yet

People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.

  • It worked
  • Partly
  • It didn't
What did you use it for? e.g. Reviewing pull requests in a Rails app

Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.

Your trail

Files you open will collect here, so you can find them again.

Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.

Now do this for your own.

Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.