agentreadme

Report · marked 25 Aug 2026

fatedier/frp

Ready for an agent to work in without hand-holding.

Go · 109,006 stars · 521 files · branch dev

Fix these first

01
Static type checking
A type checker gives an agent an error message instead of a runtime surprise. It's the second-fastest feedback loop after the compiler.
02
Environment config
Add a .env.example listing every variable with a safe placeholder value. It's the cheapest possible fix and it unblocks the whole first run.
03
Instruction quality
Worth fixing: has no code blocks.

The full marking

Every deduction below names the file or setting it came from.

Instructions 25/27 A+

Whether the repo tells an agent how to behave before it starts guessing.

Agent instruction file 12/12
AGENTS.md is present, which is the format the most tools read.
Also found: CLAUDE.md
Instruction quality 10/12
Specific enough that an agent can act on it.
Worth fixing: has no code blocks.
1,062 characters, a workable length
names the actual commands to run
uses headings, so an agent can skim it
README as an entry point 3/3
README has a clear getting-started section.
Setup 16/18 A

Whether an agent can install the project and get it running without a human.

Deterministic install 6/6
go.sum pins the dependency tree.
Found go.sum
Discoverable commands 6/6
Commands are declared where an agent will look for them.
Makefile
Environment config 2/4
Env vars are mentioned in the README but there's no example file to copy.
Add a .env.example listing every variable with a safe placeholder value. It's the cheapest possible fix and it unblocks the whole first run.
Pinned runtime version 2/2
The language runtime version is pinned.
go.mod declares a Go version
Reproducible environment n/a
Not applicable — a library doesn't need a container to be worked on.
Verification loop 22/25 A

Whether an agent can check its own work. This is the category that most decides whether agent output is trustworthy.

Tests exist 8/8
144 test files against 443 source files.
e.g. client/config_manager_test.go, client/control_session_test.go, client/control_udp_test.go
Test command is discoverable 7/7
An agent can find and run `make test`.
Continuous integration 4/4
4 GitHub Actions workflows define what "passing" means.
Lint and format rules 3/3
.golangci.yml encodes the house style.
Static type checking 0/3
No static type checking.
A type checker gives an agent an error message instead of a runtime surprise. It's the second-fastest feedback loop after the compiler.
Context economy 20/20 A+

Whether the repo fits in a context window, or fights it.

No committed build output 6/6
No generated directories committed.
.gitignore hygiene 3/3
.gitignore covers 26 patterns.
File sizes fit in context 6/6
No source file is large enough to crowd out a context window.
Repository weight 5/5
About 32.7MB checked out, which is comfortable.

Here is your AGENTS.md

Drafted from what is actually in this repository: the install command from your lockfile, the commands you already declare, your real directory layout. Anything marked TODO needs a person. Save it at the root as AGENTS.md.

AGENTS.md — drafted for fatedier/frp
undefined

Open the raw markdown  or  curl -o AGENTS.md agentreadme.com/draft/fatedier/frp.md

Show the mark

The badge re-checks daily, so it keeps up as the repository changes. Use mark again to force it now.

agent ready 93 out of 100

[![agent ready](https://agentreadme.com/badge/fatedier/frp.svg)](https://agentreadme.com/fatedier/frp)

Other Go repositories, marked

avelino/awesome-go 75 B+ ollama/ollama 85 A golang/go 30 D kubernetes/kubernetes 72 B+ microsoft/TypeScript 80 A- JuliusBrussee/caveman 78 A-

All Go repositories

Think this mark is wrong?

Every deduction above names the file it came from, so this can be settled by looking. If a check missed something, that is a rule worth fixing.

Open an issue, already filled in