Borrowing it
Nothing to install: this file belongs to tajchert/suuntool. Take a copy, put it at the same path in your own repository, and replace the rules that are about this project with yours.
curl -O https://raw.githubusercontent.com/tajchert/suuntool/main/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/github.svg" alt="Measured on agentmods" height="20"></a>Or the 80×15 button, for a site that already has a row of RSS and ATOM ones. Only the verdict fits; the numbers stay here.
<a href="https://agentmods.dev/instructions/tajchert/suuntool/claude-md"><img src="https://agentmods.dev/badge/instructions/tajchert/suuntool/claude-md.svg" alt="Reviewed on agentmods" width="80" 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.1 | $0.04299 | $0.04299 |
| Opus 5.5 | $0.01720 | $0.01720 |
| Sonnet 5.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 2mo 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.
- 2mo 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 (32 stars, last pushed 2mo ago), licensed MIT. It adds 4,299 tokens to every session, about $0.0172 per session on Opus 5.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.
suuntool CLAUDE.md compared with instructions from other repositories
| Mod | Type | Stars | Last push | Licence | Scan | Tokens | Works with |
|---|---|---|---|---|---|---|---|
| suuntool CLAUDE.mdtajchert/suuntool | Instructions file | 32 | 2mo ago | MIT | A | 4,299 | Claude Code |
| vscode buildNext.instructions.mdmicrosoft/vscode | Instructions file | 195k | yesterday | MIT | A | 9,719 | GitHub Copilot |
| next.js AGENTS.mdvercel/next.js | Instructions file | 143k | yesterday | MIT | A | 7,461 | Codex, OpenCode |
| langchain AGENTS.mdlangchain-ai/langchain | Instructions file | 149k | yesterday | MIT | A | 4,680 | Codex, OpenCode |
| vscode oss-third-party-notices.instructions.mdmicrosoft/vscode | Instructions file | 195k | yesterday | MIT | A | 5,516 | GitHub Copilot |
| vscode copilot-instructions.mdmicrosoft/vscode | Instructions file | 195k | yesterday | MIT | A | 3,093 | GitHub Copilot |
| deepseek-harness AGENTS.mddeepseek-ai/deepseek-harness | Instructions file | 274k | 2d ago | MIT | A | 4,313 | Codex, OpenCode |