repograde-mcp
README.md
# ▲ RepoGrade
**Grade your repo before you announce it.** 33 checks across 6 categories on any
public GitHub repository — in one command, in ~15 seconds, with zero dependencies.
[](https://github.com/fastpresspages/repograde/actions/workflows/ci.yml)
[](LICENSE)





Part of [FastPress Labs](https://github.com/fastpresspages) — small, free, open
source tools for people who ship. Sister project: [LaunchGrade](https://github.com/fastpresspages/launchgrade)
audits the **landing page**; RepoGrade audits **everything behind the link**.
## Install
```bash
npx -p github:fastpresspages/repograde repograde owner/repo
```
An `npm publish` is planned once publishing credentials exist; the GitHub install
path above works **today** with zero install footprint.
```bash
repograde owner/repo # grade any public repo
repograde owner/repo -o report # + report.html/json/md, badge.svg, fix-plan.md
repograde --list # all 33 checks, grouped
repograde --fail-under 80 owner/repo # CI gate (exit 2 when under)
```
## What it grades
| Category | Weight | Highlights |
| --- | --- | --- |
| Documentation | 20 | README that explains the repo in 15s, install command, usage example, real changelog |
| Community | 15 | LICENSE (permissive preferred), CONTRIBUTING, Code of Conduct, SUPPORT, issue/PR templates |
| Engineering | 25 | Tests exist and CI runs them, declared toolchain, lockfile, zero-dep gentle flag |
| Discoverability | 15 | Description (15–90 chars), ≥3 topics, homepage link, activity within 90 days |
| Release hygiene | 10 | Tagged release, readable notes, tag matches package.json |
| Agent-readiness | 15 | AGENTS.md, installable skill, MCP/lang manifest, llms.txt |
Every check is a pure function over the shaped repo context (see `src/checks.js`)
— the whole scan is deterministic and fixable in PR-sized chunks.
## Real example (not marketing)
`fastpresspages/launchgrade` scanned on 24 October 2026 (v0.1.0):
```
┌──────────────────────────────────────────────┐
│ A+ 96/100 Announce-ready │
└──────────────────────────────────────────────┘
28 pass · 3 warn · 0 fail
Documentation 100 ████████████████████
Community 100 ████████████████████
Engineering 96 ███████████████████░
Discoverability 100 ████████████████████
Release hygiene 85 █████████████████░░░
Agent-readiness 90 ██████████████████░░
Fix these first
1. WARN [Release] Tag matches package.json
package.json 0.3.0 vs release tag v0.1.0
2. WARN [Agent] llms.txt published
No llms.txt at the repo root
3. WARN [Eng] Dependencies pinned
No lockfile ...
```
Full artifacts for that scan and a lower-grade example live in `samples/`
(launchgrade → **A+ 96**, fastpress-start → **B 79**, same day, honest numbers).
Low grades get published too — that is the point.
The RepoGrade site itself is audited by LaunchGrade: **A+ 100/100** at launch
(24 Oct 2026, samples/repograde-site/, one intentional no-analytics warning).
## Reports & artifacts
| Artifact | What it is |
| --- | --- |
| terminal output | colored grade card, per-category bars, top fixes |
| `report.html` | standalone dark report (works offline, shareable) |
| `report.md` | drop into a README or PR |
| `report.json` | machine-readable; `tool/version/generatedAt/repo/grade/...` |
| `badge.svg` | repograde badge for your README |
| `fix-plan.md` | prioritized fixes with evidence, ready to work through |
## GitHub Action
```yaml
name: RepoGrade
on:
schedule: [{ cron: "0 8 * * 1" }]
workflow_dispatch:
jobs:
grade:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v7
- uses: fastpresspages/repograde@main
with:
fail-under: '75'
env:
GITHUB_TOKEN: ${{ github.token }} # 5,000 req/h instead of 60
```
Outputs `score` and `grade`; add `--fail-under` semantics via `fail-under`.
## MCP server (agents can grade repos too)
```json
{ "mcpServers": { "repograde": {
"command": "npx",
"args": ["-p", "github:fastpresspages/repograde", "repograde-mcp"] } } }
```
Tools: `grade_repo` (owner/repo → grade + category scores + fixes), `list_checks`.
> MCP check-only rule for agents: batch sanely; the unauthenticated GitHub API
> allows 60 requests/hour and we respect that limit.
## Agent skill
```bash
npx skills add fastpresspages/repograde
```
## Scoring
- Each category score = share of its weight earned (pass=100%, warn=50%, fail=0%).
- Overall = weighted mean over scored categories; skip/info checks leave the pool.
- Letter grades: A+ ≥95 · A ≥90 · A- ≥85 · B+ ≥80 … F <40.
- It is an **heuristic about readiness to be announced**, not a security audit and
not a code review (see SECURITY.md and terms).
## Free human review
Open a discussion with your repo + what you are stuck on, drop your repo at
[the site form](https://fastpresspages.github.io/repograde/#contact), or email
[meetcode99@gmail.com](mailto:meetcode99@gmail.com): we rerun the scan, read the
repo **and** reply with the three changes that matter most — free, no drip
campaign. Deeper help (fix sprints, launch builds) exists and is transparently
priced in the [FastPress Labs playbook](https://github.com/fastpresspages/outreach).
## Principles
1. Zero dependencies — Node stdlib only.
2. Public data only — never writes to your repo, never uploads anything.
3. Publish low grades too.
4. Fix text a tired human can act on.
5. No fake metrics: downloads, stars, testimonials — all hand-countable or absent.
## Contributing / security / license
- [CONTRIBUTING.md](CONTRIBUTING.md) (check contract, PRs)
- [SECURITY.md](SECURITY.md) (private disclosure)
- [SUPPORT.md](SUPPORT.md) · [Code of Conduct](CODE_OF_CONDUCT.md)
- Apache-2.0 — see [LICENSE](LICENSE)
Built by [FastPress Labs](https://github.com/fastpresspages) — see our
[org profile](https://github.com/fastpresspages/.github) for everything we ship.
This server cannot be deployed
Maintenance
ActivityMaintained
ResponsivenessNo issues