Multi-project Manus-style planning with coordinator pattern for Claude Code.
A Claude Code skill that extends the planning-with-files pattern with support for multiple projects, separate planning/source paths, and cross-machine sync via git.
| Feature | planning-with-files | multi-manus-planning |
|---|---|---|
| Projects | Single (CWD) | Multiple via coordinator |
| Planning location | CWD only | Configurable (e.g., Obsidian vault) |
| Source path | Same as planning | Separate (code can live elsewhere) |
| Cross-machine | Manual | SessionStart hook with git sync |
| Project switching | N/A | Natural language ("switch to X") |
| Session isolation | N/A | Session-scoped (v1.4.1) - no conflicts |
Instead of planning files in your working directory, use a .planning/index.md coordinator:
~/scripts/ # Your CWD
├── .planning/
│ ├── index.md # Coordinator (active project, registry)
│ └── projects/
│ ├── project-a/
│ │ ├── task_plan.md
│ │ ├── findings.md
│ │ └── progress.md
│ └── project-b/
│ └── ...
Or store planning files anywhere (Obsidian, Dropbox, etc.) with the coordinator pointing to them.
# Planning Coordinator
active: project-a
default_path: ~/Planning
## Projects
| Name | Planning Path | Source Path | Description |
| --------- | ----------------------------- | ---------------- | ------------ |
| project-a | {default}/project-a | ~/code/project-a | Main project |
| project-b | ~/Obsidian/Planning/project-b | ~/code/project-b | Side project |
Install on each machine where you want to use multi-manus planning:
# Step 1: Add the marketplace
claude plugin marketplace add kmichels/multi-manus-planning
# Step 2: Install the plugin
claude plugin install multi-manus-planning@multi-manus-planning
# Step 3: Copy the command file (enables /multi-manus-planning slash command)
cp ~/.claude/plugins/cache/multi-manus-planning/multi-manus-planning/*/commands/multi-manus-planning.md ~/.claude/commands/
# Step 4: Restart your Claude session
# Exit and start a new session for the plugin to load
What gets installed:
multi-manus-planning skill (available via Skill tool)/multi-manus-planning command (after Step 3)Note: Plugins provide skills (invoked via Skill tool), not commands (invoked via /slash). Step 3 copies the command wrapper so you can use /multi-manus-planning.
Multi-machine setup: Repeat steps 1-4 on each machine. The plugin installs locally and does not sync between machines.
To automatically sync planning files when starting a session:
Note: The hook walks up the directory tree to find .planning/, similar to how git finds .git/. This means it works from any subdirectory of your workspace.
Copy the hook:
cp ~/.claude/skills/multi-manus-planning/scripts/planning-sync.sh ~/.claude/hooks/
chmod +x ~/.claude/hooks/planning-sync.sh
Add to ~/.claude/settings.json:
{
"hooks": {
"SessionStart": [
{
"hooks": [
{
"type": "command",
"command": "~/.claude/hooks/planning-sync.sh"
}
]
}
]
}
}
To automatically clean up session-local override files when ending a session:
Copy the hook:
cp ~/.claude/skills/multi-manus-planning/scripts/planning-cleanup.sh ~/.claude/hooks/
chmod +x ~/.claude/hooks/planning-cleanup.sh
Add to ~/.claude/settings.json:
{
"hooks": {
"SessionEnd": [
{
"hooks": [
{
"type": "command",
"command": "~/.claude/hooks/planning-cleanup.sh"
}
]
}
]
}
}
Note: This hook removes .active.override.$SESSION_ID files created by "switch to" commands. Without it, stale files accumulate but are harmless.
| Say | Action |
|---|---|
| "list projects" | Show all registered projects |
| "switch to [name]" | Change active project (this session only) |
| "set default [name]" | Set workspace default for new sessions |
| "which project?" | Show current project and path |
| "add project [name]" | Interactive project creation |
| "where are planning files?" | Show resolved planning path |
You: add project my-app
Claude: Where should I store the planning files?
○ Default location (~/Planning/my-app/) [Recommended]
○ Somewhere else (I'll specify)
You: [select default]
Claude: What's the source/working folder for this project?
You: ~/code/my-app
Claude: Created project "my-app":
- Planning: ~/Planning/my-app/
- Source: ~/code/my-app
- Files: task_plan.md, findings.md, progress.md
You: switch to project-b
Claude: Switched to project-b (this session)
Planning: ~/Obsidian/Planning/project-b/
Source: ~/code/project-b
[Reads task_plan.md and shows current status]
Multiple Claude Code sessions can work on different projects in the same workspace without conflicts:
.active.override.$CLAUDE_CODE_SESSION_ID)index.md (the workspace default for new sessions)Priority cascade when reading active project:
$MANUS_PROJECT environment variable (explicit override).active.override.$CLAUDE_CODE_SESSION_ID (session-local state)active: in index.md (workspace default)Note: v1.4.0 used TTY detection which doesn't work in Claude Code (Bash tool runs without TTY).
v1.4.1 uses $CLAUDE_CODE_SESSION_ID which is available in all Claude Code contexts.
Recommended .gitignore addition:
.planning/.active.override.*
default as your only projectmulti-manus-planning/
├── .claude-plugin/
│ └── plugin.json # Plugin manifest
├── skills/multi-manus-planning/
│ ├── SKILL.md # Main skill definition
│ ├── reference.md # Manus principles
│ ├── examples.md # Usage examples
│ ├── templates/
│ │ ├── index.md # Coordinator template
│ │ ├── task_plan.md # With Source header
│ │ ├── findings.md
│ │ └── progress.md
│ └── scripts/
│ ├── init-session.sh
│ ├── check-complete.sh
│ ├── planning-sync.sh # SessionStart hook
│ └── planning-cleanup.sh # SessionEnd hook (v1.4.0)
├── CHANGELOG.md
├── LICENSE
└── README.md
Run the hook test to verify the SessionStart hook works:
./skills/multi-manus-planning/scripts/test-hook.sh
Manual test checklist:
list projects shows registered projectsswitch to X changes active projectadd project Y creates files in correct locationBased on planning-with-files by OthmanAdi (MIT License).
The original implements the Manus context engineering pattern. This fork adds multi-project coordination.
MIT License - see LICENSE
Author: kmichels
9 commits
Shell
100.0%
Multi-project Manus-style planning with coordinator pattern for Claude Code.
A Claude Code skill that extends the planning-with-files pattern with support for multiple projects, separate planning/source paths, and cross-machine sync via git.
| Feature | planning-with-files | multi-manus-planning |
|---|---|---|
| Projects | Single (CWD) | Multiple via coordinator |
| Planning location | CWD only | Configurable (e.g., Obsidian vault) |
| Source path | Same as planning | Separate (code can live elsewhere) |
| Cross-machine | Manual | SessionStart hook with git sync |
| Project switching | N/A | Natural language ("switch to X") |
| Session isolation | N/A | Session-scoped (v1.4.1) - no conflicts |
Instead of planning files in your working directory, use a .planning/index.md coordinator:
~/scripts/ # Your CWD
├── .planning/
│ ├── index.md # Coordinator (active project, registry)
│ └── projects/
│ ├── project-a/
│ │ ├── task_plan.md
│ │ ├── findings.md
│ │ └── progress.md
│ └── project-b/
│ └── ...
Or store planning files anywhere (Obsidian, Dropbox, etc.) with the coordinator pointing to them.
# Planning Coordinator
active: project-a
default_path: ~/Planning
## Projects
| Name | Planning Path | Source Path | Description |
| --------- | ----------------------------- | ---------------- | ------------ |
| project-a | {default}/project-a | ~/code/project-a | Main project |
| project-b | ~/Obsidian/Planning/project-b | ~/code/project-b | Side project |
Install on each machine where you want to use multi-manus planning:
# Step 1: Add the marketplace
claude plugin marketplace add kmichels/multi-manus-planning
# Step 2: Install the plugin
claude plugin install multi-manus-planning@multi-manus-planning
# Step 3: Copy the command file (enables /multi-manus-planning slash command)
cp ~/.claude/plugins/cache/multi-manus-planning/multi-manus-planning/*/commands/multi-manus-planning.md ~/.claude/commands/
# Step 4: Restart your Claude session
# Exit and start a new session for the plugin to load
What gets installed:
multi-manus-planning skill (available via Skill tool)/multi-manus-planning command (after Step 3)Note: Plugins provide skills (invoked via Skill tool), not commands (invoked via /slash). Step 3 copies the command wrapper so you can use /multi-manus-planning.
Multi-machine setup: Repeat steps 1-4 on each machine. The plugin installs locally and does not sync between machines.
To automatically sync planning files when starting a session:
Note: The hook walks up the directory tree to find .planning/, similar to how git finds .git/. This means it works from any subdirectory of your workspace.
Copy the hook:
cp ~/.claude/skills/multi-manus-planning/scripts/planning-sync.sh ~/.claude/hooks/
chmod +x ~/.claude/hooks/planning-sync.sh
Add to ~/.claude/settings.json:
{
"hooks": {
"SessionStart": [
{
"hooks": [
{
"type": "command",
"command": "~/.claude/hooks/planning-sync.sh"
}
]
}
]
}
}
To automatically clean up session-local override files when ending a session:
Copy the hook:
cp ~/.claude/skills/multi-manus-planning/scripts/planning-cleanup.sh ~/.claude/hooks/
chmod +x ~/.claude/hooks/planning-cleanup.sh
Add to ~/.claude/settings.json:
{
"hooks": {
"SessionEnd": [
{
"hooks": [
{
"type": "command",
"command": "~/.claude/hooks/planning-cleanup.sh"
}
]
}
]
}
}
Note: This hook removes .active.override.$SESSION_ID files created by "switch to" commands. Without it, stale files accumulate but are harmless.
| Say | Action |
|---|---|
| "list projects" | Show all registered projects |
| "switch to [name]" | Change active project (this session only) |
| "set default [name]" | Set workspace default for new sessions |
| "which project?" | Show current project and path |
| "add project [name]" | Interactive project creation |
| "where are planning files?" | Show resolved planning path |
You: add project my-app
Claude: Where should I store the planning files?
○ Default location (~/Planning/my-app/) [Recommended]
○ Somewhere else (I'll specify)
You: [select default]
Claude: What's the source/working folder for this project?
You: ~/code/my-app
Claude: Created project "my-app":
- Planning: ~/Planning/my-app/
- Source: ~/code/my-app
- Files: task_plan.md, findings.md, progress.md
You: switch to project-b
Claude: Switched to project-b (this session)
Planning: ~/Obsidian/Planning/project-b/
Source: ~/code/project-b
[Reads task_plan.md and shows current status]
Multiple Claude Code sessions can work on different projects in the same workspace without conflicts:
.active.override.$CLAUDE_CODE_SESSION_ID)index.md (the workspace default for new sessions)Priority cascade when reading active project:
$MANUS_PROJECT environment variable (explicit override).active.override.$CLAUDE_CODE_SESSION_ID (session-local state)active: in index.md (workspace default)Note: v1.4.0 used TTY detection which doesn't work in Claude Code (Bash tool runs without TTY).
v1.4.1 uses $CLAUDE_CODE_SESSION_ID which is available in all Claude Code contexts.
Recommended .gitignore addition:
.planning/.active.override.*
default as your only projectmulti-manus-planning/
├── .claude-plugin/
│ └── plugin.json # Plugin manifest
├── skills/multi-manus-planning/
│ ├── SKILL.md # Main skill definition
│ ├── reference.md # Manus principles
│ ├── examples.md # Usage examples
│ ├── templates/
│ │ ├── index.md # Coordinator template
│ │ ├── task_plan.md # With Source header
│ │ ├── findings.md
│ │ └── progress.md
│ └── scripts/
│ ├── init-session.sh
│ ├── check-complete.sh
│ ├── planning-sync.sh # SessionStart hook
│ └── planning-cleanup.sh # SessionEnd hook (v1.4.0)
├── CHANGELOG.md
├── LICENSE
└── README.md
Run the hook test to verify the SessionStart hook works:
./skills/multi-manus-planning/scripts/test-hook.sh
Manual test checklist:
list projects shows registered projectsswitch to X changes active projectadd project Y creates files in correct locationBased on planning-with-files by OthmanAdi (MIT License).
The original implements the Manus context engineering pattern. This fork adds multi-project coordination.
MIT License - see LICENSE
Author: kmichels
9 commits
Shell
100.0%