From productivity
Expert guidance for tmux-based development workflow with neovim, happy (Claude Code wrapper), and R/Julia REPLs.
How this skill is triggered — by the user, by Claude, or both
Slash command
/productivity:tmux-workflowThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Expert guidance for tmux-based development workflow with neovim, happy (Claude Code wrapper), and R/Julia REPLs.
Expert guidance for tmux-based development workflow with neovim, happy (Claude Code wrapper), and R/Julia REPLs.
The user's setup uses:
epinowcast, EpiAware)| Keys | Action |
|---|---|
Ctrl-b w | Visual window picker (tree view of all windows) |
Ctrl-b s | Session picker |
Alt-1 to Alt-9 | Jump to window by number (no prefix needed) |
Alt-h/j/k/l | Switch panes (no prefix needed) |
Ctrl-b h/j/k/l | Switch panes (with prefix) |
Ctrl-b n / Ctrl-b p | Next/previous window |
Ctrl-b ( / ) | Previous/next session |
| Keys | Action |
|---|---|
Ctrl-b | | Split vertically |
Ctrl-b - | Split horizontally |
Ctrl-b z | Zoom/unzoom current pane |
Ctrl-b b | Break pane to new window |
Ctrl-b D | Create standard dev layout (nvim | happy / repl) |
Ctrl-b H/J/K/L | Resize panes |
| Keys | Action |
|---|---|
Ctrl-b [ | Enter copy mode |
v | Start selection (in copy mode) |
y or Enter | Copy to clipboard |
q | Exit copy mode |
proj <project-name>Start or attach to a project session.
proj epinowcast # Starts session with nvim, happy, R
proj EpiAware # Starts session with nvim, happy, Julia
feat <branch-name> [base-branch]Create a new feature worktree and window within the current session.
feat add-new-model # Creates worktree from main
feat bugfix-123 develop # Creates worktree from develop
feat-done <branch-name>Clean up a feature worktree and close its window.
feat-done add-new-model # Removes worktree and closes window
feat-listList all worktrees in the current repository.
Projects are started with tmuxinator using a generic template:
tmuxinator start project <name>
The template auto-detects:
julia --project=.Files changed by Claude Code are automatically reloaded in nvim. A notification appears when this happens.
The REPL pane receives code from nvim via iron.nvim:
| Keys | Action |
|---|---|
<leader>sc | Send current line or visual selection |
<leader>sf | Send entire file |
<leader>su | Send from file start to cursor |
<leader>sp | Send paragraph |
<leader>sm | Send function |
<leader>sb | Send code block (Quarto/Rmd) |
<leader>sa | Send all code blocks (Quarto/Rmd) |
| Keys | Action |
|---|---|
<leader>rs | Toggle REPL (auto-detects language) |
<leader>rr | Restart REPL |
<leader>rf | Focus REPL pane |
<leader>rh | Hide REPL |
<leader>rj | Start Julia REPL |
<leader>rR | Start R REPL |
<leader>rp | Start Python REPL |
proj myprojectfeat new-feature (creates worktree + window)Ctrl-b w or Alt-<number><leader>scfeat-done new-featureEach happy pane is started with --resume '<project>-<branch>':
happy --resume 'epinowcast-main'happy --resume 'epinowcast-new-feature'This allows resuming conversations per feature. Pane titles show happy:<branch> in the border.
focus-events is enabled in tmux (already set in config):checktime manually in nvim<leader>rr<leader>rj for Julia, <leader>rR for Rtmux attach -t <session> or proj <name> which handles thisnpx claudepluginhub seabbs/skills --plugin productivityManages tmux sessions, windows, and panes for persistent remote workflows and shell scripting automation. Useful for long-running processes, SSH disconnects, and multi-pane terminal layouts.
Runs interactive CLI tools (vim, git rebase -i, REPLs) via tmux detached sessions with send-keys and capture-pane for programmatic control when standard bash piping fails.