show-and-tell
Visual context sharing. LOAD when user says "show me", "open in browser", or "look at".
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.
| name | show-and-tell |
|---|---|
| description | Visual 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
- Check:
mcp__claude-in-chrome__tabs_context_mcp(createIfEmpty=true) - If available:
- Inform user: "Opening in Chrome - you may need to approve domain permissions"
- Use
tabs_create_mcp+navigatetools for interactive control - On timeout: "Chrome may be waiting for permission approval. Open in default browser instead?"
- If unavailable: Use
showcommand (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
- Commands - Full command reference
- Voice Mode - Hands-free workflows
- Troubleshooting - Common issues
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:
- Install the Claude-in-Chrome browser extension
- Open Chrome and click the Claude extension icon
- 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