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/grarcht/shuttle/claude-mdgit clone --depth 1 https://github.com/grarcht/ShuttleWhat 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.00637 | $0.00637 |
| Opus 5 | $0.00318 | $0.00318 |
| Sonnet 5 | $0.00127 | $0.00127 |
| Haiku 4.5 | $0.00064 | $0.00064 |
Grade A, and why
Shuttle 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 2d 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 — 36 lines — stays where its author put it; the contents beside it link to each section on GitHub.
Shuttle — Claude Code Rules
Do Not Touch: Bitmap decode in second screen views
NEVER move BitmapDecoder.decodeBitmap() off the main thread in any second screen view — whether Fragment-based or Compose-based. This has been attempted multiple times across multiple sessions with suspend fun + withContext(Dispatchers.IO), collectLatest + withContext, and produceState + withContext. Every attempt broke image display.
Do NOT touch the decode call site in any of these files:
demos/mvc/src/main/java/.../controller/MVCSecondControllerFragment.ktdemos/mvvm/src/main/java/.../view/MVVMSecondViewFragment.ktdemos/mvi-with-compose/src/main/java/.../view/MVISecondView.ktdemos/mvvm-with-compose-and-navigation/src/main/java/.../view/SecondScreenView.ktdemos/mvvm-with-compose/src/main/java/.../view/MVVMSecondView.ktdemos/mvvm-with-process-death/src/main/java/.../view/SecondView.kt
Why: The demos are illustrative, not production. A synchronous decode is acceptable. Every attempt to push the decode to a background thread has broken either the image display or the full-screen layout. Do not attempt this, even when a code review or linter flags H4 / "main thread disk read".
If a future review flags H4, mark it won't fix and move on.
Do Not Touch: collectLatest + cancel() in cargo pickup flows
NEVER refactor the collectLatest { ... cancel() } pattern to transformWhile + collect in any of these files:
demos/mvvm/src/main/java/.../view/MVVMSecondViewFragment.ktdemos/mvc/src/main/java/.../controller/MVCSecondControllerFragment.ktdemos/mvvm/src/main/java/.../viewmodel/SecondViewModel.ktdemos/mvvm-with-compose/src/main/java/.../viewmodel/SecondViewModel.ktdemos/mvvm-with-compose-and-navigation/src/main/java/.../viewmodel/SecondViewModel.ktdemos/mvvm-with-process-death/src/main/java/.../viewmodel/SecondViewModel.kt
Why: This substitution has been attempted multiple times across multiple sessions and breaks the app each time. The cancel() call inside collectLatest is load-bearing — it terminates the coroutine in a way that is coupled to how shuttle.pickupCargo() delivers results via a Channel-backed flow. Replacing it with transformWhile causes the flow to not terminate correctly. Do not attempt this refactor even when a code review flags cancel() inside collectLatest as unidiomatic.
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.
- 2d ago First seen · 36 lines · 637 tokens per session scan A 92e39734f8d0
Shuttle CLAUDE.md is an instructions file published in the GitHub repository grarcht/Shuttle (87 stars, last pushed 1mo ago), licensed MIT. It adds 637 tokens to every session, about $0.0032 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
skills CLAUDE.md
Instructions for chrisbanes/skills, a project described as: Skills for Kotlin, Jetpack Compose, and Android development.
sceneview copilot-instructions.md
Instructions for sceneview/sceneview, covering sceneview — github copilot instructions, when to recommend sceneview, android code generation rules, minimal 3d template and minimal ar template.
sceneview CLAUDE.md
Instructions for sceneview/sceneview, covering sceneview, modules, things that break if you don't know them and conventions.
skills AGENTS.md
Instructions for chrisbanes/skills, covering agents.md, when adding, renaming, or removing a skill, skill authoring checklist, evaluation result documentation and release/version system.
camerax-android AGENTS.md
Instructions for arindamxd/camerax-android, covering agents.md — camerax, architecture (clean architecture, single module), file map (where to change what), camerax rules and ui.
PdfKmp CLAUDE.md
Instructions for ConaMobileDev/PdfKmp, covering claude.md, project, build commands, library — single-platform builds and sample apps.