Memory Skills
メモリとSSOT管理を担当するスキル群です。
機能詳細
実行手順
- ユーザーのリクエストを分類
- 上記の「機能詳細」から適切な参照ファイルを読む
- その内容に従って実行
Referenced Files
The following files are referenced in this skill and included for context.
references/ssot-initialization.md
---
name: init-memory-ssot
description: "プロジェクトのSSOTメモリ(decisions/patterns)と任意のsession-logを初期化する。初回セットアップ時や、.claude/memory が未整備のプロジェクトで使用します。"
allowed-tools: ["Read", "Write"]
---
# Init Memory SSOT
`.claude/memory/` 配下の **SSOT** を初期化します。
- `decisions.md`(重要な意思決定のSSOT)
- `patterns.md`(再利用できる解法のSSOT)
- `session-log.md`(セッションログ。ローカル運用推奨)
詳細方針: `docs/MEMORY_POLICY.md`
---
## 実行手順
### Step 1: 既存ファイルの確認
- `.claude/memory/decisions.md`
- `.claude/memory/patterns.md`
- `.claude/memory/session-log.md`
存在するものは**上書きしない**。
### Step 2: テンプレートから初期化(存在しない場合のみ)
テンプレート:
- `templates/memory/decisions.md.template`
- `templates/memory/patterns.md.template`
- `templates/memory/session-log.md.template`
`{{DATE}}` は当日(例: `2025-12-13`)で置換して生成する。
### Step 3: 完了報告
- 作成したファイル一覧
- Git方針(`decisions/patterns`は共有推奨、`session-log/.claude/state`はローカル推奨)
references/plans-merging.md
---
name: merge-plans
description: "Plans.md のマージ更新を行うスキル(ユーザータスクを保持)。複数のPlans.mdを統合する必要がある場合に使用します。"
allowed-tools: ["Read", "Write", "Edit"]
---
# Merge Plans Skill
既存の Plans.md を更新する際に、ユーザーのタスクデータを保持しながら
テンプレートの構造を適用するスキル。
---
## 目的
- ユーザーのタスク(🔴🟡🟢📦セクション)を保持
- テンプレートの構造・マーカー定義を更新
- 最終更新情報を更新
---
## Plans.md の構造
```markdown
# Plans.md - タスク管理
> **プロジェクト**: {{PROJECT_NAME}}
> **最終更新**: {{DATE}}
> **更新者**: Claude Code
---
## 🔴 進行中のタスク ← ユーザーデータ(保持)
## 🟡 未着手のタスク ← ユーザーデータ(保持)
## 🟢 完了タスク ← ユーザーデータ(保持)
## 📦 アーカイブ ← ユーザーデータ(保持)
## マーカー凡例 ← テンプレートから更新
## 最終更新情報 ← 日付を更新
マージアルゴリズム
Step 1: セクション分割
既存の Plans.md を以下のセクションに分割:
1. ヘッダー部分(# Plans.md ... ---)
2. 🔴 進行中のタスク(次のセクションまで)
3. 🟡 未着手のタスク(次のセクションまで)
4. 🟢 完了タスク(次のセクションまで)
5. 📦 アーカイブ(次のセクションまで)
6. マーカー凡例(次のセクションまで)
7. 最終更新情報(ファイル末尾まで)
Step 2: タスクセクションの抽出
extract_section() {
local file="$1"
local start_marker="$2"
local end_markers="$3" # パイプ区切りの終了マーカー
awk -v start="$start_marker" -v ends="$end_markers" '
BEGIN { in_section = 0; split(ends, end_arr, "|") }
$0 ~ start { in_section = 1; next }
in_section {
for (i in end_arr) {
if ($0 ~ end_arr[i]) { in_section = 0; exit }
}
if (in_section) print
}
' "$file"
}
# 各セクションを抽出
TASKS_WIP=$(extract_section "$PLANS_FILE" "## 🔴" "## 🟡|## 🟢|## 📦|## マーカー|---")
TASKS_TODO=$(extract_section "$PLANS_FILE" "## 🟡" "## 🔴|## 🟢|## 📦|## マーカー|---")
TASKS_DONE=$(extract_section "$PLANS_FILE" "## 🟢" "## 🔴|## 🟡|## 📦|## マーカー|---")
TASKS_ARCHIVE=$(extract_section "$PLANS_FILE" "## 📦" "## 🔴|## 🟡|## 🟢|## マーカー|---")
Step 3: タスクの検証
# 空でないことを確認
count_tasks() {
echo "$1" | grep -c "^\s*- \[" || echo "0"
}
WIP_COUNT=$(count_tasks "$TASKS_WIP")
TODO_COUNT=$(count_tasks "$TASKS_TODO")
DONE_COUNT=$(count_tasks "$TASKS_DONE")
ARCHIVE_COUNT=$(count_tasks "$TASKS_ARCHIVE")
echo "保持されるタスク:"
echo " 進行中: $WIP_COUNT"
echo " 未着手: $TODO_COUNT"
echo " 完了: $DONE_COUNT"
echo " アーカイブ: $ARCHIVE_COUNT"
Step 4: 新しい Plans.md の生成
# Plans.md - タスク管理
> **プロジェクト**: {{PROJECT_NAME}}
> **最終更新**: {{DATE}}
> **更新者**: Claude Code
---
## 🔴 進行中のタスク
<!-- cc:WIP のタスクをここに記載 -->
{{TASKS_WIP}}
---
## 🟡 未着手のタスク
<!-- cc:TODO, pm:依頼中(互換: cursor:依頼中) のタスクをここに記載 -->
{{TASKS_TODO}}
---
## 🟢 完了タスク
<!-- cc:完了, pm:確認済(互換: cursor:確認済) のタスクをここに記載 -->
{{TASKS_DONE}}
---
## 📦 アーカイブ
<!-- 古い完了タスクはここに移動 -->
{{TASKS_ARCHIVE}}
---
## マーカー凡例
| マーカー | 意味 |
|---------|------|
| `pm:依頼中` | PM から依頼されたタスク(互換: cursor:依頼中) |
| `cc:TODO` | Claude Code 未着手 |
| `cc:WIP` | Claude Code 作業中 |
| `cc:完了` | Claude Code 完了(確認待ち) |
| `pm:確認済` | PM 確認完了(互換: cursor:確認済) |
| `cursor:依頼中` | (互換)pm:依頼中 と同義 |
| `cursor:確認済` | (互換)pm:確認済 と同義 |
| `blocked` | ブロック中(理由を併記) |
---
## 最終更新情報
- **更新日時**: {{DATE}}
- **最終セッション担当**: Claude Code
- **ブランチ**: main
- **更新種別**: プラグインアップデート
空セクションの処理
タスクが空の場合は、デフォルトテキストを挿入:
## 🔴 進行中のタスク
<!-- cc:WIP のタスクをここに記載 -->
(現在なし)
エラー処理
Plans.md が解析できない場合
if ! validate_plans_structure "$PLANS_FILE"; then
echo "⚠️ Plans.md の構造を解析できませんでした"
echo "バックアップを保持し、新規テンプレートを使用します"
# バックアップ
cp "$PLANS_FILE" "${PLANS_FILE}.bak.$(date +%Y%m%d%H%M%S)"
# テンプレートを使用
use_template_instead=true
fi
必須セクションがない場合
不足しているセクションはテンプレートのデフォルトで補完。
出力
| 項目 | 説明 |
|---|
merge_successful | マージ成功フラグ |
tasks_wip_count | 進行中タスク数 |
tasks_todo_count | 未着手タスク数 |
tasks_done_count | 完了タスク数 |
tasks_archive_count | アーカイブタスク数 |
backup_created | バックアップ作成有無 |
使用例
# スキルの呼び出し
merge_plans \
--existing "./Plans.md" \
--template "$PLUGIN_PATH/templates/Plans.md.template" \
--output "./Plans.md" \
--project-name "my-project" \
--date "$(date +%Y-%m-%d)"
関連スキル
update-2agent-files - 更新フロー全体
generate-workflow-files - 新規生成
### references/workflow-migration.md
```markdown
---
name: migrate-workflow-files
description: "既存プロジェクトのAGENTS.md/CLAUDE.md/Plans.mdを、既存内容を精査して対話で引き継ぎ項目を確定しつつ、新フォーマットへ移行(バックアップ付き・Plansはタスク保持マージ)。"
allowed-tools: ["Read", "Write", "Edit", "Bash"]
---
# Migrate Workflow Files (Interactive Merge)
## 目的
既存プロジェクトで運用中の以下を、**既存内容を尊重しつつ新フォーマットへアップデート**します。
- `AGENTS.md`
- `CLAUDE.md`
- `Plans.md`
ポイント:
- **対話形式で引き継ぎ情報を確定**(勝手に捨てない / 勝手に上書きしない)
- 変更前に **必ずバックアップ** を残す
- `Plans.md` は `merge-plans` の方針で **タスクを保持しつつ構造を更新**
---
## 前提(重要)
このスキルは「初回適用時の安全」と「意図した動作(新フォーマット)」の両立のため、
**ユーザー合意→バックアップ→生成→差分確認**の順で進めます。
---
## 入力(このスキル内で自動検出してOK)
- `project_name`: `basename $(pwd)` で推定
- `date`: `YYYY-MM-DD`
- 既存ファイルの有無:
- `AGENTS.md`
- `CLAUDE.md`
- `Plans.md`
- 新フォーマットの参照テンプレ:
- `templates/AGENTS.md.template`
- `templates/CLAUDE.md.template`
- `templates/Plans.md.template`
---
## 実行フロー
### Step 0: 検出と合意取り(必須)
1. `Read` で既存 `AGENTS.md` / `CLAUDE.md` / `Plans.md` の存在を確認。
2. 存在する場合はユーザーへ確認:
- **移行(新フォーマットへアップデート)してよいか**
- 重要: 移行は **内容の再整理を含む**(= 多少の配置替えや言い回し変更が起こりうる)
ユーザーが NO の場合:
- このスキルは中止(何も書き換えない)
- 代わりに「`.claude/settings.json` の安全マージだけ」等の安全作業を提案
### Step 1: 既存内容の精査(要約)
各ファイルを `Read` し、以下を抽出して短く要約して提示する:
- **AGENTS.md**: 役割分担、ハンドオフ手順、禁止事項、環境/前提
- **CLAUDE.md**: 重要な制約(禁止事項/権限/ブランチ運用)、テスト手順、コミット規約、運用ルール
- **Plans.md**: タスク構造、マーカー運用、現在のWIP/依頼中タスク
### Step 2: 引き継ぎ項目の確定(対話)
要約をもとに、ユーザーに **保持/調整**したい項目を質問する(最大5〜10問で十分):
- 絶対に残すべき制約(例: 本番デプロイ禁止、特定ディレクトリ禁止、セキュリティ要件)
- 役割分担(Solo/2-agent)の前提
- ブランチ運用(main/staging 等)
- テスト/ビルドの代表コマンド
- Plans のマーカー運用(既存ルールがあれば整合)
### Step 3: バックアップ作成(必須)
バックアップはプロジェクト内の `.claude-code-harness/backups/` にまとめる(gitに入れたくない場合が多い)。
例:
- `.claude-code-harness/backups/2025-12-13/AGENTS.md`
- `.claude-code-harness/backups/2025-12-13/CLAUDE.md`
- `.claude-code-harness/backups/2025-12-13/Plans.md`
`Bash` で `mkdir -p` と `cp` を使ってよい。
### Step 4: 新フォーマットの生成(マージ)
#### 4-1. Plans.md(タスク保持マージ)
`merge-plans` の方針で実行:
- 既存の 🔴🟡🟢📦 タスクを保持
- マーカー凡例・最終更新情報はテンプレ側に更新
- 解析不能ならバックアップを残してテンプレ採用
#### 4-2. AGENTS.md / CLAUDE.md(テンプレ + 引き継ぎブロック)
テンプレで骨格を作り、Step 2 で確定した項目を **新フォーマットの適切な場所に再配置**する。
最低限の方針:
- 既存の“重要ルール”は削らず、**「プロジェクト固有ルール(移行)」**のセクションとして残す
- 役割分担/フローはテンプレの形式に合わせて書き直す(意味は維持)
### Step 5: 差分確認と完了
- `git diff`(またはファイル差分)で変更点を短く要約
- 重要ポイント(権限/禁止事項/タスク状態)が意図通りか最終確認
- 問題があれば即修正
---
## 成果物(完了条件)
- 既存内容を踏まえた **新フォーマット版**の `AGENTS.md` / `CLAUDE.md` / `Plans.md`
- `.claude-code-harness/backups/` にバックアップが残っている
- Plans のタスクは消えていない(保持)