{"id":39331774,"url":"https://github.com/jonmagic/workspace-manager","last_synced_at":"2026-01-18T02:02:58.382Z","repository":{"id":326261946,"uuid":"1104786139","full_name":"jonmagic/workspace-manager","owner":"jonmagic","description":"VS Code workspace and git worktrees based workflow manager","archived":false,"fork":false,"pushed_at":"2025-11-26T21:40:49.000Z","size":40,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-11-29T14:41:59.171Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Ruby","has_issues":false,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"isc","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/jonmagic.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-11-26T17:27:18.000Z","updated_at":"2025-11-26T21:40:53.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/jonmagic/workspace-manager","commit_stats":null,"previous_names":["jonmagic/workspace-manager"],"tags_count":null,"template":false,"template_full_name":null,"purl":"pkg:github/jonmagic/workspace-manager","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jonmagic%2Fworkspace-manager","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jonmagic%2Fworkspace-manager/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jonmagic%2Fworkspace-manager/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jonmagic%2Fworkspace-manager/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/jonmagic","download_url":"https://codeload.github.com/jonmagic/workspace-manager/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jonmagic%2Fworkspace-manager/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28526560,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-18T00:39:45.795Z","status":"online","status_checked_at":"2026-01-18T02:00:07.578Z","response_time":98,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2026-01-18T02:02:58.322Z","updated_at":"2026-01-18T02:02:58.371Z","avatar_url":"https://github.com/jonmagic.png","language":"Ruby","readme":"# Workspace Manager\n\nThis is a CLI I'm building to help me manage [VS Code workspaces](https://code.visualstudio.com/docs/editing/workspaces/workspaces) and [git worktrees](https://git-scm.com/docs/git-worktree). An agent will be calling this CLI to setup these workspaces for me during the normal course of my work. Typically once a workspace is created I'll task the agent in that space to start working on something.\n\n## Usage guide\n\n### Quick setup\n\n1. Make sure Ruby 3.2 or newer is available (`ruby -v`).\n2. Optionally create a convenience alias so you can type `wm` anywhere:\n\t```bash\n\talias wm=\"/path/to/workspace-manager/bin/workspace-manager\"\n\t```\n\tReplace `/path/to/wm` with the location of this repository and add the alias to your shell profile to persist it.\n3. Verify the CLI is reachable:\n\t```bash\n\twm help\n\t```\n4. Run the interactive setup wizard (once per machine) to create your config files:\n\t```bash\n\twm setup\n\t```\n\tThe wizard saves your answers to `~/.config/workspace-manager/config.json` and initializes `repos.json` for repository metadata.\n\tWhen prompted for *Search patterns*, you can supply combined glob entries such as `/Users/jonmagic/work/*, /Users/jonmagic/code/**/*, /Users/jonmagic/Dropbox/brain`.\n\n### Typical workflow\n\n1. **Initialize a session** – create a feature workspace, matching Git worktrees, and optional context folders:\n\t```bash\n\twm init --feature \"Checkout Flow\" --folder brain repo-one repo-two\n\t```\n2. **Inspect active work** – list recent sessions (limit or show active only as needed):\n\t```bash\n\twm list --active --limit 5\n\t```\n3. **Jump back into a session** – reopen the most recent workspace without re-entering the ID:\n\t```bash\n\twm open --recent 1\n\t```\n4. **Attach more repositories** – add extra worktrees or bring in standalone folders:\n\t```bash\n\twm extend slug--repo-one --folder brain repo-three\n\t```\n5. **Clean up when finished** – archive manifests/workspaces and remove worktrees:\n\t```bash\n\twm prune slug--repo-one\n\t```\n\tOr, to permanently delete a session and all traces:\n\t```bash\n\twm remove slug--repo-one\n\t```\n\n### Command reference\n\n| Command | Summary | Frequently used options |\n| ------- | ------- | ----------------------- |\n| `init` | Create a workspace for one or more repositories and prep matching worktrees. | `--feature NAME` *(required)*, `--primary NAME`, `--base main` or `repo:branch`, `--folder TOKEN` *(repeatable)*, `--notes TEXT`, `--checkout-existing`, `--dry-run`, `--no-open`, `--verbose` |\n| `list` | Show recent sessions with optional filters and JSON output. | `--limit N`, `--active`, `--json`, `--reverse` |\n| `open` | Resolve a session and launch VS Code or just print the workspace path. | `--session ID`, `--recent N`, `--print`, `--no-open` |\n| `extend` | Attach additional repositories or folders to a session and create new worktrees as needed. | `--session ID`, repeatable `--base` overrides, `--folder TOKEN`, `--checkout-existing`, `--dry-run`, `--no-open`, `--verbose` |\n| `prune` | Remove worktrees and archive session artifacts. | `--session ID`, `--dry-run` |\n| `remove` | Permanently delete a workspace session, worktrees, and all traces. | `--session ID`, `--dry-run` |\n| `config` | Print the current configuration JSON. | `--help` |\n| `version` | Display the CLI version string. | — |\n| `help` | Print the usage summary shown above. | — |\n\n\u003e 💡 `--folder` accepts either a direct path or any lookup token you already use for `wm init` repositories. We'll run it through your configured search patterns and add the resolved directory using its basename.\n\n### Configuration\n\nConfiguration now lives entirely in JSON under `~/.config/workspace-manager/`:\n\n| File | Purpose |\n| ---- | ------- |\n| `config.json` | Primary CLI settings (paths and search patterns). Created via `wm setup`. |\n| `repos.json` | Optional repository metadata that other tools can populate. Created (empty) by `wm setup` if missing. |\n\n`wm setup` walks you through the following questions and saves your answers to `config.json`:\n\n```json\n{\n\t\"worktrees_root\": \"~/code/worktrees\",\n\t\"workspaces_root\": \"~/code/workspaces\",\n\t\"history_file\": \"~/.config/workspace-manager/history.json\",\n\t\"repo_config\": \"~/.config/workspace-manager/repos.json\",\n\t\"search\": {\n\t\t\"patterns\": [\"~/code/**/*\"]\n\t}\n}\n```\n\nEnvironment variables still override the same settings if needed:\n\n| Setting | Environment variable |\n| ------- | -------------------- |\n| Worktrees root | `WORKSPACE_MANAGER_WORKTREES_ROOT` |\n| Workspaces root | `WORKSPACE_MANAGER_WORKSPACES_ROOT` |\n| History file | `WORKSPACE_MANAGER_HISTORY_FILE` |\n| Repo registry file | `WORKSPACE_MANAGER_REPO_CONFIG` |\n| Search patterns | `WORKSPACE_MANAGER_SEARCH_PATTERNS` |\n\nIf a required value is missing, commands will instruct you to run `wm setup` again.\n\nUse `--dry-run` with any mutating command to see what would happen without touching the filesystem. Combine `--verbose` for detailed logging, including shell commands.\n\n### Testing\n\nRun the full test suite with:\n\n```bash\nbin/test\n```\n\n## Contributors\n\n- [jonmagic](https://github.com/jonmagic)\n\n## License\n\nThis project is licensed under the [ISC License](LICENSE).\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjonmagic%2Fworkspace-manager","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjonmagic%2Fworkspace-manager","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjonmagic%2Fworkspace-manager/lists"}