home / skills / jst-well-dan / skill-box / terminal-title
This skill automatically updates the terminal window title to reflect the current high level task, helping you quickly identify and switch between Claude Code
npx playbooks add skill jst-well-dan/skill-box --skill terminal-titleReview the files below or copy the command above to add this skill to your agents.
---
name: terminal-title
description: Automatically updates terminal window title to reflect the current high-level task. Use at the start of every Claude Code session when the user provides their first prompt, and whenever the user switches to a distinctly new high-level task. Helps developers manage multiple Claude Code terminals by providing clear, at-a-glance identification of what each terminal is working on.
min_claude_code_version: "1.0.0"
version: "1.1.0"
---
# Terminal Title
## Overview
Automatically sets descriptive terminal window titles based on the task Claude is working on. Essential for developers running multiple Claude Code instances who need to quickly identify which terminal is handling which task.
## When to Use
**Always trigger this skill:**
- At the start of every new Claude Code session (after receiving the first user prompt)
- When switching to a substantially different task (e.g., from "API Integration" to "Database Migration")
**Trigger on task switches like these:**
- Switching from frontend work to backend work
- Moving from debugging to new feature development
- Changing from one module/component to a completely different one
- Starting work on a different part of the system (e.g., from auth to payments)
**Do NOT trigger for:**
- Follow-up questions about the same task ("Can you add a comment to that function?")
- Small refinements to current work ("Make it blue instead of red")
- Debugging the same feature you just built
- Clarifications ("What did you mean by X?")
- Iterating on the same component or module
- Mid-task status updates or progress checks
## How It Works
1. **Extract Task Summary**: Analyze the user's prompt to identify the high-level task
2. **Generate Title**: Create a concise, descriptive title (max 40 characters)
3. **Set Title**: Execute the `scripts/set_title.sh` script with the generated title
4. **No Confirmation Needed**: This happens automatically in the background
## Title Format Guidelines
**Good titles:**
- "API Integration: Auth Flow"
- "Fix: Login Bug"
- "DB Migration: Users Table"
- "Build: Dashboard UI"
- "Refactor: Payment Module"
**Bad titles:**
- Too long: "Implementing the new authentication system with OAuth2.0 support" (exceeds 40 chars)
- Too generic: "Working" or "Coding"
- Too verbose: "The user wants me to help them with..."
**Format pattern:**
```
[Action/Category]: [Specific Focus]
```
Keep titles concise, actionable, and immediately recognizable.
## Common Mistakes to Avoid
**β Too Verbose:**
- Bad: "Working on implementing the user authentication system with JWT tokens"
- Good: "Build: JWT Auth"
**β Too Vague:**
- Bad: "Code stuff"
- Bad: "Working"
- Good: "Refactor: API Layer"
**β Including System Information:**
- Bad: "john-macbook-pro: Debug app"
- Bad: "/Users/john/project: Build feature"
- Good: "Debug: App Issues"
**β Using Complete Sentences:**
- Bad: "I am working on the dashboard component"
- Good: "Build: Dashboard UI"
## Implementation
**Execute the title script:**
```bash
bash scripts/set_title.sh "Your Title Here"
```
**Example workflow:**
```bash
# User asks: "Help me debug the authentication flow in the API"
bash scripts/set_title.sh "Debug: Auth API Flow"
# User asks: "Create a React component for the user profile page"
bash scripts/set_title.sh "Build: User Profile UI"
# User asks: "Write tests for the payment processing module"
bash scripts/set_title.sh "Test: Payment Module"
```
## Script Details
The `scripts/set_title.sh` script uses ANSI escape sequences to set the terminal title. It's compatible with:
- macOS Terminal
- iTerm2
- Alacritty
- Most modern terminal emulators (xterm, rxvt, screen, tmux)
The script accepts a single argument (the title string) and exits silently if no title is provided (fail-safe behavior).
## Optional Customization
Users can optionally customize terminal titles with a prefix by setting the `CLAUDE_TITLE_PREFIX` environment variable:
```bash
export CLAUDE_TITLE_PREFIX="π€ Claude"
```
This produces titles like: `π€ Claude | Build: Dashboard UI`
Without the prefix, titles remain in the standard format: `Build: Dashboard UI`
**Note:** You don't need to check for this variable or modify your behavior. The script handles this automatically.
This skill automatically updates your terminal window title to reflect the current high-level task Claude is working on. It runs quietly in the background at the start of a session or whenever the user switches to a distinctly new task, making it easy to identify multiple Claude Code terminals at a glance.
When triggered, the skill extracts a concise task summary from the user's prompt, formats a short title (max 40 characters) using an [Action/Category]: [Specific Focus] pattern, and executes the title-setting script to update the terminal window. The update is automatic and requires no confirmation; the script handles optional prefixing via an environment variable.
Will this interrupt the user or ask for confirmation?
No. The title is set automatically in the background and does not require user confirmation.
How long can titles be?
Titles should be no longer than 40 characters to remain concise and readable in terminal tabs.
Can I add a prefix like an emoji or agent name?
Yes. Set the CLAUDE_TITLE_PREFIX environment variable to add a prefix; the script applies it automatically.