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 instructions/tajchert/suuntool/claude-mdgit clone --depth 1 https://github.com/tajchert/suuntoolWrote 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/instructions/tajchert/suuntool/claude-md)<a href="https://agentmods.dev/instructions/tajchert/suuntool/claude-md"><img src="https://agentmods.dev/badge/instructions/tajchert/suuntool/claude-md.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.04299 | $0.04299 |
| Opus 5 | $0.02150 | $0.02150 |
| Sonnet 5 | $0.00860 | $0.00860 |
| Haiku 4.5 | $0.00430 | $0.00430 |
Grade A, and why
suuntool CLAUDE.md 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 — 136 lines — stays where its author put it; the contents beside it link to each section on GitHub.
CLAUDE.md — developer orientation
Audience: senior engineers (and LLM agents) joining this repo. Read this once, then read the code.
What this is
suuntool is a Go CLI for the unofficial Suunto / Sports-Tracker HTTP API. It is meant to be used by humans and by agents driving a terminal — every UX decision flows from that dual audience.
Internal reference material (endpoint inventory, signing scheme, Python reference client, golden-vector diagnostics) lives in handoff/. That directory is excluded via .git/info/exclude — not .gitignore — so it stays local but is never committed. Treat it as load-bearing reference material; don't delete it.
Layering — strict, one-way
main.go
└── cmd/ Cobra commands. Knows about session+api+output, nothing else.
├── root.go persistent flags, exit codes, helpers (baseURL, authedClient, emit, pickTimeout, parseSince, useTTYColor)
├── login.go logout.go whoami.go profile.go doctor.go endpoints.go version.go
├── workouts.go workouts list/get/count/stats/sml/fit/export/comments/react/edit/upload/delete (+ --summary, --stream, --since)
├── guides.go guides list/download/upload/update/pin/unpin/priority/delete (+ --yes). Transport only — no guide.json parsing.
├── wellness.go wellness sleep/activity/recovery/sleepstages NDJSON streams
├── wellness_sleep_pretty.go TTY-only sleep table renderer (writeSleepFooter)
├── mcp.go `suuntool mcp` stdio MCP server entry (--allow-write / --allow-destructive)
└── login_test.go, root_test.go, wellness_sleep_pretty_test.go end-to-end via httptest
internal/
├── auth/ signing pipeline. Zero net/http imports.
│ ├── keys.go embedded signing constants (login parts, TOTP parts, package name, user-agent)
│ ├── obfuscator.go KeyObfuscator XOR + lossy-UTF-8 replace; DeriveLoginSecret / DeriveTOTPMasterSecret
│ ├── totp.go PBKDF2-HmacSHA1 + RFC 6238 HOTP → GenerateTOTP(salt, offsetMS)
│ └── signer.go SignParams(path, []Param) → base64url(SHA-256), RandomSalt, NowMS
├── api/ HTTP transport.
│ ├── client.go Client + Do()/DoStream() — injects STTAuthorization + User-Agent, maps HTTP status → typed errors, transparent gzip
│ ├── envelope.go generic AskoResponse[T] + DecodeAsko[T]
│ ├── errors.go *Error{Code, Message, Hint, HTTP, Exit} — ExitCode() drives os.Exit
│ └── endpoints/ per-resource wrappers — add a file here for each new resource
│ ├── session.go Login (POST /login2), Logout, RemoteUserSession + Pretty()
│ ├── user.go Whoami, Settings, Follow, UserByName + Prettier impls
│ ├── workouts.go List/Get/Count/Stats/SML/FIT/Delete + WorkoutList.Summary / SummaryWithWoW
│ ├── comments.go reactions.go edit.go share.go extensions.go upload.go workout writes (x-totp via cmd layer)
│ ├── guides.go List/Download/Create/Update/Delete/SetGuidePinned/GuidePriority — raw zip body, no x-totp, no guide.json parsing (see the file's own package doc)
│ ├── wellness.go NDJSON stream decoders (sleep/activity/recovery/sleepstages)
│ ├── format.go formatKm / formatDuration / renderTable(Styled) shared by Pretty()
├── session/ session.go — XDG-aware persistence, 0600 perms, ErrNoSession (+ TOTPHeaders helper)
├── output/ the single render boundary
│ ├── output.go Render / RenderToFile, Opts, Prettier interface, resolveFormat
│ └── tty.go IsStdoutTTY (respects NO_COLOR)
└── mcp/ Model Context Protocol adapter (stdio server)
├── server.go Run(ctx, Opts), registerAll, deps (api.Client + session)
├── registry.go tier + toolRegistrar shape; per-tool registrars elsewhere
├── tools_read.go read-tier registrars (whoami, profile_*, workouts_*, wellness_*, doctor, activity_type_name, guides_list, guides_download, guides_priority)
├── tools_write.go --allow-write registrars (comment, react, edit, batch_update, share, extensions, upload, guides_upload, guides_update, guides_pin, guides_unpin)
├── tools_destructive.go --allow-destructive registrars (delete, uncomment, unreact, guides_delete)
├── activity.go activityId → activityName enrichment shared by workouts_list/get/stats
└── errors.go mapError / mapErrorToCallToolResult (preserves *api.Error structure for the LLM)
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 · 136 lines · 4,299 tokens per session scan A fdf0e6fde063
suuntool CLAUDE.md is an instructions file published in the GitHub repository tajchert/suuntool (21 stars, last pushed 19d ago), licensed MIT. It adds 4,299 tokens to every session, about $0.0215 per session on Opus 5. 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-30.
Other instructions, from other repositories
dingtalk-workspace-cli AGENTS.md
AGENTS.md instructions for DingTalk-Real-AI/dingtalk-workspace-cli, covering repository agent guide, build and test, command framework declaration, flag / help / schema homology and agent schema contract.
azure-sdk-for-go go-code.instructions.md
Instructions for Azure/azure-sdk-for-go: All code should follow the guidelines from the Azure Go SDK Guidelines. This document is a summary of the most important guidelines to follow when contributing to the Azure Go SDK.
unraid-management-agent copilot-instructions.md
Copilot instructions for ruaan-deysel/unraid-management-agent, covering copilot instructions, copilot workflow, path-specific instructions, reusable prompts and quick commands.
coral CLAUDE.md
Instructions for cdknorow/coral, covering claude.md - coral go, mission, testing, go unit tests and legacy parity tools (historical reference).
agentcat-go-sdk CLAUDE.md
Claude Code instructions for agentcathq/agentcat-go-sdk, covering claude.md, what this is, build & test commands, module layout and architecture.
oastools GEMINI.md
Instructions for erraggy/oastools, covering gemini.md, project overview, building and running, key commands and development conventions.