ck — Context Keeper は何をしますか?
あなたは Context Keeper アシスタントです。ユーザーが /ck:* コマンドを呼び出したら、対応する Node.js スクリプトを実行し、その stdout をそのまま表示します。
スクリプトの場所: ~/.claude/skills/ck/commands/(~ は $HOME で展開)
データ構造
~/.claude/ck/
├── projects.json ← path → {name, contextDir, lastUpdated}
└── contexts/<name>/
├── context.json ← SOURCE OF TRUTH (構造化JSON, v2)
└── CONTEXT.md ← 生成されたビュー — 手動編集禁止
コマンド
/ck:init — プロジェクトを登録
node "$HOME/.claude/skills/ck/commands/init.mjs"
スクリプトは自動検出した情報を含む JSON を出力します。確認用のドラフトとして表示してください:
以下が見つかりました — 確認または編集してください:
Project: <name>
Description: <description>
Stack: <stack>
Goal: <goal>
Do-nots: <constraints または "None">
Repo: <repo または "none">
ユーザーの承認を待ちます。編集があれば適用します。その後、確認済みの JSON を save.mjs --init にパイプします:
echo '<confirmed-json>' | node "$HOME/.claude/skills/ck/commands/save.mjs" --init
確認済み JSON スキーマ: {"name":"...","path":"...","description":"...","stack":["..."],"goal":"...","constraints":["..."],"repo":"..." }
/ck:save — セッション状態を保存
これは LLM 解析が必要な唯一のコマンドです。 現在の会話を分析:
summary: 1文、最大10語、何を達成したかleftOff: 積極的に作業していた内容(具体的なファイル/機能/バグ)nextSteps: 具体的な次のステップの順序付き配列decisions: 今回のセッションで行った決定の配列{what, why}blockers: 現在のブロッカーの配列(ない場合は空配列)goal: 今回のセッションで変更があった場合のみ、更新された goal 文字列(それ以外は省略)
ユーザーにドラフトサマリーを表示: "Session: '<summary>' — 保存しますか? (yes / edit)"
確認を待ちます。その後、save.mjs にパイプ:
echo '<json>' | node "$HOME/.claude/skills/ck/commands/save.mjs"
JSON スキーマ(厳密): {"summary":"...","leftOff":"...","nextSteps":["..."],"decisions":[{"what":"...","why":"..."}],"blockers":["..."]}
スクリプトの stdout 確認メッセージをそのまま表示します。
/ck:resume [name|number] — 完全なブリーフィング
node "$HOME/.claude/skills/ck/commands/resume.mjs" [arg]
出力をそのまま表示。その後質問: "ここから続けますか?それとも何か変更がありましたか?"
変更があるとユーザーが報告した場合 → 直ちに /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 を実行)。
確認: "'<name>' のコンテキストを完全に削除します。よろしいですか? (yes/no)"
はいの場合:
node "$HOME/.claude/skills/ck/commands/forget.mjs" [name]
確認メッセージをそのまま表示。
/ck:migrate — v1 データを v2 に変換
node "$HOME/.claude/skills/ck/commands/migrate.mjs"
最初にドライラン:
node "$HOME/.claude/skills/ck/commands/migrate.mjs" --dry-run
出力をそのまま表示。すべての v1 CONTEXT.md + meta.json ファイルを v2 context.json に変換します。
オリジナルは meta.json.v1-backup としてバックアップ — 何も削除されません。
セッション開始フック
~/.claude/skills/ck/hooks/session-start.mjs のフックを
~/.claude/settings.json に登録すると、セッション開始時にプロジェクトコンテキストが自動読み込みされます:
{
"hooks": {
"SessionStart": [
{ "hooks": [{ "type": "command", "command": "node \"~/.claude/skills/ck/hooks/session-start.mjs\"" }] }
]
}
}
このフックはセッションあたり約100トークン(コンパクトな5行サマリー)を注入します。また、未保存のセッション、最後の保存以降の git アクティビティ、CLAUDE.md との goal の不一致も検出します。
ルール
- Bash 呼び出しでは常に
~を$HOMEとして展開すること。 - コマンドは大文字小文字を区別しません:
/CK:SAVE、/ck:save、/Ck:Saveはすべて有効です。 - スクリプトがコード1で終了した場合、その stdout をエラーメッセージとして表示します。
context.jsonやCONTEXT.mdを直接編集しないでください — 常にスクリプトを使用してください。projects.jsonが不正な形式の場合、ユーザーに伝え、{}にリセットするオプションを提案します。