mcpField
W
webup-statusline

webup-statusline

github.com/webupAgent 工作流1341.4k 次安装16 周前更新
代码仓库

关于 webup-statusline

该技能为 Claude Code 生成并安装可定制的状态栏脚本,可选择显示列和配色主题。适用于希望在终端状态栏查看会话、上下文和 Git 信息的用户。

主要功能

  1. 01选择状态栏显示列
  2. 02提供四种配色主题
  3. 03按上下文余量显示颜色
  4. 04展示模型、成本及 Git 信息
  5. 05生成并安装 Bash 脚本

适用场景

  1. 01查看会话上下文余量
  2. 02在状态栏显示模型与费用
  3. 03识别当前分支和工作树

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/webup/skills-cc --skill webup-statusline

安装后在 Claude Code 中输入/webup-statusline确认已加载。

附带文件scripts/generate.mjs

详细介绍

状态行生成器

生成自定义的 Claude Code 状态行脚本,可自行选择列和颜色主题。直接安装到 ~/.claude/settings.json。

工作原理

Claude Code 支持通过配置在 ~/.claude/settings.json 中的 shell 脚本来自定义状态行。脚本会从 stdin 接收会话 JSON(模型、上下文窗口、工作区、vim、工作树等),并将格式化文本输出到 stdout。

此技能会根据你的偏好生成 bash 脚本并自动安装。

脚本目录

重要:所有脚本都位于此技能的 scripts/ 子目录中。

Agent 执行说明:

  1. 将此 SKILL.md 文件所在目录的路径确定为 SKILL_DIR
  2. 脚本路径 = ${SKILL_DIR}/scripts/<script-name>.mjs
  3. 将本文档中的所有 ${SKILL_DIR} 替换为实际路径

脚本参考:

脚本用途
scripts/generate.mjs根据所选选项生成并安装状态行脚本

先决条件

  • jq — 生成的状态行脚本需要用它解析来自 Claude Code 的 JSON 输入。在 Windows 上,脚本会自动检测通过 WinGet 或 scoop 安装的 jq;如果仍找不到 jq,请手动将其目录添加到 PATH。
  • Bun — 运行生成器所必需。若未全局安装,请使用 npx -y bun。

用法

# Preview generated script
npx -y bun ${SKILL_DIR}/scripts/generate.mjs --elements model,context,effort,git,dir --theme gruvbox

# Generate and install
npx -y bun ${SKILL_DIR}/scripts/generate.mjs --elements model,context,effort,git,dir --theme dracula --install
选项
标志默认值描述
--elements <list>model,context,cost,effort,style,git,dir要显示的列,以逗号分隔
--theme <name>gruvbox颜色主题 — 参见下表
--effort-icon <preset>图标主题使用 arrow(↯),其他主题不使用覆盖 effort 前缀图标。预设值:arrow、bolt、flash、reason、dot、none。也接受原始字符。
--install关闭将脚本写入 ~/.claude/scripts/statusline.sh 并更新 settings.json
列
列描述数据来源
model当前模型名称(例如“Opus 4.7”)model.display_name
context进度条 + 百分比 — 颜色会随剩余容量变化context_window.remaining_percentage
cost会话 API 花费,以金色显示为 $X.XX — 四舍五入为 $0.00 时隐藏输入 JSON 中的 cost.total_cost_usd
effort推理强度级别 — 颜色会随级别变化~/.claude/settings.local.json → ~/.claude/settings.json 中的 effortLevel
style输出风格名称(例如 Explanatory、Learning)— 为“default”时隐藏输入 JSON 中的 output_style.name
gitGit 分支名称(有未提交更改时显示为黄色)worktree.branch → git CLI
dir仓库目录名(位于工作树中时显示原始仓库)worktree.original_repo_dir → workspace.current_dir
worktree加粗的 worktree:<id> 标签(不在工作树中时隐藏)worktree.name → 通过 git CLI 获取父目录名
vimVim 模式指示器(未激活时隐藏)vim.mode
会变色的元素

context — 进度条填充部分 + 百分比的颜色随剩余容量变化:

剩余容量颜色含义
> 50%绿色上下文充足
20–50%黄色请留意
< 20%红色即将用满 — 请尽快压缩

effort — 数值 + 可选前缀图标的颜色随级别变化:

级别颜色
max、xhigh、high加粗红色
medium黄色
low、xlow、minimal绿色
其他 / 未设置暗色(完全未设置时隐藏)
主题
主题风格栏中显示的图标
gruvbox温暖复古、色调柔和✦ 模型 · ↯ 推理强度 · ❋ 风格 · ⌂ 目录 · ⊕ 工作树 · ⎇ Git · ⌨ Vim
dracula现代暗色、高饱和度◈ 模型 · ↯ 推理强度 · ❋ 风格 · ⌂ 目录 · ⊕ 工作树 · ⎇ Git · ⌨ Vim
robbyrussell经典 oh-my-zsh无前缀图标——仅使用颜色和标签
minimal默认终端颜色无前缀图标——纯文本

context 列有意不使用前缀图标——彩色进度条本身已经足够醒目。标志性主题内置了 effort 前缀(↯),也可以使用 --effort-icon 覆盖。

推理强度图标

传入 --effort-icon <preset> 可替换推理强度值前的字形。预设如下:

预设字形说明
arrow↯闪电箭头——默认,窄
boltϟ希腊字母 koppa——窄闪电
flash⚡经典闪电——在 Emoji 显示字体中较宽
reason∴所以
dot◉实心圆
none(隐藏)完全移除图标

也可以将任意原始字符作为 --effort-icon <char> 传入。

工作树行为:当位于 Git 工作树中时(通过输入 JSON 的 worktree.* 字段检测,或回退使用 git rev-parse --git-common-dir 检测),worktree 列会显示粗体的 worktree:<id> 标签,使用父目录名称(例如 ~/.codex/worktrees/46a6/clawmaster → worktree:46a6)。git 列优先使用输入 JSON 中的 worktree.branch;dir 列优先使用 worktree.original_repo_dir,以便在不同工作树之间保持仓库标识稳定。

调用

此技能可以带参数或不带参数调用:

  • 无参数(/webup-statusline):通过 AskUserQuestion 交互式提示,选择列和主题。
  • 带参数(/webup-statusline dracula):使用 NLP 解析主题和列偏好。
参数解析(自然语言)

参数字符串可以是任意文本。使用 NLP 提取:

  1. 主题——与以下主题匹配:gruvbox、robbyrussell、minimal、dracula。识别别名(暗黑=dracula,极简=minimal,复古=gruvbox,レトロ=gruvbox)。
  2. 元素——查找以下提及:model、context/进度/コンテキスト、effort/推理强度/努力度、git/分支/ブランチ、dir/目录/ディレクトリ、worktree/工作树/ワークツリー、vim。

未指定的字段使用默认值:model,context,effort,git,dir 列,gruvbox 主题。

工作流

  1. 如果未提供参数:使用 AskUserQuestion 在单个提示中询问 2 个问题。AskUserQuestion 每个问题最多提供 4 个选项,因此为列提供精选预设,而不是穷举所有切换选项。如果用户选择“Other”,则将其自由文本解释为以逗号分隔的列列表(或可映射到列的自然语言描述)。

    Q1 — 列预设(单选):要显示哪些列?提供以下 3 个精选预设——AskUserQuestion 会自动追加一个“Other”选项,供用户输入自由文本列列表或描述。

    • “Everything (Recommended)” — model,context,cost,effort,style,git,dir,worktree(目前所有有用的列;不包括 vim,因为大多数用户不使用 vim 键位绑定)
    • “Default” — model,context,effort,style,git,dir(均衡配置——不包括 cost 和 worktree;与该技能的默认标志值一致)
    • “Essentials” — model,context,git,dir(精简配置;不包括 effort、style、cost)

    如果用户选择自动添加的“Other”,则将其自由文本视为以逗号分隔的列列表,或映射为列的自然语言描述。如果解析结果有歧义,则回退到“Default”。

    Q2 — 主题(单选):选择配色主题?

    • “Dracula” — 现代暗色风格,紫色/粉色/青色(推荐)
    • “Gruvbox Dark” — 温暖的复古配色,24 位真彩色
    • “Robbyrussell” — 经典 oh-my-zsh 风格,无图标
    • “Minimal” — 无装饰,仅使用暗淡的分隔符

    如果提供了参数:从参数中解析主题和列。跳过提示。

  2. 将用户选择映射为脚本标志:

    • 列预设 → 展开为预设对应的规范 --elements 列表:
      • Everything → model,context,cost,effort,style,git,dir,worktree
      • Default → model,context,effort,style,git,dir
      • Essentials → model,context,git,dir
      • Other(由 AskUserQuestion 自动添加)→ 解析用户的自由文本;仅保留可识别的列名(model,context,cost,effort,style,dir,worktree,git,vim)。如果解析结果有歧义,则回退到“Default”。
    • 主题 → --theme 的值(取 gruvbox、dracula、robbyrussell、minimal 之一)
  3. 使用 --install 运行生成器:

    npx -y bun ${SKILL_DIR}/scripts/generate.mjs --elements <list> --theme <theme> --install
    
  4. 告知用户重启 Claude Code,以查看新的状态行。

输出示例

Dracula(所有列),剩余 = 49%,费用 = $0.42,effort = high,输出风格 = Explanatory,位于 worktree 中:

◈ Opus 4.7 | [■■■■■■■■■■□□□□□□□□□□] 51% | $0.42 | ↯ high | ❋ Explanatory | ⌂ clawmaster | ⊕ worktree:46a6 | ⎇ feat/xyz

(进度条为黄色——剩余 49%;进度条旁显示金色的 $0.42 会话费用;effort “high” 为粗体红色;紫色的 ❋ Explanatory 显示在 effort 和 dir 之间;context 不带前缀图标——进度条已经足够醒目)

Gruvbox Dark(model + context + effort + dir + git),剩余 = 88%,effort = medium:

✦ Opus 4.7 | [■■□□□□□□□□□□□□□□□□□□] 12% | ↯ medium | ⌂ skills-cc | ⎇ main

(进度条为绿色——剩余 88%;effort “medium” 为黄色)

Minimal(model + effort + dir + git),effort = low:

Claude Opus 4.7 · low · skills-cc · main

(Minimal 不使用前缀图标;effort “low” 为绿色)

注意事项

  • 生成的脚本保存至 ~/.claude/scripts/statusline.sh
  • 再次运行该技能会覆盖现有脚本——只需重新运行即可更改主题或列
  • 脚本使用 jq 解析 JSON 输入——请确保已安装。在 Windows 上,脚本会自动检测 WinGet 和 scoop 的 jq 路径;如果仍未找到 jq,请手动将其添加到 PATH。
  • Git 脏状态检测使用 --no-optional-locks,以避免干扰其他 git 操作

评论

支持 Markdown