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 agents/svyatov/handrail/serenagit clone --depth 1 https://github.com/svyatov/handrailWrote 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/agents/svyatov/handrail/serena)<a href="https://agentmods.dev/agents/svyatov/handrail/serena"><img src="https://agentmods.dev/badge/agents/svyatov/handrail/serena.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.00000 | $0.00525 |
| Opus 5 | $0.00000 | $0.00262 |
| Sonnet 5 | $0.00000 | $0.00105 |
| Haiku 4.5 | $0.00000 | $0.00052 |
Grade A, and why
serena scanned grade A with 0 findings 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 5d 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.
Nothing flagged
None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.
How it starts
The opening of the file, as written. The whole thing — 50 lines — stays where its author put it; the contents beside it link to each section on GitHub.
Serena
Serena gives an agent LSP-backed navigation over this repo's Go code: find a symbol, find its references, replace its body.
It is optional. Nothing in task test, task lint, or CI touches it. The repo builds
without it.
Setup
Serena needs gopls on PATH. It does not install it:
go install golang.org/x/tools/gopls@latest
Start the server with the claude-code context. That context drops Serena's own file
and shell tools, which duplicate the ones a harness already has:
serena start-mcp-server --context=claude-code --project-from-cwd
On first load Serena writes .serena/, detects Go, and starts gopls. To confirm the
setup, run serena project health-check .. It ends in Health check passed.
.serena/ is not committed
Serena rewrites .serena/project.yml into its own annotated form every time it loads the
project. A hand-edited file does not survive that. The whole directory is gitignored, so
there is nothing to keep in sync. This page is the setup, and Serena generates the rest.
To override a setting for yourself, write it to .serena/project.local.yml. That file
takes precedence over project.yml key by key, and Serena does not regenerate it.
What is deliberately unset
ignored_paths. The defaultignore_all_files_in_gitignore: truealready covers the built binary,cover.out,dist/, and the worktree directory. The symbol index reads only.gofiles, of which this repo has fifteen.excluded_tools. Theclaude-codecontext already drops the duplicated tools.initial_promptandmemories/.CLAUDE.md,CONTEXT.md, and the rest ofdocs/agents/carry the vocabulary, the source-of-truth pointers, and the commands. Filling Serena's knowledge layer would duplicate them.activation_commandandls_specific_settings. Serena honours both only for a project matched bytrusted_project_path_patternsin the user's globalserena_config.yml.
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.
- 5d ago First seen · 50 lines · 0 tokens per session scan A e2d636e4b763
serena is an agent published in the GitHub repository svyatov/handrail (2 stars, last pushed 2d ago), licensed MIT. It costs nothing until one of its globs matches a file; then it loads 525 tokens. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-31.
Other agents, from other repositories
developer
Use this agent when you need expert guidance on Go development best practices, including code implementation, refactoring for idiomatic Go, performance optimization, error handling patterns, concurrency design, and architectural decisions. This agent excels at writing production-ready Go code that follows community…
pm
Use this agent when you need to identify, analyze, and propose new features or functionalities for the faker library. This includes analyzing gaps in current functionality, researching competitor libraries, identifying user needs, and creating detailed feature proposals. Examples:\n\n \nContext: The user wants to…
reviewer
Use this agent when you need expert review of Go code for best practices, idioms, performance, and correctness. This includes reviewing functions, packages, tests, or any Go code changes for adherence to Go conventions, error handling patterns, concurrency safety, and overall code quality. Examples:\n\n \nContext: The…
architect
Go CLI architecture specialist for system design, package structure, and technical decision-making. Use PROACTIVELY when planning new features, refactoring, or making architectural decisions.
planner
Expert planning specialist for Go CLI features and refactoring. Use PROACTIVELY when users request feature implementation, architectural changes, or complex refactoring.
code-reviewer
Go code review specialist. Proactively reviews code for quality, DDD compliance, idioms, and security. Use immediately after writing or modifying code.