SuperAPI AI 工具集

promote-claude-settings

办公与效率

查看项目

更新于 10-16 04:36

技能介绍

用途

promote-claude-settings 用于将当前项目 .claude/settings.local.json 中的配置条目提升(promote)到全局 ~/.claude/settings.json。当用户表达“promote settings”“upgrade…”等意图时使用。整个过程是交互式的,逐项确认后再写入全局配置。

主要能力

  • 读取当前项目根目录的 .claude/settings.local.json 与全局 ~/.claude/settings.json。
  • 对本地与全局的每个顶层键进行差异比较;对数组值(如 permissions.allow)按元素逐个比较,而非整体比较。
  • 将每个条目分类为:New(全局中不存在,可添加)、Exists(全局中已完全相同,跳过)、Conflict(全局中存在但值不同)。
  • 在询问用户前,先展示完整的差异摘要。
  • 对每个非 Exists 条目进行交互式确认:New 询问“Add to global? (Y/N)”;Conflict 展示两个值并询问“Use local / Keep global / Skip”。每个提示使用 question 工具。
  • 作用域泛化:本地设置常带有项目特定上下文,提升到全局前会评估是否包含在项目外不成立的收窄信号,并建议更宽泛的版本。
  • 将确认后的变更写入 ~/.claude/settings.json(使用 Edit 工具);若文件不存在则创建。
  • 清理确认:若移除已提升条目后 settings.local.json 变为 {},会说明该文件已实际为空并询问是删除还是保留空文件;若仍留有其他条目,则询问是否移除已提升的条目。

使用方式

该技能以交互流程运行:先读取两个配置文件,若本地文件缺失或为空({})则告知用户并停止;随后进行差异比较并展示摘要;再逐项询问确认;对需要提升的条目检测是否含项目特定收窄并给出更宽泛建议,询问“Original: X → Suggested: Y — Use suggested version / Keep original / Custom?”;最后写入全局配置并处理本地文件的清理确认。

作用域泛化示例

  • Bash(./mvnw test:*):相对路径 + 子命令锁定,建议泛化为 Bash(*mvnw*)。
  • Bash(./gradlew build:*):相对路径,建议泛化为 Bash(*gradlew*)。
  • Bash(npx vitest:*):已足够通用,保持原样。
  • Hook 命令 cd ./api && lint:相对路径,需评估该 hook 在全局是否合理。
  • 环境变量 PROJECT_ROOT=/Users/matt/foo:绝对路径,可能不应提升。

常见收窄信号包括:相对路径(./mvnw、./gradlew、./scripts/foo)、绝对路径(/Users/matt/project-x/...)、项目特定目录或文件名、仅适用于单个项目工作流的过度具体子命令锁定。

适用场景

需要把项目级 Claude 设置升级为全局设置,并希望在提升前逐项审查差异、避免把项目专属配置带入全局的场景。

限制与边界情况

  • ~/.claude/settings.json 缺失时,用确认后的条目创建。
  • JSON 解析错误时,报告并停止,不尝试修复。
  • 不要触碰 .claude/settings.json(项目共享设置)。
  • 若本地文件缺失或为空({}),告知用户并停止。
  • 若用户选择保留空的 settings.local.json,则保持文件原样,不移除条目。