mcpField
L
log-session

log-session

github.com/gtrabancoエージェントワークフロー2289 回インストール今日更新
リポジトリ

log-session について

log-session は、作業セッションの目的、決定事項、次の手順をプロジェクトログに記録するエージェントスキルです。Git で確認した事実と状況説明を組み合わせ、追記後にコミットする手順を定めています。

主な機能

  1. 01セッション記録の追記
  2. 02Git による事実確認
  3. 03ログ項目の生成とコミット
  4. 04作業再開のための案内
  5. 05他のエージェント向けの手順

活用シーン

  1. 01エージェントのコンテキスト消去前の記録
  2. 02中断時の決定事項と次の手順の記録
  3. 03プロジェクトログからの作業再開支援

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/gtrabanco/agentic-workflow --skill log-session

インストール後、Claude Code で/log-sessionを入力して読み込まれたか確認します。

詳細

翻訳後に原文が更新されています。最新の内容は原文をご確認ください。

セッションログ

作業セッションの 理由 と 次にすること、つまり Git の履歴だけでは記録されない背景を残します。コミットには何が変わったかが記録されますが、セッションログには何をしようとしていたか、何を決めたか、どこから再開すればよいかが記録されます。

意図的に低コストです(qwen3.6/reasoning_config: none — 無制限です。NaN クラスタモデルには トークンカウンターがない ため、このスキルのコストはクォータではなくバイト数です)。判断ではなく、構造化された要約を行います。高価なモデルを使ってはなりません。

ターンの契約 — ターンを終える前に確認

✓ The entry was APPENDED to docs/LOGS.md (file edited, not just drafted) with accurate git facts
✓ `bun scripts/session-close.mjs close` RAN and exited 0 (or 2, with the leftover paths named) — the entry is committed, not left riding along
✓ No past entry was edited
✓ Artifact language: explicit user instruction > the project's declared docs language > English. The CONVERSATION language never decides — a Spanish prompt still produces English PRs/issues/commits/SPECs unless one of the first two says otherwise
✓ The closing `→ Next:` block is printed as the ABSOLUTE last output

チェックが入っていない項目がある状態でターンを終えようとしていますか? そのターンはまだ完了していません。まず未完了の項目を終えてください(性能の低いモデルはドキュメント末尾での作業を忘れがちなため、このリストを最初に置いています)。

使用するタイミング

  • /clear の前(またはエージェントのコンテキストをリセットする同等の操作の前) — コンテキストを消去する前に、先に記録してください。
  • その日の作業を終えてエージェントを閉じる前。
  • 自然な区切りのタイミング — 途中で中断した機能や、後から何もない状態から再開したいスレッドがあるとき。
  • 覚えておく価値のある決定をいくつか行った長時間のセッションの後。

これは、template/ に含まれる軽量な自動ログ記録フックを補う、手動で詳細な 方法です(template/.claude/ を参照)。フックは終了のたびに機械的な事実を無料で記録します。このスキルは、必要に応じて内容を考えたエントリーを作成します。

ステップ 0 — プロジェクトを確認する(必ず最初に実施)

エージェントガイドの ワークフロー規約 と ドキュメントマップ に従って、セッションログの場所を特定します。既定のパスは docs/LOGS.md です。ドキュメントマップに別の場所が指定されている場合は、そちらを使用してください。ログファイルがまだ存在しない場合は、template/docs/LOGS.md の形式(短いヘッダーと、以下のエントリー形式)に従って作成し、その旨を伝えてください。

セッション開始マーカー(テンプレートの SessionStart フックが書き込む .claude/.session-*.start)がある場合は、読み込んでセッションの範囲を正確に把握してください。このファイルには、セッション開始時の HEAD の SHA と開始時刻が記録されています。

プロセス

  1. セッションの範囲を確定します。

    • マーカーがある場合、セッションの範囲は marker_sha..HEAD と、コミットされていない作業です。
    • ない場合は、このセッションで起きたことの情報源として自分の会話コンテキストを使い、直近のコミットに対する git log と、コミットされていない変更に対する git status/git diff --stat で裏付けます。
  2. 機械的な事実を集めます(git を使い、手早く確認します)。

    • ブランチ(git branch --show-current)、
    • このセッションのコミット(git log --oneline <since>..HEAD)、
    • 変更されたファイル(git diff --stat <since>..HEAD +コミットされていない変更)。
  3. 経緯を記述します — ここはあなたにしか書けない部分です。

    • 概要: このセッションで何を目指し、実際に何を達成したかを1~3文で記述します。
    • 判断: 行われた、一見して明らかではない選択と、その理由(記録に残さなければ失われる根拠)を記述します。関連するドキュメントや課題へのリンクを記載します。
    • 次のステップ: 具体的な次の手順(実行するコマンド、未完了の作業、未解決の疑問)を記述します。初めて読む人が、どこから再開すればよいか正確に分かるようにします。
    • ステータスの記述はフォージで確認します。 merged、closed、approved など、PR/課題の状態について記述する場合は、書く前に同じターン内でフォージを確認します(gh pr view <N> --json state,mergedAt)。フォージの状態と矛盾するログは誤った記録となり、次のレビューで追跡が必要になります(#157 の F14 を修正してください)。実際の状態を記述します。「PR #N はオープンで、人によるマージを待っています」。
  4. エントリーを生成します — 機械的な情報(タイムスタンプ、ブランチ、コミット数と範囲、変更されたファイル)は自動的に計算されます。

    bun scripts/session-close.mjs render --summary "<what this session did>" \
      --decisions "<key choices + why>" --next "<the concrete next step>"
    

    何も書き込みません。出力を編集ツールで docs/LOGS.md の末尾に追記します(追記のみ、時系列順)。記録する実際の内容がない場合は --decisions/--next を省略してください。スクリプトは空行を出力せず、その項目自体を省略します。ユーザー指定のメモは概要の前に追加されます。

  5. セッションを終了します — エントリーをコミットし、作業ツリーがクリーンであることを確認します。

    bun scripts/session-close.mjs close
    

    docs/LOGS.md に追記されていない場合、処理を拒否します(ログの書き換えや切り詰めはセッションエントリーではありません)。このコマンドは、そのファイル1つだけを docs(log): <the appended summary> というメッセージでコミットし、未コミットのまま残っているすべてのパスを報告します。終了コードは、クリーンなら 0、報告された残存ファイルが変更されたままなら 2、拒否された場合は 1 です。ログエントリーだけを理由に PR を作成しないでください。また、この場面で git add -A を実行しないでください。並行している会話の作業までログのコミットに含めてしまうおそれがあります。

ガードレール

  • 高コストなモデルは絶対に使わないでください。 これは要約です。qwen3.6(reasoning_config: none → 思考トークン数ゼロ)がクラスタープランでの妥当な上限であり、フックが無償で機械的な処理を行います。
  • 事実を捏造しないでください。 判断と次のステップは、もっともらしいだけの内容ではなく、実際のセッション(会話コンテキストと git)に基づくものです。実際に記録する内容がないセクションは、埋め合わせずにその行を省略してください。
  • 書き換えず、追記してください。 過去のエントリーは履歴記録です。編集したり、「整理」したりしないでください。提供済み機能の計画資料を書き換えないのと同じ理由です。
  • 追記のみ、ファイルは1つです。 セッションログを複数のファイルに分散させないでください。

移植性(Claude Code 以外のエージェント)

ワークフローが契約であり、Claude Code の機能は利便性を高めるものです。機能が使えないエージェントでは、代替手段を適用してください。その機能が可能にする手順を省略してはいけません。

  • Claude Code のフックがない場合 — テンプレートの自動ログ記録フック(SessionStart マーカー、SessionEnd エントリー)は他のエージェントでは実行されないため、マーカーファイルも自動生成されるエントリーもありません。このスキルが唯一のジャーナル記録手段です。すべてのセッションを終える前に実行し、git のみでセッションの範囲を定めてください(Process の手順 1 にあるマーカーなしの場合の経路)。
  • /clear がない場合 — トリガーと終了ブロックのどちらでも、エージェントのコンテキストリセット/新しい会話に相当するものとして読み替えてください。
  • スキルごとの model:/effort: がない場合 — 意図は変わりません。これには、利用可能な中で最も低コストのモデルを使ってください。これは要約であり、判断を行うものではありません。NaN では、クラスターモデル(qwen3.6、gemma4)にトークンカウンターがないため、reasoning_config: none を設定して、追記に思考トークンが一切かからないようにしてください。

他のスキルとの関係

  • template/ のSessionEnd フック(無料で機械的に実行され、/clear と終了時に自動実行されます)と、オプトインの SessionStart 復元フック(最後のエントリーを再注入してコンテキストを再開します)を補完します。このスキルは、詳細な手動記録を担います。
  • execute-phase の機能ごとの progress.md と併用します。これは機能内の進捗を記録します。セッションログは横断的な記録であり、機能や修正を問わず、このセッションで取り組んだ内容を記録します。
  • PR のゲートには含まれません。これは作業メモリを補助するものであり、マージ成果物ではありません。

完了条件

  • docs/LOGS.md に少なくとも Summary と Next を含む新しいエントリーが追記されていること。

  • 機械的な事実(ブランチ、コミット、ファイル)が git の内容と一致していること。

  • 終了時の → Next: ブロックが出力されていること:

    → Next: /clear (or your agent's context reset) is now safe — the session is captured
      · resume later → the command named in the entry's **Next** line
    

コメント