ace-tmux 0.11.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (40) hide show
  1. checksums.yaml +7 -0
  2. data/.ace-defaults/tmux/config.yml +11 -0
  3. data/.ace-defaults/tmux/panes/claude.yml +4 -0
  4. data/.ace-defaults/tmux/panes/nvim.yml +4 -0
  5. data/.ace-defaults/tmux/panes/work-on-task-cc.yml +4 -0
  6. data/.ace-defaults/tmux/panes/work-on-task-status.yml +4 -0
  7. data/.ace-defaults/tmux/sessions/default.yml +5 -0
  8. data/.ace-defaults/tmux/windows/cc-ipad.yml +10 -0
  9. data/.ace-defaults/tmux/windows/cc.yml +14 -0
  10. data/.ace-defaults/tmux/windows/work-on-task.yml +16 -0
  11. data/CHANGELOG.md +240 -0
  12. data/LICENSE +21 -0
  13. data/README.md +40 -0
  14. data/Rakefile +12 -0
  15. data/docs/demo/ace-tmux-getting-started.gif +0 -0
  16. data/docs/demo/ace-tmux-getting-started.tape.yml +30 -0
  17. data/docs/getting-started.md +86 -0
  18. data/docs/handbook.md +31 -0
  19. data/docs/usage.md +197 -0
  20. data/exe/ace-tmux +17 -0
  21. data/lib/ace/tmux/atoms/layout_string_builder.rb +172 -0
  22. data/lib/ace/tmux/atoms/preset_resolver.rb +127 -0
  23. data/lib/ace/tmux/atoms/tmux_command_builder.rb +203 -0
  24. data/lib/ace/tmux/cli/commands/list.rb +85 -0
  25. data/lib/ace/tmux/cli/commands/start.rb +82 -0
  26. data/lib/ace/tmux/cli/commands/window.rb +75 -0
  27. data/lib/ace/tmux/cli.rb +64 -0
  28. data/lib/ace/tmux/models/layout_node.rb +53 -0
  29. data/lib/ace/tmux/models/pane.rb +37 -0
  30. data/lib/ace/tmux/models/session.rb +64 -0
  31. data/lib/ace/tmux/models/window.rb +50 -0
  32. data/lib/ace/tmux/molecules/config_loader.rb +46 -0
  33. data/lib/ace/tmux/molecules/preset_loader.rb +73 -0
  34. data/lib/ace/tmux/molecules/session_builder.rb +151 -0
  35. data/lib/ace/tmux/molecules/tmux_executor.rb +74 -0
  36. data/lib/ace/tmux/organisms/session_manager.rb +295 -0
  37. data/lib/ace/tmux/organisms/window_manager.rb +221 -0
  38. data/lib/ace/tmux/version.rb +7 -0
  39. data/lib/ace/tmux.rb +101 -0
  40. metadata +225 -0
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA256:
3
+ metadata.gz: 6edbcf3bf58e90e79182dc805d7f8a0a05ce2d0700b8073f9b62a2d1ae9c000f
4
+ data.tar.gz: 5c2b63bcf1ca460962d2699feded26f4218175d36ae60bfa557e0f23cf453a47
5
+ SHA512:
6
+ metadata.gz: 0b243e73b26ee915c578f6d9759100455d00a9e266b935a31f859b7c6eaa01d22094f198614f6542bf0f40d5567e535f9b3d25c5bfa776e2c6a8dba9426ee25b
7
+ data.tar.gz: 64ce6b86d35c2c9196b4ba047dd32cfb188bfb8279f7bb9d34eeb8b5658f8b14164e5c49715ba03a79ad88fef287a5b1cf5fddcf61d89fc5b61148d708d02fb7
@@ -0,0 +1,11 @@
1
+ # ace-tmux default configuration
2
+ # Override in ~/.ace/tmux/config.yml or .ace/tmux/config.yml
3
+
4
+ # Path to tmux binary (default: tmux from PATH)
5
+ tmux_binary: tmux
6
+
7
+ # Default presets when no arguments are provided
8
+ # ace-tmux (no args) uses session default outside tmux, window default inside tmux
9
+ defaults:
10
+ session: default
11
+ window: cc
@@ -0,0 +1,4 @@
1
+ # Claude Code pane preset
2
+ commands:
3
+ - cc
4
+ focus: true
@@ -0,0 +1,4 @@
1
+ # Neovim editor pane preset
2
+ commands:
3
+ - sleep 0.15
4
+ - nvim
@@ -0,0 +1,4 @@
1
+ # Task driving pane preset
2
+ commands:
3
+ - cc /as-assign-drive
4
+ focus: true
@@ -0,0 +1,4 @@
1
+ # Assignment/task status pane preset
2
+ commands:
3
+ - ace-task status
4
+ - ace-assign status
@@ -0,0 +1,5 @@
1
+ # Default session preset
2
+ # 3-pane layout: claude (left 40%), shell (right-top), nvim (right-bottom)
3
+ name: default
4
+ windows:
5
+ - preset: cc
@@ -0,0 +1,10 @@
1
+ # Claude Code workspace for small screens (iPad)
2
+ # top: claude (full width) | bottom-left: shell | bottom-right: shell
3
+ direction: vertical
4
+ panes:
5
+ - preset: claude
6
+ size: "50%"
7
+ - direction: horizontal
8
+ panes:
9
+ - commands: []
10
+ - commands: []
@@ -0,0 +1,14 @@
1
+ # Claude Code workspace: claude (left) | nvim + git status (center) | taskflow (right)
2
+ direction: horizontal
3
+ panes:
4
+ - preset: claude
5
+ size: "34%"
6
+ - direction: vertical
7
+ size: "32%"
8
+ panes:
9
+ - preset: nvim
10
+ - commands:
11
+ - ace-git status
12
+ - commands:
13
+ - ace-task list
14
+ size: "34%"
@@ -0,0 +1,16 @@
1
+ # Work-on task orchestration workspace:
2
+ # - Left: cc running /as-assign-drive
3
+ # - Middle: nvim on active assignment cache (via .ace-local/assign/.latest) + shell status
4
+ # - Right: status from task and assignment
5
+ direction: horizontal
6
+ panes:
7
+ - preset: work-on-task-cc
8
+ size: "34%"
9
+ - direction: vertical
10
+ size: "32%"
11
+ panes:
12
+ - preset: nvim
13
+ - commands:
14
+ - ace-git status
15
+ - preset: work-on-task-status
16
+ size: "34%"
data/CHANGELOG.md ADDED
@@ -0,0 +1,240 @@
1
+ # Changelog
2
+
3
+ All notable changes to this project will be documented in this file.
4
+
5
+ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
6
+ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7
+
8
+ ## [Unreleased]
9
+
10
+ ## [0.11.0] - 2026-03-24
11
+
12
+ ### Changed
13
+ - Removed demo GIF from README to streamline the landing page.
14
+
15
+ ## [0.10.2] - 2026-03-23
16
+
17
+ ### Changed
18
+ - Refreshed package README layout, quick-link navigation, and section flow to align with the current package pattern.
19
+
20
+ ## [0.10.1] - 2026-03-22
21
+
22
+ ### Changed
23
+ - Renamed overseer work-on pane/window presets from `work-on-tasks*` to `work-on-task*` for canonical preset naming consistency.
24
+
25
+ ## [0.10.0] - 2026-03-22
26
+
27
+ ### Added
28
+ - Added `work-on-tasks` pane and window presets for overseer-driven work-on workflows.
29
+
30
+ ## [0.9.2] - 2026-03-22
31
+
32
+ ### Fixed
33
+ - Restore YAML composition examples for pane and window preset reuse in usage docs.
34
+
35
+ ## [0.9.1] - 2026-03-22
36
+
37
+ ### Fixed
38
+ - Include `docs/**/*` in gemspec so documentation ships with the gem.
39
+ - Fix VHS tape output path to `docs/demo/` instead of `.ace-local/demo/`.
40
+ - Clarify `on_project_exit` as reserved/not-yet-implemented in usage docs.
41
+
42
+ ## [0.9.0] - 2026-03-22
43
+
44
+ ### Added
45
+ - Reworked package documentation with a new landing-page README, tutorial getting-started guide, full usage reference, handbook catalog, demo assets, and aligned gem metadata messaging.
46
+
47
+ ## [0.8.0] - 2026-03-21
48
+
49
+ ### Changed
50
+ - Expanded `TS-TMUX-001` E2E lifecycle coverage with a new window-management goal and tightened artifact-evidence contracts for preset discovery and session start flows.
51
+
52
+ ## [0.7.1] - 2026-03-18
53
+
54
+ ### Changed
55
+ - Migrated CLI namespace from `Ace::Core::CLI::*` to `Ace::Support::Cli::*` (ace-support-cli is now the canonical home for CLI infrastructure).
56
+
57
+
58
+ ## [0.7.0] - 2026-03-18
59
+
60
+ ### Changed
61
+ - Removed legacy backward-compatibility behavior as part of the 0.10 cleanup release.
62
+
63
+
64
+ ## [0.6.3] - 2026-03-17
65
+
66
+ ### Fixed
67
+ - Updated CLI help-output assertions to match `ace-support-cli` output casing (`COMMANDS`/`EXAMPLES`).
68
+
69
+ ## [0.6.2] - 2026-03-15
70
+
71
+ ### Changed
72
+ - Migrated CLI framework from dry-cli to ace-support-cli
73
+
74
+ ## [0.6.1] - 2026-02-23
75
+
76
+ ### Changed
77
+ - Centralized error class hierarchy: PresetNotFoundError and NotInTmuxError now inherit from Ace::Tmux::Error
78
+
79
+ ### Technical
80
+ - Updated internal dependency version constraints to current releases
81
+
82
+ ## [0.6.0] - 2026-02-22
83
+
84
+ ### Changed
85
+
86
+ - **Breaking**: Removed DWIM context-aware default routing
87
+ - `ace-tmux` (no args) now shows help instead of routing to `start`/`window` based on TMUX env
88
+ - Users must now use explicit commands: `ace-tmux start`, `ace-tmux window`, `ace-tmux list`
89
+ - Unknown first arguments are no longer prepended with default command
90
+ - Migrated to standard help pattern (ADR-023)
91
+ - Added `HELP_EXAMPLES` constant with usage examples
92
+ - Registered `HelpCommand` for `help`, `--help`, `-h`
93
+ - Updated `REGISTERED_COMMANDS` to include descriptions
94
+
95
+ ### Technical
96
+
97
+ - Updated CLI tests to test standard help pattern instead of DWIM routing
98
+
99
+ ## [0.5.5] - 2026-02-20
100
+
101
+ ### Fixed
102
+ - `WindowManager#detect_current_session` now checks `ACE_TMUX_SESSION` env var first, enabling E2E test isolation without requiring an active tmux session
103
+
104
+ ## [0.5.4] - 2026-02-19
105
+
106
+ ### Fixed
107
+
108
+ - Fix "index N in use" error when creating tmux windows in sessions with `base-index` set
109
+
110
+ ## [0.5.3] - 2026-02-19
111
+
112
+ ### Fixed
113
+
114
+ - Include stderr details in "Failed to create window" error message for better debugging
115
+
116
+ ## [0.5.2] - 2026-02-14
117
+
118
+ ### Fixed
119
+
120
+ - First window name now always derives from the effective working directory (`--root` override > preset `root:` > CWD), matching the existing behavior of `ace-tmux window --root`
121
+
122
+ ## [0.5.1] - 2026-02-14
123
+
124
+ ### Fixed
125
+
126
+ - Bundler/Ruby environment variables (`BUNDLE_GEMFILE`, `BUNDLE_BIN_PATH`, `RUBYOPT`, `RUBYLIB`) no longer leak into tmux sessions and spawned processes
127
+ - `bin/ace-tmux` cleans env vars from its own process after Bundler setup
128
+ - `SessionManager` unsets env vars from the tmux session environment via `set-environment -u`
129
+ - New `TmuxCommandBuilder.set_environment` atom for `tmux set-environment` commands
130
+
131
+ ## [0.5.0] - 2026-02-14
132
+
133
+ ### Changed
134
+
135
+ - **Breaking**: Gem renamed from `ace-support-tmux` to `ace-tmux` (task 266)
136
+ - Namespace changed from `Ace::Support::Tmux` to `Ace::Tmux`
137
+ - Require path changed from `ace/support/tmux` to `ace/tmux`
138
+ - Binary name (`ace-tmux`) and config path (`.ace/tmux/`) unchanged
139
+ - No backward compatibility shims provided (per ADR-024)
140
+
141
+ ## [0.4.1] - 2026-02-14
142
+
143
+ ### Fixed
144
+
145
+ - `ace-tmux --root /path` inside tmux now adds a window instead of erroring with "sessions should be nested" — unknown-arg routing is now context-aware
146
+
147
+ ## [0.4.0] - 2026-02-14
148
+
149
+ ### Added
150
+
151
+ - Context-aware default presets — `ace-tmux` with no arguments starts default session (outside tmux) or adds default window (inside tmux)
152
+ - `defaults` config section in `config.yml` with `session` and `window` default preset names
153
+ - `--root`/`-r` option on `start` command for working directory override (parity with `window` command)
154
+ - `inside_tmux?` detection method on CLI for context-aware routing
155
+
156
+ ### Changed
157
+
158
+ - `preset` argument is now optional on both `start` and `window` commands — falls back to configured defaults
159
+
160
+ ## [0.3.4] - 2026-02-13
161
+
162
+ ### Fixed
163
+
164
+ - Session creation failing with `base-index 1` tmux config by using window IDs instead of index-based targeting
165
+
166
+ ## [0.3.3] - 2026-02-13
167
+
168
+ ### Fixed
169
+
170
+ - Window targeting uses unique window ID (`@42` format) instead of name-based resolution, eliminating "can't find window" errors when duplicate names exist
171
+ - Window name derived from `--root` basename instead of preset's `name` field — `ace-tmux window cc --root /path/to/project` names the window `project`
172
+
173
+ ### Added
174
+
175
+ - `--name`/`-n` flag on `ace-tmux window` for explicit window name override (priority: `--name` > `--root` basename > preset argument)
176
+
177
+ ### Changed
178
+
179
+ - Removed `name: cc` from cc.yml window preset — presets define layout, not window names
180
+
181
+ ## [0.3.2] - 2026-02-13
182
+
183
+ ### Fixed
184
+
185
+ - Pane startup race condition — `send-keys` commands now execute after `select-layout`, preventing resize artifacts in apps like nvim/LazyVim
186
+
187
+ ### Changed
188
+
189
+ - Restored per-pane `sleep 0.15` in claude and nvim pane presets — shell-side sleep absorbs async resize signals that Ruby-side delay cannot
190
+
191
+ ## [0.3.1] - 2026-02-13
192
+
193
+ ### Fixed
194
+
195
+ - Per-leaf pane `root` overrides now apply in nested layouts — previously all nested panes used the window/session root
196
+ - `LayoutStringBuilder` pane ID assignment falls back to sequential index when `pane_ids` array is shorter than expected
197
+
198
+ ## [0.3.0] - 2026-02-12
199
+
200
+ ### Added
201
+
202
+ - Nested pane layouts with arbitrary tree structure via `direction` key in YAML presets
203
+ - `LayoutNode` model — tree node (leaf or container) for nested layout representation
204
+ - `LayoutStringBuilder` atom — pure function that generates tmux custom layout strings with CRC16 checksum from a `LayoutNode` tree
205
+ - `list_panes` and `display_message_target` commands in `TmuxCommandBuilder`
206
+ - `layout_tree` attribute and `nested_layout?` predicate on `Window` model
207
+ - Recursive preset resolution for nested containers in `PresetResolver`
208
+ - Nested pane setup flow in `SessionManager` and `WindowManager` — flat splits → list-panes → layout string → select-layout
209
+
210
+ ## [0.2.0] - 2026-02-12
211
+
212
+ ### Added
213
+
214
+ - Generic `options` hash on Window and Pane models — pass-through for any tmux option via `set-window-option` and `set-option -p`
215
+ - `--root`/`-r` flag on `ace-tmux window` command to set working directory for the new window and all its panes
216
+ - `set_window_option` and `set_pane_option` commands in TmuxCommandBuilder
217
+
218
+ ### Changed
219
+
220
+ - Default session preset: 3-pane layout (claude left 40%, shell right-top, nvim right-bottom) with `main-vertical` layout and `main-pane-width` option
221
+ - Code-editor window preset: 3 equal vertical panes (claude | shell | nvim) with `even-horizontal` layout
222
+
223
+ ## [0.1.0] - 2026-02-12
224
+
225
+ ### Added
226
+
227
+ - Initial release of ace-support-tmux
228
+ - Composable tmux session management via YAML presets
229
+ - Deep-merge composition at session, window, and pane levels
230
+ - `ace-tmux start <session-preset>` — Create tmux session from YAML preset
231
+ - `ace-tmux window <window-preset>` — Add window to existing session from preset
232
+ - `ace-tmux list [sessions|windows|panes]` — List available presets
233
+ - ACE config cascade integration (project > user > gem defaults)
234
+ - tmuxinator-compatible YAML keys
235
+
236
+
237
+ ## [0.5.6] - 2026-02-22
238
+
239
+ ### Fixed
240
+ - Standardized quiet, verbose, debug option descriptions to canonical strings
data/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2025 Michal Czyz
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
data/README.md ADDED
@@ -0,0 +1,40 @@
1
+ <div align="center">
2
+ <h1> ACE - TMUX </h1>
3
+
4
+ Composable tmux sessions from YAML presets, with window injection into active sessions.
5
+
6
+ <img src="https://raw.githubusercontent.com/cs3b/ace/main/docs/brand/AgenticCodingEnvironment.Logo.XS.jpg" alt="ACE Logo" width="480">
7
+ <br><br>
8
+
9
+ <a href="https://rubygems.org/gems/ace-tmux"><img alt="Gem Version" src="https://img.shields.io/gem/v/ace-tmux.svg" /></a>
10
+ <a href="https://www.ruby-lang.org"><img alt="Ruby" src="https://img.shields.io/badge/Ruby-3.2+-CC342D?logo=ruby" /></a>
11
+ <a href="https://opensource.org/licenses/MIT"><img alt="License: MIT" src="https://img.shields.io/badge/License-MIT-blue.svg" /></a>
12
+
13
+ </div>
14
+
15
+ > Works with: Claude Code, Codex CLI, OpenCode, Gemini CLI, pi-agent, and more.
16
+
17
+ [Getting Started](docs/getting-started.md) | [Usage Guide](docs/usage.md) | [Handbook - Skills, Agents, Templates](docs/handbook.md)
18
+
19
+ `ace-tmux` helps you standardize terminal workspaces with preset-driven sessions, reusable windows, and nested pane layouts. You can spin up a full workspace from a session preset or inject a focused window into an already-running tmux session, with config cascade across project, user, and gem defaults.
20
+
21
+ ## How It Works
22
+
23
+ 1. Define session and window layouts in YAML presets stored in `.ace/tmux/` (project), `~/.ace/tmux/` (user), or gem defaults.
24
+ 2. Run `ace-tmux start [PRESET]` to create a full session or `ace-tmux window [PRESET]` to inject a window into the current session.
25
+ 3. Presets are deep-merged through the config cascade, so project-level overrides layer cleanly on top of shared defaults.
26
+
27
+ ## Use Cases
28
+
29
+ **Start or attach to a preset-backed session** - run `ace-tmux start [PRESET]` to create a session from YAML presets, or attach to an existing session with the same name, integrating panes for [ace-task](../ace-task) status, [ace-git](../ace-git) info, and editor windows.
30
+
31
+ **Inject windows into running sessions** - run `ace-tmux window [PRESET]` to add a new window from presets without recreating the current session, useful for spinning up focused tool or test panes on the fly.
32
+
33
+ **Compose nested pane layouts in YAML** - use `direction` and nested pane containers to model custom split trees beyond tmux built-in layouts, keeping workspace structure version-controlled alongside your project.
34
+
35
+ **Reuse presets through config cascade** - load project presets from `.ace/tmux/`, personal presets from `~/.ace/tmux/`, and gem defaults via `.ace-defaults/tmux/` with deep-merge behavior so teams share a baseline while individuals customize.
36
+
37
+ **Orchestrate task-focused workspaces** - pair with [ace-overseer](../ace-overseer) and [ace-assign](../ace-assign) for assignment-driven worktree and tmux orchestration that spins up isolated workspaces per task.
38
+
39
+ ---
40
+ [Getting Started](docs/getting-started.md) | [Usage Guide](docs/usage.md) | [Handbook - Skills, Agents, Templates](docs/handbook.md) | Part of [ACE](https://github.com/cs3b/ace)
data/Rakefile ADDED
@@ -0,0 +1,12 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "bundler/gem_tasks"
4
+ require "rake/testtask"
5
+
6
+ Rake::TestTask.new(:test) do |t|
7
+ t.libs << "test" << "lib"
8
+ t.test_files = FileList["test/**/*_test.rb"]
9
+ end
10
+
11
+ task spec: :test
12
+ task default: :test
@@ -0,0 +1,30 @@
1
+ ---
2
+ description: Showcase ace-tmux preset discovery, session start, and window management
3
+ tags:
4
+ - ace-tmux
5
+ - docs
6
+ - getting-started
7
+ settings:
8
+ font_size: 16
9
+ width: 960
10
+ height: 540
11
+ format: gif
12
+ scenes:
13
+ - name: Discover available presets (sessions, windows, panes)
14
+ commands:
15
+ - type: ace-tmux list
16
+ sleep: 4s
17
+ - name: Start a session from a preset without attaching
18
+ commands:
19
+ - type: ace-tmux start default --detach
20
+ sleep: 3s
21
+ - name: Add a window to the running session
22
+ commands:
23
+ - type: ace-tmux window cc --session default
24
+ sleep: 3s
25
+ - name: Verify session is running with windows
26
+ commands:
27
+ - type: tmux list-windows -t default
28
+ sleep: 4s
29
+ teardown:
30
+ - cleanup
@@ -0,0 +1,86 @@
1
+ ---
2
+ doc-type: user
3
+ title: ace-tmux Getting Started
4
+ purpose: Tutorial for creating sessions and adding windows with ace-tmux.
5
+ ace-docs:
6
+ last-updated: 2026-03-22
7
+ last-checked: 2026-03-22
8
+ ---
9
+
10
+ # Getting Started with ace-tmux
11
+
12
+ ## Prerequisites
13
+
14
+ - `tmux` installed and available on PATH
15
+ - ACE toolchain available in your repository shell
16
+
17
+ ## Installation
18
+
19
+ Install from RubyGems: `gem install ace-tmux`.
20
+
21
+ Verify command availability: `ace-tmux --help`.
22
+
23
+ ## Start Your First Session
24
+
25
+ Run: `ace-tmux start`.
26
+
27
+ `ace-tmux` resolves the default session preset from `defaults.session` in config.
28
+
29
+ ## Add a Window to a Running Session
30
+
31
+ From inside tmux, run: `ace-tmux window`.
32
+
33
+ `ace-tmux` resolves the default window preset from `defaults.window` in config.
34
+
35
+ ## Create a Custom Window Preset
36
+
37
+ Create `.ace/tmux/windows/cc.yml`:
38
+
39
+ ```yaml
40
+ direction: horizontal
41
+ panes:
42
+ - preset: claude
43
+ size: "35%"
44
+ - direction: vertical
45
+ size: "30%"
46
+ panes:
47
+ - preset: nvim
48
+ - commands:
49
+ - ace-git status
50
+ - commands:
51
+ - ace-task list
52
+ size: "35%"
53
+
54
+ ```
55
+
56
+ Use it in a session or add it directly with `ace-tmux window cc`.
57
+
58
+
59
+ ## Nested Layouts
60
+
61
+ `direction: horizontal` creates columns, `direction: vertical` creates rows, and children can be mixed recursively.
62
+
63
+
64
+ ```text
65
+ ┌────────────┬──────────┬──────────────┐
66
+ │ │ nvim . │ │
67
+ │ claude │──────────│ task list │
68
+ │ 35% │ git stat │ 35% │
69
+ │ │ 30% │ │
70
+ └────────────┴──────────┴──────────────┘
71
+
72
+ ```
73
+
74
+ ## Common Commands
75
+
76
+ | Command | Purpose |
77
+ | --- | --- |
78
+ | `ace-tmux start [PRESET]` | Start or attach to a session preset |
79
+ | `ace-tmux window [PRESET]` | Add a window preset to a running session |
80
+ | `ace-tmux list` | Show available session/window/pane presets |
81
+
82
+ ## Next steps
83
+
84
+ - Define project-level presets in `.ace/tmux/`.
85
+ - Override personal defaults in `~/.ace/tmux/`.
86
+ - See [Usage Guide](usage.md) for full command and config reference.
data/docs/handbook.md ADDED
@@ -0,0 +1,31 @@
1
+ ---
2
+ doc-type: user
3
+ title: ace-tmux Handbook Reference
4
+ purpose: Catalog of package-owned agent skills and workflows in ace-tmux.
5
+ ace-docs:
6
+ last-updated: 2026-03-22
7
+ last-checked: 2026-03-22
8
+ ---
9
+
10
+ # Handbook Reference
11
+
12
+ ## Skills
13
+
14
+ No package-owned canonical skills are currently published under `ace-tmux/handbook/skills/`.
15
+
16
+ ## Workflows
17
+
18
+ No package-owned workflow instructions are currently published under `ace-tmux/handbook/workflow-instructions/`.
19
+
20
+ ## Guides
21
+
22
+ No package-owned guides are currently published under `ace-tmux/handbook/guides/`.
23
+
24
+ ## Templates
25
+
26
+ No package-owned templates are currently published under `ace-tmux/handbook/templates/`.
27
+
28
+ ## Related Documentation
29
+
30
+ - [Getting Started](getting-started.md)
31
+ - [Usage Guide](usage.md)