atlas-help
Skill0 starsChanged 10 days agoMITView on GitHub
Show the ATLAS reference card: the four dials, every command, every subagent, what each costs. Use when the user asks for atlas help, "/atlas-help", "atlas commands", "how do I switch atlas" — in any language — or what modes exist.
In this repository10 other files it gives its agents.
- atlas-artifactSkill
- atlas-commitSkill
- atlas-fixSkill
- atlas-memorySkill
- atlas-organizeSkill
- atlas-recapSkill
- atlas-reviewSkill
- atlas-searchSkill
- atlas-silentSkill
- atlasSkill
The file
We split this skill into the rules it gives an agent
2 rules. About 0 are common, 1 is distinctive, and 1 is very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈1
Distinctive · estimate
This author's own choices. Worth a look.
1
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Very specific: line 24
After that the setting persists — across turns and restarts — until you change it or type atlas off, which persists too.
- Distinctive: line 49
Never compressed at any level: code blocks, error strings, function and command names, file paths, numbers and units, negations, proper …
≈ “Common” is an estimate: at least 1 in 5 of the 350,495 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
Print the card below and nothing else. Change no state, start no work.
Print it in the language the user writes in. Translate the prose, leave every command, dial name, filename and number exactly as written — those are typed, not read.
The worth knowing column is the only place for anything beyond what a thing does. If a row has
nothing surprising to say, leave it empty rather than filling it.
ATLAS
Four dials, eleven commands, five subagents.
It ships off. A fresh install changes nothing until you type atlas low or atlas high.
After that the setting persists — across turns and restarts — until you change it or type
atlas off, which persists too. It is one setting per project (the folder the session runs in,
walked up to the nearest .git or .atlas.json), not a per-chat one and not a global one: a
repository never switched on stays off whatever another one is set to.
Uninstalling does not reset it: the states live in ~/.claude/atlas-state/, one file per
project, outside the plugin. atlas off in the project before uninstalling, or delete that folder.
Dials
| dial | what it does | vs no plugin, visible tokens | worth knowing |
atlas low | drops filler, pleasantries, hedging, articles, the copula. Fragments allowed. No tables | -11% ... -28% | the default |
atlas high | half the words: facts stay, explanations go. Prepositions and connectives cut too | -17% ... -35% | 9 points more than low in English, 7 in Italian. It reads more telegraphically; pick it when the answer is read once and acted on |
atlas ask | asks before starting, until it knows what you actually want. One question at a time, options named where they can be named | +3 to +2 points | not a quiz: it is there so the work matches what you had in mind, not what the request happened to say. Applies to every request, not only the first |
atlas check | works against invented facts: nothing from memory, its own work verified before it is called done, a second option looked for before recommending the first, a correction checked before it is accepted | +3 to +9 points, plus the lookups | the only dial that adds. Every setup with it on still lands under no plugin on a long session |
atlas silent | hands over the work and stops: no preamble, no narration between steps, no summary at the end, no offer of what to do next. Questions only before starting; a failure is still reported, in one line | a few points less | the only dial that removes a whole turn's worth of text rather than words inside it. /atlas-silent does the same for one task; the dial holds until turned off |
atlas status | prints which dials are on, nothing else | — | changes nothing. Says atlas off when none are |
atlas ask off · atlas check off · atlas silent off | turns one dial off, leaves the rest | — | |
atlas off | everything off | — | also "stop atlas" and "normal mode". Those are matched in English only; atlas off works in any language, and asking to stop in yours gets the command handed back. Only when it opens the message, never inside quotes |
In visible tokens, every combination costs less than no plugin at 295 turns; at 40 turns low + ask + check is +1%. Billed output, thinking included, is another matter: low +2% English and +5% Italian, high -25% and -18%. The two figures are a short session — 40
turns, 500-token answers — and a long one at 295 turns: the fixed cost is paid once and then
spreads, so session length moves the number more than the dials do.
Never compressed at any level: code blocks, error strings, function and command names, file paths, numbers and units, negations, proper names, qualifiers that change what is true. Security warnings and irreversible-action confirmations are written in plain prose.
Commands
Typed, by name: atlas recap, or /atlas-mem:atlas-recap. Only the description is always loaded;
the body costs nothing on sessions where you never call it (bodies: tiktoken cl100k). Asked in plain words without the
name, the work is usually done without the command's rules.
| command | what it does | body | worth knowing |
atlas <dial> | sets the dials | 40 | /atlas-mem:atlas high or atlas high alone as the whole message. The plain form works before the command menu has loaded |
atlas-help | this card | 2.6k | |
atlas-search | answers only from a live web search; asked what people say, also open forums and what search engines show of social networks, with what was not looked at | 624 | Not in atlas-min. It is the handle on the atlas-research subagent, so the pages it reads never land in your session. Add "give me sources" to the request, in any language, and it hands back where to read instead of the answer: videos, discussions, articles, grouped, one line each |
atlas-review | what is wrong with a diff, a branch, a file or a pull request, one problem per line: where, what breaks, the fix | 1.5k | four tiers, breaks first. nothing found is the whole answer when there is nothing. Behind it, 22 short checklists, read only as the diff calls for them: one per language, plus security, tests, types, errors, a pull request. "second opinion" runs a second reviewer that has not seen the first; "full review" runs three angles in parallel and a refuter per finding (Workflow tool) |
atlas-fix | a failing build, type check or linter back to green: one error, one smallest change, run again | 791 | stops and says why instead of silencing an error: same error twice, more errors than before, a change of design. Ends with PASS, STOPPED or DID NOT RUN and four counts. One file per toolchain behind it, 10 in all |
atlas-commit | commit message for what is staged | 173 | written in normal prose whatever the level: it leaves the conversation |
atlas-recap | handover file for the conversation: decided, done, not done, tried and rejected | 952 | for starting a fresh chat without losing where you were |
atlas-organize | tidies a local folder: selects files by content or criterion, copies, moves, groups, sets aside | 2.2k | four levels, from a plan that touches nothing upward. Nothing is ever deleted and every run has an undo |
atlas-silent | does the work and hands over the result: no opinions, no narration, no report | 968 | questions only up front, only about the task. Three things still get said: destructive, blocked, done-but-wrong. Per request; atlas silent is the same mode as a dial, and that one stays on |
Memory section — atlas-mem and atlas-max
Two more commands, atlas memory and atlas artifact, and the tools they drive. The memory is the markdown vault
the project already keeps, one file per fact; nothing is captured automatically. What this
build adds is the part a vault cannot do by itself: notice when a note has gone stale.
| command | what it does | files behind it | worth knowing |
atlas-memory | writes a note when the work decides a fact is worth keeping; finds the right note, whole, when it matters; checks every note linked to code against the code as it is now; tidies duplicates and orphans; labels code (CANONICAL, SUPERSEDED with its successor, WRONG with its reason, …) and a hook puts the label on every Grep or Read that finds the symbol | 6 | a note linked to code turns suspect when that code, or what it directly depends on, changed, moved file under another name, or disappeared. The report says what and where; the body of a note is never changed by a check |
atlas-artifact | reads what is inside a shipped artifact without running it: an Electron or Node application (modules, what the entry reaches, IPC channels both ways and their pairing, the preload bridge, windows and their preferences, hosts, processes started, native addons), a compiled file by its headers (PE with .NET metadata, ELF, Mach-O: imports, exports, hardening, signature, Go modules, Rust crates) and a .NET assembly's method bodies as CIL instructions, native x86-64 and ARM64 disassembly of a code section, a function's control-flow graph and its structured pseudo-C (if/while/switch), the call graph of a binary (callgraph, the walk bounded by --budget <MiB>), the Dalvik bytecode of an Android .apk or .dex, a SQLite file (schema, counts, a sample), a source map (a bundled line back to its source) | 4 | only software the person owns or may inspect, asked first; every fact with file and line, a confidence (observed / derived / inferred), the coverage and the limitations; the archive is read as bytes and never changed; .exe, ELF, APK are recognised and not read |
The tool, tools/memcheck.mjs, does everything that needs a hash or a comparison: a model
cannot compute a fingerprint in its head. It parses the code with tree-sitter (grammars
shipped in tools/wasm/: JavaScript, TypeScript, TSX, Python, Go, Rust, Java, C#, C/C++,
Ruby, PHP, Bash, PowerShell) and falls back to a line-shape search for anything else. Its
data lives in one sidecar file beside the notes, <vault>/.atlas/links.json; the notes
themselves stay plain markdown in the format of whatever already manages them.
memcheck impact says which notes a change to a file would touch, before the change.
A second tool, tools/codegraph.mjs, draws the code graph across projects: one root folder,
one project per sub-folder, every source file parsed once. It records files and imports,
top-level symbols and who calls whom inside a project, code written twice (identical text,
or the same shape under other names) inside and across projects, and the symbols nothing
calls, graded against the list of what a static graph cannot see (dynamic dispatch, IPC by
string, FFI, entry points). scan, report, dups, hubs, dead. Pairs of projects
declared as a porting are marked and never counted. It writes one JSON and never touches a
source file; "uncalled" is a label, never a removal.
A third tool, tools/harvest.mjs, feeds the memory from what already exists without ever
writing a note by itself: it pulls the decision-shaped lines out of past Claude Code sessions
and project documents (extract, docs), takes the candidates a model proposed from them
(inbox write) and keeps them in <vault>/.atlas/inbox/ until a person accepts or rejects
each one (inbox accept, inbox reject). harvest suggest has a model propose accept / merge / reject for each candidate with the
reason, shown beside it; the person still decides. A rejected candidate is never proposed again; a
candidate that says what the vault already says is skipped and named.
tools/labels.mjs and hooks/atlas-labels.js are the labels: a table in <vault>/.atlas/labels.json,
and a PostToolUse hook on Grep and Read that attaches the label of any symbol a result
names, with the successor and the reason. Code is never deleted, it is marked, and it cannot
be found without the mark. Silent when the directory has no vault. hooks/atlas-precompact.js,
on PreCompact, keeps the session's decision-shaped lines in <vault>/.atlas/harvest/ before
the conversation is compacted, as raw material for harvest run, and hands them back as context
when the session resumes on its summary; nothing enters the vault. hooks/atlas-signals.js, on
Stop, asks at most three times a session whether one sign in the transcript (a fix, a
correction, an undo, a choice) is worth a note: one more turn each time; "signals": false in
~/.claude/atlas.json switches it off. A project's .atlas.json vault counts only when
~/.claude/atlas.json confirms it ("vault" or "vaults").
Two optional layers, each one file, each saying plainly when its dependency is missing:
tools/embed.mjs finds a note by meaning (a small multilingual model that runs locally,
about 130 MB downloaded once into ~/.atlas/models; needs the @huggingface/transformers
package) and tools/lsp.mjs asks a language server who really references a symbol now
(TypeScript and Python; needs typescript-language-server or pyright). Both look for
their packages beside the tools, in ATLAS_NODE_MODULES, or in the global npm folder.
Subagents
Delegated, never typed. The work stays with them, only the answer comes back — their reads, searches and logs never enter your conversation. That is the whole reason they exist, and the reason to skip one: when you need the material itself, delegating adds a round trip and saves nothing.
| subagent | what it does | worth knowing |
atlas-finder | answers "where": file and line range, one line each, nothing else | only cites ranges it actually read. Skip it when you already know the file |
atlas-diff | the same review, run where the diff stays: one line per problem, nothing about what is fine | reads the diff itself, so a large one never enters your context |
atlas-runner | runs tests, build or linter, returns only the deciding lines | never repairs anything, never works around a failure |
atlas-browser | drives a page, reports in words | one screenshot costs about 9,800 tokens; this pays for itself immediately |
atlas-research | searches the web: the answer with its sources, or a reading list grouped by kind; in catalogue mode the public catalogues (free APIs, free tiers, MCP servers, skills, plugins, hooks), three candidates back, never installs | says "I did not find it" rather than "it does not exist", and never forces a weak link to fill a group; the catalogues are 550,000 tokens and never enter your context |
Builds
| build | contains | fixed cost at low |
atlas | the dials, six commands, the research and browser subagents | 2,232 |
atlas-min | compression only: one command, no ask, no check, no provenance marker | 1,085 |
atlas-code | atlas plus coding and documents: review, fix, plan, test, ship, spec, changelog and the rest | 5,752 |
atlas-mem | atlas plus review, fix and commit, a memory and a reader of shipped programs | 3,101 |
atlas-video | atlas plus video: written with a framework on this machine, or recorded from the screen | 2,462 |
atlas-max | everything: atlas-code, atlas-mem and atlas-video together. Install it instead of those two, never beside them: two builds inject the rules twice | 6,275 |
The per-turn reminder
A short line is injected every turn so the level does not drift back to verbose: 27 tokens at
low, 32 at high, plus 9 for each of ask, check and silent when on. It names the rules that slip first — and
"answer first, only what was asked", the one whose failure costs more than the reminder does.
On a long session this is the largest number on the card. Over 295 turns it is 7,965 tokens, more than twice the entire fixed cost. It scales with turns; everything above scales with nothing.
Configuration
| what | where |
| state | ~/.claude/atlas-state/<project>.state, one line, level:rigour:check:silent |
| untouchable terms, one per line | ~/.claude/atlas-terms.txt, ships empty |
| per-project default | .atlas.json, { "level": "low", "rigour": "ask", "check": "off", "silent": "off" } |
Token figures are tiktoken approximations, not Claude's tokenizer — compare them to each other,
not to a bill. The fixed costs above are counted by atlas-test/fixed-costs.mjs. How much each level compresses was measured on an earlier revision of the rules with claude-opus-5-5 on 2026-09-26: 24 English and 24 Italian questions with fixed fact sheets, 2 rounds each, through the real hooks. Output against no plugin, median: low -37% English and -37% Italian, high -46% and -43%; details lost, median: low 1 and 0 of 263, high 0 and 1. Run-to-run noise 0.6 points. The API bills the injected rules at about 1.54 times the tiktoken count. The full tables are in the README.
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
Reviews can't be read right now.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

