project-registry は何をしますか?
EN — Claude Code スキルで、個人プロジェクトレジストリ (
~/projects/PROJECTS.json) とプロジェクトごとの AI 可読な開発ログ (CLAUDE.md) を管理します。一覧表示、作成、削除、保存、セッション再開、決定の帰属、ヘルスチェック、バージョンロールバックを一つのメニューから行えます。UI テキストは中国語が第一言語ですが、トリガーは中国語と英語の両方で動作し、すべての機能は言語に関係なく完全に機能します(AI は両方を理解します)。インストール:npx skills add SUNQSHENG/project-registryまたは/plugin marketplace add SUNQSHENG/project-registry。
概要
~/projects/PROJECTS.json に登録されたプロジェクトリストを管理し、プロジェクトの追加、削除、変更、検索、統計機能を提供します。プロジェクトは <key>/ サブディレクトリとして ~/projects/ 以下に配置され、各プロジェクトには背景と範囲を記録した README.md が含まれます。
プロジェクトを操作する際は、自動的に対応するプロジェクトディレクトリに cd します。
データソース
~/projects/
PROJECTS.json # プロジェクト登録リスト(唯一の信頼できる情報源)
<key>/ # プロジェクトディレクトリ
README.md # プロジェクトの背景と範囲の説明(人間向け)
CLAUDE.md # プロジェクト開発記録(AI 向け、会話ごとに自動読み込み)
すべてのプロジェクトは ~/projects/ ディレクトリ以下に配置する必要があります。
違い: README.md は開発者/共同作業者にプロジェクト概要を示すものです。CLAUDE.md は AI 向けで、開発プロセスにおける決定、状態、コンテキストを記録し、長期プロジェクトでの情報喪失を防ぎます。
PROJECTS.json の構造
{
"description": "プロジェクトリスト — すべてのプロジェクトはここに登録",
"updated": "2026-03-01",
"nextSeq": 3,
"projects": [
{
"seq": 1,
"key": "pet_hospital_crm_20260301",
"name": "ペット病院CRM",
"status": "完了",
"created": "2026-03-01"
}
]
}
操作エントリ
スキルに入るたびに、最初に cd ~ でユーザーのホームディレクトリに戻り、次に PROJECTS.json を読み取ってリストと簡略化されたメニューを表示します(ディレクトリレベルのチェックは行いません)。
📋 現在のプロジェクト一覧(合計 N 件)
┌─────┬──────────────────────────────┬─────────────────┬──────────────────────┬──────────┬────────────┐
│ 番号 │ key │ 名前 │ 状態 │ 作成日 │
├─────┼──────────────────────────────┼─────────────────┼──────────────────────┼──────────┼────────────┤
│ 1 │ pet_hospital_crm_20260301 │ ペット病院CRM │ ✅ 完了 │ 2026-03-01 │
│ 2 │ gym_members_app_20260315 │ ジム会員アプリ │ 🔄 進行中 │ 2026-03-15 │
└─────┴──────────────────────────────┴─────────────────┴──────────────────────┴──────────┴────────────┘
> 初期表示ではディレクトリチェックは行わず、JSON のみを読み取ります。ディレクトリ状態は MDチェック で一括チェックされます。
操作を選択してください(または直接要件を言ってください):
- プロジェクトの**番号**を入力(1-99)→ 対応するプロジェクトを開く(例:12)
- 🆕 N. 新規プロジェクト
- 🗑️ D. プロジェクト削除
- 🔍 C. MDチェック(すべてのプロジェクトを一括チェック)
> その他の要件(変更/検索/統計/レコード更新/保存/終了/**プロジェクトチェック**/**なぜXX**)は、会話で直接言ってください
> ⚠️ **保存/終了時に自動的に CLAUDE.md を更新します**(強制ルール)
⚙️ 初回設定ガイド(API Key はオプション)
スキルに初めて入る時:
- 環境変数
PR_API_BASE_URL/PR_API_KEY/PR_API_MODELが設定されているか確認します(printenv) - 未設定 → AskUserQuestion カードで質問:「API Key を設定して自動サマリー保存を有効にしますか?」
- 設定(推奨) → 3つの環境変数を設定するようガイド(README に各プロバイダーの例:DeepSeek / OpenAI / 通義 / Ollama ローカル)
- スキップ →
<スキルディレクトリ>/config.jsonに書き込む(「スキップ済み」として記録し、以降は尋ねない) - 詳細を見る → 機能比較表を表示
- 設定後すぐに有効になります(セッションの再起動は不要)
機能比較:
| 機能 | Key なし | Key あり |
|---|---|---|
| データセキュリティ(秒単位のバックアップ + セッション終了時の自動コミット) | ✅ | ✅ |
| すべてのコア機能(レジストリ/セッション復元/帰属/ロールバック/チェック) | ✅ | ✅ |
| 自動サマリー(会話を自動的に抽出 → CLAUDE.md にリアルタイム更新) | ❌ | ✅ |
「API 設定」とその都度言うことで、再設定ガイドを開始できます。
🔍 現在のプロジェクトの自動認識
スキルに入るたびに自動的に
cd ~が行われます。プロジェクトの特定が必要な操作(チェック/変更/保存/レコード更新など)は、現在のディレクトリを自動的に認識します:
1. pwd で ~/projects/<key>/ に一致するか確認
2. 一致 → そのプロジェクトを自動選択
3. 一致しない → 手動選択(番号または key で)
🧭 セッション開始フロー(コンテキスト復元)
「プロジェクトに入って作業する」タイプの操作に対してのみトリガーされます:プロジェクトを開く / チェック / 変更 / レコード更新 / 保存 / 終了。詳細表示、検索、統計などの軽い操作はトリガーされません。
プロジェクトに入り、操作を実行する前に、まずコンテキストを確認してから続行します(長期プロジェクトでの情報喪失や、中断後にどこから始めればよいか分からなくなるのを防ぐため):
- そのプロジェクトの CLAUDE.md を読み取る(存在する場合)
- 前回の進捗を要約:「現在の状態 / 最新の進捗」を参照し、必要に応じて git log の最新コミットと組み合わせる
- 「次のアクション」をリストアップ(優先順位順 1. 2. 3. …)
- ユーザーにどの項目から続けるか尋ねる(AskUserQuestion カードで次のアクションの選択肢を提示)、確認後に操作に進む
例(カードの下に注釈として表示):
📌 前回の進捗概要:プロジェクト初期化完了、レジストリ作成済み
➡️ 次のアクション(優先順位順):
1. 要件ドキュメントの完成
2. やることリストの補完
どこから続けますか?
新規プロジェクト(CLAUDE.md が作成されたばかり)の場合は、レビューをスキップして直接操作に進めます。
📂 プロジェクトを開く
- 番号または key でプロジェクトを特定 →
~/projects/<key>/ディレクトリが存在することを確認 - プロジェクトディレクトリに
cd - 「🧭 セッション開始フロー」をトリガー(前回の進捗を確認 → 続行を確認)
- ユーザーがプロジェクト内で作業を開始したら、必要に応じて操作(変更/レコード更新/保存/終了)
操作詳細
📌 対話ルール(強制):ユーザーに「はい/いいえ」または「複数から一つ選択」を尋ねる必要がある場合、AskUserQuestion ツールを使用して選択肢カードを提示する必要があります(2つ以上の選択肢ボタン)。プレーンテキストでの質問は禁止です。該当するシナリオ:grill-with-docs を導入するかどうか、ドキュメントスケルトンを作成するかどうか、プロジェクトタイプの確認、key/背景の確認(提案通りか、変更か)、削除の確認、セッション継続選択(どこから続けるか)など。
🆕 新規プロジェクト
- プロジェクト名 + 背景説明を尋ね、key を生成:
<英語略称>_<YYYYMMDD> - PROJECTS.json をバックアップ → ディレクトリを作成 → README.md + CLAUDE.md +
.gitignore(PROJECTS.json、backups/、*.bak、.memory/を含む)を書き込む - PROJECTS.json に登録(seq = nextSeq、その後 nextSeq +1)
- プロジェクトディレクトリに
cdし、git init - grill-with-docs スキルを導入するかどうかを必ず尋ねる(AskUserQuestion カード:導入 / 導入しない):
- 同意する → 3つのアクションを実行する(口頭で「導入済み」と言うだけではなく):
① CLAUDE.md の「依存関係」テーブルに記録:
| grill-with-docs | 導入 | 設計聞き出しフロー(ユーザーが手動で /grill-with-docs を呼び出す必要あり)|② 初期やることリストの先頭にリマインダーを1つ追加(「手動」とマーク、実行可能なタスクではない):- [ ] 📌 リマインダー(手動):設計/計画時に /grill-with-docs と入力して聞き出しを開始(このスキルはユーザーが手動で呼び出すことのみ可能で、AI は代わりにアクティブ化できません)③ ユーザーに呼び出し方法を明確に伝える:「初回設計/計画時は手動で /grill-with-docs と入力」 - 拒否する → 記録せず、やることリストにも追加せず、通常通り続行
- 同意する → 3つのアクションを実行する(口頭で「導入済み」と言うだけではなく):
① CLAUDE.md の「依存関係」テーブルに記録:
- コード/エンジニアリング系プロジェクト:オプションのドキュメントスケルトンを作成するか尋ねる(AskUserQuestion カード:作成 / スキップ;「📁 オプションのドキュメントスケルトン」を参照);業務/ドキュメント系プロジェクトではスキップ
CLAUDE.md の初期テンプレートは下部にあります。
🗑️ プロジェクト削除
- プロジェクトを特定 → JSON エントリ + ディレクトリのファイル一覧を表示 → 不可逆リスクを強調
- ユーザー確認後:PROJECTS.json をバックアップ → JSON エントリを削除 → プロジェクトディレクトリを削除 → 残りのプロジェクトを 1 から連続して番号を振り直す → nextSeq = max(seq) + 1
💾 プロジェクト保存
- バックアップ CLAUDE.md(
<スキルディレクトリ>/backups/、つまり~/.claude/skills/project-registry/backups/へ) - 今回の会話をレビューし、以下を CLAUDE.md に追加または更新:
- 最新の進捗と完了した項目
- 新たなアーキテクチャ決定(日常的な決定は「📜 決定記録の規律」の形式で追記、理由は省略不可)
- やることリストの更新(完了した項目は ✅ に、新しい項目は追加)
- 既知の問題の更新
- ⚠️ 「次のアクション」は優先順位順(1. 2. 3.)でリストアップする必要があり、省略不可(次回セッションはここから継続)
- コミット CLAUDE.md の変更を git に
- 次のツールの提案:プロジェクトの内容とやることリストに基づいて、使用可能なスキル(ppt-master / docx / xlsx / pdf など)を提示し、ユーザーが決定できるようにする
- 保存後は終了せず、現在のディレクトリに留まる
⚠️ CLAUDE.md の自動更新は強制ルールであり、スキップ不可です。
🚪 プロジェクト終了
保存操作と同様ですが、最後のステップで**~ に戻ります**:
- バックアップ CLAUDE.md
- 今回の会話をレビューして CLAUDE.md を更新(「次のアクション」を優先順位順に含む)
- コミット 変更を git に
- 次のツールの提案(保存フローと同じ)
- 終了後、直接
~に戻る
🔍 MDチェック(全プロジェクトの CLAUDE.md 状態を一括チェック)
登録されているすべてのプロジェクトに対して、CLAUDE.md が有効かどうかを一括チェックします(手動選択は不要):
- すべてのプロジェクトディレクトリを走査し、以下の 3 項目をチェック:
- ディレクトリが存在するか
- CLAUDE.md が存在するか
.gitが存在するか(CLAUDE.md 有効の前提:.gitと同じ階層にある必要がある)
- 集計テーブルを出力:
🔍 MD ヘルスチェック(合計 N プロジェクト)
┌─────┬─────────────────────────────┬─────────────────┬──────────┬──────────┬──────────┬──────────┐
│ 番号 │ key │ プロジェクト名 │ ディレクトリ存在 | CLAUDE.md│ .git │ 有効? │
├─────┼─────────────────────────────┼─────────────────┼──────────┼──────────┼──────────┼──────────┤
│ 1 │ pet_hospital_crm_20260301 │ ペット病院CRM │ ✅ │ ✅ │ ✅ │ ✅ │
│ 2 │ gym_members_app_20260315 │ ジム会員アプリ │ ✅ │ ✅ │ ✅ │ ✅ │
│ ... │ ... │ ... │ ... │ ... │ ... │ ... │
└─────┴─────────────────────────────┴─────────────────┴──────────┴──────────┴──────────┴──────────┘
- 「有効?」が ❌ のプロジェクトについて、問題を個別に特定:
- ディレクトリが存在しない → JSON 登録に残骸がないか確認
- CLAUDE.md がない → テンプレートで再作成
.gitがない →git initを実行
- 自動的にユーザーのホームディレクトリに
cd(特定のプロジェクトには入らない)
📁 オプションのドキュメントスケルトン(コード/エンジニアリング系プロジェクト)
コード系プロジェクトを新規作成する際に、作成するかどうかを尋ねます(業務/ドキュメント系プロジェクトではスキップ)。作成後、CLAUDE.md と役割分担します:CLAUDE.md は状態と決定を記録し、スケルトンドキュメントは設計の詳細を記録します:
<プロジェクトディレクトリ>/
├── CLAUDE.md # 開発記録(状態/決定/やること)
└── docs/
├── ARCHITECTURE.md # 全体アーキテクチャの説明(オプション)
├── adr/ # アーキテクチャ決定記録(オプション、grill-with-docs/domain-modeling の ADR 出力と連携)
└── dev/
├── README.md # 機能インデックス
└── <feature>/
├── SPEC.md # 機能仕様
└── DESIGN.md # 実装設計
軽量の原則:ユーザーが確認した場合のみ作成し、強制もデフォルトもしない。 grill-with-docs との連携:grill-with-docs(聞き出し+用語+ADR)は設計のプロセスであり、スケルトンは保存構造です——まず聞き出しを明確にし、次にスケルトンに従って保存します。役割分担:軽い決定は CLAUDE.md の「アーキテクチャ決定記録」に記録(一行形式);覆すのが難しく、真のトレードオフがある決定は
docs/adr/に保存;用語集 CONTEXT.md は domain-modeling 専用に維持され、スケルトンでは重複して作成しません。
自動 cd + CLAUDE.md 自動更新
| 操作 | cd | CLAUDE.md 自動更新 |
|---|---|---|
| 新規作成 | プロジェクトディレクトリに入る | ✅ 自動的に初期テンプレートを作成 |
| チェック/変更 | プロジェクトディレクトリに入る | ❌ 自動更新しない |
| レコード更新 | プロジェクトディレクトリに入る | ✅ 手動トリガーで更新 |
| 保存 | プロジェクトディレクトリに入る、保存後は終了せず、ディレクトリに留まる | ✅ 自動更新 |
| 終了/戻る | 最初に CLAUDE.md を更新し、次に ~ に戻る | ✅ 自動更新 |
セキュリティ機構
PROJECTS.json 書き込み操作(新規作成、変更、削除)は、事前にバックアップする必要があります:
バックアップパス:<スキルディレクトリ>/backups/(つまり ~/.claude/skills/<スキル名>/backups/)
バックアップファイル:PROJECTS.json.<YYYYMMDD_HHMMSS>.bak
CLAUDE.md 書き込み操作(レコード更新、保存時の自動更新)は、事前にバックアップする必要があります:
バックアップパス:<スキルディレクトリ>/backups/
バックアップファイル:CLAUDE.md.<YYYYMMDD_HHMMSS>.bak
バックアップディレクトリが存在しない場合は、自動的に作成します。
バックアップの自動ローテーション:
新しいバックアップを作成するたびに、ファイルタイプごとに古いバックアップをクリーンアップし、各タイプの最新 10 件 を保持します:
バックアップタイプのプレフィックス:
PROJECTS.json.*.bak # プロジェクト一覧バックアップ、10 件保持
CLAUDE.md.*.bak # 開発記録バックアップ、10 件保持
SKILL.md.*.bak # このスキル自身のバックアップ、10 件保持
クリーンアップルール:ファイル名の末尾にある YYYYMMDD_HHMMSS からタイムスタンプを抽出してソートします(注意:CLAUDE.md.<プロジェクト名>.<タイムスタンプ>.bak のような特殊な命名のバックアップの場合、タイムスタンプは末尾にあるため、ファイル名全体の文字列でソートすることはできません)、最も新しい 10 件を保持し、残りは削除します。
🔁 自動保存(フック、サイレント実行)
2層のメカニズムで、すべてバックグラウンドでサイレントに実行され、失敗時もサイレントに再試行され、~/projects/ プロジェクトディレクトリ内でのみ有効です。
層 1 機械スナップショット(依存関係ゼロ、デフォルトで有効)
| フック | アクション |
|---|---|
| Stop(各応答後) | トランスクリプトを <プロジェクト>/.memory/transcript-latest.jsonl に同期(秒単位) |
| SessionEnd(セッション終了時) | CLAUDE.md をバックアップ(10 件ローテーション)+ git コミット(変更がある場合のみコミット) |
- ⚠️ プライバシー:
.memory/には会話の原文が含まれます——gitignore で除外する必要があります(新規プロジェクトでは自動的に .gitignore に.memory/が含まれます)、決してリポジトリに入れないでください - 強制終了されたターミナルでは SessionEnd はトリガーされませんが、Stop の秒単位の同期は引き続き行われます——データは失われません
層 3 自動サマリー(オプション、API 設定後に有効)
- トリガー:スロットル制御(新しいメッセージが ≥10 件、または ≥10 分)——応答のたびに API を呼び出すわけではありません
- フロー:
.memory/の増分を読み取る →PR_API_BASE_URLを呼び出す(任意の OpenAI 互換プロバイダー)→ 進捗/決定/やること/次のアクションを抽出 → マージして CLAUDE.md を更新(決定を追加/進捗とやること/次のアクションを更新) - 設定(環境変数):
PR_API_BASE_URL/PR_API_KEY/PR_API_MODEL(設定しない場合は自動的にスキップ) - プライバシー:会話はユーザー自身が設定したエンドポイントにのみ送信されます。キーは環境変数から読み取られ、ハードコーディングされることはありません
手動保存との関係
自動サマリー = リアルタイムでの鮮度維持(増分マージ);手動保存 = 信頼性の高い整理(包括的なレビュー)——両者は互換性があり、補完的です。
📜 決定記録の規律(確認には必ず根拠がある)
すべての決定はトレース可能でなければなりません:「なぜそうしたのか」は常に確認可能であり、理由は省略できません。
軽い決定の形式
- [状態] YYYY-MM-DD — <決定>(理由:<理由>)(予想:<効果>)
- 状態マーク:
✅実行済み/🔄進行中/⛔撤回済み/⏸️保留 - 理由必須:理由なしでは記録しない
- 予想オプション:記録時に既知の予想効果があれば補足(帰属時に効果を検証するため)
記録のタイミング(階層別)
| タイプ | タイミング |
|---|---|
| 重要な決定(方向性に影響/覆すのが難しい/リソースを消費する) | 会話中に即時確認:Claude が自ら「これを決定記録に追加しますか?」と尋ねる |
| 日常的な決定 | 保存/終了時に一括レビューして補足(強制) |
重い決定 → ADR
覆すのが難しく、真のトレードオフがある決定は docs/adr/ に保存し、CLAUDE.md には一行のインデックスを残します:
- 2026-08-08 — ADR-0001 <決定タイトル>(状態:✅実行済み)
ADR 構造:# ADR-000N <タイトル> + Status / Date / Context / Decision / Consequences。
CLAUDE.md 初期テンプレート
# <プロジェクト名>
## プロジェクト目標
<背景説明の要約>
## 技術スタック
(未定 — 言語/フレームワーク/データベース/デプロイなど)
## 現在の状態
state: active
- フェーズ:要件分析 / 開発中 / 完了
- 最新の進捗:プロジェクト初期化
## アーキテクチャ決定記録
すべての重要な決定を記録、形式:
- [状態] YYYY-MM-DD — <決定>(理由:<理由>)(予想:<効果>)
(状態:✅実行済み / 🔄進行中 / ⛔撤回済み / ⏸️保留;理由は省略不可、予想はオプション)
## プロジェクト範囲と機能
(コア機能一覧、テーブル形式でも可)
## 依存関係
| 依存プロジェクト | 関係 | 説明 |
|:---|:---|:---|
| <プロジェクト名> | 依存/被依存 | <具体的な説明> |
## やること
- [ ] やること 1(実行可能な粒度に細分化)
## 既知の問題
- (なし — 発見後、影響範囲を含めて補足)
## 次のアクション
- 優先順位順にリストアップ(1. 2. 3.)、保存/終了時に強制更新
新規作成時には少なくとも以下を入力:プロジェクト目標、技術スタック、現在の状態、やることの最初の3項目。残りは開発プロセス中に徐々に充実させます。
key 命名規則
<英語/ピンイン略称>_<YYYYMMDD>
例:
ペット病院CRM → pet_hospital_crm_20260301
ジム会員アプリ → gym_members_app_20260315
- 英語優先、ピンインは代替
- すべて小文字、アンダースコアで区切る
- 末尾に日付を追加
番号管理ルール
| 操作 | ルール |
|---|---|
| 新規作成 | nextSeq を新しいプロジェクトの seq として読み取り、登録後に nextSeq +1 |
| 削除 | 削除後、残りのプロジェクトを 1 から連続して番号を振り直し、nextSeq を max(seq) + 1 に設定 |
| seq | 常に連続しており、番号が飛ぶことは決してない |
🧠 記憶管理(3層機構)
プロジェクトレベルの記憶(スキル管理)
| 記憶媒体 | 記録内容 | 管理機構 |
|---|---|---|
| CLAUDE.md | 状態 / 決定とその理由 / やること / 既知の問題 / 次のアクション | 各セッションで自動読み込み + 保存時に強制更新 + git コミット + バックアップローテーション |
| PROJECTS.json | プロジェクト登録一覧(seq/key/name/status/created) | 書き込み操作前にバックアップ |
| git 履歴 + backups/ | 過去バージョンのスナップショット | 任意の時点でトレース可能(git show / バックアップファイル) |
記憶のライフサイクル
書き込み(保存/終了時の強制更新)
→ 自動読み込み(各セッションで Claude Code が自動的に CLAUDE.md を注入)
→ バックアップ(10件ローテーション + git コミット)
→ 検索(CLAUDE.md の読み取り / 帰属調査「なぜ X」/ git 履歴のトレース)
記憶の境界
記録するもの:アーキテクチャ決定とその理由 | 規約と標準 | ドメイン用語 | やることと既知の問題 | 現在の状態と依存関係 | 次のアクション
記録しないもの:詳細なコード実装 | git でトレース可能な変更 | 一時的な議論(会話原文はアーカイブしない——「その時具体的に何を話したか」を調べるには Claude Code の組み込みセッションアーカイブ --resume を使用し、このスキルの責務外)
グローバル記憶との役割分担
- プロジェクト関連(進捗/決定/なぜそう決めたか)→ 本スキルの記憶(CLAUDE.md、プロジェクトに追従)
- ユーザー設定/プロジェクト横断的な事実(例:「PPT は優先的に ppt-master を使う」)→ Claude Code グローバル記憶(
~/.claude/.../memory/、システムが管理し、スキルは書き込まない)
CLAUDE.md のメンテナンス
CLAUDE.md は、Claude が会話ごとに自動的に読み込むプロジェクトコンテキストファイルであり、決定と進捗を記録します。
更新のタイミング(強制ルール): 新規作成時に自動生成 | 会話終了時に「レコード更新」を呼び出す | 重要な決定時に追記 | 要件変更時に同期 | ⚠️ 終了または保存時に自動的に更新を実行(必須、スキップ不可)、かつ「次のアクション」は優先順位順に記述
記録するもの: アーキテクチャ決定とその理由 | 規約と標準 | ドメイン用語 | やることと既知の問題 | 現在の状態と依存関係 | 次のアクション
記録しないもの: 詳細なコード実装 | git でトレース可能な変更 | 一時的な議論
有効条件: .git と同じ階層にある必要があり、ファイル名は CLAUDE.md(大文字)
新規プロジェクト作成時は自動的に
git initを実行します。既存のディレクトリに.gitがない場合は、理由を説明し、git initを実行するかどうかを尋ねます。
🔎 帰属調査(なぜ X)
ユーザーが「なぜ X / この決定の背景 / 当時なぜそうしたのか / 帰属 X」と言った場合にトリガーされます。
フロー:
- 特定:調査対象を確認(プロジェクト + トピック/時点)
- 証拠収集:そのプロジェクトの CLAUDE.md の「アーキテクチャ決定記録」+
docs/adr/(存在する場合)+ git log の最新コミット + 進捗/やることリストを読み取る - 帰属レポートを出力:
- 決定タイムライン:関連する決定を時系列で並べる
- 理由チェーン:各決定の理由 + 決定間の関連(どの決定がどの決定に基づいているか)
- 状態:✅実行済み / 🔄進行中 / ⛔撤回済み / ⏸️保留
- その後の影響:最新の進捗と組み合わせて、予想が達成されたかどうかを判断
- 結論:「なぜ当時そうしたのか」に答え、必要に応じて予想が検証されたかどうかを指摘
出力は会話内で行います。アーカイブが必要な場合は、リポジトリ外(~/project-audit-logs/)に保存します——チェック/帰属の内容にはプロジェクトのプライバシーが含まれるため、プロジェクトリポジトリへの書き込みは禁止です。
📋 プロジェクトチェック(自然言語トリガー、メニューには追加しない)
ユーザーが「プロジェクトをチェック / 健康診断 / audit」と言った場合にトリガーされます。メニューには新しい項目を追加しません。
全件スキャン(「すべてのプロジェクトをチェック」)
構造チェック(MDチェック C と同じ)+ 内容 5 項目:
| # | 次元 | チェックロジック |
|---|---|---|
| 1 | 状態の一貫性 | PROJECTS.json の status と CLAUDE.md の最新の進捗/やることが矛盾していないか |
| 2 | プロジェクトの停滞 | CLAUDE.md の最終更新(git log の時刻)から > 14 日経過 → 「停滞の可能性あり」 |
| 3 | やることの滞留 | 未完了のやることが 10 項目以上、または長期間進捗がない |
| 4 | 決定が実行されていない | 決定記録で ✅実行済み とマークされているが、進捗/やることリストに反映されていない |
| 5 | 次のアクションの欠落 | 「次のアクション」セクションがない(保存フローを怠った) |
異常項目には自動的に帰属の手がかりが付与されます:最近 N 件の決定をトレースし、どの決定が関連している可能性があるかを指摘します。
単一プロジェクトの深堀りチェック(「XX プロジェクトをチェック」)
内容 5 項目を、指定されたプロジェクトのみチェックします。
レポートは会話内でのみ出力されます。ディスクに保存する必要がある場合は、~/project-audit-logs/(リポジトリ外)に保存します。
↩️ バージョンロールバック
ユーザーが「ロールバック / バージョンを復元 / 戻す / 保存を元に戻す」と言った場合にトリガーされます。2つのチャネル:git 履歴(プロジェクトファイル)+ バックアップスナップショット(レジストリ/開発記録)。
共通の安全ルール(すべてのロールバックで遵守必須):
- 最初に現在のバージョンをバックアップする(ロールバック自体もロールバック可能)
- 差分の要約を表示し、AskUserQuestion カードで確認を得る(ロールバック / キャンセル)まで実行しない
- ロールバックは新しいコミットを生成し、git 履歴を書き換えない
① CLAUDE.md のロールバック(開発記録の誤った変更/削除)
- 特定:
git log --onelineで最新コミットを一覧表示(または backups/CLAUDE.md.*.bak ファイルのタイムスタンプ) - 比較:
git show <commit>:CLAUDE.mdと現在のバージョンの差分(特に:決定/やること/次のアクション) - 確認:差分の要約を表示 → カードで確認
- 実行:現在のバージョンをバックアップ →
git checkout <commit> -- CLAUDE.md→ コミット(「 にロールバック」と記録) - 報告:ロールバック内容の要約
② プロジェクトファイルのロールバック(README/docs/コード)
- 特定:
git logで対象バージョンを検索 - 比較:
git diff <commit> -- <ファイル> - 確認:差分の要約 → カードで確認
- 実行:現在のバージョンをバックアップ →
git checkout <commit> -- <ファイル>→ コミット - 報告
③ レジストリのロールバック(PROJECTS.json の誤った削除/変更)
- 特定:
backups/PROJECTS.json.<タイムスタンプ>.bak(最新 10 件、末尾のタイムスタンプでソート) - 比較:現在のバージョンとバックアップの diff(プロジェクトの増減をリストアップ)
- 確認:差分の要約 → カードで確認
- 実行:現在のバージョンをバックアップ →
cp バックアップ → PROJECTS.json→ 検証(プロジェクト数/seq の連続性) - 報告
ヒント:ロールバックは「🔎 帰属調査」と組み合わせて使用します——最初に「なぜこうなったか」を調査し、次にどのバージョンにロールバックするかを決定します。
よくある質問
- PROJECTS.json が存在しない:デフォルトテンプレートで空のリストを作成
- ディレクトリが既に存在する:既存のディレクトリを再利用し、JSON のみを登録
- 削除時にプロジェクトが見つからない:最初にリストを表示してユーザーに確認させる