Borrowing it
Nothing to install: this file belongs to lounge/tuify. 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/lounge/tuify/develop/AGENTS.mdgit clone --depth 1 https://github.com/lounge/tuifyWrote 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/lounge/tuify/agents-md)<a href="https://agentmods.dev/instructions/lounge/tuify/agents-md"><img src="https://agentmods.dev/badge/instructions/lounge/tuify/agents-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/lounge/tuify/agents-md"><img src="https://agentmods.dev/badge/instructions/lounge/tuify/agents-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.02227 | $0.02227 |
| Opus 5.5 | $0.00891 | $0.00891 |
| Sonnet 5.5 | $0.00445 | $0.00445 |
| Haiku 4.5 | $0.00223 | $0.00223 |
Grade A, and why
tuify AGENTS.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 11d 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 — 87 lines — stays where its author put it; the contents beside it link to each section on GitHub.
Agent Development Guide
A file for guiding coding agents.
Commands
go build # build the tuify binary
go test ./... # run all tests
go test -run TestName ./internal/spotify # run a single test in one package
gofmt -l . # CI fails hard if this lists anything
golangci-lint run ./... # matches CI lint job; pinned to v2.14.0
go vet ./...
Linux build/test needs libasound2-dev (oto audio backend). Go 1.27+.
Architecture
main.go handles --version/--help (anything else exits 2) and calls bootstrap.Run, mapping its ErrInterrupted to exit status 130. Everything lives under internal/. Each internal package has a doc.go — read it before touching the package; the package-level comment is the source of truth for intent and invariants.
Startup sequence (internal/bootstrap)
Run owns a root context.Context that is cancelled on return. That context is threaded into auth (token refresh), spotify (polls), librespot (reconnect/transfer), and the UI model so every background goroutine unwinds at shutdown rather than running to its per-op timeout. Order matters:
- Load/setup config →
theme.Apply(cfg.Theme)→ui.RebuildStyles()before any rendering (see Hard rule on Lipgloss style construction). authenticatereturns an*authSession: the*spotify.Clientplus channels for revoked-token + token-save errors that are wired into the UI viaModelOptions, and a cleanup func.startLibrespotis optional; when active it provides additionalModelOptions (WithAudioSourcefor the pipe → FFT path,WithLibrespotInactivefor the device-dropped banner) and wiresProcess.OnReconnectto the transfer-back handler.zone.NewGlobal()thentea.NewProgram(..., WithAltScreen(), WithMouseCellMotion()).
UI shell + screens + submodels (internal/ui)
- Shell (
app*.go) owns theModel, view stack, event loop, and every side effect (Spotify calls, clipboard, device transfer). - Screens (home/playlist/track/podcast/episode/search) own local state and render themselves. They communicate with the shell via intent messages (
app_intents.go). - Submodels (
nowPlayingModel,visualizerModel,deviceSelectorModel) are long-lived state onModelthat transcends the view stack. - The shell dispatches via small capability interfaces in
common.go(listProvider,scrollable,clickable,enterable,searchAware,syncableView,backable, …). Adding a new screen means implementing the capabilities it cares about and listing them in the compile-time checks at the end ofcommon.go(the shell finds capabilities by type assertion, so a missing or misnamed method fails silently otherwise). Capability methods are lowercase except those mirroring bubbletea/bubbles (Init,Update,View,SetSize). - Every frame that shows a list is wrapped in
bubblezone.Scan; list rows are marked by list id and row index viazoneListDelegate(instyles.go) so clicks resolve back to specific rows even when a playlist repeats a track. Overlays and the visualizer skip the scan, andhandleMouseignores the pointer while they are up.
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.
- 11d ago First seen · 87 lines · 2,227 tokens per session scan A 43a2ee8cb249
tuify AGENTS.md is an instructions file published in the GitHub repository lounge/tuify (29 stars, last pushed 9d ago), licensed MIT. It adds 2,227 tokens to every session, about $0.0089 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-10-26.
tuify AGENTS.md compared with instructions from other repositories
| Mod | Type | Stars | Last push | Licence | Scan | Tokens | Works with |
|---|---|---|---|---|---|---|---|
| tuify AGENTS.mdlounge/tuify | Instructions file | 29 | 9d ago | MIT | A | 2,227 | Codex, OpenCode |
| 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 |