show-and-tell

mbailey's avatarfrom mbailey

Visual context sharing. LOAD when user says "show me", "open in browser", or "look at".

⭐0stars🔀0forks📁View on GitHub🕐Updated Jan 9, 2026

When & Why to Use This Skill

The show-and-tell skill is a powerful visual context sharing tool designed for Claude. It bridges the gap between the AI assistant and the user's local environment by allowing Claude to open files in Neovim, navigate URLs in browsers, and observe terminal activity via tmux. By providing real-time visibility into the workspace, it significantly enhances developer productivity and enables more intuitive, hands-free interactions.

Use Cases

  • Code Review and Navigation: Open specific source files at exact line numbers or ranges in Neovim for immediate inspection and editing.
  • Web Integration: Seamlessly open technical documentation or live web applications in Chrome or default browsers to verify UI changes or research APIs.
  • Terminal Context Awareness: Capture and analyze the content of tmux panes to debug command outputs, monitor logs, or verify system states.
  • Voice-Operated Development: Utilize 'show me' or 'look at' commands in voice mode for a completely hands-free experience while navigating complex codebases.
  • Command Execution Visibility: Run shell commands and display their results directly in a dedicated pane to maintain a clear audit trail of actions taken.
nameshow-and-tell
descriptionVisual context sharing. LOAD when user says "show me", "open in browser", or "look at".

show-and-tell

Display content for users (files, URLs, commands) or observe their screen context.

Quick Reference

Command Example Description
show <file> show README.md:42 Open file in Neovim at line
show <file> show main.py:10-20 Open file highlighting line range
show <url> show github.com Open URL in browser
show "cmd:..." show "cmd:git log" Run command in shell pane
look look -l 100 Capture pane content
look -H look -H Show tmux hierarchy only

When to Use

  • User asks to open/display a file or URL (For URLs: ALWAYS check Chrome MCP first)
  • User says "show me" or "look at my screen"
  • Working in voice mode (hands-free interaction)
  • Need to verify what user is viewing

Showing URLs - Default Behavior

URLs go to Chrome MCP by default. The show command is a fallback.

URL Navigation Decision Tree

User requests URL
    ↓
Check Chrome MCP available?
    ├─ Yes → navigate tool (interactive)
    └─ No  → show command (fallback)

Standard Workflow

  1. Check: mcp__claude-in-chrome__tabs_context_mcp(createIfEmpty=true)
  2. If available:
    • Inform user: "Opening in Chrome - you may need to approve domain permissions"
    • Use tabs_create_mcp + navigate tools for interactive control
    • On timeout: "Chrome may be waiting for permission approval. Open in default browser instead?"
  3. If unavailable: Use show command (opens default browser)

Chrome MCP provides:

  • Interactive control (scroll, click, fill forms)
  • Screenshots and page inspection
  • Better for demos and automation

The show command is a fallback for when Chrome MCP is unavailable.

Usage

AI assistants: Use full path ${CLAUDE_PLUGIN_ROOT}/bin/show and ${CLAUDE_PLUGIN_ROOT}/bin/look.

show - Display Content

show README.md                    # Open file
show src/main.py:42               # Open at line 42
show src/main.py:10-20            # Open highlighting lines 10-20
show bin/show#L124-162            # Highlight function (URL fragment syntax)
show https://github.com/repo      # Open URL
show "cmd:git status"             # Run command
show pane:15                      # Focus pane

look - Observe Context

look                              # Current pane
look -l 100                       # Last 100 lines
look -H                           # Hierarchy only
look %15,%16                      # Multiple panes
look window                       # All panes in window

Documentation

Chrome Browser Integration (Reference)

This section provides additional details on Chrome MCP integration. See "Showing URLs - Default Behavior" above for the primary workflow.

Chrome Domain Permissions

Chrome requires user approval for new domains (security feature).

Best practices:

  • Before navigating: Inform user they may need to approve domain permissions
  • On timeout: Explain likely cause - "Chrome may be waiting for permission approval"
  • Offer fallback: "Would you like me to open in default browser instead?"

Common issue: If navigation times out, it's usually because the user didn't see or approve the Chrome domain permission prompt.

Example: Show URL with Chrome MCP

# Step 1: Check if Chrome MCP is connected
# Call: mcp__claude-in-chrome__tabs_context_mcp(createIfEmpty=true)

# Step 2: If connected, inform user and navigate
# "Opening in Chrome - you may need to approve domain permissions"
# Call: mcp__claude-in-chrome__tabs_create_mcp (get a new tab)
# Call: mcp__claude-in-chrome__navigate with the URL and tabId

# Step 3: If not connected or timeout, fall back to show command
show https://example.com

Troubleshooting Chrome MCP

Issue Solution
tabs_context_mcp fails Chrome extension not connected; use show command
Tab ID invalid Call tabs_context_mcp to get fresh tab IDs
Extension disconnected mid-session Graceful fallback to show command
No Chrome MCP tools available MCP not configured; use show command

Setup

To use Chrome MCP:

  1. Install the Claude-in-Chrome browser extension
  2. Open Chrome and click the Claude extension icon
  3. The extension connects to Claude Code via MCP

When the extension is not connected, tabs_context_mcp will fail, and you should fall back to the standard show command.

Requirements

  • tmux: Required for pane management
  • Neovim: For file display (with socket support)
  • Browser: For URL display (Firefox preferred, Chrome with MCP preferred for interactive control)
  • nvim-remote: Optional, enhances Neovim integration