ck 是一个用于 Claude Code 的项目记忆 skill,可在不同会话之间保留上下文。它会注册项目,在启动时自动加载简报数据,并通过确定性的 Node.js 脚本支持 save、resume、info、list、forget 和 migrate 工作流。对于 Context Engineering 来说,ck 是一个很合适的选择。
该 skill 评分为 82/100,说明它很适合收录到目录中,尤其适合希望在 Claude Code 里为每个项目保留持久记忆的用户。仓库提供了清晰的命令触发方式、确定性的脚本执行,以及足够明确的命令级行为,相比通用提示词能减少猜测;但安装和配置的前置假设仍然比较隐含。
- 触发性强:SKILL.md 将 `/ck:*` 命令映射到具体的 Node 脚本,并要求 agent 原样输出 stdout。
- 具备真实可执行内容:仓库里包含 init、save、resume、list、info、forget 和 migrate 的可运行命令脚本,而不只是说明文字。
- 工作流价值高:init 会自动识别项目元数据,save 会写入结构化上下文和原生 memory,让反复恢复项目状态更可靠。
- 安装/配置说明不够完整:SKILL.md 提到了 `~/.claude/skills/ck/commands/` 和数据路径,但 skill 文件里没有提供安装命令。
- 部分流程仍依赖 agent 判断,例如在 `save.mjs --init` 前的确认/编辑步骤,以及对具有破坏性的 `forget` 行为进行手动谨慎处理。
ck 技能概览
ck 的作用是什么
ck 是 Claude Code 的项目记忆技能,用来把可复用的上下文存到当前对话之外。它专为需要跨多个仓库工作的用户设计,帮助你在不反复重写背景信息的情况下保持会话连续性。它要解决的核心问题很直接:先注册一次项目,然后通过确定性的 Node.js 命令来保存、续接、查看、列出和遗忘上下文。
谁适合安装 ck 技能
ck skill 最适合用 Claude Code 持续处理仓库工作的开发者,尤其是那些项目目标、约束和决策需要跨会话保留的人。对于 ck for Context Engineering 也很合适,因为它把持久化的项目记忆和临时 prompt 历史分开了。如果你主要只做一次性 prompt,或者根本不用 Claude Code 的本地技能系统,ck 的价值就会小很多。
ck 为什么不同于普通 prompt
普通 prompt 只能把一个仓库临时总结一次。ck 则增加了持久化结构:~/.claude/ck/projects.json 里的项目注册表、每个项目的 context.json 事实来源、生成出来的 CONTEXT.md,以及一个能在会话开始时自动加载项目上下文的 hook。真正的区别在于一致性:这些命令调用的是本地脚本,所以工作流比起让助手笼统地“记住这个”更不依赖模型本身。
如何使用 ck 技能
先安装上下文,再阅读这些文件
执行 ck install 时,先使用 Claude Code skills 机制,然后优先查看 skills/ck/SKILL.md。接着阅读:
commands/init.mjscommands/save.mjscommands/resume.mjscommands/info.mjshooks/session-start.mjs
这个阅读顺序很重要。init.mjs 会展示 ck 会尝试从当前仓库推断哪些元数据,save.mjs 定义了准确的 JSON schema,而 resume.mjs / info.mjs 则会告诉你在日常使用中实际能拿回什么结果。
ck 在实际中怎么调用
ck usage 的模型是基于命令的。主要命令包括:
/ck:init:注册当前项目/ck:save:保存会话状态/ck:resume:加载完整简报/ck:info:快速查看快照/ck:list:查看所有已注册项目/ck:forget:移除某个项目/ck:migrate:转换旧版 v1 数据
一个关键实现细节是:ck 期望助手在 ~/.claude/skills/ck/commands/ 下运行 Node 脚本,并且干净地输出 stdout。对于 init,它不应该立刻保存;而是先起草检测到的项目详情,等用户确认后,再把确认过的 JSON 传给 save.mjs --init。
什么样的输入能得到更好的结果
如果你提供的是自动检测难以推断的项目事实,ck 的效果会更好。/ck:init 的高质量输入包括:
- 清晰的项目名称
- 一句话描述
- 主要技术栈
- 当前目标
- 明确的约束或“不要做什么”
- 如果有的话,仓库 URL
/ck:save 的高质量会话输入通常像这样:
summary:本次会话改了什么leftOff:精确停在哪一步nextSteps:2 到 5 个具体后续动作decisions:做了什么决定,为什么这样决定blockers:尚未解决的问题
弱输入:worked on auth.
强输入:Implemented refresh token rotation, left off at failing integration tests in apps/api/tests/auth.spec.ts, next step is fixing cookie domain handling, decision was to keep server-side revocation for now because mobile clients are not ready.
真实项目里的推荐工作流
一个实用的 ck guide 是:
- 在仓库根目录运行
/ck:init。 - 在确认前先检查并修正检测出来的草稿。
- 在完成有意义的工作后运行
/ck:save。 - 下一次会话时,用
/ck:resume获取完整上下文,或者用/ck:info快速查看。 - 在项目之间切换时使用
/ck:list。
如果你要采用 ck for Context Engineering,就把它当作你的持久化项目简报层。把短期头脑风暴留在对话里,但把稳定事实、决策和下一步动作迁移到 ck,这样后续会话就能从更干净的状态开始。
ck 技能 FAQ
ck 适合新手吗?
大体上适合,前提是你已经能熟练使用 Claude Code 并执行本地命令。这个概念本身很直接,但这个技能更偏操作而不是对话。新手可能需要仔细阅读 SKILL.md,理解确认步骤、JSON 交接,以及数据实际存放在哪里。
什么时候 ck 比普通 prompt 更好?
当同一个项目会持续几天或几周时,ck 更有优势。它不只是更聪明的 prompt 模板;它会把结构化的项目记忆保存在磁盘上,并且稳定地重新加载。如果你的工作是临时性的,或者只发生在单个会话里,普通 prompt 通常就够了,而且更快。
主要边界或风险是什么?
最大的边界是:ck 的效果完全取决于保存进去的内容。如果用户跳过 /ck:save,记忆层就会过时。另一个限制是适配范围:它是围绕 Claude Code 的本地技能和诸如 ~/.claude/ck/ 这样的文件系统约定设计的,不是通用的云端记忆服务。另外,CONTEXT.md 是生成出来的,手工编辑它不是维护真实内容的正确位置。
如何改进 ck 技能
给 ck 更好的项目注册输入
ck 最值得投入的改进点,是提升初始化质量。虽然从 package.json、README 内容或 git 元数据进行自动检测很有帮助,但通常并不完整。你应该在 /ck:init 时积极修正草稿。明确的目标和清晰的约束,远比只写一个笼统的技术栈标签,更能让后续 /ck:resume 的输出有价值。
避免最常见的失败模式
ck 的常见问题通常都可预见:
- 在错误的目录里注册
- 保存过于模糊的摘要
- 忘记更新下一步
- 把生成的 markdown 当作事实来源
- 在没有先确认项目身份的情况下删除上下文
如果输出看起来很弱,先检查底层的 context.json 是否真的包含足够细节。多数质量问题都来自保存状态太稀疏,而不是命令脚本本身。
第一次输出之后继续迭代
要改进 ck usage,不要把第一次保存的上下文当成最终版。/ck:resume 之后,问自己:如果明天完全没有额外聊天历史,我还需要什么信息?然后再保存一次,把决策、阻塞项和停止点写得更清楚。最好的 ck skill 配置,会逐渐进化成简洁但高价值的简报,而不是冗长的日记。
