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 score

What 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/ / root package 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.mod alone 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/clicli
cmd/…/*.go or root package maincli (when no server dep)
mcp-go / official go-sdkmcp
Module only — no server/CLI/MCP signallibrary

Try it

npm install -g faf-cli@7.3.0 cd path/to/your/module faf auto faf score

Open 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 main as a production HTTP service.

If this saves you a wrong agent brief, a star helps the next module find it.

Star faf-cli