Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions .dotstate-profiles.toml
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,10 @@ version = 2

[common]
synced_files = [
".agents/.skill-lock.json",
".agents/skills/paranoid-review",
".claude/settings.json",
".claude/themes",
".config/bat",
".config/brew",
".config/btop",
Expand Down
9 changes: 8 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -10,9 +10,16 @@
!/AGENTS.md
!/README.md

# Shared skills: only tracked skills, not ones the skills CLI installs
# Shared skills: only tracked skills and the skills CLI lockfile, not the
# skills it installs
/common/.agents/*
!/common/.agents/skills/
!/common/.agents/.skill-lock.json

# Claude Code: only portable settings and themes, never sessions or caches
/common/.claude/*
!/common/.claude/settings.json
!/common/.claude/themes/

# pi: only the settings file, never auth or session state
/common/.pi/*
Expand Down
17 changes: 10 additions & 7 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -30,13 +30,16 @@ cd ~/dotfiles
```

`install.sh` installs Homebrew and the Brewfile, oh-my-zsh and its custom
plugins, and dotstate (from its Homebrew tap on macOS, the pinned release on
Linux). On first run it writes `~/.config/dotstate/config.toml` for this
checkout in Local mode with the `macos` or `linux` profile, then links
everything with dotstate. Files in the way are moved to
`~/.dotstate-backups/<timestamp>/` with their paths kept. Re-running is safe and
links paths added to the manifest since. Run `./test.sh` to validate configs and
installer behavior.
plugins, ccstatusline (with npm), and dotstate (from its Homebrew tap on macOS,
the pinned release on Linux). On first run it writes
`~/.config/dotstate/config.toml` for this checkout in Local mode with the
`macos` or `linux` profile, then links everything with dotstate and reinstalls
any agent skill recorded in `~/.agents/.skill-lock.json` that is missing from
`~/.agents/skills`, using `npx skills add --global --agent claude-code`, leaving
any skill whose `~/.claude/skills/<name>` is a real directory untouched. Files
in the way are moved to `~/.dotstate-backups/<timestamp>/` with their paths
kept. Re-running is safe and links paths added to the manifest since. Run
`./test.sh` to validate configs and installer behavior.

Coming from the old Stow layout, `install.sh` moves untracked state left at the
old paths (for example `.config/zsh/secrets.zsh`, herdr sessions, tmux plugins)
Expand Down
303 changes: 303 additions & 0 deletions common/.agents/.skill-lock.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,303 @@
{
"version": 3,
"skills": {
"agent-browser": {
"source": "vercel-labs/agent-browser",
"sourceType": "github",
"sourceUrl": "https://github.com/vercel-labs/agent-browser.git",
"skillPath": "skills/agent-browser/SKILL.md",
"skillFolderHash": "82def67855a0d2aad7794207951820fa5422fdb0",
"installedAt": "2026-09-29T20:28:53.399Z",
"updatedAt": "2026-09-29T20:28:53.399Z"
},
"find-skills": {
"source": "vercel-labs/skills",
"sourceType": "github",
"sourceUrl": "https://github.com/vercel-labs/skills.git",
"skillPath": "skills/find-skills/SKILL.md",
"skillFolderHash": "76a98a285cb0434f3d39e1a873823556330e398b",
"installedAt": "2026-09-29T20:28:56.653Z",
"updatedAt": "2026-09-29T20:28:56.653Z"
},
"cavecrew": {
"source": "JuliusBrussee/caveman",
"sourceType": "github",
"sourceUrl": "https://github.com/JuliusBrussee/caveman.git",
"skillPath": "skills/cavecrew/SKILL.md",
"skillFolderHash": "58b9a0bdb00d97953bfc840cb4dc3b38faf03759",
"installedAt": "2026-09-29T20:37:02.354Z",
"updatedAt": "2026-09-29T20:38:17.532Z"
},
"caveman": {
"source": "JuliusBrussee/caveman",
"sourceType": "github",
"sourceUrl": "https://github.com/JuliusBrussee/caveman.git",
"skillPath": "skills/caveman/SKILL.md",
"skillFolderHash": "2d9a159619205a175577d6540b1ed64fd73d83b1",
"installedAt": "2026-09-29T20:37:02.356Z",
"updatedAt": "2026-09-29T20:38:17.534Z"
},
"caveman-commit": {
"source": "JuliusBrussee/caveman",
"sourceType": "github",
"sourceUrl": "https://github.com/JuliusBrussee/caveman.git",
"skillPath": "skills/caveman-commit/SKILL.md",
"skillFolderHash": "7b600195c1d3cdd277dc608c56384c86afb7ec11",
"installedAt": "2026-09-29T20:37:02.356Z",
"updatedAt": "2026-09-29T20:38:17.534Z"
},
"caveman-compress": {
"source": "JuliusBrussee/caveman",
"sourceType": "github",
"sourceUrl": "https://github.com/JuliusBrussee/caveman.git",
"skillPath": "skills/caveman-compress/SKILL.md",
"skillFolderHash": "21aa5ecc4fdf9667604102c6ec723030ec4f4b9c",
"installedAt": "2026-09-29T20:37:02.356Z",
"updatedAt": "2026-09-29T20:38:17.535Z"
},
"caveman-discover": {
"source": "JuliusBrussee/caveman",
"sourceType": "github",
"sourceUrl": "https://github.com/JuliusBrussee/caveman.git",
"skillPath": "skills/caveman-discover/SKILL.md",
"skillFolderHash": "d43d2ff7268e8df5db2198977b79b765b723b9d9",
"installedAt": "2026-09-29T20:37:02.357Z",
"updatedAt": "2026-09-29T20:38:17.535Z"
},
"caveman-evidence-review": {
"source": "JuliusBrussee/caveman",
"sourceType": "github",
"sourceUrl": "https://github.com/JuliusBrussee/caveman.git",
"skillPath": "skills/caveman-evidence-review/SKILL.md",
"skillFolderHash": "50875bf7d4a1ce7a64d92cc4127b3c63c2e0701a",
"installedAt": "2026-09-29T20:37:02.357Z",
"updatedAt": "2026-09-29T20:38:17.535Z"
},
"caveman-explore": {
"source": "JuliusBrussee/caveman",
"sourceType": "github",
"sourceUrl": "https://github.com/JuliusBrussee/caveman.git",
"skillPath": "skills/caveman-explore/SKILL.md",
"skillFolderHash": "f26926e617ca8108e7ab77a9f6e100c228888ffe",
"installedAt": "2026-09-29T20:37:02.357Z",
"updatedAt": "2026-09-29T20:38:17.536Z"
},
"caveman-help": {
"source": "JuliusBrussee/caveman",
"sourceType": "github",
"sourceUrl": "https://github.com/JuliusBrussee/caveman.git",
"skillPath": "skills/caveman-help/SKILL.md",
"skillFolderHash": "7f39fe20663ec4d859cfed3883927a79a4ed2eff",
"installedAt": "2026-09-29T20:37:02.358Z",
"updatedAt": "2026-09-29T20:38:17.536Z"
},
"caveman-learn": {
"source": "JuliusBrussee/caveman",
"sourceType": "github",
"sourceUrl": "https://github.com/JuliusBrussee/caveman.git",
"skillPath": "skills/caveman-learn/SKILL.md",
"skillFolderHash": "908fae7ced871b3505fecc7c7d294d5f9dd39ca8",
"installedAt": "2026-09-29T20:37:02.359Z",
"updatedAt": "2026-09-29T20:38:17.537Z"
},
"caveman-manage": {
"source": "JuliusBrussee/caveman",
"sourceType": "github",
"sourceUrl": "https://github.com/JuliusBrussee/caveman.git",
"skillPath": "skills/caveman-manage/SKILL.md",
"skillFolderHash": "0a94a5cc3a4fd218b07d8853e4065e9a513fe51f",
"installedAt": "2026-09-29T20:37:02.359Z",
"updatedAt": "2026-09-29T20:38:17.537Z"
},
"caveman-optimize": {
"source": "JuliusBrussee/caveman",
"sourceType": "github",
"sourceUrl": "https://github.com/JuliusBrussee/caveman.git",
"skillPath": "skills/caveman-optimize/SKILL.md",
"skillFolderHash": "3311c453a59a8a27ad0555949e24fea81daf77fa",
"installedAt": "2026-09-29T20:37:02.359Z",
"updatedAt": "2026-09-29T20:38:17.538Z"
},
"caveman-review": {
"source": "JuliusBrussee/caveman",
"sourceType": "github",
"sourceUrl": "https://github.com/JuliusBrussee/caveman.git",
"skillPath": "skills/caveman-review/SKILL.md",
"skillFolderHash": "515d07fbd383fb9a15ad94647d133f681dc56197",
"installedAt": "2026-09-29T20:37:02.360Z",
"updatedAt": "2026-09-29T20:38:17.538Z"
},
"caveman-setup": {
"source": "JuliusBrussee/caveman",
"sourceType": "github",
"sourceUrl": "https://github.com/JuliusBrussee/caveman.git",
"skillPath": "skills/caveman-setup/SKILL.md",
"skillFolderHash": "be2dfccebf403aa38e16bb39e367a3f045e24b07",
"installedAt": "2026-09-29T20:37:02.360Z",
"updatedAt": "2026-09-29T20:38:17.539Z"
},
"caveman-stats": {
"source": "JuliusBrussee/caveman",
"sourceType": "github",
"sourceUrl": "https://github.com/JuliusBrussee/caveman.git",
"skillPath": "skills/caveman-stats/SKILL.md",
"skillFolderHash": "a2e477b9de0ebf214b86f11dffdd2a0122e1fc1f",
"installedAt": "2026-09-29T20:37:02.361Z",
"updatedAt": "2026-09-29T20:38:17.539Z"
},
"investigate-first": {
"source": "JuliusBrussee/caveman",
"sourceType": "github",
"sourceUrl": "https://github.com/JuliusBrussee/caveman.git",
"skillPath": "skills/investigate-first/SKILL.md",
"skillFolderHash": "c20174862b4748fc26ce55192a8431e9ef662947",
"installedAt": "2026-09-29T20:37:02.361Z",
"updatedAt": "2026-09-29T20:38:17.539Z"
},
"lean-build": {
"source": "JuliusBrussee/caveman",
"sourceType": "github",
"sourceUrl": "https://github.com/JuliusBrussee/caveman.git",
"skillPath": "skills/lean-build/SKILL.md",
"skillFolderHash": "47bc09c3509d7f58f0f890836ab7f382987fd487",
"installedAt": "2026-09-29T20:37:02.362Z",
"updatedAt": "2026-09-29T20:38:17.540Z"
},
"migration": {
"source": "JuliusBrussee/caveman",
"sourceType": "github",
"sourceUrl": "https://github.com/JuliusBrussee/caveman.git",
"skillPath": "skills/migration/SKILL.md",
"skillFolderHash": "b1066e51b4e7cb9a943554a98c3810653ccff059",
"installedAt": "2026-09-29T20:37:02.362Z",
"updatedAt": "2026-09-29T20:38:17.540Z"
},
"safe-refactor": {
"source": "JuliusBrussee/caveman",
"sourceType": "github",
"sourceUrl": "https://github.com/JuliusBrussee/caveman.git",
"skillPath": "skills/safe-refactor/SKILL.md",
"skillFolderHash": "49fd11fcfa4fd63ab175380ed8f80b992090e5e4",
"installedAt": "2026-09-29T20:37:02.362Z",
"updatedAt": "2026-09-29T20:38:17.540Z"
},
"surgical-patch": {
"source": "JuliusBrussee/caveman",
"sourceType": "github",
"sourceUrl": "https://github.com/JuliusBrussee/caveman.git",
"skillPath": "skills/surgical-patch/SKILL.md",
"skillFolderHash": "f7316a9431eff84811b6fd100af70e6984751c91",
"installedAt": "2026-09-29T20:37:02.362Z",
"updatedAt": "2026-09-29T20:38:17.541Z"
},
"verify-and-stop": {
"source": "JuliusBrussee/caveman",
"sourceType": "github",
"sourceUrl": "https://github.com/JuliusBrussee/caveman.git",
"skillPath": "skills/verify-and-stop/SKILL.md",
"skillFolderHash": "daaaceac55b83384dc3685c3b946699b9bc29331",
"installedAt": "2026-09-29T20:37:02.363Z",
"updatedAt": "2026-09-29T20:38:17.541Z"
},
"unslop": {
"source": "theclaymethod/unslop",
"sourceType": "github",
"sourceUrl": "https://github.com/theclaymethod/unslop.git",
"skillPath": "SKILL.md",
"skillFolderHash": "17ed39c9d0b522f44190ff0c6233867eadee192a",
"installedAt": "2026-09-30T20:53:41.316Z",
"updatedAt": "2026-09-30T20:53:41.316Z"
},
"fastapi-expert": {
"source": "jeffallan/claude-skills",
"sourceType": "github",
"sourceUrl": "https://github.com/jeffallan/claude-skills.git",
"skillPath": "skills/fastapi-expert/SKILL.md",
"skillFolderHash": "a61d5c47c9abf702f60d33c9d381141e690ea931",
"installedAt": "2026-10-16T01:31:36.746Z",
"updatedAt": "2026-10-16T01:31:36.746Z"
},
"architecture-designer": {
"source": "jeffallan/claude-skills",
"sourceType": "github",
"sourceUrl": "https://github.com/jeffallan/claude-skills.git",
"skillPath": "skills/architecture-designer/SKILL.md",
"skillFolderHash": "d9baa48932919d8db398cfc0953b3ec07b08356e",
"installedAt": "2026-10-16T01:31:36.748Z",
"updatedAt": "2026-10-16T01:31:36.748Z"
},
"react-expert": {
"source": "jeffallan/claude-skills",
"sourceType": "github",
"sourceUrl": "https://github.com/jeffallan/claude-skills.git",
"skillPath": "skills/react-expert/SKILL.md",
"skillFolderHash": "be511b42f21056772c6437dd6be3c51a54dfd30e",
"installedAt": "2026-10-16T01:31:36.750Z",
"updatedAt": "2026-10-16T01:31:36.750Z"
},
"nextjs-developer": {
"source": "jeffallan/claude-skills",
"sourceType": "github",
"sourceUrl": "https://github.com/jeffallan/claude-skills.git",
"skillPath": "skills/nextjs-developer/SKILL.md",
"skillFolderHash": "c92ec0f7f9e29d87be7322134c2c20e5fe9e44f6",
"installedAt": "2026-10-16T01:31:36.751Z",
"updatedAt": "2026-10-16T01:31:36.751Z"
},
"code-reviewer": {
"source": "jeffallan/claude-skills",
"sourceType": "github",
"sourceUrl": "https://github.com/jeffallan/claude-skills.git",
"skillPath": "skills/code-reviewer/SKILL.md",
"skillFolderHash": "7a96d8709f89d08fb37686736412be3c1bed6d99",
"installedAt": "2026-10-16T01:31:36.751Z",
"updatedAt": "2026-10-16T01:31:36.751Z"
},
"code-documenter": {
"source": "jeffallan/claude-skills",
"sourceType": "github",
"sourceUrl": "https://github.com/jeffallan/claude-skills.git",
"skillPath": "skills/code-documenter/SKILL.md",
"skillFolderHash": "1d2532889c15d70eb6d6230bd0d99657905a4b4e",
"installedAt": "2026-10-16T01:31:36.752Z",
"updatedAt": "2026-10-16T01:31:36.752Z"
},
"cli-developer": {
"source": "jeffallan/claude-skills",
"sourceType": "github",
"sourceUrl": "https://github.com/jeffallan/claude-skills.git",
"skillPath": "skills/cli-developer/SKILL.md",
"skillFolderHash": "d48ca3288f613f09b0efccab6f2b2092b4e58a69",
"installedAt": "2026-10-16T01:31:36.753Z",
"updatedAt": "2026-10-16T01:31:36.753Z"
},
"rust-engineer": {
"source": "jeffallan/claude-skills",
"sourceType": "github",
"sourceUrl": "https://github.com/jeffallan/claude-skills.git",
"skillPath": "skills/rust-engineer/SKILL.md",
"skillFolderHash": "ac751682f4202d7cc0fe5c82ec9a815b83ca9f70",
"installedAt": "2026-10-16T01:31:36.754Z",
"updatedAt": "2026-10-16T01:31:36.754Z"
}
},
"dismissed": {
"findSkillsPrompt": true
},
"lastSelectedAgents": [
"amp",
"cline",
"codex",
"cursor",
"droid",
"gemini-cli",
"github-copilot",
"kilo",
"kimi-code-cli",
"opencode",
"pi",
"warp",
"zed",
"claude-code"
]
}
Loading
Loading