TL;DR: faf-cli 7.3.0 understands Go modules the
way you do — from require paths and layout, not from the fact that go.mod exists. Kill line: go.mod alone ≠ backend.
npm install -g faf-cli@7.3.0 cd your-module && faf auto && faf scoreWhat it is
The Go Edition is content-aware Go detection in faf-cli. You run faf auto in a module; it reads your go.mod (and light layout), then writes durable project context into project.faf so AI agents know what they’re standing in.
It classifies your module as one of:
- MCP server — e.g. mark3labs/mcp-go, official go-sdk
- Backend — Gin, Echo, Fiber, Chi, gRPC, Connect, Kratos, go-zero, Hertz…
- CLI — Cobra, urfave/cli, Kingpin, Kong; or
cmd// rootpackage main - Library — pure module, no server/CLI/MCP signal
Also recorded: the module path and an inspectable found-line (e.g. go.mod + github.com/gin-gonic/gin (Go backend)). Not a black box.
Why it exists
Every Go project has a go.mod. Not every Go project is a backend.
Libraries, CLIs, HTTP APIs, gRPC services, and MCP servers all start the same way: module … and a require block. Filename-only tooling treats them as
the same thing — usually “some Go service.”
Wrong shape at the root means wrong AI context: the agent invents handlers you don’t have, skips packages you do, or “refactors” a library like an API. The Go Edition exists so the first fact agents get is the one you already encoded in deps and layout — what the module actually is.
What’s in it for Go devs
- Agents that match the repo. Gin stays Gin. A pure package stays a library. Cobra tools don’t get mistaken for HTTP services.
- Zero new config. No tags, no extra manifest. It uses
go.mod+ idiomatic layout you already ship. - Conflict rules you’d write yourself. MCP over Gin when both are present;
server over Cobra; layout only when requires don’t decide;
go.modalone never means backend. - Honest fallbacks. Unknown framework paths fall through to layout or library — not a fake “backend” label.
| Your module looks like… | What agents get |
|---|---|
github.com/gin-gonic/gin (Echo / Fiber / Chi / gRPC / …) | backend + framework name |
github.com/spf13/cobra or urfave/cli | cli |
cmd/…/*.go or root package main | cli (when no server dep) |
| mcp-go / official go-sdk | mcp |
| Module only — no server/CLI/MCP signal | library |
Try it
npm install -g faf-cli@7.3.0 cd path/to/your/module faf auto faf scoreOpen project.faf. A Gin service should show backend + Gin. A package with no
server/CLI/MCP signal should show library.
Same binary also on npm as faf@7.3.0 if you want the
short name.
Bounds
- Does: classify from
go.mod+ light layout (16-fixture suite). - Does not: know every path in the ecosystem, or treat bare
package mainas a production HTTP service.
Feedback welcome
Missed a framework you ship with? Wrong shape on a real module? Tell us — we will build more. Open an issue or say so in public; the detection map grows from what Gophers actually use.
If this saves you a wrong agent brief, a star helps the next module find it.
Star faf-cli