Skip to main content

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 readsWhere 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

SituationWhat to do
Daily work on one repocd <repo> && claude
Multiple repos at onceOne terminal tab per repo, each cd'd in
Two sessions on same repogit worktree add — one dir per session
VS Code organizationSingle multi-root workspace for navigation
Skills across all repossv0-skills symlink setup (one-time, Step 2 of onboarding)