Agent skill

Mori Agent Bridge

by vaayne in vaayne/mori

Use Mori CLI to enable agent-to-agent communication and coordination across Mori-managed panes.

MITAuto-check passedDevelopment

Install Mori Agent Bridge

skills CLI
$ npx skills add vaayne/mori --skill mori-agent-bridge -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install vaayne/mori mori-agent-bridge --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/vaayne/mori.git skills-src && mkdir -p .claude/skills && cp -r skills-src/skills/mori-agent-bridge .claude/skills/mori-agent-bridge && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
mori-agent-bridge
GitHub stars
303
Token cost
~1.7k tokens
SKILL.md length
532 words
Files
1
Skills in repo
3
Repo updated
First seen
Licence
MIT

At a glance

Use Mori CLI to enable agent-to-agent communication and coordination across Mori-managed panes.

  • Works in 3 steps: Discover panes → Read pane output → Send to a pane
  • Tasks that involve Git worktrees
  • SKILL.md covers Golden rules, Environment variables (set…, 1. Discover panes and 2. Read pane output, plus 5 more sections
  • Calls jq and claude

What it does

Mori Agent Bridge is an agent skill from vaayne/mori. 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.

Its SKILL.md is about 1.7k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.

It sits in Development, covering Git worktrees. It works with tmux, Git and macOS. The repository describes itself as: A native macOS workspace terminal organized around Projects and Worktrees, powered by tmux and libghostty. The licence is MIT.

When your agent uses it

  • Tasks that involve Git worktrees

Example prompts

  • “/mori-agent-bridge”

Workflow steps

3 steps, taken from the step headings in SKILL.md.

  1. Discover panes
  2. Read pane output
  3. Send to a pane

What it can do on your machine

Read from SKILL.md and the folder at commit ff206ee. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    Shell commands in SKILL.md call:

    • jq
    • claude

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    No URLs in SKILL.md.

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

Mori Agent Bridge loads about 1.7k tokens when it runs. Until then it costs about 98 tokens; SKILL.md has 532 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~98
When it runs · the whole SKILL.md, loaded when a task matches
~1.7k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check passed

The automated check found no risky patterns in SKILL.md.

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.

SKILL.md

The full file from vaayne/mori at commit ff206ee, republished under its MIT licence (© vaayne). 532 words, ~1,669 tokens.

Download SKILL.mdSave it as .claude/skills/mori-agent-bridge/SKILL.md (or your agent's skills folder).
name
mori-agent-bridge
description
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.

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 resolve tmuxPaneId from mori 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)

VariableExampleUse
MORI_PROJECTmoriScope CLI queries
MORI_WORKTREEmainScope CLI queries
MORI_SESSION$1tmux session addressing
MORI_WINDOW@3Stable window ID for Mori CLI
MORI_PANE%42Stable pane ID for tmux commands

1. Discover panes

bash
# Peers in the current worktree (use this by default)
mori pane list --json | jq --arg p "$MORI_PROJECT" --arg w "$MORI_WORKTREE" \
  '.[] | select(.projectName==$p and .worktreeName==$w)'

# Look up a specific pane
mori pane list --json | jq '.[] | select(.tmuxPaneId=="%56")'

# Current pane identity
echo "$MORI_PANE"   # or: mori pane id

Key fields in the JSON output:

FieldReliable?Notes
tmuxPaneIdStablePrimary handle for all operations
projectNameStableSet at pane creation
worktreeNameStableSet at pane creation
windowNameEphemeralChanges when any pane updates its title — avoid
agentStateLiverunning / waitingForInput / none
paneTitleLiveMore trustworthy than detectedAgent

2. Read pane output

bash
mori pane read --pane %56 --lines 80

Falls back to tmux if mori output looks stale:

bash
tmux capture-pane -t %56 -p | tail -30

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:

bash
# Correct: Enter is a separate unquoted argument
tmux send-keys -t %56 'your message here' Enter

# Also correct: two separate commands (safest)
tmux send-keys -t %56 'your message here'
tmux send-keys -t %56 Enter

# WRONG — Enter is inside the quotes, will not submit:
# tmux send-keys -t %56 'your message here Enter'

# If text is sitting in the input but not submitted
tmux send-keys -t %56 Enter

# Interrupt a busy agent
tmux send-keys -t %56 C-c

# Verify delivery
sleep 1 && tmux capture-pane -t %56 -p | tail -15

Why not mori pane send or mori pane message?

  • mori pane send --pane is accepted but observed to drop messages silently when the target is not the active pane.
  • mori pane message routes to the window's active agent only — no --pane flag, and if focus shifted, it hits the wrong pane.
  • tmux send-keys -t %<id> is reliable in all cases.
Show full SKILL.md (229 more words)Show less

Launch a helper agent

Always launch in the same session and worktree as the caller. Use $MORI_WINDOW to ensure this.

bash
# 1. Split a new pane (inherits caller's session/worktree via $MORI_WINDOW)
mori pane new --window "$MORI_WINDOW" --split v --name helper --json

# 2. Get its pane ID (window name may have already changed)
HELPER=$(mori pane list --json | jq -r '.[] | select(.paneTitle=="helper") | .tmuxPaneId')

# 3. Launch the agent (CLAUDE_CODE_NO_FLICKER=0 is required — without it, Enter keys won't work)
tmux send-keys -t "$HELPER" 'CLAUDE_CODE_NO_FLICKER=0 claude --model sonnet' Enter

# 4. Wait for it to be ready
until [ "$(mori pane list --json | jq -r --arg id "$HELPER" '.[] | select(.tmuxPaneId==$id) | .agentState')" = "waitingForInput" ]; do sleep 3; done

# 5. Send request
tmux send-keys -t "$HELPER" 'Review plan.md and list top 3 risks.' Enter

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:

bash
tmux send-keys -t %60 '[from %31] review plan.md and reply back to %31 when done' Enter

The receiver replies:

bash
tmux send-keys -t %31 '[from %60] done — found 3 risks, see plan.md comments' Enter

Troubleshooting

SymptomCauseFix
Window not found errorWindow name changed (Ghostty renames tabs)Use $MORI_WINDOW or tmuxPaneId instead
Message dropped silentlyUsed mori pane send to non-active paneUse tmux send-keys -t %<id> instead
Message ran as shell commandSent before agent finished startingWait for agentState == waitingForInput first
Text in input but not processingEnter was inside quotes, not a separate argSend tmux send-keys -t %<id> Enter
Message went to wrong agentUsed mori pane message and focus shiftedUse tmux send-keys -t %<id> for precise targeting
Agent says Write/Edit deniedLaunched without edit permissionsRestart with --permission-mode acceptEdits
Enter keys ignored by Claude CodeMissing CLAUDE_CODE_NO_FLICKER=0 envAlways launch with CLAUDE_CODE_NO_FLICKER=0 claude ...
Enter typed as text, not keypressEnter was inside quotes in tmux send-keysEnter 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

© vaayne, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

Just SKILL.md in skills/mori-agent-bridge of vaayne/mori.

Open the folder on GitHubat commit ff206ee

Compare with similar skills

Mori Agent Bridge next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

Mori Agent Bridge compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Mori Agent Bridge this skillvaayne/mori303—~1.7kAutomated safety check: PassMIT
Build Px4 macOSPX4/PX4-Autopilot13k—~1.1kAutomated safety check: PassBSD-3-Clause
Git Worktree Setupk8zdev/k8z155—~930Automated safety check: PassNone
Project Session ManagerYeachan-Heo/oh-my-claudecode40k—~4kAutomated safety check: PassMIT
Multi Agent Orchestrationcat-xierluo/legal-skills713—~6.6kAutomated safety check: PassMIT
Agtx Task Sweepfynnfluegge/agtx1.7k—~1.7kAutomated safety check: PassApache-2.0

Similar skills

  • Build Px4 macOS

    PX4/PX4-Autopilot

    Build PX4 board firmware on macOS in the px4-dev Docker container, including git worktrees, and stage commit-labeled artifacts without flashing hardware.

    13k GitHub stars~1.1k tokensUpdated today
    DevelopmentAuto-check passed
  • Automate git worktree creation and copy private files (not tracked in git) to new workdirs.

    155 GitHub stars~930 tokensUpdated 3 mo ago
    DevelopmentAuto-check passed
  • Project Session Manager

    Yeachan-Heo/oh-my-claudecode

    Creates isolated git worktrees, with optional tmux sessions, for PR reviews, issue fixes and feature work across projects and repositories.

    40k GitHub stars~4k tokensUpdated yesterday
    DevelopmentAuto-check passed
  • Multi Agent Orchestration

    cat-xierluo/legal-skills

    编排两个以上边界独立的本地 worker,使用 Orca Run/Task/Dispatch、独立 worktree/session 或 tmux 回退,由 PM 负责拆解、派发、巡检、429 停滞恢复、独立验收、PR 收口与临时资源清理;也用于用户明确要求“并行推进”“多个 worker”“PM 总控”“Wave Autopilot”或防止 PM…

    713 GitHub stars~6.6k tokensUpdated yesterday
    DevelopmentAuto-check passed
  • Agtx Task Sweep

    fynnfluegge/agtx

    Breaks a conversation's results into feature-level tasks and pushes them to the agtx kanban board, where each task gets its own worktree and agent session.

    1.7k GitHub stars~1.7k tokensUpdated 6 days ago
    Agent WorkflowsAuto-check passed
  • Clean Vm

    axeldelafosse/loop

    Safely clean the local loop VM by reporting and removing stale loop runs, inactive Next.js or Storybook servers, optional browser windows, and unused loop-created worktrees without disturbing active…

    281 GitHub stars~906 tokensUpdated 6 mo ago
    DevelopmentAuto-check passed

More from vaayne/mori

  • Release

    vaayne/mori

    Release workflow for Mori macOS workspace terminal and MoriRemote iOS app.

    303 GitHub stars~1.2k tokensUpdated 2 mo ago
    Auto-check passed
  • macOS App Design

    vaayne/mori

    A skill your agent uses when designing or building native macOS applications with SwiftUI or AppKit.

    303 GitHub stars~789 tokensUpdated 2 mo ago
    Auto-check passed

Works with

Questions about Mori Agent Bridge

What does Mori Agent Bridge do?

Use Mori CLI to enable agent-to-agent communication and coordination across Mori-managed panes. Mori Agent Bridge is an agent skill from vaayne/mori. Use Mori CLI to enable agent-to-agent communication and coordination across Mori-managed panes.

When should I use Mori Agent Bridge?

Mori Agent Bridge fits situations like: tasks that involve Git worktrees.

How do I install Mori Agent Bridge in Claude Code?

Run `npx skills add vaayne/mori --skill mori-agent-bridge -a claude-code`. Or copy the skill folder (skills/mori-agent-bridge in vaayne/mori) into .claude/skills/mori-agent-bridge in your project. Claude Code loads it when a task matches its description.

How do I install Mori Agent Bridge in Codex?

Run `npx skills add vaayne/mori --skill mori-agent-bridge -a codex`. Or copy the skill folder (skills/mori-agent-bridge in vaayne/mori) into .agents/skills/mori-agent-bridge in your project. Codex loads it when a task matches its description.

Can I use Mori Agent Bridge in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add vaayne/mori --skill mori-agent-bridge -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/mori-agent-bridge, .gemini/skills/mori-agent-bridge, .github/skills/mori-agent-bridge and .opencode/skills/mori-agent-bridge in your project.

What does Mori Agent Bridge need to run?

Going by SKILL.md and its folder, Mori Agent Bridge needs the command-line tools its instructions call (jq and claude).

Does Mori Agent Bridge access the network?

SKILL.md contains no URLs. Any network use would come from the scripts or tools the agent runs. This is read from the text; nothing was executed.

Is Mori Agent Bridge safe to install?

Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.

What licence does Mori Agent Bridge use?

Mori Agent Bridge is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Mori Agent Bridge use?

About 1.7k tokens (SKILL.md is roughly 6.7k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.

What are the alternatives to Mori Agent Bridge?

Skills that share tags, products or a category with Mori Agent Bridge: Build Px4 macOS (PX4/PX4-Autopilot, 13k stars), Git Worktree Setup (k8zdev/k8z, 155 stars), Project Session Manager (Yeachan-Heo/oh-my-claudecode, 40k stars) and Multi Agent Orchestration (cat-xierluo/legal-skills, 713 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Mori Agent Bridge?

vaayne (a GitHub user) maintains it in vaayne/mori, which has 303 GitHub stars. The repository holds 3 skills in this directory. The repository was last updated on August 5, 2026.

Source: vaayne/mori on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.