Shiftspace
Worktree manager and code review tool for VS Code. Keep tabs on multiple branches, inspect changes, and catch problems before you open a PR.
Preview release — Shiftspace is under active development. Expect rough edges and frequent updates.

What it does
Shiftspace gives you two views:
Grove — a dashboard of all your git worktrees as cards. Each card shows the branch, file count, lines changed, check results (lint, typecheck, test, etc.), and code smell counts. One glance tells you which worktree needs your attention.
Inspection — click a card to drill in. A file list and tree view of every change in that branch. Pick a diff mode (working changes, vs main, vs any ref) and browse files with inline insight badges.

Key features
Worktree management — Rename worktrees, swap branches, switch your primary worktree. Access everything from the sidebar or the full-screen panel.

Checks & pipelines — Define lint, typecheck, test, build, or any custom command in .shiftspace.json. Run them per worktree. Chain them into pipelines (e.g., fmt → lint → typecheck → test). Results show pass/fail badges on each card and go stale automatically when files change.
Code smell detection — Define regex patterns in .shiftspace.json to flag things linters won't catch: eslint-disable comments, LLM-generated separators, TODO counts, whatever matters to your team. Findings appear as badges on file nodes in Inspection mode.

MCP server — Built-in Model Context Protocol server so AI agents can query insights, check status, run checks, and list changed files programmatically.
Bundled themes — Ships with Shiftspace Dark and Shiftspace Light color themes.
Getting started
- Install the extension
- Press
Shift+Space to open Shiftspace (or run Shiftspace: Open as Tab from the command palette)
- Your worktrees appear automatically — click one to inspect it
- Drop a
.shiftspace.json in your repo root to configure checks and code smell rules:
{
"actions": [
{ "id": "lint", "label": "Lint", "command": "npm run lint", "type": "check", "icon": "search" },
{ "id": "test", "label": "Test", "command": "npm test", "type": "check", "icon": "beaker" }
],
"pipelines": [
{ "id": "verify", "label": "Verify", "steps": ["lint", "test"], "stopOnFailure": true }
],
"smells": [
{
"id": "eslint-disable",
"label": "ESLint Disable",
"pattern": "eslint-disable",
"threshold": 1,
"fileTypes": [".ts", ".tsx"]
}
]
}
Configuration
| Setting |
Description |
shiftspace.ignorePatterns |
Glob patterns for files to hide (e.g., *.lock, **/lang/*.json) |
shiftspace.additionalActions |
Personal action buttons beyond what .shiftspace.json defines |
shiftspace.insights.codeSmells.enabled |
Enable/disable code smell detection (default: on) |
shiftspace.insights.diagnostics.enabled |
Show compiler errors and lint warnings on file nodes (default: on) |
Requirements
Links