SuperAPI AI 工具集

configure-ecc

部署与运维

查看项目

更新于 10-15 10:36

技能介绍

Configure ECC 是一个在当前 harness 内运行的对话式配置向导。其流程为:先盘点(inventory),只收集受支持的选项,预览,确认一次,以非交互方式应用,验证,并且仅在成功后才显示欢迎信息。它明确要求:绝不把 ECC 克隆到临时目录,也不手工复制插件组件。

对于人工操作的终端,规范入口是 ecc setup 和 npx ecc-universal setup。在 harness 内部,则应使用下文明确的非交互命令。

按当前 harness 路由

在 Claude Code 中,使用下文完整的范围与钩子向导。

在 Codex 中,使用 Codex 原生的插件生命周期。不要提供 Claude 的范围选项,也不要把 ECC 的四个 Claude 钩子配置映射到 Codex。

在 Kimi 中,将项目界面安装到 ./.kimi-code 下。Kimi 不提供 ECC 的 Claude 生命周期钩子配置。

如果无法确定 harness,应先说明检测到的证据,并在运行任何变更命令前询问要配置哪个 harness。

该技能是安装后的重新配置路径,无法拦截或替代提供方内置的首次安装界面。

Claude Code:运行完整的对话式向导

  1. 在不做任何更改的情况下盘点

运行以下两条命令,并总结已安装的 ECC 范围、启用状态和市场来源:

claude plugin list --json claude plugin marketplace list --json

将单个已存在的 ecc@ecc 安装视为重新配置。不要把 Claude 提供方拥有的“Open home page”控件解释为安装证据。对于多个 ECC 范围、旧版/手动安装、格式错误的设置或市场冲突,应停止并报告 setup 返回的恢复方案;绝不要猜测要删除哪个状态。

  1. 只收集两个选择

只问一个范围问题,并要求一个值:

user | project | local

user 对该用户是全局的。

project 通过仓库设置共享。

local 对当前项目是私有的。

在视觉上只把选中的范围标记为已选中或安装中。如果用户选择的安装范围与单个已存在安装不同,应将其描述为范围迁移,并在下面的命令中包含 --move-scope。

只问一个钩子模式问题,并要求一个值:

off | minimal | standard | strict

off 保留技能和命令,但禁用 ECC 钩子自动化。

minimal 启用最轻量的生命周期和安全自动化。

standard 平衡质量与安全自动化。

strict 启用最强的检查和提醒。

钩子偏好是个人 Claude 插件配置;它不跟随所选的安装范围。

  1. 预览并确认一次

优先使用插件自带的 setup 脚本。替换两个选中的值,并且仅在范围迁移时包含 --move-scope:

node "$CLAUDE_PLUGIN_ROOT/scripts/setup.js" --mode claude-plugin
--scope <scope> --hooks <hooks> [--move-scope] --dry-run --json

如果 $CLAUDE_PLUGIN_ROOT 不可用,使用已发布的 npm 包:

npx --yes --package ecc-universal ecc setup --mode claude-plugin
--scope <scope> --hooks <hooks> [--move-scope] --dry-run --json

只显示一个确认摘要,包含计划的操作、一个范围、一个钩子模式、市场操作以及任何源到目标的迁移。只问一个是/否问题。不要通过 harness 的 shell 工具运行裸交互式 ecc setup,因为该 shell 通常是非 TTY 的。

  1. 应用明确的选择

确认后,在不带 --dry-run 的情况下重新运行同一路由。保持每个选择明确,并请求 JSON,以便可以确定性地检查成功:

node "$CLAUDE_PLUGIN_ROOT/scripts/setup.js" --mode claude-plugin
--scope <scope> --hooks <hooks> [--move-scope] --yes --json

回退方案:

npx --yes --package ecc-universal ecc setup --mode claude-plugin
--scope <scope> --hooks <hooks> [--move-scope] --yes --json

  1. 验证,然后渲染欢迎信息

要求退出状态为零,并且 setup 结果的 scope 和 hooks 等于所选值。然后独立运行:

claude plugin list --json

仅当在所选范围恰好存在一个已启用的 ecc@ecc 条目时才继续。当 $CLAUDE_PLUGIN_ROOT 可用时,将成功的 setup 操作(installed、updated、migrated、resumed 或 already-migrated)传给自带的渲染器:

在调用它之前,要求提供方报告的版本与 scripts/lib/terminal-welcome.js 中的 ECC_VERSION_PATTERN 匹配。拒绝意外的版本文本,而不是将其插值到 shell 命令中。

node -e 'const { renderTerminalWelcome } = require(process.env.CLAUDE_PLUGIN_ROOT + "/scripts/lib/terminal-welcome"); process.stdout.write(renderTerminalWelcome({ action: process.argv[1], version: process.argv[2], color: process.stdout.isTTY }));' "<action>" "<installed-version>"

只渲染一次欢迎信息。在失败、dry-run、取消、范围或钩子不匹配或状态无法验证时,不要渲染它;而应报告错误和恢复方案。在验证更改后,告诉用户运行 /reload-plugins 或重启 Claude Code。

Codex:使用原生插件生命周期

使用 codex plugin marketplace list --json 和 codex plugin list --available --json 进行盘点。Codex 的原生插件命令没有 Claude 风格的 user | project | local 选择器。Codex 原生插件确实支持提供方特定的钩子,但 Codex 要求对它们进行显式信任。让 Codex 显示该信任决定;不要询问 Claude 的四个配置钩子问题,也不要声称这些配置映射到 Codex。

如果缺少 ECC 市场,则添加它。否则刷新其快照:

codex plugin marketplace add affaan-m/ECC codex plugin marketplace upgrade ecc --json

请求一次确认,然后安装或幂等地刷新已安装缓存并验证:

codex plugin add ecc@ecc --json codex plugin list --json

仅当 JSON 报告 ECC 已安装并提供其 installedPath 时才继续。然后渲染已验证包的欢迎信息:

只使用 Codex JSON 返回的确切绝对 installedPath。拒绝控制字符,并要求已安装版本与 ECC_VERSION_PATTERN 匹配。使用此参数数组直接调用 node;这是工具 API 调用,不是 shell 命令:

["<installedPath>/scripts/welcome.js", "--action", "configured", "--version", "<installed-version>"]

如果当前 harness 无法使用单独的参数数组调用可执行文件,则跳过欢迎信息。绝不要从 Codex JSON 值构造 shell 命令。

绝不要声称 Claude 的 off | minimal | standard | strict 配置已应用于 Codex。

Kimi:安装项目界面

在确认前说明能力摘要:目标 ./.kimi-code;hooks=unsupported(对于 ECC 生命周期钩子)。不要询问 Claude 的范围或钩子模式问题。先预览:

npx --yes --package ecc-universal ecc install --profile core --target kimi --dry-run

显示一次针对该项目目标的确认,然后应用不带 --dry-run 的相同命令。使用以下命令验证:

npx --yes --package ecc-universal ecc doctor --target kimi

仅在 doctor 成功且已安装的说明和技能仍位于 ./.kimi-code 内之后,渲染:

npx --yes --package ecc-universal ecc welcome --action configured

不要声称 Kimi 安装或配置了 ECC 生命周期钩子。