Borrowing it
Nothing to install: this file belongs to jahala/umbel. 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/jahala/umbel/master/CLAUDE.mdgit clone --depth 1 https://github.com/jahala/umbelWrote 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/jahala/umbel/claude-md)<a href="https://agentmods.dev/instructions/jahala/umbel/claude-md"><img src="https://agentmods.dev/badge/instructions/jahala/umbel/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.1 | $0.03169 | $0.03169 |
| Opus 5 | $0.01584 | $0.01584 |
| Sonnet 5 | $0.00634 | $0.00634 |
| Haiku 4.5 | $0.00317 | $0.00317 |
Grade B, and why
umbel CLAUDE.md scanned grade B with 1 finding 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 6d 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.
Reads agent configuration directoriesmediumAgent snooping
.claude/, .codex/, .gemini/ hold keys, settings and other credentials a mod has no legitimate need for.
For Gemini, the provider writes `<cwd>/.gemini/settings.json` into the worker's `cwd` (absolute path recorded in `meta.providerFiles` so `kill` cleans up). Codex instead uses a shared, umbel-managed `$CODEX_HOME` (`$UMBE How it starts
The opening of the file, as written. The whole thing — 129 lines — stays where its author put it; the contents beside it link to each section on GitHub.
umbel — Project Guidelines for Claude Code
What this is
umbel remote-controls the interactive claude TUI (and similar agent CLIs) over tmux. One TypeScript binary, three faces:
umbel -p [PROMPT] --provider {claude,codex,gemini}— drop-in forclaude -p/codex -p/gemini -p, but routed through the interactive TUI (subscription-billed). Default provider:claude.umbel spawn|send|wait|status|kill(also via MCP) — supervisor verbs for agent-as-supervisor orchestration.spawn --providerpicks the worker; the provider is recorded inmeta.jsonso subsequent verbs auto-route.umbel run workflow.yaml— declarative pipelines with per-workerprovider:.
Read docs/architecture-v3.md before writing code. It's the canonical multi-CLI design.
Positioning & design filter (full thesis: docs/positioning.md). umbel runs one unit of agent work reliably and returns a result the caller can branch on; orchestration belongs to the caller, not umbel. Apply this filter to every change: invest in the noun (the worker), not the verb (the orchestration) — a new capability must be a per-worker primitive on CLI and MCP, composable by the caller, not new workflow syntax; if it can't be that, it probably doesn't belong here. Guardrails must be enforced + external + looped (check → reject + feedback + retry → halt), never advisory. Anchor identity to the neutral worker contract, not the substrate (tmux/subscription) — per-provider adapters absorb the churn; the contract stays stable. Keep the YAML face thin.
Non-negotiable principles
- S.U.P.E.R. — Side effects at the edge, Uncoupled logic, Pure & total functions, Explicit data flow, Replaceable by value. Lower layers know nothing about upper layers.
- Test first. No fix or feature without a failing test that demonstrates the need. Fake binaries (
test/fixtures/fake-{claude,codex,gemini}.sh) drive e2e — never burn real subscription budget in CI. Real-binary smoke tests live intest/smoke/{claude,codex,gemini}/and are gated onUMBEL_SMOKE=1. - No daemon. tmux is the daemon. Filesystem is the state store. Every
umbelinvocation is short-lived. Workers never live on the default tmux socket.adapters/tmux.tsderives a private socket from the state root (UMBEL_TMUX_SOCKEToverrides) and every invocation carries-L. The default socket is shared with the user's own sessions and every other agent, so anything reaping that server — a straytmux kill-server, a user tidying up, another agent's cleanup — takes the whole fleet with it, and does it silently: a vanished session leaves no pane and no log, indistinguishable from a worker that died on its own. That exact bug cost three agents four runs to find. Never add a baretmuxcall; go through the adapter or it lands on the default socket and undoes this. - Files as IPC, JSONL as truth. Hook events are file touches;
chokidaris the event bus. Agent output is read from the provider's transcript file (location captured per-session from the Stop/AfterAgent hook payload), NEVER fromcapture-pane(which is for watching, not parsing). - Throw typed errors, catch at face boundary. No
Result<T,E>library. DiscriminatedErrorsubclasses insrc/core/errors.ts, caught and mapped to exit codes / MCP responses at the faces layer. - Single zod schema per concept. Argv parser, MCP tool schema, and YAML validation all share the same zod definitions. No three-times-defined types.
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.
- 6d ago First seen · 129 lines · 3,169 tokens per session scan B 391faf4eba47
umbel CLAUDE.md is an instructions file published in the GitHub repository jahala/umbel (2 stars, last pushed yesterday), licensed MIT. It adds 3,169 tokens to every session, about $0.0158 per session on Opus 5. A static security scan graded it B with 1 finding (reads agent configuration directories). No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-31.
Other instructions, from other repositories
next.js AGENTS.md
AGENTS.md instructions for vercel/next.js, covering next.js development guide, codebase structure, monorepo overview, core package: packages/next and other important packages.
codex AGENTS.md
AGENTS.md instructions for openai/codex, covering rust/codex-rs, the codex-core crate, code review rules, crate api surface and model visible context.
vscode buildNext.instructions.md
Working notes and architecture documentation for the new esbuild-based build system in build/next. Use when making changes to the new build pipeline (transpile/bundle commands, NLS plugin, source-map handling, resource copying, or self-hosting watch tasks).
vscode oss-third-party-notices.instructions.md
Instructions for microsoft/vscode, covering vs code oss third-party-notices pipeline, architecture, pipeline flow in ci, applying the notice (cutover) and fallback chain (never fail the build).
langchain AGENTS.md
AGENTS.md instructions for langchain-ai/langchain, covering global development guidelines for the langchain monorepo, corridor security analysis, project architecture and context, monorepo structure and development tools & commands.
spec-kit AGENTS.md
AGENTS.md instructions for github/spec-kit, covering agents.md, about spec kit and specify, quickstart — add a new integration in 5 steps, integration architecture and integrationmanifest — file tracking.