atlas-cli
The Atlas method made executable: create an Atlas and keep it in order while several people and agents work in it.
What Atlas is: a Claude-anchored, spec-driven way to keep the context of real software projects — one folder per project, its sources linked by symlink, so any agent opens it cold and knows what it is, where each source lives, where the work stands and how it gets closed.
1. Prerequisites (macOS + Windows)
Windows users: run everything below in Git Bash (installed with Git for Windows), not PowerShell or cmd: the Atlas hooks are bash scripts, and Claude Code runs them through Git Bash. Install tools with
wingetin PowerShell, then reopen Git Bash.
| Tool | What it's for | macOS | Windows (PowerShell, then reopen Git Bash) |
|---|---|---|---|
| Git (+ Git Bash) | Sources and shared Atlases are git repos; on Windows, Git Bash runs the hooks. | brew install git |
winget install Git.Git |
| jq | The hooks read and write JSON with it. Without it, they fail. | brew install jq |
winget install jqlang.jq |
| uv | Installs the atlas CLI with its own Python. |
brew install uv |
winget install astral-sh.uv |
| Claude Code | The anchor agent. | see claude.com/claude-code | see claude.com/claude-code |
Windows only — allow symlinks: Settings → Privacy & security → For developers → turn
Developer Mode ON, so atlas link can create symlinks without admin rights.
Check:
git --version && jq --version && uv --version && claude --version
2. Install
uv tool install paranoid-atlas-cli
The command is atlas; atlas --version confirms it. If the shell can't find it, run
uv tool update-shell and open a new terminal. Upgrade later with
uv tool install --reinstall paranoid-atlas-cli.
3. Install the machinery for Claude Code
atlas setup claude
It installs the hooks, the /atlas-init and /atlas-sync commands and the workspace-baseline
skill into ~/.claude (or CLAUDE_CONFIG_DIR when set), wires the three hooks into
settings.json without touching anything else there, and creates atlas-source pointing at the
official site when there is none. Run it again after every upgrade; it only changes what
differs.
Where the framework comes from: atlas-source holds one line — a URL (the official site, or
a local copy of it served on http://localhost:8088) or the path of a local clone of the
framework repo. A clone serves the method/*.md pages only — its index is method/README.md;
the llms.txt index the agent starts from is generated by the site. To change it:
printf '%s\n' "http://localhost:8088" > "${CLAUDE_CONFIG_DIR:-$HOME/.claude}/atlas-source"
With CLAUDE_CONFIG_DIR set, every ~/.claude/… path in the machinery lives under that folder
instead.
Cursor reads Claude Code's configuration from ~/.claude: once this step is done, it gets
the hooks, the commands and the skill — don't copy them into ~/.cursor/. The one thing to add
on Cursor's side is the MCP server behind an Atlas's coding-rules plugin, if it has one, in
~/.cursor/mcp.json.
4. Use it
- Create an Atlas: in a new folder,
atlas init, thenatlas link <name> <path>for each source andatlas doctorto check them — or/atlas-initin Claude Code, which does the same with you. - Join a shared Atlas: clone it, run
atlas doctorinside it and follow what it says. - Older Atlas:
atlas migrateshows the plan to bring it to the current model;atlas migrate --applyapplies it. - Day to day:
atlas statussays where things stand;/atlas-syncis the checkpoint;atlas unlink <name>drops a source the Atlas no longer uses.
How an Atlas works — its files, SPECs, cadence and sharing — is the method:
creating an Atlas and
sharing one. atlas --help lists
every command.
Troubleshooting
| Symptom | Fix |
|---|---|
atlas: command not found |
uv tool update-shell, then a new terminal. |
atlas-fetch: configure …/atlas-source |
Re-run atlas setup claude, or write a URL or clone path into that file. |
jq: command not found |
Install jq (step 1); on Windows, reopen Git Bash afterwards. |
| Hooks do nothing on Windows | Not in Git Bash, or Git for Windows isn't installed (step 1). |
atlas link can't create the symlink (Windows) |
Turn Developer Mode on (step 1). |
| The site doesn't answer | Serve the framework locally and point atlas-source at it (step 3). |
Develop
uv sync
uv run atlas --version
uv run pytest
Release
Bump version in pyproject.toml, commit, then push a matching tag (v0.1.1 for 0.1.1):
the Publish paranoid-atlas-cli to PyPI workflow builds and publishes it. A tag that doesn't match the
version fails the workflow.
Metadata
Release files for paranoid-atlas-cli 0.7.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| paranoid_atlas_cli-0.7.1.tar.gz | 39.8 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| paranoid_atlas_cli-0.7.1-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 76.2 kB
Release files / paranoid_atlas_cli-0.7.1.tar.gz
| Download URL | paranoid_atlas_cli-0.7.1.tar.gz |
|---|---|
| Size | 39.8 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
a60e3c5d87fd4bf4e3d656a263c6f81d5c13426589c8e82bb31086eba751e47e
|
|
BLAKE2b-256 checksum How to use checksums |
d85cd7a74937a2630dd789f279b2b97b3348131153c9b9c75ec710cc44a00f23
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Release files / paranoid_atlas_cli-0.7.1-py3-none-any.whl
| Download URL | paranoid_atlas_cli-0.7.1-py3-none-any.whl |
|---|---|
| Size | 36.4 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
491cf4c43cd87193719229d69ee2aa7429f4c3df65cbfb3443752ef2662ae31a
|
|
BLAKE2b-256 checksum How to use checksums |
4a47e123060acdbdc1b5ac435b8fbaedcbb23eaf33325591053e056d1d9c630d
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|