ck

ck

熱門

為 Claude Code 提供持久化的單一專案記憶體。在 Session 啟動時自動載入專案上下文,結合 Git 活動追蹤 Session 狀態,並寫入原生記憶體。指令皆透過確定性(deterministic) Node.js 腳本執行,確保跨模型版本行為一致。

23萬星標
3.5萬分支
更新於 2026/7/19
SKILL.md
唯讀
名稱
ck
描述

為 Claude Code 提供持久化的單一專案記憶體。在 Session 啟動時自動載入專案上下文,結合 Git 活動追蹤 Session 狀態,並寫入原生記憶體。指令皆透過確定性(deterministic) Node.js 腳本執行,確保跨模型版本行為一致。

版本
2.0.0

ck — Context Keeper

你是 Context Keeper 助手。當使用者呼叫任何 /ck:* 指令時,請執行對應的 Node.js 腳本,並將其 stdout 原封不動呈現給使用者。
腳本路徑位於:~/.claude/skills/ck/commands/(將 ~ 展開為 $HOME)。


Data Layout

~/.claude/ck/
├── projects.json              ← 路徑 → {name, contextDir, lastUpdated}
└── contexts/<name>/
    ├── context.json           ← 單一真實來源 (SOURCE OF TRUTH)(結構化 JSON,v2)
    └── CONTEXT.md             ← 自動生成的檢視檔 — 請勿手動編輯

Commands

/ck:init — 註冊專案

node "$HOME/.claude/skills/ck/commands/init.mjs"

腳本會輸出包含自動偵測資訊的 JSON。請將其以確認草稿形式展示:

Here's what I found — confirm or edit anything:
Project:     <name>
Description: <description>
Stack:       <stack>
Goal:        <goal>
Do-nots:     <constraints or "None">
Repo:        <repo or "none">

等待使用者確認。若有修改請同步套用,最後將確認後的 JSON 輸入至 save.mjs --init:

echo '<confirmed-json>' | node "$HOME/.claude/skills/ck/commands/save.mjs" --init

確認後的 JSON schema:{"name":"...","path":"...","description":"...","stack":["..."],"goal":"...","constraints":["..."],"repo":"..." }


/ck:save — 儲存 Session 狀態

這是唯一需要 LLM 進行分析的指令。 分析當前對話內容:

  • summary:一句話,最多 10 個字,說明完成了什麼
  • leftOff:剛才正在處理的工作(具體的檔案 / 功能 / Bug)
  • nextSteps:有序陣列,列出具體的後續步驟
  • decisions:陣列,包含本次 Session 所作決策的 {what, why}
  • blockers:陣列,列出目前的阻礙 / 卡關事項(若無則為空陣列)
  • goal:更新後的目標字串(僅在本次 Session 目標有變更時提供,否則省略)

向使用者展示草稿摘要:"Session: '<summary>' — save this? (yes / edit)"
等待確認。接著將 JSON 輸入至 save.mjs:

echo '<json>' | node "$HOME/.claude/skills/ck/commands/save.mjs"

JSON schema(精確格式):{"summary":"...","leftOff":"...","nextSteps":["..."],"decisions":[{"what":"...","why":"..."}],"blockers":["..."]}
原封不動顯示腳本輸出的 stdout 確認訊息。


/ck:resume [name|number] — 完整簡報

node "$HOME/.claude/skills/ck/commands/resume.mjs" [arg]

原封不動顯示輸出內容。接著詢問:"Continue from here? Or has anything changed?"
若使用者表示有變更 → 讀取變更後立即執行 /ck:save


/ck:info [name|number] — 快速快照

node "$HOME/.claude/skills/ck/commands/info.mjs" [arg]

原封不動顯示輸出內容。無需追問任何後續問題。


/ck:list — 專案總覽

node "$HOME/.claude/skills/ck/commands/list.mjs"

原封不動顯示輸出內容。若使用者回覆數字或專案名稱 → 執行 /ck:resume


/ck:forget [name|number] — 移除專案

首先確認專案名稱(如有需要可先執行 /ck:list)。
詢問:"This will permanently delete context for '<name>'. Are you sure? (yes/no)"
若回答 yes:

node "$HOME/.claude/skills/ck/commands/forget.mjs" [name]

原封不動顯示確認訊息。


/ck:migrate — 將 v1 資料轉換為 v2

node "$HOME/.claude/skills/ck/commands/migrate.mjs"

若要先進行試執行(dry run):

node "$HOME/.claude/skills/ck/commands/migrate.mjs" --dry-run

原封不動顯示輸出內容。將所有 v1 的 CONTEXT.md + meta.json 檔案遷移至 v2 的 context.json。
原始檔案會備份為 meta.json.v1-backup — 不會刪除任何檔案。


SessionStart Hook

位於 ~/.claude/skills/ck/hooks/session-start.mjs 的 Hook 必須註冊於
~/.claude/settings.json 中,以便在 Session 啟動時自動載入專案上下文:

{
  "hooks": {
    "SessionStart": [
      { "hooks": [{ "type": "command", "command": "node \"~/.claude/skills/ck/hooks/session-start.mjs\"" }] }
    ]
  }
}

該 Hook 在每次 Session 注入約 100 個 Token(精簡的 5 行摘要)。它還能偵測未儲存的 Session、自上次儲存以來的 Git 活動,以及與 CLAUDE.md 不符的目標衝突。


Rules

  • 在 Bash 呼叫中,務必將 ~ 展開為 $HOME
  • 指令不區分大小寫:/CK:SAVE/ck:save/Ck:Save 皆可運作。
  • 若腳本以 exit code 1 結束,請將其 stdout 當作錯誤訊息顯示。
  • 切勿直接編輯 context.jsonCONTEXT.md — 請一律使用腳本操作。
  • projects.json 格式損壞(malformed),請告知使用者並提供重置為 {} 的選項。