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".

7 stars

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

$curl -o ~/.claude/skills/shell-integration/SKILL.md --create-dirs "https://raw.githubusercontent.com/heldernoid/agentic-build-templates/main/projects/cli-tools/terminal-bookmarks/skills/shell-integration/SKILL.md"

Manual Installation

  1. Download SKILL.md from GitHub
  2. Place it in .claude/skills/shell-integration/SKILL.md inside your project
  3. Restart your AI agent — it will auto-discover the skill

How shell-integration Compares

Feature / Agentshell-integrationStandard Approach
Platform SupportNot specifiedLimited / Varies
Context Awareness High Baseline
Installation ComplexityUnknownN/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

7
from heldernoid/agentic-build-templates

Integrate deployment-tracker into CI/CD pipelines. GitHub Actions and GitLab CI workflow examples for automatic deployment logging.

source-integrations

7
from heldernoid/agentic-build-templates

Set up and maintain GitHub OAuth2 and Slack Bot Token integrations for notification-hub.

weather-integration

7
from heldernoid/agentic-build-templates

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

7
from heldernoid/agentic-build-templates

## Overview

Skill: Status Page

7
from heldernoid/agentic-build-templates

## Overview

Skill: unit-conversion

7
from heldernoid/agentic-build-templates

## Overview

Skill: recipe-scaler

7
from heldernoid/agentic-build-templates

## Overview

reading-list

7
from heldernoid/agentic-build-templates

Operate the reading-list API to save, manage, tag, search, and export articles.

email-digest

7
from heldernoid/agentic-build-templates

Configure, test, and troubleshoot the reading-list daily email digest delivered via nodemailer.

websocket-realtime

7
from heldernoid/agentic-build-templates

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

7
from heldernoid/agentic-build-templates

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

7
from heldernoid/agentic-build-templates

## Overview