context-mode について
コンテキストの肥大化を抑え、セッションのリセット後も作業を引き継ぐ Claude Code スキルです。コマンド出力をフィルタリングしてセッションログを保ち、未完了の作業をログから再開します。
主な機能
- 01冗長なコマンド出力をフィルタリング
- 02エラー、終了コード、末尾の出力を保持
- 03プロジェクトのセッションログを管理
- 04編集、コマンド、タスク状況を記録
- 05リセット後にログから作業を再開
- 06CLAUDE.md の設定手順を提示
活用シーン
- 01長時間のコーディングセッションの整理
- 02冗長なコマンドによるコンテキスト消費の抑制
- 03Claude Code のリセット後にタスクを再開
- 04変更内容と未完了作業の追跡
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ mohitagw15856/ pm-claude-skills --skill context-modeインストール後、Claude Code で/context-modeを入力して読み込まれたか確認します。
詳細
Context Mode スキル
Claude Code のセッションを30分以内に終了させる2つの原因、すなわち生のコマンド出力によるコンテキストの肥大化と、リセット後の記憶喪失を解消します。
Context Mode は3つのシステムを同時に実行し、セッションを継続させます。
- 出力のフィルタリング — 冗長なコマンド出力がコンテキストに入る前に取り除きます
- セッションログ — 発生したすべての内容を継続的なログに記録します
- 自動再開 — リセット時にログを読み込み、中断した箇所から正確に再開します
クレジット: Nate Herk の YouTube チャンネルで紹介されたスキルに着想を得て、このライブラリ向けに調整・拡張しました。
必要な入力
入力は必要ありません。Context Mode はコマンドで有効になります。
任意:プロジェクトのルートに session.log を置きたくない場合、ユーザーはカスタムのログファイルパスを指定できます。
Context Mode の仕組み
パート 1 — 出力のフィルタリング
問題点:Claude Code がコマンドを実行するたびに、生の出力全体がコンテキストウィンドウに入ります。1回の npm install で数百行が出力されることがあります。テストスイートを実行すれば、数千行になることもあります。30分もすると、コンテキストはノイズでいっぱいになり、Claude はリセットされます。
解決策:コマンド出力がコンテキストに入る前に、有用な要約だけにフィルタリングします。
保持するもの:
- 標準出力の最後の10行
error、warn、fail、exception、traceback、fatalを含むすべての行(大文字と小文字を区別しません)- 終了コード
- コマンドの内容と成功したかどうかを示す1行の要約
破棄するもの:
- 長い標準出力の中間部分(
[... N lines of output truncated ...]に置き換えます) - 進捗バー、ダウンロード表示、冗長なインストールログ
- 繰り返される同一の行(重複を削除します)
フィルタリングの要約形式:
COMMAND: [command run]
STATUS: [exit code — success / failed]
SUMMARY: [one sentence: what happened]
ERRORS: [any error/warn lines — or "none"]
TAIL: [last 10 lines of stdout]
パート 2 — セッションログ
Claude は [project root]/session.log に継続的なログファイルを保持します。このファイルは重要な操作のたびに書き込まれ、リセット後に再開する際の信頼できる情報源になります。
セッションログの形式:
SESSION LOG
===========
Started: [timestamp]
Branch: [current git branch]
Directory: [working directory]
FILES EDITED
────────────
[timestamp] [file path] — [one-line description of what changed]
COMMANDS RUN
────────────
[timestamp] [command] — [outcome: success / failed — brief reason]
TASKS IN PROGRESS
─────────────────
[ ] [Task description — what's been done so far and what's left]
[x] [Completed task]
LAST USER PROMPT
────────────────
[The most recent instruction from the user, verbatim]
LAST ACTION TAKEN
─────────────────
[What Claude did last, in one sentence]
ログの更新ルール:
- ファイルを編集するたびに
session.logに書き込みます - コマンドを実行するたびに
session.logに書き込みます - タスクを開始、進行、完了したときに「Tasks in Progress」を更新します
- 「Last User Prompt」と「Last Action Taken」は、必ず現在の値で上書きします。追記せず、置き換えてください
パート 3 — リセット後の再開
新しい Claude セッションが開始したら、最初に次の操作を行います。
- プロジェクトのルートに
session.logがあるか確認します - 見つかった場合は読み込み、再開することを伝えます。
Resuming session.
Branch: [branch]
Last working on: [last task in progress]
Files edited: [list from session log]
Tasks pending: [incomplete tasks]
Last prompt: "[last user prompt]"
Continuing from where we left off.
- 次の論理的な手順に進みます。「何をすればよいですか?」と尋ねず、タスクリストを確認して続行してください
session.log が存在しない場合は、新たに開始してログを初期化します。
有効化時の応答
ユーザーが Context Mode を起動したら、次のように応答します。
Context Mode active.
Session log initialised at: [absolute path to session.log]
Output filtering: enabled
Auto-resume: enabled
I'll maintain your session state across resets. Long sessions won't lose context.
その後、現在のタイムスタンプ、ブランチ、ディレクトリを使って、すぐに session.log を初期化します。
出力構造
有効化時
Context Mode active.
Session log initialised at: [path]
Output filtering: enabled
Auto-resume: enabled
I'll maintain your session state across resets. Long sessions won't lose context.
コマンド実行時(フィルタリングされた出力形式)
COMMAND: npm test
STATUS: exit 1 — failed
SUMMARY: 47 tests passed, 3 failed in auth.test.ts
ERRORS: Error: Expected 200, received 401 (line 84)
Error: Token not found in response (line 112)
TAIL:
✓ login with valid credentials (23ms)
✓ logout clears session (11ms)
✗ refresh token after expiry
...
リセット時/新しいセッション時(再開の通知)
Resuming session.
Branch: feature/auth-refresh
Last working on: Fixing token refresh logic in auth.service.ts
Files edited: src/auth/auth.service.ts, src/auth/auth.test.ts
Tasks pending: [ ] Fix failing test on line 112
[ ] Run full test suite once fix is applied
Last prompt: "The refresh token test is still failing — look at the 401 handling"
Continuing from where we left off.
CLAUDE.md へのインストール文
セッションで Context Mode を有効化した後、すべてのセッションで永続的に使えるよう、ユーザーに CLAUDE.md に追加する正確なテキストを提示します。
```
## Context Mode
Context Mode is always active in this project.
### Output Filtering
Before any command output enters context, filter it to:
- Last 10 lines of stdout
- Any lines containing: error, warn, fail, exception, traceback, fatal (case-insensitive)
- Exit code
- One-line summary of what the command did
Use this format for filtered output:
COMMAND: [command]
STATUS: [exit code — success/failed]
SUMMARY: [one sentence]
ERRORS: [error lines or "none"]
TAIL: [last 10 lines]
### Session Log
Maintain a running session log at ./session.log. Write to it after every file edit and every command run. Track: files edited, commands run, tasks in progress, last user prompt, last action taken. Format defined in Context Mode skill.
### Auto-Resume
At the start of every new session, check for ./session.log. If it exists, read it and announce the resume state. Continue from the last task in progress without asking for instructions.
```
ユーザーには次のように伝えます。「これを CLAUDE.md に追加すると、このプロジェクトでは Context Mode が永続的に有効になり、セッションを閉じて再度開いた後も有効です。」
品質チェック
- 有効化と同時に
session.logが初期化されている(後回しにされていない) - ユーザーに表示されるログパスが相対パスではなく絶対パスである
- 出力フィルタリングが次に実行するコマンドから適用されている(適用を告知するだけではない)
- フィルタリング後の出力形式に、コマンド、ステータス、概要、エラー、末尾の出力の5項目すべてが含まれている
- セッションログに、編集したファイル、実行したコマンド、進行中のタスク、最後のプロンプトの4項目すべてが記録されている
- 再開時の告知に、汎用テンプレートではなく実際のログ内容が反映されている
- 再開時に、Claude がユーザーに指示を尋ねずに作業を続ける
- 有効化後に CLAUDE.md のインストールを提案している
- ログ更新ルールが明確である:「Last User Prompt」と「Last Action Taken」は追記せず、以前の値を置き換える
アンチパターン
- フィルタリングした概要ではなく、コマンド出力をそのまま記録する(コンテキストの節約にならない)
- ログの実際の内容を無視した汎用テンプレートで再開を告知する
- 「Last User Prompt」/「Last Action Taken」に追記し、置き換えない(ログが肥大化する)
- CLAUDE.md のインストールを提案せずに黙って有効化するため、セッションをまたいで設定が保持されない
- 再開時に進行中のタスクを続けず、ユーザーに何をするか尋ねる
トリガーフレーズの例
- 「コンテキストモードを有効にして」
- 「このセッションでコンテキストモードをオンにして」
- 「長時間セッションモードを有効にして」
- 「コンテキストがいつも失われるので、解決して」
- 「セッションログを設定して」
- 「リセット後に再開できるよう、実施した内容を記録して」
- 「コンテキストを節約するため、出力フィルタリングを有効にして」
- 「作業の続きが分からなくならないよう、自動再開を設定して」