Turn Claude Code into an organization — a multi-user, multi-project development environment where AI agents work in parallel across isolated workspaces.
A framework for managing Claude Code settings outside your projects. Instead of scattering CLAUDE.md, skills, and rules across every repo, you maintain one dedicated workspace that distributes settings via symlinks.
One repo → 14 users → 30+ skills → 12 projects → all running in parallel
- CLAUDE.md as org manual — 4-layer inheritance (global → repo → user → workspace)
- Skills as SOPs — reusable task definitions with scripts (shipping, SEO, image gen, etc.)
- Rules as policies — security, workflow constraints applied to every session
- Hooks as checklists — auto-commit on edit, auto-pull on read, cost governance
- Symlinks as distribution — one source of truth, shared everywhere
# 1. Clone
git clone https://github.com/noguchilin/claude-code-workspace.git
cd claude-code-workspace
# 2. Generate symlinks
node scripts/generate-links.js
# 3. Create your workspace
node scripts/setup-workspace.js <your-username>
# 4. Start Claude Code from your workspace
cd workspaces/<your-username>/general
claudeclaude-code-workspace/
├── CLAUDE.md # Root context (all sessions inherit)
├── links-manifest.json # Declarative symlink definitions
│
├── _shared/
│ ├── rules/ # Rule files (→ symlinked to .claude/rules/)
│ │ ├── env-local.md # .env.local management
│ │ └── search-required.md # Multi-source search policy
│ └── skills/ # Skill definitions (→ symlinked to .claude/skills/)
│ ├── search/ # Multi-engine search (Grok + Gemini + WebSearch)
│ ├── generate-image/ # AI image generation (GPT Image + Gemini)
│ ├── create-spec/ # Spec-driven development (requirements → design → tasks)
│ ├── brainstorming/ # Collaborative idea refinement
│ ├── systematic-debugging/ # 4-phase debugging framework
│ ├── check-status/ # Workspace health check
│ ├── transcribing-audio/ # Speech-to-text
│ ├── browser-view/ # Playwright MCP browser operations
│ ├── config-guide/ # Claude Code configuration guide
│ ├── workspace-setup/ # Workspace setup and conventions
│ ├── security-check/ # API key / secret security checklist
│ └── user-management/ # User roles and permissions
│
├── scripts/
│ ├── setup-workspace.js # Create new user workspace
│ ├── generate-links.js # Generate/verify all symlinks
│ ├── generate-mcp.js # Generate .mcp.json per workspace
│ ├── add-project.js # Add git project to a workspace
│ ├── validate-structure.js # Validate workspace integrity
│ └── lib/
│ └── cross-link.js # Cross-platform symlink (Mac/Win)
│
└── workspaces/
├── _template/ # Template for new users
│ └── general/
│ ├── CLAUDE.md # User workspace context
│ └── .claude/
│ └── settings.json # Hooks config (auto-commit, auto-pull)
└── {username}/ # Each user's workspace
├── general/ # General workspace (main working dir)
├── projects/ # Git projects (worktree-based)
└── _shared/ # User-specific shared config
Claude Code reads CLAUDE.md recursively upward from the current directory. This creates natural layering:
~/.claude/CLAUDE.md → Personal preferences (language, style)
claude-code-workspace/CLAUDE.md → Org-wide context (structure, commands)
workspaces/alice/CLAUDE.md → User-specific context
workspaces/alice/general/CLAUDE.md → Workspace-specific context
Files in .claude/rules/ at the git root are loaded into every session automatically. We store rule files in _shared/rules/ and symlink them to .claude/rules/.
Files in .claude/skills/ at the cwd level are available as skills. Each user workspace symlinks the skills they need from _shared/skills/.
Members get auto-commit and auto-pull hooks by default:
{
"hooks": {
"PostToolUse": [{ "matcher": "Edit|Write|NotebookEdit", "hooks": [{ "command": "auto-commit.js" }] }],
"PreToolUse": [{ "matcher": "Read|Glob|Grep", "hooks": [{ "command": "auto-pull.js" }] }]
}
}All symlinks are declared in links-manifest.json and generated with one command:
node scripts/generate-links.js # Generate all
node scripts/generate-links.js --dry-run # Verify only
node scripts/generate-links.js --user alice # Specific user- Create
_shared/skills/my-skill/SKILL.md - Add symlink entry to
links-manifest.json - Run
node scripts/generate-links.js
Skill structure:
_shared/skills/my-skill/
├── SKILL.md # Skill definition (triggers, steps, examples)
└── scripts/ # Optional automation scripts
└── run.sh
node scripts/setup-workspace.js aliceThis creates workspaces/alice/ from _template/, generates symlinks, and sets up MCP config.
cd workspaces/alice
node ../../scripts/add-project.js https://github.com/org/repo.git main| Role | Who | Permissions |
|---|---|---|
| Owner | Repo owner | Full access, no auto-commit |
| Member | Everyone else | Standard skills, auto-commit enabled |
- Claude Code (Anthropic CLI)
- Node.js 18+
- Git
- Playwright MCP — for browser automation skills
- Context7 MCP — for library documentation lookup
"Don't teach AI your job. Design the environment."
Instead of explaining your workflow every session, encode it into files:
| Concept | Human Equivalent | Claude Code |
|---|---|---|
| Company manual | Onboarding docs | CLAUDE.md |
| SOPs | Standard procedures | skills/ |
| Policies | Company rules | rules/ |
| Checklists | QA processes | hooks |
The result: any team member opens Claude Code and gets the same capabilities, the same quality, the same guardrails — without any setup beyond one command.
For the full design story and rationale behind this framework, see the companion article:
Claude Codeを「組織」にした──14人で回す開発環境の全設計 (Coming soon on note.com)
MIT