Getting it into your agent
One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.
npx agentmods add skills/inference-gateway/adk/gonpx skills add inference-gateway/adk --skill gogit clone --depth 1 https://github.com/inference-gateway/adkWrote this? Show the measurements
A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.
[](https://agentmods.dev/skills/inference-gateway/adk/go)<a href="https://agentmods.dev/skills/inference-gateway/adk/go"><img src="https://agentmods.dev/badge/skills/inference-gateway/adk/go.svg" alt="Measured on agentmods" height="20"></a>What it costs to keep this loaded
Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.
| Model | Per session | Once invoked |
|---|---|---|
| Fable 5 | $0.00099 | $0.02674 |
| Opus 5 | $0.00049 | $0.01337 |
| Sonnet 5 | $0.00020 | $0.00535 |
| Haiku 4.5 | $0.00010 | $0.00267 |
Grade A, and why
go scanned grade A with 1 finding against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 4d ago.
A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.
Makes network callslowCapability
Not a fault in itself. Listed so you know the mod talks to something, and to what.
return fetch(ctx, u) This is a copy
86% identical to go — 49 lines differ, which has more behind it and is treated as the original. This page carries a canonical link to it rather than competing with it.
How it starts
The opening of the file, as written. The whole thing — 272 lines — stays where its author put it; the contents beside it link to each section on GitHub.
Idiomatic Go
Write Go that is boring in the best way - direct, predictable, obvious on the first read. Clear is better than clever. The common failure mode (and the LLM default) is importing Java/Spring habits - deep layer trees, generic repositories, heavy frameworks, manual worker pools - into a language built for flat, simple, discoverable APIs. When in doubt, delete the abstraction.
Core principles
Clear is better than clever. If a function's control flow takes three reads to
follow, rewrite it. Keep the happy path un-indented: handle errors and edge cases
first and return.
func GetUser(id string) (*User, error) {
user, err := db.FindUser(id)
if err != nil {
return nil, fmt.Errorf("finding user %s: %w", id, err)
}
return user, nil // happy path stays at the left margin
}
Make the zero value useful. Design types so the zero value works without a
constructor - sync.Mutex and bytes.Buffer are the gold standard.
type Counter struct {
mu sync.Mutex // usable at the zero value - no New() needed
count int
}
func (c *Counter) Inc() { c.mu.Lock(); c.count++; c.mu.Unlock() }
Packages: flat, named for what they do
Start flat; add a package only when a domain earns a namespace. Name packages by
what they do (auth, billing, jobs), never by what layer they are
(service, repository, controller) - layer-named packages breed circular
imports and interface bloat and add zero clarity in Go. No utils/, helpers/,
or common/ junk drawers; they signal unclear ownership. Packages don't import
each other sideways - cycles mean wrong boundaries; the composition root wires them.
In this repo: the two public surfaces are
server/(build an A2A agent) andclient/(call one), withtypes/for the shared A2A wire types andserver/config/for configuration. That is the established structure - follow it; don't invent aservice/repositorylayer split. spf13's transferable rules still hold: name by purpose, no junk-drawer packages, wire at the composition root (here, theA2AServerBuilder/AgentBuilder).
What this file has done since we first saw it
Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.
- 4d ago First seen · 272 lines · 99 tokens per session scan A 76b035abca9d
go is a skill published in the GitHub repository inference-gateway/adk (25 stars, last pushed today), licensed Apache-2.0. It adds 99 tokens to every session and 2,674 once invoked, about $0.0005 per session on Opus 5. A static security scan graded it A with 1 finding (makes network calls). It is 86% identical to go, differing in 49 lines, and is treated as a copy.
Other skills, from other repositories
quality-loop
Use this workflow recipe when a draft, plan, proposal, or other deliverable should be independently reviewed and revised until it satisfies explicit quality criteria.
mcporter
Use the mcporter CLI to list, configure, auth, and call MCP servers/tools directly (HTTP or stdio), including ad-hoc servers, config edits, CLI/type generation, and MCP-backed skills that need a durable command path.
openai-whisper-api
Transcribe audio via OpenAI Audio Transcriptions API (Whisper).
plan_route
Plan a route and return distance + ETA (schema + deterministic result).
recommend_poi
Recommend a POI in a city (schema + deterministic result).
demo-profile
Demo skill for the SkillToolProfile example.