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.
Use Mori CLI to enable agent-to-agent communication and coordination across Mori-managed panes.
$ npx skills add vaayne/mori --skill mori-agent-bridge -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install vaayne/mori mori-agent-bridge --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ 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-srcUse ~/.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/
Install the "mori-agent-bridge" agent skill from https://github.com/vaayne/mori/tree/main/skills/mori-agent-bridge into .claude/skills/mori-agent-bridge/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "mori-agent-bridge", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/vaayne/mori/tree/main/skills/mori-agent-bridgeType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add vaayne/mori --skill mori-agent-bridge -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install vaayne/mori mori-agent-bridge --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/vaayne/mori.git skills-src && mkdir -p .agents/skills && cp -r skills-src/skills/mori-agent-bridge .agents/skills/mori-agent-bridge && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "mori-agent-bridge" agent skill from https://github.com/vaayne/mori/tree/main/skills/mori-agent-bridge into .agents/skills/mori-agent-bridge/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "mori-agent-bridge", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add vaayne/mori --skill mori-agent-bridge -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install vaayne/mori mori-agent-bridge --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/vaayne/mori.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/skills/mori-agent-bridge .cursor/skills/mori-agent-bridge && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "mori-agent-bridge" agent skill from https://github.com/vaayne/mori/tree/main/skills/mori-agent-bridge into .cursor/skills/mori-agent-bridge/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "mori-agent-bridge", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/vaayne/mori.git --path skills/mori-agent-bridge--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add vaayne/mori --skill mori-agent-bridge -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install vaayne/mori mori-agent-bridge --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/vaayne/mori.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/skills/mori-agent-bridge .gemini/skills/mori-agent-bridge && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "mori-agent-bridge" agent skill from https://github.com/vaayne/mori/tree/main/skills/mori-agent-bridge into .gemini/skills/mori-agent-bridge/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "mori-agent-bridge", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install vaayne/mori mori-agent-bridgeInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add vaayne/mori --skill mori-agent-bridge -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/vaayne/mori.git skills-src && mkdir -p .github/skills && cp -r skills-src/skills/mori-agent-bridge .github/skills/mori-agent-bridge && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "mori-agent-bridge" agent skill from https://github.com/vaayne/mori/tree/main/skills/mori-agent-bridge into .github/skills/mori-agent-bridge/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "mori-agent-bridge", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add vaayne/mori --skill mori-agent-bridge -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install vaayne/mori mori-agent-bridge --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/vaayne/mori.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/skills/mori-agent-bridge .opencode/skills/mori-agent-bridge && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "mori-agent-bridge" agent skill from https://github.com/vaayne/mori/tree/main/skills/mori-agent-bridge into .opencode/skills/mori-agent-bridge/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "mori-agent-bridge", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
mori-agent-bridgeUse 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. 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.
3 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit ff206ee. It shows what the files ask for, not the result of running them.
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.
Shell commands in SKILL.md call:
jqclaudeFrom the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md.
From URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
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.
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.
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.
The full file from vaayne/mori at commit ff206ee, republished under its MIT licence (© vaayne). 532 words, ~1,669 tokens.
.claude/skills/mori-agent-bridge/SKILL.md (or your agent's skills folder).Three operations — discover, read, send. Always discover first.
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.
| 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 |
# 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 idKey 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 |
mori pane read --pane %56 --lines 80Falls back to tmux if mori output looks stale:
tmux capture-pane -t %56 -p | tail -30Always 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:
# 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 -15Why 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.Always launch in the same session and worktree as the caller. Use $MORI_WINDOW to ensure this.
# 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.' EnterModel 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.
When sending from one agent to another, prefix with sender pane ID so the receiver can reply:
tmux send-keys -t %60 '[from %31] review plan.md and reply back to %31 when done' EnterThe receiver replies:
tmux send-keys -t %31 '[from %60] done — found 3 risks, see plan.md comments' Enter| 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 |
© vaayne, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
Just SKILL.md in skills/mori-agent-bridge of vaayne/mori.
Open the folder on GitHubat commit ff206ee
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.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Mori Agent Bridge this skillvaayne/mori | 303 | — | ~1.7k | Automated safety check: Pass | MIT | |
| Build Px4 macOSPX4/PX4-Autopilot | 13k | — | ~1.1k | Automated safety check: Pass | BSD-3-Clause | |
| Git Worktree Setupk8zdev/k8z | 155 | — | ~930 | Automated safety check: Pass | None | |
| Project Session ManagerYeachan-Heo/oh-my-claudecode | 40k | — | ~4k | Automated safety check: Pass | MIT | |
| Multi Agent Orchestrationcat-xierluo/legal-skills | 713 | — | ~6.6k | Automated safety check: Pass | MIT | |
| Agtx Task Sweepfynnfluegge/agtx | 1.7k | — | ~1.7k | Automated safety check: Pass | Apache-2.0 |
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.
k8zdev/k8z
Automate git worktree creation and copy private files (not tracked in git) to new workdirs.
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.
cat-xierluo/legal-skills
编排两个以上边界独立的本地 worker,使用 Orca Run/Task/Dispatch、独立 worktree/session 或 tmux 回退,由 PM 负责拆解、派发、巡检、429 停滞恢复、独立验收、PR 收口与临时资源清理;也用于用户明确要求“并行推进”“多个 worker”“PM 总控”“Wave Autopilot”或防止 PM…
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.
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…
vaayne/mori
Release workflow for Mori macOS workspace terminal and MoriRemote iOS app.
vaayne/mori
A skill your agent uses when designing or building native macOS applications with SwiftUI or AppKit.
Categories
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.
Mori Agent Bridge fits situations like: tasks that involve Git worktrees.
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.
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.
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.
Going by SKILL.md and its folder, Mori Agent Bridge needs the command-line tools its instructions call (jq and claude).
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.
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.
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.
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.
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.
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.