Resume project(プロジェクト再開)
セッションが開かれるとき、以前のセッションから引き継ぐべき情報は複数の場所に散らばっています。このスキルはその逆の道筋を作ります:情報を収集し、利用可能な最新の情報と照合して、数行でユーザーに伝えます。ユーザーは何も覚えていなくても、今日何に取り組むかを決められます。
4つの点が動作を形作ります:
- 読み取り専用。 ファイル、ノート、データベース、メモリのいずれにも書き込みません。そのため、各ステップで許可を求める必要はありません:読み取りは何も変更しません。ユーザーのコンピュータからセッションにファイルをコピーして読むことは、読み取りに含まれます。唯一の書き込みは
git fetch --pruneで、かつreferences/claude-code.mdで許可されている場合のみです。セッションに新しいリポジトリへのアクセス権を与えることは、単なる読み取りではありません:自分で行わないでください(ステップ0のGitHubの行を参照)。他のプラグインのフックがセッション開始時に書き込みを行う場合(メモリの統合、ログの保存など)がありますが、それはこのスキルが書き込んでいるのではなく、言及する必要はありません。ただし、読み取ろうとしているソースが変更される場合は除きます。 - ファイルを読み取り、ワークフローは起動しない。 多くのスキルは、起動されるとテレメトリや状態を書き込んだり、フォルダを作成したり、独自の出力形式を要求したり、独自の質問で終了したりします。スキルがデータを保存する場所がわかっている場合は、そのファイルを直接読み取ります。他の方法がない場合にのみスキルを起動し、その場合はデータを取得し、最終的な質問と形式をスキップし、書き込みを行うステップをすべて停止します。
- プロジェクトの指示が優先される。 プロジェクトの指示、
CLAUDE.md、またはユーザーの設定に、状態の保存場所、読み取り可能なフォルダ、競合解決方法、または日々の計画方法が記載されている場合、それがこのスキルよりも優先されます。 - 質問と引き継ぎで終了する。 セッション終了スキル(例:wrap-up)は「セッションをアーカイブしてよい」と述べて終了しますが、このスキルは「今日何に取り組むか」を尋ね、その回答を次のステップに引き継いで終了します(ステップ6)。
0. インベントリ:実際に読めるもの
ソースを環境の名前から選択しないでください。同じセッションが、クラウド上、claude.aiプロジェクト内、ユーザーのコンピュータにリンクされて、同時に存在することがあります。何かを読む前に、セッションが持つツール(遅延ロードされるものも、それらを検索して)を確認し、以下の機能のうちどれが存在するかをメモしてください:
| 機能 | 見分け方 | アクセスできるソース |
|---|---|---|
| リポジトリ内のターミナル | 作業フォルダがユーザーのリポジトリの1つであるか、ユーザーのコンピュータ上にターミナル(device_bashなど)があり、そのリポジトリが接続されたフォルダにある | Gitとリモート(C)、references/claude-code.md付き |
| ターミナルなしのコンピュータファイル | コンピュータ上のファイルを一覧表示・コピーするツール。ターミナルなし | Vault(D)、セッションログ(B、セットアップが書き込む場合)、引き継ぎ(E)(それらが接続されたフォルダにある場合)、およびフォルダが接続されたリポジトリのCLAUDE.md(D)。ローカルGitは不可 |
| リポジトリ内のターミナルなしのGitHub | セッションにghがインストールされているか、セッションにリポジトリを追加するツールがある | リモート上のプルリクエスト、ブランチ、コミット(C2) |
| プロジェクトマネージャー | Notionコネクタまたは別のプロジェクトマネージャーがあり、指示またはCLAUDE.mdがどのデータベースまたはページがプロジェクトを保持しているかを示している | ステータス、次のアクション、タスク(A) |
| 以前のチャット | チャットを検索または一覧表示するツール | チャット(F)、references/claude-ai.md付き |
| Claude Codeセッション | デスクトップアプリのセッションを一覧表示または検索するツール(list_sessions、search_session_transcripts、list_eventsなど) | 以前のセッション(F2)、references/claude-code.md付き |
| 公開されたアーティファクト | 公開されたアーティファクト、ページ、ドキュメントを一覧表示するツール(Artifactとlistなど) | リポジトリ外の成果物(I) |
| メモリ | コンテキスト内のメモリ、またはメモリツール | メモリ(G) |
| claude.aiプロジェクト | コンテキスト内のプロジェクト指示またはファイル、あるいはプロジェクトツール | 指示とファイル(H) |
リファレンスは、git(references/claude-code.md)、claude.aiチャット(references/claude-ai.md)、およびフックによって書き込まれるプロジェクトごとのセッションログ(references/session-log.md)の詳細を示しています。使用可能な機能によって開かれたものだけを読み、session-log.mdはセットアップがそのようなログを書き込む場合のみ読んでください。リファレンスが何か(vault、ディスク、git)が存在しないと言い、インベントリが存在すると言う場合、インベントリが優先されます。リファレンスがない場合は、このファイルの内容に従って進めてください。
セッションに多くの遅延ロードツールがある場合、すべてをロードしてインベントリを取得しないでください:表内の単語(notion、session、transcript、chat、memory、project、repository、artifact)を検索し、使用するものだけのスキーマをロードしてください。ghはセッションツールではなくプログラムです:gh auth statusで確認してください。遅延ロードツールの名前がコンテキストにすでに表示されている場合は、そのリストから選択し、それらだけをロードして、検索は行わないでください。
このファイル内のソース文字(A~I)は、claude-code.mdのもの(A~H)とは異なります:ここでのEは引き継ぎであり、そのリファレンスでのEはCLAUDE.mdです。このファイルがclaude-code.mdのカテゴリを引用する場合、名前で引用します。文字ではなく名前で検索してください。
許可されたフォルダ。 ユーザーがセッションに接続したフォルダ、またはユーザーの指示で読み取りを許可されたフォルダ、かつセッションが実際に到達できるフォルダのみを読んでください。再開のためだけにそれらのフォルダへのアクセスを要求しないでください。到達できないものはすべて、「注意」行にまとめてください:
- 接続されたフォルダ外にある有用なソース(例:ターミナルがないセッションのホームフォルダ内の
~/.gstack) - 指示で読み取りを許可されているが接続されていないフォルダ(例:プロジェクト自身のフォルダ)。要約に表示されるプロジェクトに属するものであれば、そのプロジェクトについてわかっていることはプロジェクトマネージャーが言うことだけであることを追加してください。
1. どのプロジェクトか
- リポジトリ、フォルダ、または名前。 セッションがリポジトリ内にある場合、それがプロジェクトです。ユーザーが名前を指定した場合は、プロジェクトマネージャー(A)とvault(D)で、大文字小文字を区別せず、メモリが与えるエイリアスも試して検索してください:名前が一致しない場合があり、プロジェクトが名前変更の途中である可能性があります。
- 統括プロジェクト。 コンテキストが複数のプロジェクトを持つスペース(すべての作業を整理するclaude.aiプロジェクト、プロジェクトデータベースを持つプロジェクトマネージャー、複数のフォルダを持つvault)であり、ユーザーが1つを指定しない場合、黙って選択しないでください。最も最近のアクティビティがあるものと、指示が短期優先とマークするものを含むマルチプロジェクト要約(ステップ4)を書いてください。
- ユーザーが当然と思っていること。 開始メッセージがある状態(未完了のgit操作、ブランチ、PR、デプロイメント)を主張する場合、ソースを読んだらすぐに確認してください:クイックgitスナップショット、GitHub、またはセッションログ(ある場合)。一致しない場合は、各ソースが何を言っているかとともに、要約の前に一行で述べてください。指定されたものが別のプロジェクト(別のフォルダ、リポジトリ、ノート)に属する場合、さらに読む前にどのプロジェクトを再開するかを尋ねてください。ユーザーがいないセッションでは、作業フォルダのプロジェクトで続行し、要約の先頭にその旨を述べてください。
- 再開するものがない。 ノート、ログ、チャット、コミットがない場合:一文でその旨を述べ、ユーザーがやりたいことでステップ6に進んでください。
同じプロジェクトがソース間でどのように一致するか
プロジェクトマネージャー、vault、および(ある場合)セッションログは、それぞれ独自の方法でプロジェクトに名前を付けます。単なる名前ではなく、次の順序でキーによって一致させてください:
- パス。 セットアップがセッションログを書き込む場合、そのパスをvaultノート(D)のフロントマター内の
path:フィールドと照合します。references/session-log.mdの「パスによる一致」の説明に従います。 - プロジェクトマネージャーリンク。 ノートを指すプロジェクトマネージャーフィールド(例:Notionでは「Obsidian note」などのフィールド)を、ノートのフォルダと照合します。
- 名前。 大文字小文字を区別せず、メモリからのエイリアスも使用します。
プロジェクトマネージャーのプロジェクトがノートにリンクしていないが、ノートが存在する場合(パスまたは名前で一致する場合)、「注意」に一文で述べてください。
2. ソース(読み取り順)
最初に、各ノートの重み(実際に何が起こったか、いつ起こったか)を示すもの、次に次に何があるかを示すもの、最後に理由を示すもの。
B. セッションログ(オプション)。 セットアップが書き込む場合は、references/session-log.mdに従ってください。
C. Gitとリモート。 リポジトリ内のターミナルがある場合のみ。references/claude-code.mdの「クイックgitスナップショット」と「Gitとリモートの実際の状態」カテゴリに従ってください。
C2. ターミナルなしのGitHub。 ローカルソースではわからないこと(ブランチがプッシュされたか、プルリクエストがあるか、マージされたか)を確認するために使用します。owner/repositoryは、プロジェクトのvaultノート(url:フィールドまたはgithub.com/...行)、CLAUDE.md、またはセッションログ(ある場合)のMerge pull request #N from <owner>/...コミットから取得します。
- 最初に、セッションがすでに読み取りアクセス権を持っているかどうかを確認します:
gh api "repos/<owner>/<repo>/pulls?state=all&sort=updated&direction=desc&per_page=10"。REST API(gh api repos/...)を使用します:gh pr listはGraphQLが常に利用可能とは限らないため失敗する可能性があります。各PRにはcreated_atとmerged_atがあります:いつマージされたかは作成日ではなくmerged_atによって示されます。 - 応答がある場合は、ブランチ(
repos/<owner>/<repo>/branches)とメインブランチの最新コミット(repos/<owner>/<repo>/commits?per_page=5)も読み取ります。これにより、別のソースが名前を挙げているマージされていないブランチは、「PR #N がオープン」、「マージ済み」、または「リモートにない」になります。 - メインブランチのCIも読み取ります(
repos/<owner>/<repo>/actions/runs?branch=<main>&per_page=1)。最後の実行が失敗した場合は「保留中」に入ります。成功した場合は言及しないでください。実行がまったくない場合(リポジトリにCIがない場合)も言及しないでください。 - 応答がリポジトリがセッションで有効になっていないことを示す場合、自分で追加しないでください:リポジトリへのアクセス権を付与することは単なる読み取りではありません。「注意」に記載し、ステップ5でオプションとして提供してください(「GitHubで確認」)。ユーザーがいないセッションではスキップしてください。
A. プロジェクトマネージャー。 指示が、ステータス、優先順位、または次のアクションがプロジェクトマネージャー(Notionなど)に存在すると言う場合、それを読んでください:それは次に何があるかの情報源です。データベースアドレスは指示またはCLAUDE.mdから取得してください。すでに持っている場合は名前で検索しないでください。
- Notionの場合:データベーススキーマを取得し、リンク(
url)、名前、エリアまたはブランチ、ステータス、優先順位、重要な日付、次のアクション、ノートを含む行をクエリします。 - アーカイブ済み。 Notionがアーカイブした行と、データベースに独自のチェックボックスまたはステータス(例:「Archived」チェックボックスや「Closed」ステータス)がある場合は、それらが設定されている行も削除します。
- 編集日。 クエリは最終編集日を返しません。別のソースと照合する行のページを開き、統括プロジェクトの場合、指示が短期優先とマークするプロジェクトのページも、ログやノートがなくても開いてください。これにより、コードのないプロジェクトも「中断したところ」に入ることができます。
- 一括編集。 同じデータベース内の複数のページの編集日が数秒離れている場合、それはそれらのプロジェクトに対する作業ではなく、すべてに対して一度に行われた変更(新しいフィールド、インポート、テンプレート)です。その日付をアクティビティとして使用しないでください。別のソースが日付を与えない限り、それらのプロジェクトは日付なしのままにしてください。
- タスク。 指示がタスクデータベースを指定する場合、そのスキーマを取得し、期限切れまたは今後7日以内に期限が来る未完了のタスクをクエリします。要約に表示されるプロジェクトのものだけがカウントされます:一時停止中、クローズ中、または要約外のプロジェクトのものは、期限切れであっても保留中とは見なされません。それらは、プロジェクトの項目の下に日付とともに「保留中」に入ります。次のアクションがない優先プロジェクトの場合は、日付フィルターなしでオープンタスクもクエリします(以下を参照)。
- プロジェクトのないタスク。 それらは「保留中」に入りません。ただし、「注意」の警告と一致する場合(例:プロジェクトがノートにリンクしていない場合にノートをリンクするタスク)、そのタスクを新しい発見として提示する代わりに、その警告でタスクに名前を付けてください。
- 次のアクションがない行は保留項目ではありません:自分で作らないでください。プロジェクトが優先プロジェクトである場合、「次のアクションなし」として「保留中」に入れてください。オープンタスクがある場合(日付の有無にかかわらず)、最初のタスク(最も近い日付のもの、または最初の日付なしのもの)に名前を付けてください:「次のアクションなし;オープンタスク:<タスク>」。これはプロジェクトマネージャーからのデータであり、提案ではありません。優先度とは、指示が短期優先としてマークするものに加えて、長期優先の最初のものを意味します。指示が優先度を設定しない場合は、プロジェクトマネージャー内の最優先度です。プロジェクトマネージャーが「High」と言っても、指示が他を設定している場合は十分ではありません。
- 収まらない場合。 「保留中」は最大5項目です。含めるプロジェクトがさらに多い場合は、短期のものと、次のアクションまたは中途半端なものがあるものが最初に入ります。優先プロジェクトで「次のアクションなし」のみを追加するものは、1つの「注意」行にまとめられます:「次のアクションなし:X、Y、Z」。
- プロジェクトマネージャーのステータスが別のより新しいソースと明らかに矛盾する場合(例:プロジェクトマネージャーでは「アイデア」、vaultノートには作業が行われたとある)、両方の日付とともに「注意」に述べてください。
D. Obsidian vault。 プロジェクトノート(vaultのプロジェクトフォルダ内;指示またはCLAUDE.mdが通常説明しています。PARAスタイルのvaultでは、例えば2 Projects/<project>/)、およびそのupdated:。そのpath:フィールド(ある場合)は、一致するためのキーです(ステップ1を参照)。ヘッダーと最新のエントリを読み、ノート全体は読まないでください。読むのにスキルは必要ありません。Claude Codeでは、リファレンスがvaultスキルをいつ起動するか、いつしないかを説明しています。
- リポジトリの
CLAUDE.md。 到達可能な場合(ターミナル、またはリポジトリフォルダが接続されている)、その状態と保留中のセクション(「現在の状態」、「保留中」)がローカルで利用可能な最も信頼性の高い保留中リストです。これらのセクションのみを読んでください。ターミナルがある場合、references/claude-code.mdに従って、gitの状態とともにこのファイルを読み取ってください。CLAUDE.mdがない場合、gitの状態は常に「状態なし」を出します:それは正しいので、修正しないでください。
E. 引き継ぎ。 手動で書かれた引き継ぎノート(プロジェクトフォルダ内、またはvaultノートの引き継ぎセクション内)ですが、書き込み中の引き継ぎや、古いものより新しいものだけではありません。date:フィールドがある場合のルール:
- 日付が、プロジェクトマネージャーの最後の編集日、またはセッションログの最後のエントリより新しい場合は、要約に含めてください。
- 日付がそれらのどちらかより古い場合、または日付がない場合は、「注意」に「<日付> 以降のXからの引き継ぎ」として含めてください(例:「2024-09-03以降のNotionからの引き継ぎ」)。
F. チャット。 プロジェクトまたはリポジトリに関するチャット(references/claude-ai.mdに従って検索)。見つけた場合は、最初のものから始めて、最新の応答を読んでください。
- チャットが「継続する」と言う場合、要約に「<名前>とのチャット、<最後の日付>」を含めてください。
F2. 以前のClaude Codeセッション。 プロジェクト(リポジトリ、vaultノート、またはプロジェクトマネージャー)に関連するもののリストを取得します。
G. メモリ。 プロジェクトまたはリポジトリの名前でメモリを検索します。セッションのコンテキストにすでにメモリがある場合は、それを読み取ってください。
H. claude.aiプロジェクト。 プロジェクトの指示とファイルを読み取ってください。これらはコンテキストにすでにある場合があります(その場合は読み取ります)。そうでない場合、プロジェクトツールでリストを取得できるかどうかを確認してください。
I. 公開されたアーティファクト。 プロジェクトまたはリポジトリに関する最新の公開アーティファクト(references/claude-ai.mdに従って検索)。見つけた場合、それらを成果物として要約に含めてください。
3. 照合と解決
異なるソースが時系列を構成するために使用されます。どれが最新かを言うのではなく、それらが互いにどう関係するかを言ってください。
- 矛盾。 主なものを言い、矛盾する方を「<ソース>は<数字>と言っています。<その他>は<別の数字>と言っています」と述べてください。GitHub履歴が異なることを示しているのにセッションログが特定の日付のスナップショットを示している場合、「<日付>の時点では<状態>」と言ってください。これは矛盾ではなく、時点の違いであり、古いものはその時点では正しかったのです。
- 保留中リストを出したのは誰か。 例えば、プロジェクトマネージャーが「次のアクション: PRを提出」と言っているのに、vaultノートが「保留中: PR #42を開く」と言っている場合、「<日付>時点でのプロジェクトマネージャーによる次のアクションは「PRを提出」。vaultノートには、<日付>に開かれたPR #42が記載されています(プロジェクトマネージャーにはまだありません)。PRは両方に記載されています。git/GitHubがそれを確認しています。」と言ってください。
- どの日付が使用されるか。 最終編集日が参照されます。プロジェクトマネージャーは、数秒以内に一括編集があった場合を除き、その日付を示します(上記「一括編集」を参照)。セッションログは、ファイルが最後に書き込まれた日付です。vaultノートは
updated:フィールドです。チャットは最後のメッセージの日付です。Claude Codeセッションは、そのログの最終イベント日付です。Slackからの引き継ぎ(展開後、テスト前)は、例えばプロジェクトマネージャーにはありません。ソースの統計として、そのように表示してください。 - 「中断したところ」行を構成するもの。 これは最新のアクティビティを示すものであり、開始日ではありません。複数ある場合は、「最新:<日付>の<リポジトリ>のPR #42。その前:<日付>の<プロジェクト>のデプロイ。最初:<日付>のvaultノート。」のように、3つまで時系列でリストしてください。もしあれば、チャットも含めてください。
4. 要約
4つまでに制限し(以下参照)、マルチプロジェクトの場合はプロジェクトごとに1行で、次に「中断したところ」、各プロジェクトの「保留中」項目、そして単一プロジェクトの場合はGitの状態を表示します。
最後に質問があります。
単一プロジェクト
最初の行
- プロジェクト名、
- 形式:
<プロジェクト名>(そのまま)、 - 中断したところ、形式:
中断:<最新のイベント>(例:「中断:notion-api の PR #42(<日付>)」)。統括プロジェクト内の単一プロジェクトの場合、ここに統括プロジェクト名は含めないでください。代わりに、プロジェクト名の前に「on master」(masterが現在のブランチの場合)または「on <ブランチ名>」と付けてください。 - Gitの状態(リポジトリのターミナルがある場合のみ)。
references/claude-code.mdの「Gitとリモートの実際の状態」カテゴリに従ってください。
2行目以降
- 保留中項目。それぞれ、件名、ソース、日付(例:「次のアクション:PRを提出(<日付>時点のNotion)」、「保留中:PR #42を開く(<日付>時点のvaultノート)」)。統括プロジェクト内の単一プロジェクトの場合、プロジェクト名を繰り返さないでください。
- 期限切れまたは期限が近いタスク(プロジェクトマネージャーから)。形式:
<日付>期限:<タスク>。 - チャット(時間がある場合、または重要なデータがある場合):
<名前>とのチャット、<最終メッセージの日付>。 - 注意。不明瞭な点、矛盾、ターミナルがないこと(同じ情報を別の方法で見つけられる場合を除く)、利用不可のソース(GitHubが除外された場合:
ghレスポンス:「<リポジトリ>、https://github.com/... 、このセッションで利用可能になっていません。必要ならGitHubで確認してください。」)。
マルチプロジェクト
プロジェクトのリスト。それぞれの「中断したところ」と保留中項目への参照を含めます。短くして、要約全体を3つまたは4つの行に収めます(5つになる可能性があるものは1つの行に結合)。
統括プロジェクトに名前がない場合、行に名前を付けないでください。統括プロジェクト内の単一プロジェクトについてユーザーに尋ねる場合、選択肢を提示してください:<プロジェクト1>、<プロジェクト2>。日付が新しい順に並べてください。
各プロジェクト行には少なくとも1つの日付が必要です。プロジェクトが別のソースを持っていないが、統括プロジェクトに複数ある場合、プロジェクトマネージャーの編集日がアクティビティとみなされます。
「保留中」セクションに入るプロジェクトは最大5つです。残りは「注意」の1行:
- 「次のアクションなし:X、Y、Z」、または
- プロジェクトマネージャーからの保留中タスクがある場合、件名に言及します。
プロジェクトマネージャーとvault間の不一致。 「注意」:例えば、「Notionの<プロジェクト>は<ステータス>、vaultは<日付>に作業あり」。
「中断したところ」がないプロジェクト。 「<名前>、<日付>に最後に編集」。
5. 確認
- 複数のプロジェクト。 ユーザーに選択を求めます。
- 単一プロジェクト。 「今日何に取り組みますか?」と尋ねます。
- GitHubが利用可能でないが、ghによって検出されたリポジトリを持つプロジェクト。 オプションとして「GitHubで確認」を提供します。ユーザーが選択した場合、
gh auth statusを実行し、リポジトリのパブリックURLを提供します。
6. 引き継ぎ
- 最終質問。 ユーザーが何に取り組みたいかを確認します。
- スキル選択スキルへの引き継ぎ。 存在する場合、「次:<選択されたプロジェクト>、<タスク要約>」のようなデータを渡します。存在しない場合は、ユーザーの応答をそのまま渡します。
注意。 このスキルは、最後のアクションを確認することなくセッションを終了しないでください。