
iterm2-layout
by terrylica
Claude Code Skills Marketplace: plugins, skills for ADR-driven development, DevOps automation, ClickHouse management, semantic versioning, and productivity workflows
SKILL.md
name: iterm2-layout description: Configure iTerm2 workspace layouts with TOML-based configuration. Use when user mentions iTerm2 layout, workspace tabs, layout.toml, AutoLaunch script, or configuring terminal workspaces.
iTerm2 Layout Configuration
Configure iTerm2 workspace layouts with proper separation of concerns: private paths in TOML config, publishable code in Python script.
Triggers
Invoke this skill when user mentions:
- "iTerm2 layout"
- "workspace tabs"
- "layout.toml"
- "AutoLaunch script"
- "default-layout.py"
- "configure terminal workspaces"
- "add workspace tab"
Configuration Overview
File Locations
| File | Location | Purpose |
|---|---|---|
| Config (private) | ~/.config/iterm2/layout.toml | User's workspace paths |
| Script (public) | ~/scripts/iterm2/default-layout.py | Layout logic |
| Template | ~/scripts/iterm2/layout.example.toml | Example config |
Config File Format
# ~/.config/iterm2/layout.toml
[layout]
left_pane_ratio = 0.20 # 0.0 to 1.0
settle_time = 0.3 # seconds
[commands]
left = "br --sort-by-type-dirs-first"
right = "zsh"
[worktrees]
# Optional: Enable git worktree discovery
# main_repo_root = "~/projects/my-project"
# worktree_pattern = "my-project.worktree-*"
[[tabs]]
name = "home"
dir = "~"
[[tabs]]
name = "projects"
dir = "~/projects"
[[tabs]]
dir = "~/Documents" # name defaults to "Documents"
Setup Instructions
First-Time Setup
/usr/bin/env bash << 'CONFIG_EOF'
# 1. Ensure config directory exists
mkdir -p ~/.config/iterm2
# 2. Copy template
cp ~/scripts/iterm2/layout.example.toml ~/.config/iterm2/layout.toml
# 3. Edit with your workspace paths
# Add [[tabs]] entries for each workspace
# 4. Restart iTerm2 to test
CONFIG_EOF
Adding a New Tab
Add a [[tabs]] entry to ~/.config/iterm2/layout.toml:
[[tabs]]
name = "MyProject" # Tab display name (optional)
dir = "~/path/to/project"
Name field:
- If omitted, uses directory basename
- Custom names useful for abbreviations (e.g., "AF" instead of "alpha-forge")
Removing a Tab
Delete or comment out the [[tabs]] entry:
# [[tabs]]
# name = "OldProject"
# dir = "~/old/project"
Configuration Schema
| Section | Key | Type | Default | Description |
|---|---|---|---|---|
[layout] | left_pane_ratio | float | 0.20 | Left pane width (0.0-1.0) |
[layout] | settle_time | float | 0.3 | Wait after cd (seconds) |
[commands] | left | string | br... | Left pane command |
[commands] | right | string | zsh | Right pane command |
[worktrees] | alpha_forge_root | string | null | Worktree root (optional) |
[worktrees] | worktree_pattern | string | *.worktree-* | Glob pattern |
[[tabs]] | dir | string | required | Directory path |
[[tabs]] | name | string | basename | Tab display name |
Troubleshooting
Error: "Layout configuration not found"
Symptom: Script Console shows error about missing config
Solution:
# Create config from template
cp ~/scripts/iterm2/layout.example.toml ~/.config/iterm2/layout.toml
Error: "Invalid TOML syntax"
Symptom: Script Console shows TOML parse error
Solution:
- Check TOML syntax (quotes, brackets)
- Validate with:
python3 -c "import tomllib; tomllib.load(open('~/.config/iterm2/layout.toml', 'rb'))"
Tabs Not Appearing
Symptom: iTerm2 opens but no custom tabs created
Causes:
- No
[[tabs]]entries in config - Config file in wrong location
- Script not in AutoLaunch
Solution:
# Verify config location
ls -la ~/.config/iterm2/layout.toml
# Verify AutoLaunch symlink
ls -la ~/Library/Application\ Support/iTerm2/Scripts/AutoLaunch/
# Check Script Console for errors
# iTerm2 > Scripts > Manage > Console
Directory Does Not Exist Warning
Symptom: Tab skipped with warning in Script Console
Solution: Verify directory path exists or create it:
mkdir -p ~/path/to/missing/directory
Error Handling Behavior
The script uses "print + early return" pattern:
- Missing config: Logs instructions to Script Console, exits cleanly
- Invalid TOML: Logs parse error with details, exits cleanly
- Missing directory: Logs warning, skips tab, continues with others
Viewing errors: Scripts > Manage > Console in iTerm2
Git Worktree Detection (Optional)
Enable dynamic tab creation for git worktrees:
[worktrees]
main_repo_root = "~/projects/my-project"
worktree_pattern = "my-project.worktree-*"
How it works:
- Script globs for
~/projects/my-project.worktree-*directories - Validates each against
git worktree list - Generates acronym-based tab names (e.g.,
AF-ssvforsharpe-statistical-validation) - Inserts worktree tabs after main project tab
References
Score
Total Score
Based on repository quality metrics
SKILL.mdファイルが含まれている
ライセンスが設定されている
100文字以上の説明がある
GitHub Stars 100以上
1ヶ月以内に更新
10回以上フォークされている
オープンIssueが50未満
プログラミング言語が設定されている
1つ以上のタグが設定されている
Reviews
Reviews coming soon

