npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

@elephantalker/claude-code-toolkit

v0.22.0

Published

Installer and drift-safe uninstaller for Elephantalker's curated Claude Code toolkit.

Readme

Elephantalker Claude Code Toolkit

一个安装到当前项目的精选工具包,目标 Agent 为 Claude Code、Kimi Code、pi 与 DeepSeek Harness。Claude 侧组件(Skills、Hooks、Agents)装入单个插件目录 .claude/skills/ett/(技能命令为 /ett:<name>,hooks 由插件根 hooks/hooks.json 注册,安装不写 .claude/settings.json);Kimi 侧无插件壳,Skills 平铺到 .kimi-code/skills/ett-<name>/(以 /skill:ett-<name> 调用),Agent 文件写入 .kimi-code/agents/;pi 侧同样平铺到 .pi/skills/ett-<name>/(以 /skill:ett-<name> 调用),Agent 文件写入 .pi/agents/(需 pi-subagents 扩展提供项目级 agent 发现);DeepSeek Harness 侧平铺到项目 .dsh/skills/ett-<name>/(无 Agent 目录概念)。脚本与配置写入项目根 eccToolkit/(多目标共享一份),不修改用户级配置,也不向上搜索 Git 根目录。

当前版本:0.22.0

先看结论

工具包提供三个可独立选择的组件:

| 组件 | 作用 | 安装后的主要入口 | |---|---|---| | hello | 验证安装、插件发现和 ett 命名空间 | /ett:hello | | continuous-learning-v2 | 安全采集项目经验,经人工审核后复用或生成 Skill/Agent | /ett:setup/ett:review/ett:evolve 等 | | project-docs | 初始化并同步模块级 AGENTS.mdDESIGN.md(模块 CLAUDE.md 恒为一行 @AGENTS.md 导入) | /ett:init/ett:doc-update/ett:doc-update-lite |

project-docs 同时支持 Claude Code、Kimi Code、pi 与 DeepSeek Harness(Kimi/pi 侧入口为 /skill:ett-init/skill:ett-doc-update/skill:ett-doc-update-lite;DeepSeek Harness 侧为同名 ett-* Skill);hellocontinuous-learning-v2 为 Claude Code 专属。组件按兼容矩阵分配到支持它的已选目标 Agent,没有任何落点的组件会报错中止。

本插件的专属名词(instinct、observation、Observer、人工审核闸门、受管安装等) 详见 docs/glossary.md;正文首次出现处会链接到对应条目。

环境要求:Node.js >=22.20.0,以及 Claude Code、Kimi Code 或 pi(pi 的 agent 文件需 pi-subagents 扩展)。只有 continuous-learning-v2full 模式额外需要 Python 3、Claude CLI 和可运行脚本的 Bash;Windows 推荐 Git Bash。

安装与卸载

在目标项目根目录运行交互安装:

npx @elephantalker/claude-code-toolkit@latest

非交互安装可重复传入 --skill

npx @elephantalker/claude-code-toolkit@latest \
  --skill continuous-learning-v2 \
  --skill project-docs \
  --agent claude-code \
  --yes

可用安装参数:

| 参数 | 含义 | |---|---| | --skill hello\|continuous-learning-v2\|project-docs | 选择组件,可重复 | | --agent claude-code\|kimi-code\|pi-agent\|deepseek-harness | 目标 Agent,可重复;kimi-codepi-agentdeepseek-harness 只接受 project-docs | | --yes | 非交互确认;使用 --skill--agent 时必须提供 |

安装到 Kimi Code:

npx @elephantalker/claude-code-toolkit@latest \
  --skill project-docs \
  --agent kimi-code \
  --yes

安装到 pi(.pi/skills/ 平铺;agent 文件需 pi-subagents 扩展,缺失时由 SKILL 内置指引降级):

npx @elephantalker/claude-code-toolkit@latest \
  --skill project-docs \
  --agent pi-agent \
  --yes

安装到 DeepSeek Harness(.dsh/skills/ 平铺;DSH 从项目根 .dsh/skills/ 读取技能,优先级高于用户全局技能目录):

npx @elephantalker/claude-code-toolkit@latest \
  --skill project-docs \
  --agent deepseek-harness \
  --yes

同时传多个 --agent(如 --agent claude-code --agent kimi-code --agent pi-agent --agent deepseek-harness)即多目标安装,各目标共享一份 eccToolkit/ 载荷。当前目录不是 Git 仓库根时会警告(Kimi Code 从最近的 .git 祖先加载项目级组件,pi 从 cwd 及祖先目录加载,DeepSeek Harness 以最近的 .git 祖先为项目根):交互安装需确认后继续,--yes 打印警告后继续。

Claude Code 目标安装后执行 /reload-plugins,或从项目根重启 Claude Code; Kimi Code 目标在新会话中自动加载;pi 目标在 pi 中运行 /reload(或重启会话)后加载; DeepSeek Harness 目标在新会话中自动加载。

卸载命令:

npx @elephantalker/claude-code-toolkit@latest uninstall
npx @elephantalker/claude-code-toolkit@latest uninstall --yes
npx @elephantalker/claude-code-toolkit@latest uninstall --agent kimi-code --yes
npx @elephantalker/claude-code-toolkit@latest uninstall --agent pi-agent --yes
npx @elephantalker/claude-code-toolkit@latest uninstall --agent deepseek-harness --yes

交互卸载默认选择“否”;非交互环境必须使用 --yes。卸载默认移除全部检测到的目标; --agent <id> 只卸指定目标。卸载只删除经过哈希验证的 受管内容——Claude 侧插件壳 .claude/skills/ett/、Kimi 侧 .kimi-code/skills/ett-*/ 与 pi 侧 .pi/skills/ett-*/、DeepSeek Harness 侧 .dsh/skills/ett-*/ 及受管 Agent 文件, 以及项目根 eccToolkit/ 载荷;载荷由多目标共享,其他目标仍安装时 保留载荷。卸载不修改 .claude/settings.json,保留 .claude.kimi-code.pi.dsh、学习数据以及 后来发布的 Skills/Agents。检测到修改、缺失、额外文件或非法状态路径时会拒绝删除;唯一的例外是 ETT 数据产物 eccToolkit/ett-docs.json(由 docs.mjs index 生成的模块索引),它不视为额外文件, 卸载后保留在 eccToolkit/ 原位供项目归档。

Continuous Learning v2:它如何运作

最短上手流程

/ett:setup capture-only   # 先只采集,不调用模型
/ett:status               # 核对实际生效模式
/ett:setup full           # 需要自动生成候选时再开启
/ett:review               # 人工批准或拒绝候选
/ett:evolve               # 可选:把已批准经验生成为 Skill/Agent

推荐先用 capture-only 检查采集范围和脱敏结果,再逐项目启用 full

完整数据流

flowchart TD
    A["PostToolUse / PostToolUseFailure"] --> B{"排除规则 · 脱敏 · 裁剪"}
    B -->|命中排除项| X["整条丢弃"]
    B -->|通过| C["observations.jsonl(本项目本地观察)"]
    C --> D{"有效模式为 full?"}
    D -->|"off / capture-only"| E["仅积累观察,不调用模型"]
    D -->|"达到 minObservations 或兜底间隔"| F["Observer 读取安全批次,调用 Claude CLI"]
    F -->|"失败 / 超时 / 限流:保留观察"| C
    F -->|"成功:批次归档"| H["instincts/pending(待审核候选)"]
    H --> I["/ett:review(人工审核闸门)"]
    I -->|批准| J["instincts/personal(项目已批准)"]
    I -->|拒绝| K["instincts/rejected(留档不删)"]
    J --> L["SessionStart 注入(≤6 条 · 置信度 ≥0.7)"]
    J --> M["/ett:evolve 聚类生成 Skill/Agent 候选"]
    M --> N["/ett:evolve-review(第二道闸门)"]
    N -->|批准| O["发布到 .claude/skills 或 .claude/agents"]
    J --> P["/ett:promote(迁移到全局作用域)"]
    G["ecc@ecc 已启用 → 实际模式强制 off"] -.互斥.-> D

图中名词见名词解释:观察Observerinstinct注入人工审核闸门作用域与提升Evolve 与 Evolved 候选

关键边界:

  • 只采集 PostToolUsePostToolUseFailure,不保存普通用户提示、助手回复或完整会话。
  • 敏感路径整条排除;常见凭据字段和令牌会脱敏;MCP 结果只保留受限结构。
  • 输入、输出分别限制在约 5000 个序列化字符。
  • Observer 只能创建 pending 候选,不能自动批准、注入或发布。
  • 只有人工批准的 instinct 才可能进入后续会话;默认最多注入 6 条、置信度至少 0.7
  • Observer 成功后归档已处理批次;失败、超时或限流时保留原观察,供以后重试。
  • 如果当前有效配置启用了完整 ecc@ecc,精选版严格互斥并把实际采集模式置为 off

三种模式

三种采集模式的行为差异:

| 模式 | 采集 | Observer 模型调用 | 已批准经验注入 | |---|---:|---:|---:| | off | 否 | 否 | 是 | | capture-only | 是 | 否 | 是 | | full | 是 | 达到调度条件时调用 | 是 |

内建全局默认始终为 offcapture-only 只有显式使用 --global-default --confirm-privacy 才能成为后续项目的默认值;full 只能逐项目启用。

用户配置文件(config.json)

Observer、注入与排除项等调优设置保存在学习数据目录projects/<项目ID>/config.json,由用户手工编辑、保存即生效(下一次 Hook/Observer 读取时);文件解析失败回退默认值并告警,不会中断采集。/ett:statususer config: 一行显示当前项目的实际路径。

| 字段 | 默认值 | 含义 | |---|---|---| | observer.model | haiku | Observer 调用的模型 | | observer.minObservations | 20 | 触发 Observer 所需完整观察数 | | observer.sampleLimit | 200 | 单批最多读取数 | | observer.timeoutSeconds | 120 | Claude CLI 超时秒数(1~3600 的整数;慢环境可调大,如 300) | | observer.intervalMinutes | 5 | 有完整观察时的低频兜底间隔(分钟) | | injection.enabled | true | 是否在 SessionStart 注入已批准经验 | | injection.confidenceThreshold | 0.7 | 注入置信度下限 | | injection.maxInstincts | 6 | 单次最多注入条数 | | capture.excludeTools / excludePaths / excludeMcp | [] | 排除的 glob 列表 |

完整示例与逐字段说明见安装产物的 references/continuous-learning-v2.md。 模式与 full 依赖记录不在配置文件中,只能经 /ett:setup 修改。

Observer 用项目级 lease 防止重复运行。Claude CLI 的内层超时之外,Node runner 只增加 固定 30 秒启动/清理宽限,不会给模型增加调用时间。Python 与 Claude CLI 的标准输入输出 固定使用 UTF-8。模型偶尔用三个反引号(可带 mdmarkdown 标签)包住整份文档时, 运行时只移除这一层;候选正文里的代码块会保留,歧义或未闭合 围栏则判为失败并保留观察。

命令速查

零参数调用以下技能时,Claude Code 会进入对话流程;带参数时直接执行。

| 入口 | 作用 | 参数 | |---|---|---| | /ett:setup | 查看选择并配置模式 | 见下方“setup 参数” | | /ett:status | 显示配置模式、有效模式、ECC 状态、注入和 Observer 限制、用户配置文件路径 | 无 | | /ett:review | 列出、批准或拒绝 pending instinct | list\|approve <id>\|reject <id>\|approve-all\|reject-all,可带 --scope project\|global;单条批准可带 --action <文本> | | /ett:promote | 把已批准的项目 instinct 提升到全局作用域并移除项目来源;零参数时列出并多选批量提升 | <id> [...] | | /ett:evolve | 分析已批准经验,或生成 Skill/Agent 候选 | --generate --type skill\|agent --name <name> [--instinct <id> ...] | | /ett:evolve-review | 列出、批准或拒绝 evolved 候选 | list\|approve <id>\|reject <id>;批准可带 --content-file <edited.md> |

导入导出、projects 列表、pending 清理、旧版观察整理和维护脚本没有入口命令; 它们的 CLI 调用方式见安装产物的 references/continuous-learning-v2.md

/ett:promote <id> 是作用域迁移,不是复制。工具先创建全局 instinct,成功后再从实际项目来源中移除同 ID 的块;混合文件中的其他块保持不变。若全局写入失败,项目来源不变;若全局写入成功但来源清理失败,命令保留全局结果并明确报告部分成功。批量提升时逐条独立执行、逐条报告。

setup 参数

/ett:setup off
/ett:setup capture-only
/ett:setup full

| 参数 | 作用 | |---|---| | --global-default | 修改后续项目的全局默认;只允许 offcapture-only | | --confirm-privacy | 把 capture-only 设为全局默认时的必需确认 |

Observer 模型与超时、注入与排除项等调优不再经 setup 参数设置,请编辑 config.json(见“用户配置文件”一节)。

旧观察整理

旧版观察整理是文档化操作(没有入口命令,调用方式见参考文档),只处理 当前项目。默认先分类并预览:

  • legacy:明确识别的旧 ECC tool_start、旧 tool_complete
  • current:当前 ETT 记录;
  • parseErrormalformedunknown:不移动,留给人工判断。

确认后,旧记录按原始文本和顺序写入唯一的 observations.legacy/*.jsonl。实际写入要求 有效模式为 off 且没有活动 Observer lease。中断可能留下 observations.cleanup/<事务ID>;再次预览会列出残留,按参考文档中的 clear-observations --resolve <事务ID|all> 解决。

“解决”会依据 manifest 和 SHA-256 恢复原活动文件或保留已提交文件,不是直接删备份。 任一残留存在歧义时 all 整体拒绝。已完成的 observations.legacy 归档不会被命令自动删除; 用户核对后可以手工删除。

Continuous Learning v2 会创建哪些文件

1. 项目中的受管安装(壳 + 载荷)

Claude Code 目标的安装产出两处受管目录:壳(项目 .claude/)与载荷(项目根 eccToolkit/)。 Kimi Code 目标无插件壳:Skills 平铺为 .kimi-code/skills/ett-<name>/,Agent 文件位于 .kimi-code/agents/,安装状态为 .kimi-code/.ett-install.json;pi 目标同样平铺为 .pi/skills/ett-<name>/,Agent 文件位于 .pi/agents/,安装状态为 .pi/.ett-install.json; DeepSeek Harness 目标平铺为 .dsh/skills/ett-<name>/(无 Agent 目录),安装状态为 .dsh/.ett-install.json。三个平铺目标与 Claude 侧共享同一载荷。

壳(Claude 侧心智产物与身份)

| 路径 | 用途 | |---|---| | .claude/skills/ett/.claude-plugin/plugin.json | Claude Code 插件清单和版本 | | .claude/skills/ett/.ett-install.json | 安装器所有权、已选组件、壳与载荷的受管哈希;安全升级/卸载依据 | | .claude/skills/ett/agents/ | project-docs 的 doc-maintainer Agent | | .claude/skills/ett/skills/setup/ … | 嵌套的 6 个 /ett:<name> 技能入口(frontmatter 保持模板简名) | | .claude/skills/ett/hooks/hooks.json | CL-v2 的插件 Hook(SessionStart、ConfigChange、PostToolUse、PostToolUseFailure、SessionEnd),经 ${CLAUDE_PROJECT_DIR}/eccToolkit/... 调用载荷脚本;安装不写 .claude/settings.json |

载荷(项目根 eccToolkit/,完全受管)

| 路径 | 用途 | |---|---| | runtime/ | 配置、采集、审核、整理、注入和演化逻辑 | | observer/ | Bash、Node、Python 和 Claude CLI 的 Observer 执行链 | | maintenance/ | 维护脚本(旧数据迁移、ECC 来源对照),无命令入口 | | provenance/source-lock.json | 固定 ECC 来源与文件哈希 | | references/ | 配置表、文档化操作与维护脚本参考(continuous-learning-v2.md) | | templates/ | project-docs 的模块文档模板 | | THIRD_PARTY_LICENSES/LICENSE | 来源许可 |

不要手改受管文件;修改后安装器会拒绝覆盖或卸载,避免误删用户内容。

2. Claude Code 分配的插件数据

根目录由 ${CLAUDE_PLUGIN_DATA} 提供,命令和 Hook 会使用同一目录:

| 相对路径 | 用途 | |---|---| | continuous-learning-v2/global.json | 全局安全默认模式 | | continuous-learning-v2/projects/<项目ID>.json | 项目模式、Observer、注入、排除项和 full 依赖 | | continuous-learning-v2/runtime-state/<项目ID>.json | 最近一次 ecc@ecc 状态核对结果 |

3. 学习数据目录

学习数据目录的优先级:绝对 CLV2_HOMUNCULUS_DIR → 绝对 XDG_DATA_HOME/ecc-homunculus~/.local/share/ecc-homunculus

| 相对路径 | 用途与生命周期 | |---|---| | projects.json | 项目 ID 注册表 | | projects/<ID>/project.json | 当前项目元数据 | | projects/<ID>/config.json | 用户所有的调优配置(Observer、注入、排除项);手工编辑生效 | | projects/<ID>/observations.jsonl | 当前活动观察流 | | projects/<ID>/observations.archive/*.jsonl | Observer 成功处理过的批次 | | projects/<ID>/observations.legacy/*.jsonl | 用户确认整理后的旧 schema 原始行;永不自动删除 | | projects/<ID>/observations.cleanup/<事务ID>/ | 整理中断残留;含 manifest、backup、next,正常成功后移除 | | projects/<ID>/.observation-cleanup.lock | 整理/恢复期间的互斥锁;采集 Hook 和 Observer 看见它时跳过工作 | | projects/<ID>/.observer.lease | 防止同项目并发 Observer;运行结束后移除 | | projects/<ID>/.observer-batch-*.jsonl | 本次送入 Observer 的临时批次 | | projects/<ID>/.observer-output-*.md | Observer 临时候选输出 | | projects/<ID>/.observer-state.json | 最近成功或失败时间及错误 | | projects/<ID>/instincts/pending/*.md | Observer 生成、尚未审核的候选 | | projects/<ID>/instincts/personal/*.md | 已批准的项目经验 | | projects/<ID>/instincts/inherited/*.md | 导入到项目作用域的经验 | | projects/<ID>/instincts/rejected/*.md | 已拒绝候选 | | projects/<ID>/instincts/review-decisions.jsonl | instinct 审核日志 | | projects/<ID>/evolved/pending/*.json | 待审核 Skill/Agent 候选 | | projects/<ID>/evolved/rejected/*.json | 已拒绝演化候选 | | projects/<ID>/evolved/review-decisions.jsonl | 演化审核日志 | | instincts/personal/*.md | 全局已批准/已提升经验 | | instincts/inherited/*.md | 导入到全局作用域的经验 |

Observer 临时文件正常结束后会清理。学习数据和插件数据位于受管插件目录之外,因此普通卸载 不会删除它们。

批准 evolved 候选后,最终用户文件写到项目的 .claude/skills/<name>/SKILL.md.claude/agents/<name>.md;这些文件不归安装器管理,也不会被卸载。

Project Docs

project-docs 不注册 Hook,也不会在安装时修改文档。

| 命令 | 作用 | 参数 | |---|---|---| | /ett:init [path] | 扫描整个仓库或指定范围,经确认后创建/协调模块 AGENTS.mdDESIGN.md;包根及其 src 下的直接业务子目录(如 backend/src/movies)都会成为模块候选 | 可选仓库内文件或目录 | | /ett:doc-update [path] | 完整协调:对比 HEAD 和完整工作区,对受影响模块做语义 reconciliation(含 README 迁移、质量自评分),并重建索引;每次运行的最终 validate 全量检查索引内全部模块 | 可选仓库内文件或目录 | | /ett:doc-update-lite [path] | 轻量同步:修正受影响模块的过时描述、为新模块建 AGENTS.md/DESIGN.md 并入索引;内联执行、不委派 doc-maintainer,token 开销最小 | 可选仓库内文件或目录 |

三个入口都只由用户显式调用(模型不自动触发)。Kimi Code 侧对应入口为 /skill:ett-init/skill:ett-doc-update/skill:ett-doc-update-lite(pi 与 DeepSeek Harness 侧相同)。

/ett:init 会生成应提交的 eccToolkit/ett-docs.json 模块索引,并在根 AGENTS.md 加入受管协作规则。索引按模块记录同步基线(synced):提交代码时漏跑同步,下次 /ett:doc-update/ett:doc-update-lite 会从该基线起 diff,自动捞回遗漏的变更。 模块文档采用解耦双文档模型AGENTS.md 是给 AI 的精简文件,只记录无法从代码直接得出的 内容(硬约束、不变量、坑、决策理由),不重述可从代码/清单查到的入口与命令,也不指向 DESIGN.mdDESIGN.md 是给人看的设计地图(目标、架构流程、接口依赖、决策权衡、 不变量、失败模式、限制),帮助写提示词时定位"哪块代码做什么、该改哪个模块哪块 UI"。 模块 CLAUDE.md 恒为一行 @AGENTS.md 导入,供 Claude Code 读取同一正本。 模块 README 只有在有价值内容全部迁移且用户确认后才可能删除;根 README 永不删除。 文档同步 Skill 不执行 git addgit commit

docs.mjs index 以完整 --module 清单为前置条件(fail-closed):清单为空时拒绝写入、 不改变既有索引,除非显式 --force 声明放弃既有状态;validate 在索引为空时显式报错, 对模块文档中的过时绝对路径(如失效的 D:\... 盘符路径)报 STALE_ABSOLUTE_PATH 警告并汇总点名,使非受影响模块的历史残留也能被发现。ETT 工具自身安装物(eccToolkit/.ett.*、模块索引)不进入业务候选与未映射变更报告,但保留在 changes 中可见。

可在仓库根创建 .ettignore(gitignore 风格语法,支持 ! 取反与 ** 跨目录)声明 不想纳入模块发现的路径;/ett:init/ett:doc-update 自动读取并把命中项从模块候选、 changes 与未映射变更中排除。显式 index --module 传入被排除路径会放行并提示警告; .ettignore 的取反只在自身规则内生效,不能解除 .gitignore 或工具安装物的硬排除。

常见问题

full 无法启用

先运行 /ett:status。setup 会核对 claude plugin list --json,并探测 Python、Claude CLI 和 Bash。Windows 可用 CLAUDE_CLI_PATHELEPHANTALKER_BASH_PATH 或 Claude Code 的 CLAUDE_CODE_GIT_BASH_PATH 显式指定路径。兼容覆盖 ELEPHANTALKER_CLAUDE_PLUGIN_LIST_JSONELEPHANTALKER_FULL_DEPENDENCY_JSON 仍受支持, 但正常环境不应依赖它们。

0.18.0 升级到 0.19.0

0.19.0 是基于全量代码审查的缺陷修复版本,不改变安装布局与状态 schema。修复要点: 共享载荷按「所有引用目标 ∪ 本次安装」的组件并集重建,避免多目标顺序安装后新组件载荷文件缺失、 以及重装时误删其他目标仍在引用的载荷文件(同时同步各引用目标状态中的载荷哈希);doc-update 的变更收集不再把 ETT 自身安装物(eccToolkit/*.ett.*ett-docs.json)误归到根模块; 非交互环境未带 --yes 运行安装器时改为明确报错而非悬挂;instinct-review approve/reject 缺 id 时拒绝批量处理;以及卸载 settings Hook 解析容错、迁移空目录、索引原子写、AWS 凭据脱敏、 kimi agent frontmatter 改写、CLI --help/--version 等一批健壮性修复。已安装项目重跑一次 安装命令即可升级。

0.20.0 升级到 0.21.0

0.21.0 修复 ETT 卸载被自身数据产物硬阻断的问题:eccToolkit/ett-docs.json(由 docs.mjs index 在安装后 生成)不在安装清单中,此前卸载与重装都会把它当“额外文件/未记录文件”拒绝且无 force 绕过。现在它被归类为 ETT 数据产物:卸载与重装的额外文件检查都豁免它,卸载后保留在 eccToolkit/ 原位供项目归档,重装/升级时 自动保留并复用;其他非数据产物的额外文件仍 fail-closed 拒绝。已安装项目升级后重跑一次卸载即可正常完成, eccToolkit/ett-docs.json 会保留。

0.21.0 升级到 0.22.0

0.22.0 新增 DeepSeek Harness 目标--agent deepseek-harness):Skills 平铺到项目 .dsh/skills/ett-<name>/, 安装状态为 .dsh/.ett-install.json,无 Agent 目录概念(不安装 doc-maintainer);frontmatter 按 DSH 规范改写 (kebab-case 调用键、去掉 allowed-tools/argument-hint)。project-docs 白名单扩为四个目标。

同时调整模块文档模型(解耦双文档):模块级 AGENTS.md 只保留无法从代码直接得出的内容,不再指向 DESIGN.mdDESIGN.md 作为给人看的设计地图;根 AGENTS.md 的 ETT 文档规则块改为"涉及架构/接口/设计决策时 先读模块 AGENTS.md"(旧块含阅读规则的仍通过校验,重跑一次 root-rule apply 即换成新文案)。 新增轻量入口 /ett:doc-update-lite:内联修正受影响模块描述、为新模块建文档并入索引,token 开销最小; /ett:init/ett:doc-update/ett:doc-update-lite 均改为只由用户显式调用(模型不自动触发)。 已安装项目重跑一次安装命令即可升级。

0.19.0 升级到 0.20.0

0.20.0 调整 project-docs 写入根 AGENTS.md 的 ETT 文档规则块:移除“执行任何 git commit 前必须先 运行 doc-update 文档同步 Skill”的强制同步要求,规则块只保留阅读规则——“阅读任何模块的代码或内容前, 先阅读该模块的 AGENTS.md(任务涉及架构、接口或设计决策时再阅读 DESIGN.md)” 。validate 的根规则 校验同步收紧:规则块必须包含该阅读规则才算有效;0.18/0.19 存量旧块(含同步段与阅读段)自动通过,无需 改写;仅含旧同步要求的极旧块需重跑一次 /ett:init(或 /ett:doc-update)重新应用规则块后通过。 doc-update 技能工作流本身不变,仍可在需要时主动同步模块文档。

0.17.x 升级到 0.18.0

0.18.0 新增 pi 目标 Agent:Skills 平铺到 .pi/skills/ett-<name>/,Agent 文件写入 .pi/agents/,安装状态为 .pi/.ett-install.jsonproject-docs 白名单扩为三个目标; 根 AGENTS.md 的 ETT 规则块新增一条“阅读模块前先读该模块 AGENTS.md(必要时 DESIGN.md)” 规则,并把 pi 调用名并入提交前同步规则的文案。已有安装重跑一次安装命令即可(载荷与 规则块保留原文,新增阅读规则只对新写入的规则块生效)。pi 侧 agent 文件依赖 pi-subagents 扩展提供项目级 agent 发现;扩展缺失时 ett-init / ett-doc-update 会按 SKILL 内置指引 直接执行维护(降级路径)。

0.17.0 升级到 0.17.1

0.17.1 修复 Kimi Code 侧 Skill 显示名与内置 init 撞名的问题:安装时把 frontmatter name 改写为 ett-init / ett-doc-update(此前只改了目录名,未生效)。已安装 0.17.0 的项目重跑一次安装命令即可换上改名后的 Skill。

0.16.x 升级到 0.17.0

0.17.0 新增 Kimi Code 目标 Agent,安装状态 schema 从 v3 升到 v4。已有的 v3 受管安装 不会被自动迁移:升级工具后需先 npx @elephantalker/claude-code-toolkit@latest uninstall --yes,再重新安装。 学习数据与插件数据不受影响。

0.9.x 升级到 0.10.0

0.9 把 Skills 平铺为 .claude/skills/ett-* 普通 Skill、把 Hooks 合并进 .claude/settings.json,两者因此失去插件上下文(CLAUDE_PLUGIN_DATA),真实会话 全部 fail-closed。0.10.0 让 Skills/Hooks 重新成为 ett 插件的组件:命令从 /ett-* 恢复为 /ett:<name>,hooks 由插件根 hooks/hooks.json 注册,新安装不再写 .claude/settings.json。0.9 旧实例不会被自动迁移:升级工具后需先 npx @elephantalker/claude-code-toolkit@latest uninstall --yes,再重新安装。 学习数据与插件数据不受影响。

0.8.x 升级到 0.9.0

安装布局从单目录整包改为「壳 + 载荷」两处受管目录:技能平铺为 .claude/skills/ett-*,脚本与配置移入项目根 eccToolkit/,hooks 改经 .claude/settings.json 分发。命令前缀从 /ett:* 改为 /ett-*。 0.8 旧整包实例不会被自动迁移:升级工具后需先 npx @elephantalker/[email protected] uninstall --yes,再重新安装。 学习数据与配置不受影响。

0.6.x 升级到 0.7.0

重新运行安装命令即可完成原子升级;学习数据与配置不受影响。注意以下行为变化:

  • 8 条入口消失:/ett:continuous-learning-v2/ett:projects/ett:prune/ett:import/ett:export/ett:clear-observations/ett:source-status/ett:migrate-legacy。对应能力全部保留,调用方式见安装产物的 references/continuous-learning-v2.md
  • /ett:setup 不再接受 --model--timeout-seconds--injection-*--exclude-* 等调优参数;旧设置会在首次读取时自动迁移到 config.json
  • /ett:promote 零参数时支持多选批量提升。
  • ECC 兼容参考实现 compat/instinct-cli.py 已移除(无运行时引用;溯源见 provenance/source-lock.json)。

0.3.1 或更早版本升级

旧插件名为 elephantalker-toolkit。新版不会覆盖旧目录,先运行:

npx @elephantalker/[email protected] uninstall --yes
npx @elephantalker/claude-code-toolkit@latest

来源、许可与开发

精选 CL-v2 固定到 ECC 提交 591ab5cbd3f2f65860ea91c226e410b1502c8e2e、continuous-learning-v2 2.1.0、 ECC 包和插件 2.1.0。运行包自包含,不在用户机器下载 ECC。来源与改写记录见安装产物的 provenance/source-lock.json,ECC MIT 许可见 THIRD_PARTY_LICENSES/ECC-LICENSE

本地开发:

npm install
npm test
npm pack --dry-run

License: MIT © elephantalker