Files
Panama/user/manifest
T

68 lines
4.3 KiB
Plaintext

# What in user/ goes where, and in what form.
#
# <kind> <source under user/> <destination>
#
# kind is one of:
# link symlink the destination at the source, so editing either edits the
# repository. Use this for anything you want to update once and have
# change everywhere -- and for anything a tool writes into, because a
# skill installed on this machine should land in the checkout.
# linkdir symlink each child of the source into the destination, which is
# created as a real directory. Use this where the destination holds
# more than this one source -- ~/.claude/skills also carries Panama's
# own shipped skills -- so it cannot be a symlink to any single place.
# copy copy once, and never touch it again if the destination exists. Use
# this for files a machine legitimately diverges on.
#
# Lines beginning with # are comments and blank lines are ignored. ~ in a
# destination is this user's home.
#
# Nothing here is linked unless this machine said yes to the interview's
# question about personal content -- see setup/scripts/link-user. That is what
# keeps a repository somebody else can clone from also being one that installs
# Gabriel's agent instructions on their machine.
# ── Agents ───────────────────────────────────────────────────────────────────
# One file, three names. Claude Code reads CLAUDE.md, Codex and opencode read
# AGENTS.md, and before this they were byte-identical copies waiting to disagree.
link agents/AGENTS.md ~/.claude/CLAUDE.md
link agents/AGENTS.md ~/.codex/AGENTS.md
link agents/AGENTS.md ~/.config/opencode/AGENTS.md
# Skills, at both paths that look for them. Each tracked skill is linked from
# this checkout so edits stay shared and `panama update` offers to commit them.
#
# Both destinations also hold skills Panama itself ships, put there by the
# link-skills stage, so both are real directories with one link per skill. This
# stage runs after that one, so a personal skill wins a name collision.
linkdir agents/skills ~/.agents/skills
linkdir agents/skills ~/.claude/skills
link agents/rules ~/.claude/rules
# ── SSH ──────────────────────────────────────────────────────────────────────
# Host aliases only. Keys are per-machine and are never tracked; this is the
# file that makes `ssh server` work the moment a machine is set up, and it is
# what the SSH Hosts launcher command reads.
link ssh/config ~/.ssh/config
# ── Scripts ──────────────────────────────────────────────────────────────────
# Personal commands wanted on every machine, desktop or server. ~/.local/bin is
# on PATH in both shell configs. pwswitch toggles passwordless sudo through a
# sudoers.d drop-in, so an agent can run sudo and the password comes back after.
link bin/pwswitch ~/.local/bin/pwswitch
# ── Espanso ──────────────────────────────────────────────────────────────────
# The personal expansion triggers. Copied rather than linked, because this is a
# file each machine may add its own triggers to. It lands before setup-identity
# runs, and that stage only seeds a file that does not exist yet, so what is
# tracked here wins over the name and email the interview would have written.
copy espanso/identity.yml ~/.config/espanso/match/identity.yml
# ── OpenCode ─────────────────────────────────────────────────────────────────
# Claude Code carries its commands and agents as plugins, which opencode cannot
# read. These two directories hold the same capabilities in opencode's own
# format, so the command I type in one tool exists in the other.
linkdir agents/commands ~/.config/opencode/commands
linkdir agents/agents ~/.config/opencode/agents