终端标题管理 terminal-title

终端标题管理技能是一个Claude AI插件,用于智能更新终端窗口标题。该技能自动检测当前项目名称和对话主题,结合环境变量中的表情符号,实时更新终端标题显示格式为“表情符号+项目名称+当前主题”。支持跨平台操作(Unix/Linux/macOS/Windows),通过智能对话分析实现主题变更自动检测,无需手动干预。适用于开发人员、系统管理员和终端用户,提升多任务工作环境下的上下文感知和工作效率。关键词:终端标题管理、Claude插件、窗口标题更新、跨平台终端工具、智能主题检测、开发效率工具、命令行增强、工作流优化、环境变量集成、自动化标题设置。

DevOps 0 次安装 0 次浏览 更新于 2/28/2026

name: terminal-title description: 此技能用于根据上下文更新终端窗口标题。通过钩子在会话开始时自动触发。同时在对话过程中主题变更时触发(从调试切换到文档,从前端切换到后端)。使用表情符号+项目名称+当前主题更新标题。

<!-- ABOUTME: 终端标题技能,自动更新终端窗口标题 --> <!-- ABOUTME: 使用环境中的表情符号 + Claude的项目检测 + 当前主题 -->

终端标题管理

概述

此技能更新终端窗口标题以显示当前上下文:

  • 工作/娱乐表情符号(来自 $TERMINAL_TITLE_EMOJI 环境变量)
  • 项目名称(由Claude智能检测)
  • 当前主题(您正在处理的内容)

格式: 💼 项目名称 - 主题

关键:何时调用

必须调用的情况:

  1. 会话开始: 由SessionStart钩子自动触发。Claude必须通过将标题设置为“Claude Code”作为默认主题来响应。
  2. 主题变更: 当用户切换到新主题时,Claude必须检测并调用。

主题变更模式(Claude必须检测这些):

  • ✅ “让我们谈谈X” / “你能告诉我关于Y吗” → 立即调用
  • ✅ 用户切换领域:调试→文档,前端→后端,功能→测试
  • ✅ 在持续讨论后用户开始处理不同的模块/组件
  • ✅ 在当前主题讨论3次以上后用户询问完全不相关的主题
  • ❌ 同一主题的后续问题(“给那个函数添加注释”)→ 不要调用
  • ❌ 当前工作的小幅改进(“把它变成蓝色”)→ 不要调用
  • ❌ 关于当前任务的澄清 → 不要调用

Claude的责任: 主动监控对话流程,并在主题发生实质性变化时调用此技能。不要等待明确许可。

示例标题:

  • 💼 技能仓库 - 终端标题
  • 🎉 dotfiles - zsh配置
  • 💼 OneOnOne - Firebase配置

设置要求

所需权限:

此技能运行脚本来更新终端标题。为防止Claude每次提示权限,请将此添加到您的 ~/.claude/settings.json

对于Unix/Linux/macOS:

{
  "permissions": {
    "allow": [
      "Bash(bash *skills/scripts/set_title.sh:*)"
    ]
  }
}

对于Windows:

{
  "permissions": {
    "allow": [
      "Bash(pwsh *skills/scripts/set_title.ps1:*)"
    ]
  }
}

为什么需要此权限: 该技能执行一个脚本,在后台静默发送终端转义序列以更新窗口标题,而不中断您的工作流程。

跨平台支持: 插件包含适用于类Unix系统的bash脚本(.sh)和适用于Windows的PowerShell脚本(.ps1)。SessionStart钩子自动检测您的操作系统并使用适当的脚本。

项目检测策略

主要方法:Claude的智能分析

Claude分析当前上下文以确定项目名称:

  • 当前工作目录和最近的对话
  • 会话期间读取的文件
  • Git仓库信息
  • 包元数据(package.json、README.md等)
  • 对项目代表的整体理解

关键原则: 使用智能理解,而不仅仅是机械的文件解析。

检测示例:

  • /Users/dylanr/work/2389/skills → “技能仓库”(不仅仅是“skills”)
  • /Users/dylanr/work/2389/oneonone/hosting → “OneOnOne”
  • /Users/dylanr/dotfiles → “dotfiles”
  • /Users/dylanr/projects/my-app → “我的应用”(从目录人性化)

Claude检查的支持证据:

  1. Git远程URL或仓库目录名称
  2. package.json 名称字段(Node.js项目)
  3. README.md中的第一个标题
  4. 目录基本名称(最后手段)

后备方案: 如果Claude无法确定上下文,请使用当前目录名称。

始终包含项目名称 - Claude总是可以确定一些有意义的内容。

标题格式化

标准格式:

$emoji 项目名称 - 主题

组件详情:

1. 表情符号(来自环境):

  • $TERMINAL_TITLE_EMOJI 环境变量读取
  • 由zsh主题根据目录上下文设置
  • 常见值:💼(工作),🎉(娱乐/个人)
  • 后备方案:如果变量未设置,则使用🎉

2. 项目名称(来自Claude的检测):

  • 人性化的名称,而非slug格式
  • 正确的大小写(例如“OneOnOne”而非“oneonone”)
  • 始终存在(使用目录名称作为最低要求)

3. 主题(来自调用上下文):

  • 当前工作的简短描述(2-4个词)
  • 调用技能时提供
  • 示例:“终端标题”、“Firebase配置”、“CSS重构”

脚本使用:

bash scripts/set_title.sh "项目名称" "主题"

注意: 脚本自动从环境读取表情符号并处理终端转义序列。

边缘情况:

  • 没有 $TERMINAL_TITLE_EMOJI:使用🎉作为默认
  • 非常长的项目/主题:让终端自然处理截断
  • 空主题:使用“Claude Code”作为默认

工作流程

当Claude检测到主题变更(或会话开始)时,立即调用此工作流程:

按照以下步骤更新终端标题:

步骤1:确定项目名称

使用Claude对当前代码库和上下文的理解来确定项目名称。检查:

  • 您从对话和文件中了解的关于此项目的信息
  • Git仓库名称/远程URL
  • package.json名称字段(如果是Node.js项目)
  • README.md第一个标题
  • 目录基本名称(最低后备方案)

生成一个人性化的名称(例如“技能仓库”而非“skills”)。

步骤2:从上下文获取主题

主题应来自:

  • 调用参数(如果明确提供)
  • 当前对话上下文(用户正在处理的内容)
  • 会话开始时默认为“Claude Code”

步骤3:检测操作系统

在执行脚本之前,检测操作系统:

# 检查是否在Windows上运行(检查常见的Windows指示器)
if [[ "$OSTYPE" == "msys" || "$OSTYPE" == "win32" || "$OSTYPE" == "cygwin" ]]; then
    OS="windows"
else
    OS="unix"
fi

步骤4:执行标题更新脚本(跨平台)

找到技能基础目录(在技能加载消息中可用),并根据操作系统执行适当的脚本:

对于Unix/Linux/macOS:

bash <技能基础目录>/scripts/set_title.sh "项目名称" "主题"

对于Windows:

pwsh -NoProfile -ExecutionPolicy Bypass -File <技能基础目录>/scripts/set_title.ps1 "项目名称" "主题"

脚本处理:

  • $TERMINAL_TITLE_EMOJI(Unix)或 $env:TERMINAL_TITLE_EMOJI(Windows)读取表情符号
  • 清理输入
  • 格式化和发送终端转义序列

使用Bash工具(通过权限预先批准)静默执行此命令。

步骤5:完成

标题已静默更新。继续响应用户,除非他们询问,否则不要提及标题更新。

示例

示例1:技能仓库中的会话开始

上下文: 用户在 /Users/dylanr/work/2389/skills 中启动Claude Code

环境: TERMINAL_TITLE_EMOJI=💼

执行:

  1. 项目:“技能仓库”(Claude的知识)
  2. 主题:“Claude Code”(会话开始默认)
  3. 命令:bash /Users/dylanr/work/2389/claude-plugins/terminal-title/skills/scripts/set_title.sh "技能仓库" "Claude Code"

结果: 终端标题显示 💼 技能仓库 - Claude Code(脚本从环境读取表情符号)


示例2:主题变更检测

上下文: 对话从“终端标题实现”切换到“稀有VWs”

Claude的检测: 用户询问“你能告诉我关于稀有vws吗?” - 这是一个明确的主题切换

环境: TERMINAL_TITLE_EMOJI=🎉

Claude的操作:

  1. 检测主题变更(从终端实现到VWs)
  2. 调用终端标题技能工作流程
  3. 项目:“Home”(当前目录基本名称)
  4. 主题:“稀有VWs”(来自新的对话方向)
  5. 命令:bash <技能基础目录>/scripts/set_title.sh "Home" "稀有VWs"
  6. 继续回答用户关于稀有VWs的问题

结果: 终端标题静默更新为 🎉 Home - 稀有VWs(脚本从环境读取表情符号)


示例3:没有环境变量的个人项目

上下文: 用户在 ~/projects/dotfiles 目录中工作

环境: TERMINAL_TITLE_EMOJI 未设置

执行:

  1. 项目:“dotfiles”(来自目录)
  2. 主题:“zsh配置”(来自对话)
  3. 命令:bash <技能基础目录>/scripts/set_title.sh "dotfiles" "zsh配置"

结果: 终端标题显示 🎉 dotfiles - zsh配置(当TERMINAL_TITLE_EMOJI未设置时,脚本使用🎉作为后备)


示例4:不同的项目上下文

上下文: 用户在 /Users/dylanr/work/2389/oneonone/hosting 中工作

环境: TERMINAL_TITLE_EMOJI=💼

执行:

  1. 项目:“OneOnOne”(Claude知道此项目名称)
  2. 主题:“Firebase配置”(来自对话)
  3. 命令:bash <技能基础目录>/scripts/set_title.sh "OneOnOne" "Firebase配置"

结果: 终端标题显示 💼 OneOnOne - Firebase配置(脚本从环境读取表情符号)


示例5:Windows用户会话开始

上下文: Windows用户在 C:\Users\Nat\projects\my-app 中启动Claude Code

环境: $env:TERMINAL_TITLE_EMOJI=💻(Windows环境变量)

操作系统检测: Claude通过 $OSTYPE 检查检测到Windows

执行:

  1. 项目:“我的应用”(来自目录名称,人性化)
  2. 主题:“Claude Code”(会话开始默认)
  3. 命令:pwsh -NoProfile -ExecutionPolicy Bypass -File <技能基础目录>/scripts/set_title.ps1 "我的应用" "Claude Code"

结果: 终端标题显示 💻 我的应用 - Claude Code(PowerShell脚本从 $env:TERMINAL_TITLE_EMOJI 读取表情符号)

注意: SessionStart钩子自动检测到Windows并调用PowerShell版本的脚本,而不是bash版本。