vaayne/mori/mori-agent-bridge
Claude Code and agent skill by vaayne/mori
- community
Checking that the SKILL.md file is still in the repository.
Use Mori CLI to enable agent-to-agent communication and coordination across Mori-managed panes. Use this whenever you need to launch a helper agent, send a message to another agent (Claude, Pi, Codex), read another agent's output, or coordinate multi-agent workflows. Prefer this over ad-hoc tmux whenever the task involves mori pane operations or agent-to-agent messaging.
Install
npx vskill@latest install vaayne/mori/mori-agent-bridgeSKILL.md
Mori Agent Bridge
Three operations — discover, read, send. Always discover first.
Golden rules
Stable IDs only. Never address by window name — names churn when agents update terminal titles.Use$MORI_PANE(self),$MORI_WINDOW(current window), or resolvetmuxPaneIdfrommori pane list.
Same session/worktree only. When creating a new pane or reusing an existing agent, it must be in the same tmux session and Mori worktree as the caller. Never spawn or target panes across different sessions or worktrees — scope all operations with$MORI_SESSION,$MORI_PROJECT, and$MORI_WORKTREE.
Environment variables (set automatically in Mori panes)
| Variable | Example | Use | |
|---|---|---|---|
MORI_PROJECT | mori | Scope CLI queries | |
MORI_WORKTREE | main | Scope CLI queries | |
MORI_SESSION | $1 | tmux session addressing | |
MORI_WINDOW | @3 | Stable window ID for Mori CLI | |
MORI_PANE | %42 | Stable pane ID for tmux commands |
1. Discover panes
Key fields in the JSON output:
| Field | Reliable? | Notes | |
|---|---|---|---|
tmuxPaneId | Stable | Primary handle for all operations | |
projectName | Stable | Set at pane creation | |
worktreeName | Stable | Set at pane creation | |
windowName | Ephemeral | Changes when any pane updates its title — avoid | |
agentState | Live | running / waitingForInput / none | |
paneTitle | Live | More trustworthy than detectedAgent |
2. Read pane output
Falls back to tmux if mori output looks stale:
3. Send to a pane
Always use `tmux send-keys` — it reaches any pane regardless of active status.
`Enter` must be a bare, unquoted argument. Inside quotes it is just the word "Enter", not a keypress. Always send text and Enter as separate arguments — or as two separate commands if in doubt:
Why not mori pane send or mori pane message?
mori pane send --paneis accepted but observed to drop messages silently when the target is not the active pane.mori pane messageroutes to the window's active agent only — no--paneflag, and if focus shifted, it hits the wrong pane.tmux send-keys -t %<id>is reliable in all cases.
Launch a helper agent
Always launch in the same session and worktree as the caller. Use $MORI_WINDOW to ensure this.
Model selection: haiku for trivial tasks, sonnet (default) for normal work, opus for hard reasoning. Add --permission-mode acceptEdits if the agent needs to edit files.
Agent-to-agent messaging
When sending from one agent to another, prefix with sender pane ID so the receiver can reply:
The receiver replies:
Troubleshooting
| Symptom | Cause | Fix | |
|---|---|---|---|
Window not found error | Window name changed (Ghostty renames tabs) | Use $MORI_WINDOW or tmuxPaneId instead | |
| Message dropped silently | Used mori pane send to non-active pane | Use tmux send-keys -t %<id> instead | |
| Message ran as shell command | Sent before agent finished starting | Wait for agentState == waitingForInput first | |
| Text in input but not processing | Enter was inside quotes, not a separate arg | Send tmux send-keys -t %<id> Enter | |
| Message went to wrong agent | Used mori pane message and focus shifted | Use tmux send-keys -t %<id> for precise targeting | |
| Agent says Write/Edit denied | Launched without edit permissions | Restart with --permission-mode acceptEdits | |
Enter keys ignored by Claude Code | Missing CLAUDE_CODE_NO_FLICKER=0 env | Always launch with CLAUDE_CODE_NO_FLICKER=0 claude ... | |
Enter typed as text, not keypress | Enter was inside quotes in tmux send-keys | Enter must be a bare unquoted arg: send-keys -t %id 'msg' Enter |
Report when done
- Which pane you targeted (tmuxPaneId)
- What the agent replied, or where you read it
- Any recovery step used
Security
- Security scanPassed, 100 of 100Pattern checks on the skill's files.
- Model reviewNot runA model review is scheduled for the next rescan.
Quality evaluation
- Task evaluationNot runNo evaluation yet. Run one in Skill Studio.
Source
- SKILL.md in the repositoryCheckingskills/mori-agent-bridge/SKILL.md
Popularity
- Repository stars
- 303
- Repository forks
- 18
- 7-day trend score
- 29
Stars and forks are for the whole GitHub repository, not this skill alone. Not refreshed yet.
Works with
Any agent vskill installs to: 56 targets in all. These 39 have a page on this site.
- Claude Code
- Cursor
- GitHub Copilot
- Windsurf
- Codex
- Gemini CLI
- Cline
- Amp
- Roo Code
- Goose
- Continue
- Kilo Code
- Junie
- Trae
- OpenHands
- Qwen Code
- AI Agent
- Tabnine Chat
- Sourcegraph Cody
- Amazon Q
- Firebase Genkit
- Sweep
- Devin
- Phind
- Mentat
- Claude Desktop
- Aider
- GPT Pilot
- Plandex
- bolt.new
- v0
- Replit Agent
- Anse
- TypingMind
- BetterChatGPT
- LibreChat
- Warp AI
- Pieces
- Fig AI
Embed badge
[](https://verified-skill.com/skills/vaayne/mori/mori-agent-bridge)