mcpField
C
context-mode

context-mode

github.com/mohitagw15856エージェントワークフロー1.5k39 回インストール6 日前に更新
リポジトリ

context-mode について

コンテキストの肥大化を抑え、セッションのリセット後も作業を引き継ぐ Claude Code スキルです。コマンド出力をフィルタリングしてセッションログを保ち、未完了の作業をログから再開します。

主な機能

  1. 01冗長なコマンド出力をフィルタリング
  2. 02エラー、終了コード、末尾の出力を保持
  3. 03プロジェクトのセッションログを管理
  4. 04編集、コマンド、タスク状況を記録
  5. 05リセット後にログから作業を再開
  6. 06CLAUDE.md の設定手順を提示

活用シーン

  1. 01長時間のコーディングセッションの整理
  2. 02冗長なコマンドによるコンテキスト消費の抑制
  3. 03Claude Code のリセット後にタスクを再開
  4. 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 セッションが開始したら、最初に次の操作を行います。

  1. プロジェクトのルートに session.log があるか確認します
  2. 見つかった場合は読み込み、再開することを伝えます。
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.
  1. 次の論理的な手順に進みます。「何をすればよいですか?」と尋ねず、タスクリストを確認して続行してください

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 のインストールを提案せずに黙って有効化するため、セッションをまたいで設定が保持されない
  • 再開時に進行中のタスクを続けず、ユーザーに何をするか尋ねる

トリガーフレーズの例

  • 「コンテキストモードを有効にして」
  • 「このセッションでコンテキストモードをオンにして」
  • 「長時間セッションモードを有効にして」
  • 「コンテキストがいつも失われるので、解決して」
  • 「セッションログを設定して」
  • 「リセット後に再開できるよう、実施した内容を記録して」
  • 「コンテキストを節約するため、出力フィルタリングを有効にして」
  • 「作業の続きが分からなくならないよう、自動再開を設定して」

コメント