grade
Skill0 starsChanged 18 days agoApache-2.0View on GitHub
Grade part of a codebase A–F against an explicit rubric and keep the result in a durable tracker: code quality, data integrity, UX and accessibility, localization, or parity between two inventories (rubrics/*.md). Evidence for every grade, gaps classed Blocker/Improvement/Nice, an ordered path to A+, stable IDs, and resume-don't-restart. Use for audits, due diligence on inherited code, production-readiness reviews, or tracking quality over time. Tests use test-necessity; LLM call sites use ai-exchange.
4 other projects use a version of this.
Adopted by
Most recently taken up by
- nicolasgarcia214/mazotheir own version, first seen Nov 8, 2026
- Tcuzzo/backs-aios-skillstheir own version, first seen Nov 3, 2026
- brianharms/skill-gradetheir own version, first seen Oct 15, 2026
- jorekai/skillstheir own version, first seen Sep 7, 2026
Other versions4 projects use a version of this.
Word for word · 0
None found.
Edited · 0
None found.
Wrote their own version · 4
- Tcuzzo/backs-aios-skills★ 2same name
- brianharms/skill-grade★ 0same name
- jorekai/skills★ 0same name
- nicolasgarcia214/mazo★ 0same name
How matches are found. Word for word: the exact same text. Edited: shares passages with this file (“99% same” means 99% of its five-word phrases also appear here; 10% or more counts). Their own version: similar meaning, or, weakest, the same name. We can’t tell which project had it first. Projects are counted among the 200 most-starred candidates, and mentions are links to the repository we found, up to 50 per site, so both counts are a floor.
In this repository15 other files it gives its agents.
- ai-exchangeSkill
- cleanupSkill
- design-reviewSkill
- evidence-rulesSkill
- live-ai-checkSkill
- mine-skillsSkill
- open-prSkill
- parallel-workSkill
- plan-tasksSkill
- releaseSkill
- review-changeSkill
- ship-changeSkill
- skill-evalSkill
- test-necessitySkill
- write-specSkill
The file
We split this skill into the rules it gives an agent
5 rules. 0 are common, 4 are distinctive, and 1 is very specific to this project.
0
Common
Most of the 3 edited versions we read keep these.
4
Distinctive
This author's own choices. Worth a look.
1
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Distinctive: line 24
Read the rubric file before grading.
- Distinctive: line 32
If it doesn't exist, create it from the template at the end.
- Very specific: line 65
Run every check that can be run before forming an opinion: the rubric's scans, the project's linters and type checks, and {{cli}} census …
- Distinctive: line 84
Caps apply: if the rubric says a blocker caps an area at D, it does, however good the rest looks.
- Distinctive: line 89
If you wrote or changed the code being graded in this session, don't grade it yourself.
“Common” is measured: kept by at least 6 in 10 of the 3 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.
Files
Grade
A grade is a tool for deciding what to fix next, not a trophy. An A+ is not "bulletproof"; it is honest. The risks are identified, mitigated and covered by tests, and the remaining risk is written down.
Pick the rubric
| Dimension | Rubric | Typical tracker |
| Engineering quality | rubrics/code.md | docs/assessments/CODE.md |
| Data integrity and lifecycle | rubrics/data.md | docs/assessments/DATA.md |
| UX, visual design, accessibility | rubrics/ux.md | docs/assessments/UX.md |
| Localization | rubrics/i18n.md | docs/assessments/I18N.md |
| Two inventories that should match (API ↔ client, routes ↔ CLI, features ↔ docs, schema ↔ prompt) | rubrics/parity.md | docs/assessments/PARITY-<name>.md |
| Tests | use {{skill:test-necessity}} | |
| LLM call sites | use {{skill:ai-exchange}} |
Read the rubric file before grading. It holds the dimensions, the grade caps and the scans for that dimension. This file holds the method they all share.
Step 0: Resume, never restart
- Find the tracker. If it exists, read it fully. You are updating it: keep ticked items and earlier grades, re-grade only what's in scope, and add a dated changelog line. Never silently drop a collection.
- If it doesn't exist, create it from the template at the end.
- Grade the code, not the documents. Decision records, manifests, READMEs,
feature flags and directory listings describe intent. Any grade based on them
instead of on code you read (or ran) is downgraded and marked "from docs". If local
is behind the remote base, grade the remote base (
git fetchand use a worktree).
Step 1: Scope
State the resolved scope before you start:
- No argument: the whole repository.
- A path: that subtree.
- A named area (a feature, a data domain, a screen): single-area mode. Inventory and grade only that area, and update only its section.
- A named concern (for example "orphans" or "keyboard access"): sweep every area for that concern only.
Step 2: Inventory (fan out)
Map the terrain cheaply first (git ls-files | sed 's/.*\.//' | sort | uniq -c | sort -rn).
Then, for anything larger than a few dozen files, send parallel scouts, one per
top-level area, each returning a structured inventory. Reading a large tree in one
context is slow and loses detail.
Group the inventory into collections: one per user-facing area, plus the debt collections the rubric names (for example Technical Debt or Accessibility Debt). Shared code goes to the areas that depend on it, or to a clearly labelled Cross-Cutting collection. Nothing is left unattributed.
Coverage arithmetic, stated in the tracker: graded + out-of-scope + unreachable = total. A pass that read 40 of 312 files and reports on the codebase is a false claim.
Step 3: Mechanical checks first
Run every check that can be run before forming an opinion: the rubric's scans, the
project's linters and type checks, and {{cli}} census for tests. A mechanical
finding is cited as such. Opinion only fills the gaps that machines can't reach.
Step 4: Grade
Apply the rubric's dimensions to every collection, the same way for each, so letters compare across collections.
- A+: risks identified, mitigated and test-covered; remaining risk stated.
- A: sound; only minor, non-blocking polish left.
- B: generally sound; a few real gaps to close before production.
- C: works, with material gaps across several dimensions.
- D: significant defects or risks; not production-ready.
- F: broken, unsafe, or missing where it must exist.
Every grade cites evidence (file:line, a function, a command and its output).
Where two sides must agree (a schema and its consumer, a route and its client), cite
both sides. A letter without evidence is an opinion and doesn't go in the tracker.
Caps apply: if the rubric says a blocker caps an area at D, it does, however good
the rest looks.
Step 5: The author never grades their own work
If you wrote or changed the code being graded in this session, don't grade it yourself. Give an independent grader (a fresh subagent) the sources and the rubric, without your own score. Where you and the grader disagree, the grader's grade stands until evidence settles it. Before finalizing any D or F, run one refute pass: try to show the finding is wrong (a guard elsewhere, a test you missed, dead code). Findings that survive are recorded.
Step 6: Gaps and the path to A+
For each collection, name what keeps it below A. Classify each gap:
- Blocker: fix before production.
- Improvement: should fix.
- Nice: optional.
Then write an ordered path to A+. Each step is:
- incremental: reviewable and testable on its own;
- specific: names the file and the change, not "improve error handling";
- annotated with effort (S/M/L) and the risk it retires.
Some things static reading can't establish (visual quality, real data, live behaviour). List them in a human verification checklist. No area gets an A+ on static evidence alone where the rubric says verification is needed.
Step 7: Write the tracker
# <Dimension> assessment — <scope>
> Last updated: <date> · Scope: <…> · Method: <mechanical checks + N scouts + independent grader>
## Grade summary
| Collection | Grade | Target | Open blockers | Open gaps |
|---|---|---|---|---|
## Coverage
Graded: N · Out of scope: N · Unreachable: N · Total: N. Assumptions: …
## <Collection> — Grade: <X>
**Evidence:** per dimension, with file:line.
**Gaps:**
- [ ] `ABC-1` (Blocker) <gap> — `src/x.ts:42` — effort M
**Path to A+:** ordered steps referencing the gap IDs.
## Human verification checklist
- [ ] …
## Changelog
- <date>: <what was re-graded, closed or added>IDs are stable across runs: never renumber, and never reuse a closed ID. Use the real date for "Last updated" and the changelog.
Step 8: Remediate (only when asked)
Fix one gap ID at a time, with a test that fails before the fix
({{skill:test-necessity}} can show it can fail). Verify, then tick the item,
re-grade the collection, update the summary counts, and add a changelog line.
Report failures and skipped steps as they are.
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.

