Dev & Engineering terminalwindow-titledeveloper-workflowansi-escape-sequencesmulti-terminalmacosshell-script

Terminal Title

Automatically writes each Claude Code session's current task into the terminal window title, so you never guess which terminal is which.

FollowSkills review · FSRS-2.0
Recommended
58/ 100 5-point scale 2.9 / 5
1 2 3 4 5 6
1Trust18 / 25 · 3.6/5

Script behavior is minimal: sets terminal title via ANSI escapes, atomic write to ~/.claude/terminal_title, input sanitized (control chars stripped, length capped), no network calls, no sensitive data, no privilege escalation. Deducted for: automatic execution without user confirmation (though impact is minor), undisclosed rollback/cleanup for the HOME-directory file write, and unverified publisher identity.

2Reliability10 / 20 · 2.5/5

Script logic is self-consistent: silent exit on empty input, re-check after sanitization, atomic write, terminal-type branching. Deducted for: no executed verification (static-review cap), install-and-test.sh referenced but its tests absent from evidence, abnormal-input paths only inferred from code, and no failure-feedback mechanism.

3Adaptability10 / 15 · 3.3/5

Trigger and non-trigger conditions (new task vs follow-ups/small tweaks) are clearly delineated, with positive/negative title examples and layered compatibility claims. Deducted for: no statement of Chinese-language title behavior or length handling (40-char limit vs CJK), compatibility grounded mainly in macOS.

4Convention10 / 15 · 3.3/5

Docs are well layered: SKILL.md, README, troubleshooting, install/uninstall/versioning all present, MIT declared, version 1.1.0. Deducted for: LICENSE/VERSION/CHANGELOG.md files referenced but not present in evidence, setup-zsh.sh/install-and-test.sh/uninstall.sh modify user shell config with details not shown, maintenance ownership unclear.

5Effectiveness6 / 15 · 2.0/5

Core task path is complete at code level: extract task, generate title, run script, set ANSI title, with directory prefix and optional custom prefix as added value. Deducted for: static review cannot verify real execution, benefit depends on Claude Code honoring SKILL.md trigger rules, known cross-terminal persistence limitations.

6Verifiability4 / 10 · 2.0/5

Script and docs cross-corroborate (prefix logic, silent exit, format matching README examples), facts and speculation are mostly separated ('should work' clearly flagged). Deducted for: no independent execution evidence, no committed test suite, claims like automatic repo-name detection rest only on basename, no third-party corroboration.

Evidence confidence:Low Reviewed Sep 10, 2026 Reviewed revision 1327205312e4
Before you use it
  • This is a pure static source review; no scripts were executed and all conclusions carry low confidence.
  • setup-zsh.sh modifies ~/.zshrc and Terminal.app settings; back up before installing. Its details were not part of the reviewed evidence.
  • install-and-test.sh and uninstall.sh were not included in the evidence; review their source before use.
  • The 40-character title limit does not specify handling of Chinese titles; CJK users may face unclear truncation behavior.
  • Titles briefly propagate across terminals via ~/.claude/terminal_title (~5-minute window); new terminals may briefly show a wrong title when running multiple projects.
  • Publisher is unverified in the FollowSkills registry; identity is unknown, which is not itself a risk signal.
Review evidence [1][2][3]
See the full review method →

What does this skill do, and when should you use it?

This Claude Code skill solves the problem of losing track of which terminal is doing what when running multiple Claude Code instances. On the first prompt of a session and on switches to a clearly new high-level task, it generates a concise title of at most 40 characters and sets the terminal window title via a bash script using ANSI escape sequences. Titles are automatically prefixed with the current directory (project) name, and an optional custom prefix can be added via the CLAUDE_TITLE_PREFIX environment variable. All processing is local with no external calls. Installation is available via an automated script, the Claude Code CLI, or manually, with a dedicated uninstall script.

Analyzes the user's prompt to extract a high-level task summary; generates a max-40-character title in "Category: Focus" format (e.g., "Debug: Auth API Flow"); calls scripts/set_title.sh, which uses ANSI escape sequences to set the terminal title; automatically prepends the current directory name; optionally reads the CLAUDE_TITLE_PREFIX environment variable for a custom prefix; runs silently with no confirmation and exits safely if no title argument is given.

  1. Developers running multiple Claude Code sessions who need to instantly tell apart terminals handling API integration, database migration, or bug fixes
  2. macOS Terminal.app or iTerm2 users who want window titles to reflect the current task instead of default shell info
  3. Engineers frequently switching between frontend/backend, debugging, and new features, who need titles updated on each task switch
  4. Users managing sessions in multiplexers like tmux or screen, which the script claims compatibility with

What are this skill's strengths and limitations?

Pros
  • Zero dependencies — plain bash, ~2KB, fully local processing with no external calls
  • Automatic project-directory prefix makes multi-terminal, multi-project identification effortless
  • Tested and confirmed working on macOS Terminal.app and iTerm2
  • One-shot install-and-test script plus a complete uninstall script
  • Carefully specified trigger rules: task switches trigger; follow-ups and minor tweaks on the same task do not
Limitations
  • Repo has no GitHub Topics and license is marked unknown in repo metadata (README claims MIT — verify yourself)
  • Windows native terminals (Command Prompt, PowerShell) explicitly unsupported due to ANSI limitations
  • Alacritty, Kitty, GNOME Terminal, Konsole, and Windows Terminal + WSL are only "should work", not extensively tested
  • Plain bash without precmd support won't persist titles across prompts
  • Terminals opened within 5 minutes briefly inherit a previous terminal's title (by design, but potentially confusing)
  • No evidence of an automated cross-platform test suite — the install-and-test script does not equate to regression coverage

How do you install this skill?

Recommended: clone the repo, then chmod +x install-and-test.sh && ./install-and-test.sh — the script checks prerequisites (unzip, mkdir, chmod, bash), extracts the skill to ~/.claude/skills/, and runs verification tests. Alternative CLI install: claude-code install terminal-title.skill. Manual: mkdir -p ~/.claude/skills, unzip terminal-title.skill there, then chmod +x ~/.claude/skills/terminal-title/scripts/set_title.sh. macOS Terminal.app + zsh users should also run ./setup-zsh.sh to strip the system's default title suffixes (it backs up .zshrc first). Uninstall with ./uninstall.sh.

How do you use this skill?

After installation no manual configuration is needed. Start Claude Code and give it a task — e.g., "Help me debug the authentication API" — and the title becomes "my-api-project | Debug: Auth API Flow". Add a custom prefix by exporting CLAUDE_TITLE_PREFIX="🤖 Claude" in your shell config. If titles show escape codes or unwanted prefixes/suffixes, see the README troubleshooting section and setup-zsh.sh.

FAQ

Does it need network access or dependencies?
No. It uses standard bash and ANSI escape sequences, is about 2KB, and does all processing locally with no external calls.
Will it work in my terminal?
Confirmed on macOS Terminal.app (with setup-zsh.sh) and iTerm2. Alacritty, Kitty, GNOME Terminal, Konsole, and Windows Terminal + WSL are claimed compatible but untested; Windows CMD/PowerShell is unsupported.
Titles aren't updating or the skill isn't triggering — what now?
Verify the skill is in ~/.claude/skills/terminal-title/, that set_title.sh is executable (chmod +x), restart Claude Code, and check SKILL.md's YAML frontmatter is intact. Run setup-zsh.sh if titles show unwanted prefixes/suffixes.
Will opening a new terminal overwrite my titles?
A terminal opened within 5 minutes initially inherits the previous terminal's title; once Claude Code sets a new title there, each terminal maintains its own independently.

Related skills