关于 webup-statusline
该技能为 Claude Code 生成并安装可定制的状态栏脚本,可选择显示列和配色主题。适用于希望在终端状态栏查看会话、上下文和 Git 信息的用户。
主要功能
- 01选择状态栏显示列
- 02提供四种配色主题
- 03按上下文余量显示颜色
- 04展示模型、成本及 Git 信息
- 05生成并安装 Bash 脚本
适用场景
- 01查看会话上下文余量
- 02在状态栏显示模型与费用
- 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 执行说明:
- 将此 SKILL.md 文件所在目录的路径确定为
SKILL_DIR - 脚本路径 =
${SKILL_DIR}/scripts/<script-name>.mjs - 将本文档中的所有
${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 |
git | Git 分支名称(有未提交更改时显示为黄色) | worktree.branch → git CLI |
dir | 仓库目录名(位于工作树中时显示原始仓库) | worktree.original_repo_dir → workspace.current_dir |
worktree | 加粗的 worktree:<id> 标签(不在工作树中时隐藏) | worktree.name → 通过 git CLI 获取父目录名 |
vim | Vim 模式指示器(未激活时隐藏) | 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 提取:
- 主题——与以下主题匹配:gruvbox、robbyrussell、minimal、dracula。识别别名(暗黑=dracula,极简=minimal,复古=gruvbox,レトロ=gruvbox)。
- 元素——查找以下提及:model、context/进度/コンテキスト、effort/推理强度/努力度、git/分支/ブランチ、dir/目录/ディレクトリ、worktree/工作树/ワークツリー、vim。
未指定的字段使用默认值:model,context,effort,git,dir 列,gruvbox 主题。
工作流
-
如果未提供参数:使用
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” — 无装饰,仅使用暗淡的分隔符
如果提供了参数:从参数中解析主题和列。跳过提示。
- “Everything (Recommended)” —
-
将用户选择映射为脚本标志:
- 列预设 → 展开为预设对应的规范
--elements列表:Everything→model,context,cost,effort,style,git,dir,worktreeDefault→model,context,effort,style,git,dirEssentials→model,context,git,dirOther(由AskUserQuestion自动添加)→ 解析用户的自由文本;仅保留可识别的列名(model,context,cost,effort,style,dir,worktree,git,vim)。如果解析结果有歧义,则回退到“Default”。
- 主题 →
--theme的值(取gruvbox、dracula、robbyrussell、minimal之一)
- 列预设 → 展开为预设对应的规范
-
使用
--install运行生成器:npx -y bun ${SKILL_DIR}/scripts/generate.mjs --elements <list> --theme <theme> --install -
告知用户重启 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 操作