← ClaudeAtlas

workspacelisted

Manage isolated parallel work items — each a git worktree + dev-server port + copied env + isolated DB + state record. Use when starting work that should live off the main checkout (a feature, bug fix, refactor, or spike on its own branch), when resuming or listing in-flight work items, or when finishing/abandoning/removing one and tearing down its resources. Also the primitive layer the feature, propose, and review-pr skills use instead of reimplementing worktree, port, or DB setup. Subcommands — new, list, get, resume, done, abandon, remove.
kauffj/agent-config · ★ 7 · Code & Development · score 78
Install: claude install-skill kauffj/agent-config
# Parallel workspaces Owns the lifecycle of isolated working environments. Each workspace = git worktree + dev-server port + state record. The `feature`, `propose`, and `review-pr` skills use these primitives; they don't reimplement them. **State files** (relative to repo root): - `.workspaces/workspaces.json` — `{ workspaces: [...] }` - `.workspaces/project.json` — derived project-profile cache (see `lib/project.mjs`) - `.workspaces/plans/<slug>.md` — saved plans from `propose` - `.workspaces/worktrees/<name>/` — the worktrees themselves Worktrees live INSIDE the repo (not as `../<repo>-<name>` siblings — those bloated `~/projects`). The whole `.workspaces/` dir is kept out of git via `.git/info/exclude`, not `.gitignore`: an exclude entry needs no commit, and on self-deploying projects a `.gitignore` commit pushed to main would deploy. The dot-prefixed path also keeps `tsc`/lint wildcard globs in the main checkout from descending into nested worktrees. On first run after upgrading, the helpers auto-relocate any legacy state from `.claude/` to `.workspaces/`. Old `.claude/features.json` (legacy format) is also transformed. **Helper:** `$HOME/.config/agent-config/lib/workspace.mjs` — all state reads/writes and direct-delivery Git mutations go through this. Do not inline state mutations or reimplement its integrate/publish/verify/finish guards in other skills. **Record shape:** ```json { "name": "member-event-rsvp", "kind": "feature", "description": "...", "branc