worktrunk
Guidance for Worktrunk (the `wt` CLI) — git worktree management, hooks, and config. Load when editing .config/wt.toml or ~/.config/worktrunk/config.toml; adding, modifying, or debugging hooks (post-merge, post-start, pre-commit, pre-merge, post-switch, etc.); configuring commit message generation or command aliases; or troubleshooting wt behavior. Also answers general worktrunk/wt questions.
What this skill does
# Worktrunk
Help users work with Worktrunk, a CLI tool for managing git worktrees.
## Available Documentation
Reference files are synced from [worktrunk.dev](https://worktrunk.dev) documentation:
- **reference/config.md**: User and project configuration (LLM, hooks, command defaults)
- **reference/hook.md**: Hook types, timing, and execution order
- **reference/switch.md**, **merge.md**, **list.md**, etc.: Command documentation
- **reference/extending.md**: Aliases, multi-step pipelines, custom subcommands, and template-expansion gotchas (two-pass `{% raw %}` deferral, for-each recipes)
- **reference/llm-commits.md**: LLM commit message generation
- **reference/tips-patterns.md**: Practical recipes — aliases, per-branch variables, dev server per worktree, parallel agent patterns
- **reference/shell-integration.md**: Shell integration debugging
- **reference/troubleshooting.md**: Troubleshooting for LLM and hooks (Claude-specific)
For command-specific options, run `wt <command> --help`. For configuration, follow the workflows below.
## Two Types of Configuration
Worktrunk uses two separate config files with different scopes and behaviors:
### User Config (`~/.config/worktrunk/config.toml`)
- **Scope**: Personal preferences for the individual developer
- **Location**: `~/.config/worktrunk/config.toml` (never checked into git)
- **Contains**: LLM integration, worktree path templates, command settings, user hooks, approved commands
- **Permission model**: Always propose changes and get consent before editing
- **See**: `reference/config.md` for detailed guidance
### Project Config (`.config/wt.toml`)
- **Scope**: Team-wide automation shared by all developers
- **Location**: `<repo>/.config/wt.toml` (checked into git)
- **Contains**: Hooks for worktree lifecycle (pre-start, pre-merge, etc.)
- **Permission model**: Proactive (create directly, changes are reversible via git)
- **See**: `reference/hook.md` for detailed guidance
## Determining Which Config to Use
When a user asks for configuration help, determine which type based on:
**User config indicators**:
- "set up LLM" or "configure commit generation"
- "change where worktrees are created"
- "customize commit message templates"
- Affects only their environment
**Project config indicators**:
- "set up hooks for this project"
- "automate npm install"
- "run tests before merge"
- Affects the entire team
**Both configs may be needed**: For example, setting up commit message generation requires user config, but automating quality checks requires project config.
## Core Workflows
### Setting Up Commit Message Generation (User Config)
Most common request. See `reference/llm-commits.md` for supported tools and exact command syntax.
1. **Detect available tools**
```bash
which claude codex llm aichat 2>/dev/null
```
2. **If none installed, recommend Claude Code** (already available in Claude Code sessions)
3. **Propose config change** — Get the exact command from `reference/llm-commits.md`
```toml
[commit.generation]
command = "..." # see reference/llm-commits.md for tool-specific commands
```
Ask: "Should I add this to your config?"
4. **After approval, apply**
- Check if config exists: `wt config show`
- If not, guide through `wt config create`
- Read, modify, write preserving structure
5. **Suggest testing**
```bash
wt step commit --show-prompt | head # verify prompt builds
wt merge # in a repo with uncommitted changes
```
### Setting Up Project Hooks (Project Config)
Common request for workflow automation. Follow discovery process:
1. **Detect project type**
```bash
ls package.json Cargo.toml pyproject.toml
```
2. **Identify available commands**
- For npm: Read `package.json` scripts
- For Rust: Common cargo commands
- For Python: Check pyproject.toml
3. **Design appropriate hooks** (10 hook types: 5 events × pre/post — see `reference/hook.md`)
- Dependencies (fast, must complete) → `pre-start`
- Tests/linting (must pass) → `pre-commit` or `pre-merge`
- Long builds, dev servers → `post-start`
- Setup before branch resolution → `pre-switch`
- Terminal/IDE updates → `post-switch`
- After-commit triggers (CI, notifications) → `post-commit`
- Deployment → `post-merge`
- Cleanup before removal → `pre-remove`
- Cleanup after removal (stop servers, remove containers) → `post-remove`
4. **Validate commands work**
```bash
npm run lint # verify exists
which cargo # verify tool exists
```
5. **Create `.config/wt.toml`**
```toml
# Install dependencies when creating worktrees
pre-start = "npm install"
# Validate code quality before committing
[pre-commit]
lint = "npm run lint"
typecheck = "npm run typecheck"
# Run tests before merging
pre-merge = "npm test"
```
6. **Add comments explaining choices**
7. **Suggest testing**
```bash
wt switch --create test-hooks
```
**See `reference/hook.md` for complete details.**
### Adding Hooks to Existing Config
When users want to add automation to an existing project:
1. **Read existing config**: `cat .config/wt.toml`
2. **Determine hook type** - When should this run? (10 types: 5 events × pre/post)
- Creating worktree (blocking) → `pre-start`
- Creating worktree (background) → `post-start`
- Before/after a switch → `pre-switch` / `post-switch`
- Before committing → `pre-commit`
- After committing (CI, notifications) → `post-commit`
- Before merging → `pre-merge`
- After merging → `post-merge`
- Before/after removal → `pre-remove` / `post-remove`
3. **Handle format conversion if needed**
Single command to named table:
```toml
# Before
pre-start = "npm install"
# After (adding db:migrate)
[pre-start]
install = "npm install"
migrate = "npm run db:migrate"
```
4. **Preserve existing structure and comments**
### Validation Before Adding Commands
Before adding hooks, validate:
```bash
# Verify command exists
which npm
which cargo
# For npm, verify script exists
npm run lint --dry-run
# For shell commands, check syntax
bash -n -c "if [ true ]; then echo ok; fi"
```
**Dangerous patterns** — Warn users before creating hooks with:
- Destructive commands: `rm -rf`, `DROP TABLE`
- External dependencies: `curl http://...`
- Privilege escalation: `sudo`
## Permission Models
### User Config: Conservative
- **Never edit without consent** - Always show proposed change and wait for approval
- **Never install tools** - Provide commands for users to run themselves
- **Preserve structure** - Keep existing comments and organization
- **Validate first** - Ensure TOML is valid before writing
### Project Config: Proactive
- **Create directly** - Changes are versioned, easily reversible
- **Validate commands** - Check commands exist before adding
- **Explain choices** - Add comments documenting why hooks exist
- **Warn on danger** - Flag destructive operations before adding
## Common Tasks Reference
### User Config Tasks
- Set up commit message generation → `reference/llm-commits.md`
- Customize worktree paths → `reference/config.md#worktree-path-template`
- Custom commit templates → `reference/llm-commits.md#prompt-templates`
- Configure command defaults → `reference/config.md#command-config`
- Set up personal hooks → `reference/config.md#hooks`
### Project Config Tasks
- Set up hooks for new project → `reference/hook.md`
- Add hook to existing config → `reference/hook.md#hook-forms`
- Use template variables → `reference/hook.md#template-variables`
- Add dev server URL to list → `reference/config.md#dev-server-url`
### Aliases & Multi-Worktree Tasks
- Create a `wt` alias → `reference/extending.md#aliases`
- Run a command in every worktree → `reference/step.md#wt-step-for-each`
- Rebase every worktree (up-style) → `reference/extending.md#recipe-rebase-every-worktree-onto-its-upstream`
- Defer a template variable to a nested `wt` command → `reference/extendinRelated in General
modeling-omnistudio-epc-catalog
IncludedSalesforce Industries CME EPC product-modeling skill for Product2-based catalog creation. Use when creating EPC products, configuring product attributes, building offer bundles with Product Child Items, or reviewing EPC DataPack JSON metadata for product catalog changes. TRIGGER when: user creates or updates Product2 EPC records, AttributeAssignment payloads, AttributeMetadata/AttributeDefaultValues, Offer bundles, or ProductChildItem relationships. DO NOT TRIGGER when: designing OmniScripts/FlexCards/Integration Procedures (use building-omnistudio-omniscript, building-omnistudio-flexcard, or building-omnistudio-integration-procedure), implementing Apex business logic (use generating-apex), or troubleshooting deployment pipelines (use deploying-metadata).
relationship-science-coach
IncludedUse this skill for direct, practical adult relationship coaching: couples conflict, repair, trust, marriage, dating, flirting, attachment patterns, emotional connection, sex, desire differences, eroticism, kink negotiation, affection, love languages, breakups, and long-term passion. Draw on Gottman, EFT and Hold Me Tight, attachment science, modern sex research, Perel, Nagoski, Kerner, Schnarch, Love and Stosny, and flexible love-language tools. Be concrete and low-hedge. Redirect only for imminent danger, abuse, coercive control, minors, non-consent, self-harm, stalking, or medical/legal/psychiatric decisions.
building-sf-integrations
IncludedSalesforce integration architecture and runtime plumbing with 120-point scoring. Use this skill to set up Named Credentials, External Credentials, External Services, REST/SOAP callout patterns, Platform Events, and Change Data Capture. TRIGGER when: user sets up Named Credentials, External Services, REST/SOAP callouts, Platform Events, CDC, or touches .namedCredential-meta.xml files. DO NOT TRIGGER when: Connected App/OAuth config (use configuring-connected-apps), Apex-only logic (use generating-apex), or data import/export (use handling-sf-data).
venue-templates
IncludedAccess comprehensive LaTeX templates, formatting requirements, and submission guidelines for major scientific publication venues (Nature, Science, PLOS, IEEE, ACM), academic conferences (NeurIPS, ICML, CVPR, CHI), research posters, and grant proposals (NSF, NIH, DOE, DARPA). This skill should be used when preparing manuscripts for journal submission, conference papers, research posters, or grant proposals and need venue-specific formatting requirements and templates.
let-fate-decide
IncludedDraws the 12 Houses of the Zodiac Tarot spread to inject entropy into planning when prompts are vague, ambiguous, or casually delegated. Interprets the spread to guide next steps. Use when the user says 'let fate decide', 'YOLO', 'whatever', 'idk', or other nonchalant phrases, makes Yu-Gi-Oh references, or when you are about to arbitrarily pick between multiple reasonable approaches. Prefer over ask-questions-if-underspecified when the user's tone is casual or playful rather than precision-seeking.
net-ops
IncludedCross-platform network troubleshooting (Windows, macOS, Linux) via local or remote shell. Use for: DNS broken, can't resolve hostnames, nslookup/dig works but apps fail, NRPT, WFP, scutil, /etc/resolver, systemd-resolved, /etc/resolv.conf, NetworkManager, VPN DNS leak residue (ProtonVPN/Mullvad/WireGuard/AnyConnect), AV/firewall blocking DNS or DoH, Tailscale DNS interaction, intermittent connectivity, remote diagnostics over SSH.