Files
Panama/user/README.md
T
Gabriel Brown 89761a7da3 Keep the personal half of the desktop in one place, and ask before installing it
Agent instructions, skills, SSH host aliases and expansion triggers are worth
having identical on every machine one person owns, and belong in none of the
shared configuration. They live in user/ now, with a manifest saying where each
piece goes and a link-user stage that puts it there.

That stage does nothing unless the machine said yes. Somebody who clones Panama
to try the desktop keeps their own ~/.claude/CLAUDE.md exactly where it was;
the question names the destinations and defaults to no. Anything displaced goes
to config/old rather than being deleted.

~/.claude/CLAUDE.md and ~/.codex/AGENTS.md were byte-identical copies of one
file, which is the drift this exists to prevent.

Also adds the vitals toggles for the battery and Claude usage readouts, which
had preferences and no way to reach them.
2026-08-22 08:54:43 -04:00

52 lines
2.3 KiB
Markdown

# Personal content
Everything else in Panama is the desktop. This directory is the person using it.
The problem it solves is small and annoying: an agent skill, an SSH host alias
or a set of expansion triggers is worth having on every machine you own, but
none of it belongs in the shared configuration, and keeping it in a second
repository means remembering to update two things. So it lives here, tracked,
and one file says where each piece goes.
## What is in here
| Path | Goes to | Why |
| --- | --- | --- |
| `agents/AGENTS.md` | `~/.claude/CLAUDE.md`, `~/.codex/AGENTS.md` | Two tools, two names, one file. These were byte-identical copies before this, waiting to disagree. |
| `agents/skills/` | `~/.agents/skills`, `~/.claude/skills` | Linked as a directory, so a skill installed on any machine lands in the checkout. |
| `agents/rules/` | `~/.claude/rules` | |
| `ssh/config` | `~/.ssh/config` | Host aliases only. Keys are per-machine and are never tracked. |
| `espanso/identity.yml` | `~/.config/espanso/match/identity.yml` | Copied, not linked, because a machine may add its own triggers. |
`manifest` is the authority; this table is a summary of it.
## It is off unless you say yes
The installer asks, naming the destinations, and the default is no. Nothing here
is linked on a machine that did not answer yes, and the answer is remembered in
`$XDG_STATE_HOME/panama/user-content` so upgrades do not re-ask.
That gating is the whole reason this can be tracked in a repository other people
clone. If you are that other person: delete what is in here, put your own in its
place, and answer yes. The mechanism is yours, the contents are not.
## Adding something
Put the file under `user/`, add a line to `manifest`, run:
```bash
./setup/scripts/link-user
```
Anything already at the destination is moved to `config/old/` rather than
deleted, under a name that says where it came from.
## What does not go in here
Anything secret. This repository is readable by anyone who finds it, and the
contract test refuses private keys, tokens and credentials outright. That means
no `~/.ssh/id_*`, no `.credentials.json`, no API keys, and no `settings.json`
carrying the names of hosts or people you would rather not publish. Machine
state that a tool rewrites on its own does not belong here either; it will churn
the git history for no benefit.