Personal configuration files and environment setup.
dotfiles/
├── zsh/
│ ├── .zshenv # Global zsh env (all shell modes)
│ ├── .zshrc # Interactive shell config
│ └── .zprofile # Login shell config (PATH, env vars)
├── git/
│ ├── .gitconfig # Git configuration
│ ├── ignore # Global ignore rules (→ ~/.config/git/ignore)
│ └── allowed_signers # SSH signing key for signature verification
├── ssh/
│ └── config # SSH client config (1Password agent only for local sessions)
├── mise/
│ └── global-config.toml # mise global config (copied to ~/.config/mise/config.toml)
├── starship/
│ └── starship.toml # Starship prompt configuration
├── ghostty/
│ └── config # Ghostty terminal configuration
├── cursor/
│ ├── settings.json # Cursor editor settings
│ ├── keybindings.json # Cursor keybindings
│ ├── cli-config.json # Cursor CLI template (attribution merged into ~/.cursor/cli-config.json)
│ └── mcp.json # MCP server config
├── agents/
│ ├── GLOBAL.md # Shared AI guidelines + compiled @> skill index block
│ ├── claude.settings.json # Claude Code settings
│ ├── codex.config.toml # Codex settings
│ ├── conductor.settings.toml # Conductor user settings
│ ├── claude.statusline-command.sh
│ ├── hooks/ # Claude Code hooks (e.g. PR guideline check)
│ ├── compile-global.ts # Annotation compiler
│ ├── .build/ # Generated instructions and skills by harness (gitignored)
│ ├── skills/ # [P] Personal skills (hand-written)
│ │ ├── conductor/ # Conductor worktrees / CONDUCTOR_* / target branch
│ │ ├── pr-guidelines/
│ │ ├── code-quality/
│ │ ├── write/
│ │ ├── skills-manager/
│ │ └── .../
│ └── skills.local/ # [L] Private skills (optional submodule)
├── local/
│ ├── env.template # Machine-specific env vars template
│ └── secrets.template # API keys/tokens template
├── git-hooks/
│ └── pre-commit # Auto-compiles GLOBAL.md annotations
├── .agents/
│ └── skills/ # [E] External skills (from skills.sh)
│ └── .../
├── install.sh # Symlink installation script
├── setup.sh # Repo-local setup (git hooks)
├── Brewfile # Homebrew dependencies
├── skills-lock.json # External skill version tracking
├── links.txt # Symlink mappings
├── Makefile # Common tasks (install, check, etc.)
└── README.md
make install # Full install (compile annotations + symlink + sync skills)
make setup # Repo-local setup (git hooks) — run once per clone/worktree
make link # Same as install but skip brew/mise dependency install (faster iteration)
make update # git pull + full install (refresh from remote)After this repo is on your machine and zsh is sourced, the dotup alias runs make update from ~/Code/dotfiles (see zsh/.zshrc).
make install will:
- Compile skill annotations and harness inclusion into generated instructions and skill trees
- Back up any existing files to
~/.dotfiles-backup/ - Create symlinks from this repo to
~/(based onlinks.txt) - Copy mise global config and Cursor
global.mdc(not symlinked — seeinstall.sh); merge tracked Cursor CLI attribution into~/.cursor/cli-config.json(not a symlink — Cursor writes auth/model there); symlink~/AGENTS.mdfor Cursor CLI ancestor discovery - Sync all skills (personal, external, local) to
~/.claude/skills/,~/.codex/skills/, and~/.cursor/skills/ - Register MCP servers with Claude Code (user scope)
make link sets SKIP_DEPENDENCY_INSTALL=1 so Homebrew/mise steps are skipped; use it when deps are already satisfied. make update is for pulling latest dotfiles and re-running a full install.
Edit symlinked files in this repo; changes apply immediately. Copied/merged files (mise/global-config.toml, Cursor global rules, Cursor CLI attribution) need make link after edits. After pulling:
source ~/.zshrc- Add the config file to the appropriate directory
- Add mapping to
links.txt - Run
make linkto sync
Authoring details: agents/skills/README.md.
Skills come in three types:
- [P] Personal — Hand-written, tracked in
agents/skills/ - [L] Local — Private skills in the optional
agents/skills.local/submodule - [E] External — Installed from GitHub via skills.sh in
.agents/skills/
make link / install.sh deploy compiled skills to their selected harnesses. Whole-skill metadata and section markers control inclusion, as described in Agent skills. Excluded copies of a current source skill are removed from that target. Removed or renamed source directories still require separate orphan cleanup. After dropping or renaming a skill, remove the stale folder from those home paths too (compare ls agents/skills / .agents/skills / agents/skills.local with ls ~/.claude/skills). See the skills-manager skill (agents/skills/skills-manager/) for the full cleanup checklist.
agents/skills.local is an optional submodule backed by the private Aias/dotfiles-local repository. Public clones can run the installer without initializing it. The public repository stores its URL and pinned commit, while skill contents and history remain private.
With access to the private repository, initialize the pinned revision and deploy:
make setup-private-skillsTo fetch and deploy the latest private main revision:
make update-private-skillsUpdating requires a clean private checkout and uses a fast-forward merge. Divergent history stops the update for review. Regular make install, make link, and make update deploy the private checkout as it stands, without moving its revision.
Private skill edits are committed and pushed inside agents/skills.local first. Then commit the updated submodule reference in dotfiles. Initialization can leave the submodule detached, so create a working branch there before editing. Credentials and authentication state stay outside both repositories.
- Create
agents/skills/<skill-name>/SKILL.md - Run
make link(andmake compileif the skill usesglobal_category+@>annotations)
# Install (downloads to .agents/skills/)
npx skills add OWNER/REPO --skill SKILL-NAME -a claude-code -y
# Remove the symlink it creates (we deploy via make link instead)
rm -f .claude/skills/SKILL-NAME
# Deploy
make linkmake update-skills- Delete the skill directory under
agents/skills/,agents/skills.local/, or.agents/skills/ - Remove any matching entry from
skills-lock.json(external skills) - Delete the same skill name under
~/.claude/skills/,~/.codex/skills/, and~/.cursor/skills/(not done automatically)
make checkShows a table of all skills with sync status for each agent:
skill type claude codex cursor
changelog [P] ✓ ✓ ✓
react-best-practices [P] ✓ ✓ ✓