The marking scheme
Every mark traces back to something in the repository. No model judges your code and there is no discretion in the number. The whole scheme is checks against files, and you can read the source.
What is marked
Instructions, 27 marks. Whether an AGENTS.md, CLAUDE.md, or equivalent exists, and whether it does anything useful. A file that never names a build or test command scores badly however long it is.
Setup, 20 marks. A lockfile, discoverable commands, a documented environment, a pinned runtime. The question is whether an agent gets the project running with nobody watching.
Verification loop, 25 marks. The heaviest section. Tests that exist, a test command an agent can actually find, CI, linting, type checking. An agent that cannot check its own work is guessing, and this is what separates useful output from confident nonsense.
Context economy, 20 marks. Committed build output, oversized source files, repository weight. One 400KB file forces an agent to work from fragments and edit code it never read.
Navigability, 10 marks. Documentation, a description, a licence.
The rules we apply to ourselves
Checks that do not apply are not counted. A library has no environment to configure and no reason to ship a Dockerfile. Those are marked not applicable and removed from the total rather than scored as zero, so nothing is punished for being what it is.
Link collections are marked separately. Many of the most-starred repositories on GitHub are curated lists, books, and tutorials. Asking whether an agent can install a list of links means nothing, so those are kept off the class list and out of every published statistic.
Nothing is executed. No code runs and no repository is cloned. Marking is two GitHub API calls plus a few small configuration files read from a CDN. Private repositories cannot be marked at all.
Some marks will be wrong. The scheme is opinionated and the detection misses things, particularly outside JavaScript and Python. It is open source, so the useful response is a pull request adding the case we got wrong.
Read it as plain text
Any report is available as text, so an agent can read its own scorecard without a browser.
$ curl agentreadme.com/honojs/hono.txt