Score
"Don't guess. Score."
Weighted dimension scoring framework for AI agents.
How to use
Understand first, score second. Ask enough questions before defining dimensions. Wrong dimensions → wrong scores, no matter the precision.
Draft then iterate. When needs are not fully clear, make a best-effort standard, score, and show results. Users react to concrete rankings — "this factor should be higher", "you missed X". That's the signal. Refine and re-score. One iteration beats ten rounds of guessing.
The agent is the analyst. After compute, read the TSV. Explain why X beat Y. Highlight surprises. Suggest adjustments. The ranking starts the conversation, not ends it.
Core flow
① Understand needs → ② Define score.yml → ③ Score score.tsv → ④ x score compute → ⑤ Report & iterate
Output: target, total, rank, block, reason, <dim> (X%), evidence. Total 0–100, sorted descending. rank=1 best.
Example — helping a user decide on promotional slogans
- Discuss with the user to define evaluation dimensions and criteria. Write
slogan.score.yml.
- AI scores each slogan per dimension (0–10, with evidence) →
slogan.score.tsv. Leave total and rank blank.
x score compute slogan.score.yml slogan.score.tsv → fills total + rank.
- Read results, discuss with user. Adjust scores or add candidates, repeat.
- Or:
x score iter -f slogan.score.yml slogan.score.tsv "<feedback>"
More examples: EXAMPLE.md.
Two-file model
*.score.yml — Reusable standard: dimensions, factors, descriptions
**.score.tsv — Targets + scores + evidence; column 1 = target name
x score compute <yml> <tsv> same as python compute.py.
Application scenarios
- Gives agents a decision workflow. score.yml anchors the agent to a structured process — the agent follows the standard, not the mood of the last message.
- Decisions are rule-based. Dimensions × factors × evidence → weighted total → rank. Every score is anchored to facts. Reasoning is transparent.
- Tunes to different needs. Swap dimensions, adjust factors, add hard filters (
block column). Same template, different users.
- Evolves as needs clarify. Draft → score → feedback → refine → sharper.
- Standard file + archived results for any skill. score.yml = decision standard. score.tsv = decision record. Both archivable, reviewable, shareable.
Formula
total = Σ(factor × score) ÷ Σ(factor) × 10 → 0–100
- factor — integer 1–10. Baseline = 2. 1=minor, 4=2×, 6=3×, 8=4×, 10=5×. Auto-normalized.
- score — 0–10 per dimension, evidence-anchored.
- total — weighted total 0–100.
Dimension headers show weight %:
factor ÷ Σ(factor) × 100.
Output columns
| Column |
Source |
Description |
target |
input |
Candidate name |
total |
computed |
Weighted score (0–100) |
rank |
computed |
1 = best. X if blocked |
block |
input |
Hard filter — non-empty = disqualified, pushed to bottom, rank=X |
reason |
input/output |
Optional: AI notes on score nuances |
<dim> (X%) |
computed |
Scores per dimension, header shows weight % |
evidence |
input |
Facts backing each score |
Scale
- 9–10 — Excellent — fully meets criteria
- 7–8 — Good — meets criteria, minor gap
- 5–6 — Adequate — direction right, notable miss
- 3–4 — Weak — significant gap
- 1–2 — Fail — barely addressed
- 0 — N/A — not applicable
Rules
- Evidence anchoring — every score MUST have evidence. Facts, not feelings.
- Use the full range — 5 is midpoint, not default. 0 and 10 are rare but possible.
- Factors are relative amplifiers — factor 2 = 2× influence of factor 1. Auto-normalized.
- Targets unique and non-empty — column 1 every row must have a target name. No duplicates, no blanks.
- Agent reads, reports, decides — after compute, explain results. Re-score or re-weight as needed.
Files
SKILL.cn.md — Chinese version
compute.py — Validates + computes total + rank
template/*.score.yml — 35+ templates. x score ls lists, x score init -t <name> copies
EXAMPLE.md — More usage examples
rule-vs-score.md — When to use rule vs score
score-template-writer.md — How to write scoring templates
Related
- rule — paired compliance companion
- naming — candidate names scored here
1---2name: score3description: Weighted dimension scoring framework for AI agents — "Don't guess. Score." Core idea: understand needs first, draft then iterate, the agent is the analyst. Outputs ranked TSV via `x score compute`.4---567# Score8"Don't guess. Score."9Weighted dimension scoring framework for AI agents.10## How to use11**Understand first, score second.** Ask enough questions before defining dimensions. Wrong dimensions → wrong scores, no matter the precision.12**Draft then iterate.** When needs are not fully clear, make a best-effort standard, score, and show results. Users react to concrete rankings — "this factor should be higher", "you missed X". That's the signal. Refine and re-score. One iteration beats ten rounds of guessing.13**The agent is the analyst.** After compute, read the TSV. Explain why X beat Y. Highlight surprises. Suggest adjustments. The ranking starts the conversation, not ends it.14## Core flow15```16① Understand needs → ② Define score.yml → ③ Score score.tsv → ④ x score compute → ⑤ Report & iterate17```18Output: `target, total, rank, block, reason, <dim> (X%), evidence`. Total 0–100, sorted descending. rank=1 best.19## Example — helping a user decide on promotional slogans201. Discuss with the user to define evaluation dimensions and criteria. Write `slogan.score.yml`.212. AI scores each slogan per dimension (0–10, with evidence) → `slogan.score.tsv`. Leave total and rank blank.223. `x score compute slogan.score.yml slogan.score.tsv` → fills total + rank.234. Read results, discuss with user. Adjust scores or add candidates, repeat.245. Or: `x score iter -f slogan.score.yml slogan.score.tsv "<feedback>"`25More examples: [EXAMPLE.md](EXAMPLE.md).26## Two-file model27- `*.score.yml` — Reusable standard: dimensions, factors, descriptions28- `**.score.tsv` — Targets + scores + evidence; column 1 = target name29`x score compute <yml> <tsv>` same as `python compute.py`.30## Application scenarios311. **Gives agents a decision workflow.** score.yml anchors the agent to a structured process — the agent follows the standard, not the mood of the last message.322. **Decisions are rule-based.** Dimensions × factors × evidence → weighted total → rank. Every score is anchored to facts. Reasoning is transparent.333. **Tunes to different needs.** Swap dimensions, adjust factors, add hard filters (`block` column). Same template, different users.344. **Evolves as needs clarify.** Draft → score → feedback → refine → sharper.355. **Standard file + archived results for any skill.** score.yml = decision standard. score.tsv = decision record. Both archivable, reviewable, shareable.36---37## Formula38```39total = Σ(factor × score) ÷ Σ(factor) × 10 → 0–10040```41- **factor** — integer 1–10. Baseline = 2. 1=minor, 4=2×, 6=3×, 8=4×, 10=5×. Auto-normalized.42- **score** — 0–10 per dimension, evidence-anchored.43- **total** — weighted total 0–100.44Dimension headers show weight %: `factor ÷ Σ(factor) × 100`.45## Output columns46| Column | Source | Description |47|--------|--------|-------------|48| `target` | input | Candidate name |49| `total` | computed | Weighted score (0–100) |50| `rank` | computed | 1 = best. `X` if blocked |51| `block` | input | Hard filter — non-empty = disqualified, pushed to bottom, rank=X |52| `reason` | input/output | Optional: AI notes on score nuances |53| `<dim> (X%)` | computed | Scores per dimension, header shows weight % |54| `evidence` | input | Facts backing each score |55## Scale56- 9–10 — Excellent — fully meets criteria57- 7–8 — Good — meets criteria, minor gap58- 5–6 — Adequate — direction right, notable miss59- 3–4 — Weak — significant gap60- 1–2 — Fail — barely addressed61- 0 — N/A — not applicable62## Rules631. **Evidence anchoring** — every score MUST have evidence. Facts, not feelings.642. **Use the full range** — 5 is midpoint, not default. 0 and 10 are rare but possible.653. **Factors are relative amplifiers** — factor 2 = 2× influence of factor 1. Auto-normalized.664. **Targets unique and non-empty** — column 1 every row must have a target name. No duplicates, no blanks.675. **Agent reads, reports, decides** — after compute, explain results. Re-score or re-weight as needed.68## Files69- `SKILL.cn.md` — Chinese version70- `compute.py` — Validates + computes total + rank71- `template/*.score.yml` — 35+ templates. `x score ls` lists, `x score init -t <name>` copies72- `EXAMPLE.md` — More usage examples73- `rule-vs-score.md` — When to use rule vs score74- `score-template-writer.md` — How to write scoring templates7576## Related7778- [rule](../rule/SKILL.md) — paired compliance companion79- [naming](../naming/SKILL.md) — candidate names scored here