context-manager について
context-manager は、プロジェクトの背景、決定事項、好みを保存・検索する外部メモリースキルです。記憶を種類、タグ、プロジェクト、時刻で整理し、課題の解決まで追跡できます。
主な機能
- 016 種類の記憶情報を保存
- 02タグ、プロジェクト、種類で検索
- 03課題と解決時刻を記録
- 04記憶に時刻情報を付与
- 05インデックスとバックアップ手順
- 06他のスキルとの記憶共有
活用シーン
- 01プロジェクトの設計判断を確認
- 02未解決の開発上の課題を追跡
- 03コーディングの好みや手順を検索
- 04セッションをまたいで背景情報を復元
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ jackspace/ claudeskillz --skill context-managerインストール後、Claude Code で/context-managerを入力して読み込まれたか確認します。
同梱ファイルSKILL.json
詳細
コンテキストマネージャー
目的
SDAM(エピソード記憶がないこと)を補う、永続的な外部メモリシステムです。以下を保存し、呼び出します。
- DECISION:アーキテクチャの選択、技術スタックの選定、設計上の決定
- BLOCKER:進行を妨げている現在の障害
- CONTEXT:プロジェクトの背景、要件、制約
- PREFERENCE:ユーザーの好み、コーディングスタイル、パターン
- PROCEDURE:手順ガイド、ワークフロー、プロセス
- NOTE:一般情報、所見、リマインダー
SDAM のユーザー向け:完全な外部メモリにより、決定やコンテキストを忘れません。 ADHD のユーザー向け:過去の選択が自動的に呼び出され、決定疲れを解消します。 時間認識障害のユーザー向け:すべてのメモリが明示的なタイムスタンプで時刻に紐付けられます。
起動トリガー
- ユーザーが「覚えておいて」「これを保存して」「忘れないで」と言う
- ユーザーが「何を決めたっけ」「思い出して」「検索して」と尋ねる
- ユーザーが「決定」「障害」「好み」に言及する
- 重要なアーキテクチャ上の決定を行う(先回りして保存)
- 障害に遭遇する(先回りして追跡)
基本的なワークフロー
1. メモリを保存する
ユーザーが「[何か]を覚えておいて」と言った場合:
ステップ 1:メモリの種類を分類する
DECISION: "remember we're using PostgreSQL"
BLOCKER: "remember I can't access the API yet"
CONTEXT: "remember this is for BOOSTBOX project"
PREFERENCE: "remember I prefer functional components"
PROCEDURE: "remember how to deploy: npm run build then rsync"
NOTE: "remember to update docs after this feature"
ステップ 2:メタデータを抽出する
- 内容:実際のメモリ
- タグ:キーワードから自動生成します(例:「PostgreSQL」→ ["database", "postgresql", "backend"])
- プロジェクト:現在のディレクトリまたは明示的な言及から推測します
- タイムスタンプ:ISO 8601 形式
ステップ 3:現在のインデックスを読み込む
# Cross-platform: Use $HOME (Linux/macOS) or %USERPROFILE% (Windows)
cat ~/.claude-memories/index.json
# Windows PowerShell alternative:
# Get-Content "$env:USERPROFILE\.claude-memories\index.json"
ステップ 4:インデックスに追加する
{
"version": "1.0.0",
"created": "2025-10-17T17:45:00Z",
"last_updated": "{current_timestamp}",
"total_memories": N + 1,
"memories_by_type": {
"DECISION": X + 1,
...
},
"memories": [
{
"id": "{uuid}",
"type": "DECISION",
"content": "Using PostgreSQL as primary database",
"timestamp": "{current_timestamp}",
"tags": ["database", "postgresql", "backend"],
"project": "boostbox",
"context": {
"file": "{current_file_if_relevant}",
"conversation_id": "{if_available}"
}
},
...existing memories
],
"tags_index": {
"database": ["{uuid1}", "{uuid2}"],
"postgresql": ["{uuid}"]
},
"project_index": {
"boostbox": ["{uuid1}", "{uuid2}"],
"toolhub": ["{uuid3}"]
}
}
ステップ 5:詳細なメモリファイルを作成する
# Save to category-specific directory
# Linux/macOS: ~/.claude-memories/decisions/{uuid}.md
# Windows: %USERPROFILE%\.claude-memories\decisions\{uuid}.md
~/.claude-memories/decisions/{uuid}.md
# DECISION: Using PostgreSQL
**Date**: 2025-10-17T17:45:00Z (2 hours ago)
**Project**: BOOSTBOX
**Tags**: database, postgresql, backend
## Decision
Using PostgreSQL as primary database instead of MongoDB.
## Rationale
{if provided by user or inferred from conversation}
## Context
{surrounding conversation context}
## Related Memories
{if any related memories found by tag/project match}
## Last Updated
2025-10-17T17:45:00Z
ステップ 6:ユーザーに確認する
✅ Remembered: Using PostgreSQL as primary database
📁 Saved to: decisions/{uuid}.md
🏷️ Tags: database, postgresql, backend
📊 Total memories: {N+1}
2. メモリを呼び出す
ユーザーが「[トピック]について何を決めたっけ」と尋ねた場合:
ステップ 1:クエリを解析する
- キーワードを抽出します:「決めた」→ DECISION タイプを検索
- トピックを抽出します:「データベース」→ タグと内容を検索
ステップ 2:インデックスを検索する
// Priority order:
1. Exact tag match in requested project
2. Exact tag match in any project
3. Partial content match in requested project
4. Partial content match in any project
// Sort by:
1. Relevance (exact match > partial)
2. Recency (newer > older)
3. Type priority (BLOCKER > DECISION > others)
ステップ 3:詳細なメモリファイルを読み込む
# For each matching UUID
cat ~/.claude-memories/decisions/{uuid}.md
# Windows PowerShell:
# Get-Content "$env:USERPROFILE\.claude-memories\decisions\{uuid}.md"
ステップ 4:検索結果を提示する
🔍 Found 3 memories about "database":
1. DECISION: Using PostgreSQL (2 days ago)
📁 Project: BOOSTBOX
💡 Using PostgreSQL as primary database instead of MongoDB
🔗 decisions/abc-123.md
2. DECISION: Database schema design (5 days ago)
📁 Project: BOOSTBOX
💡 User table with UUID primary keys
🔗 decisions/def-456.md
3. PREFERENCE: Prefer migrations over raw SQL (1 week ago)
📁 All projects
💡 Always use migration files, never direct SQL schema changes
🔗 preferences/ghi-789.md
Would you like details on any of these?
3. 障害を追跡する
障害を自動検出する:
- ユーザーが「できない」「動かない」「行き詰まっている」と言う
- すぐに修正できないエラーメッセージ
- 認証情報やアクセス権が不足している
- 外部依存関係の準備ができていない
先回りして保存する:
🚧 Detected blocker: API credentials not available
Saving as BLOCKER for tracking.
When this is resolved, say "blocker resolved: [brief description]"
障害を解決する:
User: "blocker resolved: got API credentials"
✅ Blocker resolved: API credentials not available
📝 Updated memory with resolution timestamp
⏱️ Blocked for: 2 days 4 hours
4. メモリを検索する
柔軟なクエリに対応します:
- 「メモリから auth を検索」→ 全文検索
- 「すべての障害を表示」→ タイプで絞り込み
- 「今週、何を決めたっけ」→ 時間で絞り込んだ DECISION
- 「boostbox の決定事項」→ プロジェクトとタイプで絞り込み
- 「好みを表示」→ タイプで絞り込み
検索構文:
Basic: "search [topic]"
Type filter: "search decisions about [topic]"
Project filter: "search boostbox [topic]"
Time filter: "search [topic] this week|month|today"
Combined: "search boostbox decisions about database this week"
メモリの種類の詳細
DECISION
保存するタイミング:
- 技術スタックの選択(「React を使用する」「PostgreSQL を選択した」)
- アーキテクチャ上の決定(「マイクロサービスかモノリスか」)
- デザインパターン(「リポジトリパターンを使用する」)
- ライブラリの選定(「Tailwind CSS を使用する」)
構造:
# DECISION: {title}
## What we decided
{the decision}
## Why
{rationale - infer from conversation}
## Alternatives considered
{if discussed}
## Impact
{affected areas}
BLOCKER
保存するタイミング:
- リソース(API、データベース、サーバー)にアクセスできない
- 依存関係(ライブラリ、サービス)が不足している
- 外部の障害(誰かの対応待ち)
- 技術的な問題(進行を妨げているバグ)
構造:
# BLOCKER: {title}
## Issue
{what's blocking}
## Impact
{what can't be done}
## Workarounds tried
{if any}
## Status
Active | Resolved | Bypassed
## Resolution (when resolved)
{how it was fixed}
{timestamp of resolution}
CONTEXT
保存するタイミング:
- プロジェクトの背景(「これは BOOSTBOX 用」)
- 要件(「オフラインモードに対応する必要がある」)
- 制約(「有料サービスは使用できない」)
- ビジネスルール(「ユーザーは投稿を削除できない」)
PREFERENCE
保存するタイミング:
- コーディングスタイル(「let より const を使う」)
- ファイル構成(「コンポーネントは src/components/ に配置する」)
- テスト方法(「ユーティリティは必ずユニットテストする」)
- ドキュメントのスタイル(「すべての公開関数に JSDoc を付ける」)
PROCEDURE
保存するタイミング:
- デプロイプロセス
- ビルドコマンド
- テストのワークフロー
- リリースチェックリスト
構造:
# PROCEDURE: {title}
## When to use
{triggering condition}
## Steps
1. {step 1}
2. {step 2}
3. {step 3}
## Expected outcome
{what success looks like}
## Troubleshooting
{common issues}
NOTE
保存するタイミング:
- 一般的な所見
- リマインダー
- 後で検討するアイデア
- リソースへのリンク
時刻との紐付け(時間認識障害向け)
必ず次の情報を提示します:
- 絶対タイムスタンプ:ISO 8601 形式
- 相対時間:「2 時間前」「3 日前」「先週の火曜日」
- コンテキストの目印:「認証を追加する前」「リデザインの後」
時間ユーティリティ:
function relativeTime(timestamp) {
const now = Date.now();
const then = new Date(timestamp).getTime();
const diff = now - then;
const minutes = Math.floor(diff / 60000);
const hours = Math.floor(diff / 3600000);
const days = Math.floor(diff / 86400000);
if (minutes < 60) return `${minutes} minutes ago`;
if (hours < 24) return `${hours} hours ago`;
if (days < 7) return `${days} days ago`;
if (days < 30) return `${Math.floor(days/7)} weeks ago`;
return `${Math.floor(days/30)} months ago`;
}
メモリーインデックスの構造
コアインデックスファイル
~/.claude-memories/index.json(Linux/macOS)または %USERPROFILE%\.claude-memories\index.json(Windows):
{
"version": "1.0.0",
"created": "ISO8601",
"last_updated": "ISO8601",
"total_memories": 0,
"memories_by_type": {
"DECISION": 0,
"BLOCKER": 0,
"CONTEXT": 0,
"PREFERENCE": 0,
"PROCEDURE": 0,
"NOTE": 0
},
"memories": [
{
"id": "uuid",
"type": "DECISION|BLOCKER|CONTEXT|PREFERENCE|PROCEDURE|NOTE",
"content": "brief summary",
"timestamp": "ISO8601",
"tags": ["tag1", "tag2"],
"project": "project-name",
"status": "active|resolved|archived",
"context": {
"file": "optional-file-path",
"line": "optional-line-number"
}
}
],
"tags_index": {
"tag-name": ["uuid1", "uuid2"]
},
"project_index": {
"project-name": ["uuid1", "uuid2"]
},
"session_index": {
"session-id": ["uuid1", "uuid2"]
}
}
ディレクトリ構造
~/.claude-memories/ (Linux/macOS) or %USERPROFILE%\.claude-memories\ (Windows)
├── index.json # Master index
├── decisions/ # Architecture decisions
│ ├── {uuid1}.md
│ └── {uuid2}.md
├── blockers/ # Active/resolved blockers
│ ├── {uuid3}.md
│ └── {uuid4}.md
├── context/ # Project context
│ ├── {uuid5}.md
│ └── {uuid6}.md
├── preferences/ # User preferences
│ ├── {uuid7}.md
│ └── {uuid8}.md
├── procedures/ # How-to procedures
│ ├── {uuid9}.md
│ └── {uuid10}.md
├── notes/ # General notes
│ ├── {uuid11}.md
│ └── {uuid12}.md
├── sessions/ # Session summaries
│ ├── 2025-10-17.md
│ └── 2025-10-16.md
└── backups/ # Daily backups
├── index-2025-10-17.json
└── index-2025-10-16.json
他のスキルとの連携
セッションランチャー
セッションを復元するためのメモリーを提供します:
- 最近の決定事項(過去7日間)
- 現在のブロッカー
- プロジェクトのコンテキスト
- セッションの要約
エラーデバッガー
次の内容をメモリーから検索します:
- 過去に発生した類似のエラー
- 有効だった解決策
- 既知のブロッカー
- 関連する手順
テストビルダー
次の好みを思い出します:
- テストのスタイル(ユニット/統合/E2E)
- カバレッジ要件
- テストフレームワークの選択
- モックの設定に関する好み
デプロイオーケストレーター
次の手順を読み込みます:
- デプロイのワークフロー
- 環境設定
- ロールバック手順
- チェックリスト項目
メモリーの先回りした保存
次の状況でメモリーを自動保存します:
アーキテクチャの議論中:
User: "Let's use React for the frontend"
→ Auto-save as DECISION: Using React for frontend
ブロッカーに遭遇したとき:
User: "Can't connect to the API"
→ Auto-save as BLOCKER: API connection failing
好みが確立されたとき:
User: "I prefer TypeScript over JavaScript"
→ Auto-save as PREFERENCE: Prefer TypeScript
手順を作成したとき:
User: "To deploy: run npm build then copy to server"
→ Auto-save as PROCEDURE: Deployment process
必ず確認すること:
💾 Saved as DECISION: Using React for frontend
(say "undo" within 30 seconds to cancel)
バックアップ戦略
毎日のバックアップ:
# Every 24 hours, create backup
# Linux/macOS:
cp ~/.claude-memories/index.json \
~/.claude-memories/backups/index-$(date +%Y-%m-%d).json
# Windows PowerShell:
# Copy-Item "$env:USERPROFILE\.claude-memories\index.json" `
# "$env:USERPROFILE\.claude-memories\backups\index-$(Get-Date -Format 'yyyy-MM-dd').json"
# Keep last 30 days (Linux/macOS):
find ~/.claude-memories/backups/ -name "index-*.json" -mtime +30 -delete
# Windows PowerShell:
# Get-ChildItem "$env:USERPROFILE\.claude-memories\backups\index-*.json" |
# Where-Object {$_.LastWriteTime -lt (Get-Date).AddDays(-30)} | Remove-Item
破損からの復旧:
# If index.json corrupted, restore from backup
# Linux/macOS:
cp ~/.claude-memories/backups/index-$(date -d yesterday +%Y-%m-%d).json \
~/.claude-memories/index.json
# Windows PowerShell:
# Copy-Item "$env:USERPROFILE\.claude-memories\backups\index-$(Get-Date (Get-Date).AddDays(-1) -Format 'yyyy-MM-dd').json" `
# "$env:USERPROFILE\.claude-memories\index.json"
クイックリファレンス
よく使うコマンド
| ユーザーの発言 | アクション |
|---|---|
| "PostgreSQLを使っていることを覚えておいて" | DECISIONとして保存 |
| "データベースについて何を決めたっけ" | "database"についてDECISIONを検索 |
| "すべてのブロッカーを表示して" | アクティブなBLOCKERを一覧表示 |
| "ブロッカーはある?" | ブロッカーを簡易確認 |
| "関数コンポーネントを好むことを覚えておいて" | PREFERENCEとして保存 |
| "認証についてメモリーを検索して" | 全文検索 |
| "ブロッカー解決:APIキーを取得した" | ブロッカーを解決済みとしてマーク |
ファイルパス
- インデックス:
~/.claude-memories/index.json(Linux/macOS)または%USERPROFILE%\.claude-memories\index.json(Windows) - 決定事項:
~/.claude-memories/decisions/{uuid}.mdまたは%USERPROFILE%\.claude-memories\decisions\{uuid}.md - ブロッカー:
~/.claude-memories/blockers/{uuid}.mdまたは%USERPROFILE%\.claude-memories\blockers\{uuid}.md - バックアップ:
~/.claude-memories/backups/または%USERPROFILE%\.claude-memories\backups\
メモリーのライフサイクル
- 作成:ユーザーが「覚えておいて」と言う、または自動検出される
- 保存:インデックスに追加し、詳細ファイルを作成
- 想起:キーワード/タグ/種類/プロジェクトで検索
- 更新:コンテキストが変わった場合に編集可能
- アーカイブ:古いメモリーは削除せずにアーカイブ
成功基準
✅ ユーザーが決定事項を覚えておく必要がない ✅ 「何を決めたっけ?」にいつでも答えられる ✅ ブロッカーが自動的に追跡される ✅ すべてのコンテキストに日時が記録されている ✅ メモリー検索で関連する結果が1秒未満で返される ✅ ユーザーの生物学的な記憶にまったく依存しない