build-a-baseline
Skill39 starsChanged 23 days agoMITView on GitHub
Stop conclusions drifting between sessions by turning a judgement call into a fixed scoring rule over measured data, with the subjective inputs frozen in a file, the measuring instrument validated against a known-good source, and falsification thresholds written down before the test is run. Use when the user says you keep changing your mind, contradicting yourself, or have no baseline; when the same question has produced three different confident answers; when a decision rests on a vendor score nobody has checked; or before acting on any ranking you derived by reasoning rather than by rule.
In this repository21 other files it gives its agents.
- .claude/CLAUDE.mdCLAUDE.md
- connect-toolsSkill
- extract-lessonsSkill
- fact-checkSkill
- feature-demoSkill
- improve-skillSkill
- lean-outSkill
- mine-communitySkill
- one-time-surfaceSkill
- port-featureSkill
- reference-huntSkill
- researchSkill
- screen-atlasSkill
- search-pagesSkill
- see-it-workSkill
- session-endSkill
- set-goalsSkill
- setupSkill
- shipSkill
- store-listingSkill
- syncSkill
The file
We split this skill into the rules it gives an agent
10 rules. About 0 are common, 10 are distinctive, and 0 are very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈10
Distinctive · estimate
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
- Distinctive: line 44
Write the ranking as an arithmetic formula over named inputs.
- Distinctive: line 50
If the outside source publishes more than one version, that is not a problem to resolve by taste.
- Distinctive: line 82
Write all of that down before running the test, in the script, so the result cannot be reinterpreted into a pass.
- Distinctive: line 102
Keep them separate and make the feasibility check mandatory.
- Distinctive: line 113
Find an outside scoring rule: Search for a published method before inventing one.
- Distinctive: line 123
Fold the validated result back in: If an input failed, replace it.
- Distinctive: line 134
Put these in the baseline file itself, because the next session reads that and not this skill.
- Distinctive: line 137
Check the feasibility gate by hand before acting on any item.
- Distinctive: line 139
Never quote a number from the baseline from memory.
- Distinctive: line 141
Do not change a frozen input to win an argument.
≈ “Common” is an estimate: at least 1 in 5 of the 350,495 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
Build a baseline
Some questions get re-answered every session: which keywords matter, which channel to spend on, which feature to build next. Each pass gathers what it can, reaches a confident conclusion, and the conclusion is different from last time. That is not carelessness. It is what happens when the answer is produced by judgement over whatever happened to be in context, because context changes and judgement follows it.
The user experiences this as being unable to trust anything you say. They are right to, and the fix is not to try harder. It is to move the answer out of your judgement and into a rule that produces the same output from the same data.
One founder put the failure exactly: "you do research, you conclude something, then you look at more research, then change your mind. you have no baseline. so you just make it up every single time."
When this applies
Reach for it when any of these is true:
- The same question has had two or more confident, different answers.
- The user says you contradict yourself, or asks what your baseline is.
- A recommendation rests on a number from a vendor's tool that nobody has ever checked against anything.
- You are about to rank things (keywords, channels, features) by reasoning.
- New data keeps arriving and each batch feels decisive.
It does not apply to one-off factual lookups, or to genuinely new questions with no prior answer to drift from.
The five parts
A baseline is not a document of conclusions. It is four mechanical parts plus a rule about who may change them.
1. A fixed scoring rule, preferably somebody else's
Write the ranking as an arithmetic formula over named inputs. Prefer a formula published by an outside source over one you invent, for one reason that has nothing to do with it being better: a formula you invented is a formula you can quietly adjust, and the user cannot tell the difference between you refining it and you rationalising a new favourite answer.
If the outside source publishes more than one version, that is not a problem to resolve by taste. Test them (part 4).
2. The subjective inputs frozen in a file, with a date
Most scoring rules need at least one human judgement, like how relevant a thing is to this product. Put those numbers in their own file, date them, define the bands they come from, and write at the top: change a number only with a stated reason and a date, never to make a favoured option win.
This is the part that actually stops the drift. The formula was never the problem; the problem was re-deriving the inputs each time with a different mood.
3. An instrument whose limits you have validated
You will need to measure something at scale, and the cheap way to measure it is usually an approximation of the expensive way. Validate the cheap instrument against the trusted one on one case before using it on a hundred, and write down what it is not good for.
A worked example. A free public search endpoint returned substantially the same set of competing apps as the paid ranking tool, with correct numbers attached, but in a different order: it placed one app second that the paid tool did not show at all, and omitted two the paid tool did. So it is sound for "who competes here and how big are they" and must never be used for "who ranks where". Stating that limit in the script's own comments is what stops the next session using it for the wrong question.
4. Falsification thresholds, written before the test runs
For every input you are trusting, name the quantity that would show it is informative, the threshold it must clear, and what you will do if it fails. Write all of that down before running the test, in the script, so the result cannot be reinterpreted into a pass.
The worked example again: "does this vendor's difficulty score predict anything real? Test it against an independently measured quantity. Falsified if the rank correlation is below 0.4, in which case the vendor score is near noise for us and the measured quantity replaces it." It came back at 0.788 and monotonic across every band, so it passed, and that pass means something because it could have failed.
Expect to be wrong about which way a test will go. In the same session the assumption that a multiplicative formula would beat an additive one was tested and lost, 0.552 against 0.665. Being tested and losing is the skill working.
5. Two scores, never one, when attractiveness and feasibility differ
The most common silent error in a ranking is folding "how good would this be" and "could we actually do it" into one number. They are different questions, they are measured differently, and the second one is a gate rather than a term in a sum.
Keep them separate and make the feasibility check mandatory. In the worked example, even the better of the two published formulas separated achievable options from impossible ones at only 0.665, where 0.5 is a coin flip. That is the argument for the gate: a high attractiveness score is never sufficient on its own, and discovering that is only possible once the two are measured apart.
How to do it
- Name the recurring question and find every previous answer to it. Those answers are the evidence that a baseline is needed, and the list of things it will supersede.
- Find an outside scoring rule. Search for a published method before inventing one. Note every version it publishes.
- Write the inputs file and freeze the judgements, with bands and a date.
- Write the scorer as a script, not as a table in a document. A script reruns; a table rots. Have it read the measured data from wherever it already lands, so the baseline updates when the data does and not otherwise.
- Validate the instrument on one case against a trusted source. Write the limit into the script's comments.
- Write the validation script with thresholds stated in its own comments, and run it. Report n, the statistic, the threshold, and the verdict.
- Fold the validated result back in. If an input failed, replace it. If a feasibility gate exists, make it change the tiers.
- Write the baseline document, which carries: the vocabulary, the formula and its source, the inputs and where they live, the validation results, what the baseline currently says, and a list of the decisions it supersedes so they cannot be resurrected.
- Point everything at it. The project's rules file, and any older document that used to hold the answer, should say the ranking lives in the baseline now.
The rules that go in the finished document
Put these in the baseline file itself, because the next session reads that and not this skill.
- Check the feasibility gate by hand before acting on any item. The score cannot see it.
- Never quote a number from the baseline from memory. Re-run it and say the date.
- Do not change a frozen input to win an argument. Changing one changes every ranking derived from it.
- One position at a time. A new measurement updates the baseline. It does not start a fresh opinion in conversation.
- Record superseded decisions with the reason and the date.
What this skill will not do
- It will not make a wrong formula right. It makes a formula's output stable and its failures visible, which is a different and more useful thing.
- It will not remove judgement. It moves judgement into a named, dated, reviewable file instead of leaving it implicit in each session's reasoning.
- It will not tell you the answer is correct. A baseline that passes its own validation can still be measuring the wrong thing, which is why the superseded list and the stated thresholds matter.
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
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.

