shell-integration
Set up terminal-bookmarks shell integration for interactive bookmark search with a keyboard shortcut. Use when configuring the Ctrl+B keybind widget in zsh, bash, or fish, or when troubleshooting shell integration issues. Triggers include "set up shell widget", "Ctrl+B bookmark", "shell integration", "interactive search keybind", "tbm shell-init".
Best use case
shell-integration is best used when you need a repeatable AI agent workflow instead of a one-off prompt.
Set up terminal-bookmarks shell integration for interactive bookmark search with a keyboard shortcut. Use when configuring the Ctrl+B keybind widget in zsh, bash, or fish, or when troubleshooting shell integration issues. Triggers include "set up shell widget", "Ctrl+B bookmark", "shell integration", "interactive search keybind", "tbm shell-init".
Teams using shell-integration should expect a more consistent output, faster repeated execution, less prompt rewriting.
When to use this skill
- You want a reusable workflow that can be run more than once with consistent structure.
When not to use this skill
- You only need a quick one-off answer and do not need a reusable workflow.
- You cannot install or maintain the underlying files, dependencies, or repository context.
Installation
Claude Code / Cursor / Codex
Manual Installation
- Download SKILL.md from GitHub
- Place it in
.claude/skills/shell-integration/SKILL.mdinside your project - Restart your AI agent — it will auto-discover the skill
How shell-integration Compares
| Feature / Agent | shell-integration | Standard Approach |
|---|---|---|
| Platform Support | Not specified | Limited / Varies |
| Context Awareness | High | Baseline |
| Installation Complexity | Unknown | N/A |
Frequently Asked Questions
What does this skill do?
Set up terminal-bookmarks shell integration for interactive bookmark search with a keyboard shortcut. Use when configuring the Ctrl+B keybind widget in zsh, bash, or fish, or when troubleshooting shell integration issues. Triggers include "set up shell widget", "Ctrl+B bookmark", "shell integration", "interactive search keybind", "tbm shell-init".
Where can I find the source code?
You can find the source code on GitHub using the link provided at the top of the page.
SKILL.md Source
# shell-integration Shell widget setup for terminal-bookmarks. Binds a keyboard shortcut (default Ctrl+B) to open an interactive bookmark search that pastes the selected command into the current shell buffer. ## Supported Shells - zsh (recommended) - bash (GNU readline) - fish ## Setup ### Zsh ```bash # Add to ~/.zshrc eval "$(tbm shell-init zsh)" # Or source directly echo 'source <(tbm shell-init zsh)' >> ~/.zshrc ``` ### Bash ```bash # Add to ~/.bashrc eval "$(tbm shell-init bash)" ``` ### Fish ```bash # Add to ~/.config/fish/config.fish tbm shell-init fish | source ``` ### Verify After reloading your shell config, press Ctrl+B. A bookmark search interface should appear (fzf picker or numbered list). ## How It Works The init script registers a shell widget: 1. Widget function calls `tbm search --interactive` as a subprocess 2. `tbm search --interactive` shows all bookmarks in fzf (or numbered list) 3. User selects a bookmark - its command text is written to stdout 4. Widget captures stdout, inserts it into the current shell buffer at the cursor position 5. User can review or edit the command before pressing Enter to run it The selected command is never auto-executed - it is only pasted into the buffer. ## Customizing the Keybind Change `^B` to another key in your config: ```bash tbm config set shell_keybind "^G" # then re-source your shell init ``` Valid keybind formats: - `^B` - Ctrl+B - `^G` - Ctrl+G - `^X^B` - Ctrl+X, then Ctrl+B (zsh/bash only) ## Interactive UI Modes ### fzf mode (default when fzf is installed) ```bash tbm config set interactive_ui fzf ``` fzf shows bookmarks with preview. Arrow keys to navigate, Enter to select, Escape to cancel. Search works by typing. ### List mode (fallback when fzf is not installed) ```bash tbm config set interactive_ui list ``` Shows a numbered list. Type the number and press Enter, or press Enter with no input to cancel. ## Environment Variables | Variable | Description | Default | |---|---|---| | `TBM_NO_COLOR` | Disable color in interactive UI (0 or 1) | `0` | ## Troubleshooting ### Ctrl+B does not work 1. Check that the init script is being sourced: `type _tbm_search_widget` (zsh) or `type _tbm_search_bash` (bash) 2. Check for keybind conflicts: `bindkey | grep '\^B'` (zsh) 3. Reload: `source ~/.zshrc` ### "command not found: tbm" The `tbm` binary is not on PATH. Check that the global npm bin directory is in PATH. Run `npm bin -g` to find it. ### fzf picker is empty `tbm search --interactive` is working but you have no bookmarks. Run `tbm save "some command" --tag test` first. ### Selected command is not pasted This is a known limitation in some terminal emulators when used with bash. Try zsh instead, or set `TBM_INTERACTIVE_MODE=list`.
Related Skills
ci-integration
Integrate deployment-tracker into CI/CD pipelines. GitHub Actions and GitLab CI workflow examples for automatic deployment logging.
source-integrations
Set up and maintain GitHub OAuth2 and Slack Bot Token integrations for notification-hub.
weather-integration
Configure and troubleshoot weather-based irrigation skip rules using the Open-Meteo API. Use when asked to set up rain forecast skips, configure rain threshold values, debug why zones are or are not being skipped, check weather cache status, understand skip preview results, or tune skip rule sensitivity for your local climate. Triggers include "skip when rain", "weather threshold", "Open-Meteo", "skip preview", "rain forecast rule", "freeze protection", or any task involving weather-driven irrigation decisions.
Skill: Uptime Monitoring
## Overview
Skill: Status Page
## Overview
Skill: unit-conversion
## Overview
Skill: recipe-scaler
## Overview
reading-list
Operate the reading-list API to save, manage, tag, search, and export articles.
email-digest
Configure, test, and troubleshoot the reading-list daily email digest delivered via nodemailer.
websocket-realtime
Use the WebSocket connection in poll-builder to receive live vote updates. Use when you need to stream real-time poll results, monitor a poll for new votes, or build a live dashboard. Triggers include "live results", "real-time updates", "stream votes", "watch poll", or "WebSocket".
poll-builder
Self-hosted poll creation tool with real-time results. Use when you need to create a poll, check vote counts, close a poll, export results, or get the shareable link for a poll. Triggers include "create poll", "vote", "poll results", "survey", "collect votes", "share poll", or any task involving polling or voting.
Skill: personal-finance
## Overview