Workspace and Session Layout
How to structure your local environment when working across multiple SecurityV0 repos with Claude Code.
Directory Layout
Keep all repos in a single flat parent folder:
~/dev/securityv0/
├── sv0-platform/
├── sv0-connectors/
├── sv0-documentation/
├── sv0-website/
└── sv0-skills/ ← symlinked to ~/.claude/skills/ (global skills)
This is flat — no nesting. Each repo is a direct child of securityv0/. The parent folder itself is not a git repo.
Where to Start Claude Code Sessions
Always cd into the specific repo before starting Claude Code.
cd ~/dev/securityv0/sv0-platform
claude
One terminal per repo. Don't start Claude Code from ~/dev/securityv0/ — the parent folder has no CLAUDE.md, no .claude/ directory, and no git context. Claude Code will have no project-level skills, agents, or instructions.
Why it matters
Claude Code determines context from the working directory at session start:
| What Claude Code reads | Where it comes from |
|---|---|
| Global skills | ~/.claude/skills/ — always loaded (set up via sv0-skills symlink) |
| Global settings | ~/.claude/settings.json — tool allow/deny rules, shared across all projects |
| Project settings | ~/.claude/projects/<path-hash>/settings.local.json — additional dirs, env vars for a specific project path |
| Repo skills | <cwd>/.claude/skills/ — loaded if CWD is inside that repo |
| Repo agents | <cwd>/.claude/agents/ — same |
| Repo settings | <cwd>/.claude/settings.json — deny rules, hooks (committed to git) |
| Repo local settings | <cwd>/.claude/settings.local.json — env vars like SLACK_WEBHOOK_URL (gitignored) |
CLAUDE.md instructions | <cwd>/CLAUDE.md and parent directories |
| MCP servers | .mcp.json in CWD or parent directories |
Starting inside the specific repo gives you all layers. Starting in the parent gives you only global settings and nothing else.
Settings hierarchy
Settings merge from three levels. More specific levels override broader ones:
~/.claude/ ← User-level (all projects)
├── settings.json ← Tool allow/deny, global prefs
├── settings.local.json ← Personal env vars
├── skills/ ← Global skills (sv0-skills symlinks)
└── projects/
└── -Users-<you>-dev-...-sv0-platform/ ← Project-level (per working directory path)
└── settings.local.json ← Additional dirs, project-specific env vars
<repo>/.claude/ ← Repo-level (committed, shared via git)
├── settings.json ← Deny rules, hooks
├── settings.local.json ← Local env vars (gitignored)
├── skills/ ← Repo skills
├── agents/ ← Repo agents
└── hooks/ ← Hook scripts
Key rule: keep additionalDirectories at the project level (~/.claude/projects/*/settings.local.json), not in global settings. Global additional directories bleed into every project, causing path mix-ups when you have multiple workspace clones (e.g., dev1/ vs the original).
VS Code Workspace Setup
Use a single multi-root workspace to get cross-repo navigation in one VS Code window.
Create ~/dev/securityv0/securityv0.code-workspace:
{
"folders": [
{ "name": "platform", "path": "sv0-platform" },
{ "name": "connectors", "path": "sv0-connectors" },
{ "name": "documentation", "path": "sv0-documentation" },
{ "name": "website", "path": "sv0-website" },
{ "name": "skills", "path": "sv0-skills" }
]
}
Open it: code ~/dev/securityv0/securityv0.code-workspace
What this gives you:
- Single sidebar showing all repos
- Cross-repo file search and symbol navigation
- Git panel tracking all repos simultaneously
- One window instead of five
What it doesn't do: it does not affect Claude Code session isolation. You still need to start Claude Code from inside the specific repo directory. Open one integrated terminal tab per repo you're actively working in, cd into it, then run claude.
Working on Multiple Repos Simultaneously
Different repos are already fully isolated — they're separate git repos. Open one terminal per repo:
Terminal 1: ~/dev/securityv0/sv0-platform → claude (platform work)
Terminal 2: ~/dev/securityv0/sv0-connectors → claude (connectors work)
No conflicts. Each session has its own branch, its own working tree, its own staged files.
Working on the Same Repo in Parallel
If you need two Claude Code sessions in the same repo at once (e.g., working on two features simultaneously), use git worktrees:
cd ~/dev/securityv0/sv0-platform
# Create an isolated working directory for a second session
git worktree add ../sv0-platform-auth feature/auth
Result:
~/dev/securityv0/
├── sv0-platform/ ← Session 1 (main or feature/billing)
└── sv0-platform-auth/ ← Session 2 (feature/auth) — isolated
Both directories share one .git object store (lightweight, no re-clone) but have completely separate working trees and branches. Start Claude Code in each directory independently.
Cleanup when done:
git worktree remove ../sv0-platform-auth
Claude Code also has a built-in /worktree command that creates and switches to a worktree automatically. Full worktree documentation: Git Workflow, Branching, and Worktrees.
Summary
| Situation | What to do |
|---|---|
| Daily work on one repo | cd <repo> && claude |
| Multiple repos at once | One terminal tab per repo, each cd'd in |
| Two sessions on same repo | git worktree add — one dir per session |
| VS Code organization | Single multi-root workspace for navigation |
| Skills across all repos | sv0-skills symlink setup (one-time, Step 2 of onboarding) |