Token导航 LogoToken导航TokenDH.com
运维和基础设施敏感数据github未标认证来源可访问clear审计提醒

tmuxinatortmuxinator 命令行

Agent Skill

tmuxinator 用于处理 GitHub 仓库、Issue、Pull Request 和代码协作信息,适合在 Codex、Claude、Cursor、Gemini CLI 中需要围绕仓库状态、代码变更或协作事项进行整理时使用。可结合来源仓库、安装命令和原始 README 继续核验具体用法。安装前建议确认权限范围、维护状态,以及是否会触发联网、命令执行或文件读写。

总安装

326

周安装

14

GitHub Stars

2

下载量

114
CodexClaudeCursorGemini CLI

安装说明

本站只整理中文说明和来源信息,不托管安装包,也不代用户安装。

GitHub

来源数

3

许可证

MIT

最后核验

2026-05-01

来源状态

来源可访问

安装方式

通过对话安装

复制提示词发给支持本地命令或 Skills 的 AI 助手,先确认命令和权限,再让它执行。

请帮我安装这个 Agent Skill:tmuxinator(tmuxinator 命令行)
来源仓库:https://github.com/bastos/skills
仓库路径:skills/tmuxinator
安装命令:
npx skills add https://github.com/bastos/skills --skill tmuxinator
安装前请先检查当前环境是否支持对应 CLI,并向我确认将要执行的命令、安装目录、联网范围和文件读写权限;确认后再执行。

命令行安装

复制命令到本机终端执行。不同来源提供的安装方式可能略有差异;本站展示可直接复制的安装命令,安装前请核对来源页面。

skills.shnpx skills
npx skills add https://github.com/bastos/skills --skill tmuxinator

简介

用于处理 GitHub 仓库、Issue、Pull Request 和代码协作信息。

  • 适合围绕仓库状态、代码变更或协作事项进行整理和使用。
  • 通过 npx skills add 命令安装,需结合原始 README 核验具体用法。
  • 安装前建议确认权限范围、维护状态及是否触发联网或文件读写操作。
  • tmuxinator 属于运维和基础设施类 Skill,可作为该场景下的辅助能力补充。

SKILL.md

Tmuxinator

Overview

Tmuxinator manages complex tmux sessions through YAML configuration files. Define windows, panes, layouts, and startup commands once, then launch reproducible development environments with a single command.

When to Use

  • Setting up multi-window/pane development environments
  • Automating project-specific terminal layouts
  • Creating reproducible tmux sessions across machines
  • Debugging tmuxinator configuration issues

Not for: Simple single-window sessions (just use tmux directly)

Quick Reference

CommandAliasPurpose
tmuxinator new PROJECTnCreate/edit project config
tmuxinator new --local PROJECT-Create .tmuxinator.yml in current dir
tmuxinator start PROJECTsLaunch session
tmuxinator start PROJECT -n NAME-Launch with custom session name
tmuxinator start PROJECT --append-Append windows to current session
tmuxinator stop PROJECT-Kill session
tmuxinator stop-all-Kill all tmuxinator sessions
tmuxinator listl, lsList all projects
tmuxinator copy OLD NEWc, cpDuplicate config
tmuxinator delete PROJECTrmRemove config
tmuxinator debug PROJECT-Show generated shell commands
tmuxinator doctor-Diagnose issues

Configuration Locations

  1. ~/.tmuxinator/PROJECT.yml (default)
  2. $XDG_CONFIG_HOME/tmuxinator/PROJECT.yml
  3. $TMUXINATOR_CONFIG/PROJECT.yml
  4. .tmuxinator.yml in project root (local config)

Complete Configuration Reference

Project Options

OptionTypeDefaultDescription
namestringrequiredSession name (no periods allowed)
rootstring~/Base directory for all windows
socket_namestring-Custom tmux socket name
attachbooleantrueAuto-attach to session after creation
startup_windowstring/intfirstWindow to select on startup (name or index)
startup_paneint0Pane to select within startup window
tmux_optionsstring-Options passed to tmux (e.g., -f ~/.tmux.alt.conf)
tmux_commandstringtmuxAlternative command (e.g., byobu)
pre_windowstring/list-Commands run before each pane's commands
enable_pane_titlesbooleanfalseShow pane titles (tmux 2.6+)
pane_title_positionstring-Title position: top, bottom, or off
pane_title_formatstring-Custom pane title format string

Lifecycle Hooks

HookWhen It Runs
on_project_startEvery session start, before windows created
on_project_first_startOnly on initial session creation
on_project_restartWhen reattaching to existing session
on_project_exitWhen detaching from session
on_project_stopWhen tmuxinator stop is called
pre_windowBefore each pane's commands (use for env setup)

All hooks accept a string or list of strings:

on_project_start:
  - docker-compose up -d
  - redis-server --daemonize yes

Window Options

OptionTypeDefaultDescription
layoutstring-Pane layout (see Layout Options)
rootstringproject rootOverride working directory for this window
paneslist-List of pane definitions
synchronizestring-Sync pane input: before or after

Pane Options

OptionTypeDescription
pane_titlestringTitle for this pane (requires enable_pane_titles)
commandslistCommands to run (alternative to inline list)

Layout Options

LayoutDescription
even-horizontalPanes spread left-to-right, equal width
even-verticalPanes spread top-to-bottom, equal height
main-horizontalLarge pane on top, others spread below
main-verticalLarge pane on left, others spread right
tiledEven grid of panes

Control main pane size:

  • main_pane_width: columns or percentage for main-vertical
  • main_pane_height: rows or percentage for main-horizontal

Custom layouts use tmux's layout string format (copy from tmux list-windows).

Full Example Configuration

# Required
name: myproject

# Project root (default: ~/)
root: ~/Code/myproject

# Optional: custom tmux socket
socket_name: myproject

# Optional: pass options to tmux command
tmux_options: -f ~/.tmux.custom.conf

# Optional: use alternative tmux (e.g., byobu)
tmux_command: tmux

# Optional: auto-attach to session (default: true)
attach: true

# Optional: select specific window/pane on startup
startup_window: editor
startup_pane: 1

# Optional: pane titles (tmux 2.6+)
enable_pane_titles: true
pane_title_position: top
pane_title_format: " #T "

# Lifecycle hooks
on_project_start: docker-compose up -d
on_project_first_start: npm install
on_project_restart: echo "Welcome back"
on_project_exit: docker-compose stop
on_project_stop: docker-compose down

# Run before every pane command (env managers, etc.)
pre_window: nvm use 18

# Windows
windows:
  # Simple: window name with single command
  - server: bundle exec rails s

  # Window with layout and multiple panes
  - editor:
      layout: main-vertical
      # Synchronize pane input ('before' or 'after' pane creation)
      synchronize: after
      panes:
        - vim .
        - guard
        - # empty pane (just shell)

  # Window with custom root
  - frontend:
      root: ~/Code/myproject/client
      panes:
        - npm start
        - npm run test -- --watch

  # Pane with multiple sequential commands
  - backend:
      panes:
        -
          - cd api
          - source venv/bin/activate
          - python manage.py runserver

  # Named panes with titles
  - monitoring:
      panes:
        - pane_title: "Logs"
          commands:
            - tail -f logs/app.log
        - pane_title: "System"
          commands:
            - htop

Dynamic Configuration (ERB)

Configs are processed as ERB templates before YAML parsing:

# Environment variables
root: <%= ENV["PROJECT_DIR"] || "~/Code/default" %>
name: <%= ENV["USER"] %>-dev

# Command-line arguments: tmuxinator start myproject arg1 arg2
# Access via @args array (positional)
root: <%= @args[0] %>

# Key-value arguments: tmuxinator start myproject env=prod db=mysql
# Access via @settings hash
<% if @settings["env"] == "production" %>
root: /var/www/app
<% else %>
root: ~/Code/app
<% end %>

# Conditional windows
windows:
  - main: vim
<% if @settings["with_docker"] %>
  - docker: docker-compose logs -f
<% end %>

Window and Pane Patterns

Simple window with command:

windows:
  - server: npm run dev

Window with multiple panes:

windows:
  - dev:
      panes:
        - vim
        - npm run watch
        - npm run test -- --watch

Pane with sequential commands (send-keys style):

windows:
  - build:
      panes:
        - # Commands sent sequentially
          - cd backend
          - source venv/bin/activate
          - python manage.py runserver

Per-window root override:

windows:
  - frontend:
      root: ~/Code/myproject/frontend
      panes:
        - npm start

Synchronized panes (same input to all):

windows:
  - cluster:
      synchronize: after
      panes:
        - ssh server1
        - ssh server2
        - ssh server3

Named panes with titles (tmux 2.6+):

enable_pane_titles: true
pane_title_position: top

windows:
  - main:
      panes:
        - pane_title: "Editor"
          commands:
            - vim
        - pane_title: "Tests"
          commands:
            - npm test

Common Patterns

Full-Stack Development

name: fullstack
root: ~/Code/myapp

on_project_start:
  - docker-compose up -d postgres redis

on_project_stop:
  - docker-compose down

pre_window: nvm use 18

windows:
  - editor:
      layout: main-vertical
      panes:
        - vim .
        - lazygit
  - backend:
      root: ~/Code/myapp/api
      panes:
        - npm run dev
        - npm run test -- --watch
  - frontend:
      root: ~/Code/myapp/web
      panes:
        - npm start
        - # empty for commands
  - services:
      panes:
        - docker-compose logs -f
        - htop

Remote Development (SSH)

name: remote-dev
root: ~

windows:
  - remote:
      panes:
        - # Use array for SSH commands
          - ssh user@server
          - cd /var/www/app
          - vim .

Microservices

name: microservices
root: ~/Code

windows:
  - api-gateway:
      root: ~/Code/gateway
      panes:
        - npm run dev
  - users-service:
      root: ~/Code/users
      panes:
        - npm run dev
  - orders-service:
      root: ~/Code/orders
      panes:
        - npm run dev
  - logs:
      layout: tiled
      panes:
        - docker logs -f gateway
        - docker logs -f users
        - docker logs -f orders

Environment-Aware Config

name: app-<%= @settings["env"] || "dev" %>
root: <%= @settings["env"] == "prod" ? "/var/www/app" : "~/Code/app" %>

<% if @settings["env"] == "prod" %>
attach: false
on_project_start: sudo systemctl start nginx
<% end %>

windows:
  - app:
      panes:
        - <%= @settings["env"] == "prod" ? "tail -f /var/log/app.log" : "npm run dev" %>

Troubleshooting

ProblemSolution
Window names resetAdd export DISABLE_AUTO_TITLE=true to shell rc
Commands truncatedMove long commands to scripts, source them
Project name invalidRemove periods from name (tmux uses . as delimiter)
Layout inconsistentUse tmuxinator debug PROJECT to see generated script
Session exists errorUse tmuxinator stop PROJECT first, or -n for new name
Panes not in orderLayouts applied after creation; order may shift
rbenv/nvm not loadingUse pre_window to set version before commands
Hooks not runningCheck hook names (deprecated pre/poston_project_*)

Debugging

# Show what tmuxinator will execute
tmuxinator debug myproject

# Check for configuration issues
tmuxinator doctor

# Verify YAML syntax
ruby -ryaml -e "YAML.load_file('~/.tmuxinator/myproject.yml')"

# Test ERB processing
ruby -rerb -ryaml -e "puts ERB.new(File.read('~/.tmuxinator/myproject.yml')).result"

Installation

# Preferred (requires Ruby)
gem install tmuxinator

# Alternative
brew install tmuxinator

Requires tmux 1.8+ (avoid 2.5 due to bugs). Shell completions available in the GitHub repo's completion/ directory.

适合场景

01

用户想查找某类 Agent Skill 时

02

需要根据任务场景推荐可安装能力包时

03

需要对比不同来源的安装命令和来源信息时

04

需要参考平台分布和安装热度时

能力概览

能力 1

按任务关键词查找相关 Skills

能力 2

展示可复制的安装命令

能力 3

保留来源站点、仓库和原始说明,方便继续核验

能力 4

补充不同宿主或平台的使用分布数据

能力 5

展示第三方安全扫描或审计结果

安装后应在对应宿主中按原始 README 的触发条件使用;具体调用方式请以来源页面和 README 为准。

平台分布

Claude Code

31.74%
按下载量换算36

Gemini CLI

23.42%
按下载量换算27

OpenCode

19.16%
按下载量换算22

Codex

12.71%
按下载量换算14

Antigravity

7.42%
按下载量换算8

windsurf

3.35%
按下载量换算4

安全审计

Gen Agent Trust Hub

通过

Socket

通过

Snyk

可疑

权限和风险

敏感数据

该 Skill 可能接触密钥、Token、环境变量或敏感配置,应进入高风险复核队列,默认不自动发布。

安装前确认

本站仅展示第三方公开信息,不托管安装包,不提供自动安装或运行环境。安装前应自行审查源码、依赖和命令行为。来源安全扫描存在 warning/failed 结果,不能写成本站确认安全。

来源信息

继续浏览同类 Skills