HANDOFF-COWORK Stage 2 Phase 1 移行¶
| 項目 | 値 |
|---|---|
| 発行日 | 2026-05-22 |
| 発行元 | Code Claude(本セッション) |
| 実行先 | Cowork セッション(WorkFlowy MCP + scheduled-tasks MCP 稼働環境) |
| 起点 ADR | ~/KUDO-Vault/memory/decisions/2026-05-22-stage-2-phase1-complete.md(完遂時に Code が配置予定) |
| 環境マトリクス検証済 | ✅ §16-3 準拠 / 必要 MCP: workflowy + scheduled-tasks(両 MCP は Cowork 専用) |
| 本 HANDOFF が Code セッション不可な理由 | Watchlist Entry #20 永続化済(指示書設計時の環境非対称性見落とし) |
§0 ファイル配置マップ(着手前に必ず実在検証)¶
同梱物(なし):本 HANDOFF.md のみ。
外部参照物:
| 参照先 | 状態 | 検証方法 |
|---|---|---|
~/KUDO-Vault/.claude/skills/kudo/kudo-workflowy-double-save/SKILL.md v3.4 |
✅ 配置済(Code commit c5d35d3) |
head -5 で version: 3.4 確認 |
~/KUDO-Vault/.claude/skills/kudo/kudo-project-state-recovery/SKILL.md v1.6 |
✅ 配置済(Code commit 350ebf0) |
head -5 で version: 1.6 確認 |
~/KUDO-Vault/.claude/skills/kudo/kudo-triple-store-write/SKILL.md v1.1 |
✅ 配置済(Code commit 700dd3c) |
head -5 で version: 1.1 確認 |
~/KUDO-Vault/logs/README.md |
✅ 配置済(Code commit be0e000) |
logs/ サブフォルダ階層含めて存在 |
~/KUDO-Vault/.claude/skills/kudo/kudo-ai-error-watchlist/SKILL.md(Entry #20) |
✅ 配置済(Code commit 0595626) |
Entry #20 が §4 末尾に存在 |
§1 環境前提¶
- 実行環境:Cowork セッション(Claude.ai / Cowork plugin or 該当 MCP セッション)
- 必要 MCP:
mcp__workflowy__*(全件・読み取り中心)mcp__scheduled-tasks__*(read + update)Read/Write/Bash(ローカル FS アクセス)git(commit + push)- Code セッションでは実行不可な理由:
- WorkFlowy MCP → auto mode classifier denial(Entry #20 検証済)
- scheduled-tasks MCP → Code から見た scope = 0(§16-3 環境マトリクス通り)
§2 Cowork 実行タスク詳細¶
Stage 2-A:WorkFlowy 過去ダイジェスト一括取込¶
目的:WorkFlowy「過去生成ログ」配下の全ダイジェストを Vault logs/YYYY/MM/ に複製。WorkFlowy 側は変更しない。
実装手順¶
-
WorkFlowy「過去生成ログ」ノードの全件取得:
全サブツリー(数百のダイジェストノード想定)を一気に取得。 -
各ダイジェストノードの抽出:
- ノード名パターン:
📝 YYYY-MM-DD #デイリーダイジェストまたは📝 YYYY-MM-DD #案件名-ダイジェスト -
子ノード:【要点】【議論トピック】【決定事項】【未決事項】【次のアクション】【詳細】の 4 項目構造
-
Vault Markdown への変換: 各ダイジェストノードに対し、以下の frontmatter + 本文を持つ Markdown を生成:
---
type: daily-digest
date: YYYY-MM-DD
project: ミツカン # ノード名から抽出
project_slug: mitsukan # kebab-case 変換
source: workflowy-import # 取込であることを明示
source_node: <workflowy-node-id> # 元 WorkFlowy ノードのID
verbatim: false # 安全側に false
---
## 要点
[WorkFlowy ノードの【要点】子ノードから]
## 議論トピック
[子ノード階層を Markdown 入れ子に変換]
## 決定事項
...
- 配置先:
~/KUDO-Vault/logs/YYYY/MM/YYYY-MM-DD-{案件名 kebab-case}.md- 同日複数案件は別ファイル(
2026-04-22-mitsukan.md/2026-04-22-snkrdunk.md) -
必要なら新規
YYYY/MM/階層を作成(mkdir -p) -
案件別 #project ノード配下のダイジェスト(カテゴリ C)も取込対象:
- 「[1日1新およびToDo]」傘下の各案件 #project ノードを
workflowy_searchで列挙 - 各 #project ノード配下のダイジェストノードも上記と同じロジックで Vault に複製
-
frontmatter に
source: workflowy-import-from-project-nodeを記録 -
取込スクリプトの永続化:
~/.claude/scripts/workflowy_to_vault_logs.pyとして保存(再実行可能)- スクリプト本体は Cowork 側で起草(変換ロジック含む)
-
主要関数:
extract_digest_nodes()/convert_to_markdown()/write_to_vault() -
取込完了レポート:
- 配置先:
~/working/_claude_workspace_global/reports/stage2a-workflowy-import-2026-05-22.md -
含める内容:
- 取込総件数(年月別の集計表)
- 案件別の取込件数(ミツカン:N 件 / SNKRDUNK:M 件 ...)
- 取込失敗・スキップ件数(例:frontmatter 抽出失敗)
- 取込スクリプトのバージョン
-
重要な制約:
- WorkFlowy 側を 変更しない(workflowy_update / workflowy_create を本タスク内で使わない)
- 既存 Vault ファイルとの衝突時:既存を保持し、
{filename}-imported.md末尾に新規ファイルを作成
commit メッセージ案:
Stage 2-B:scheduled-tasks dry-run draft 出力¶
目的:WorkFlowy 書込を含む scheduled-tasks の prompt 書き換え案を作成し、Chat 承認を受ける段階の中間成果物を生成。この時点で実機反映はしない。
実装手順¶
-
全 scheduled-tasks の取得:
各タスクのtaskId/description/cronExpression/ 現在の prompt を取得。 -
WorkFlowy 書込タスクの抽出: prompt 本文に以下のキーワードが含まれるタスクを抽出:
workflowy_create/workflowy_update/workflowy_search- 「過去生成ログ」/「[1日1新およびToDo]」
-
daily-chat-digest-2330/daily-chat-digest-0800-backup/weekly-review-sunday-2100の名称マッチ -
各タスクの prompt 書き換え案:
- 旧 prompt(WorkFlowy 書込のみ):そのまま保持
- 新規追加:Vault 書込部分の追記(dual-write)
- 具体例(daily-chat-digest-2330 の場合):
旧 prompt(抜粋):
各案件のダイジェストを「[1日1新およびToDo]」傘下の該当 #project ノード配下に書き込む。
フォーマットは kudo-workflowy-double-save §運用ルール SSOT §1.2 命名規則 準拠。
新 prompt 追加部分(dual-write):
さらに、各案件のダイジェストを Vault `~/KUDO-Vault/logs/YYYY/MM/YYYY-MM-DD-{案件名 kebab-case}.md` にも書き込む。
- frontmatter: type: daily-digest / date / project / project_slug / source: cowork-batch
- 本文:WorkFlowy と同じ 4 項目構造(要点 / 議論トピック / 決定事項 / 未決事項 / 次のアクション / 詳細)
- 詳細仕様は `~/KUDO-Vault/logs/README.md` 参照
- dual-write 期間(2026-05-22〜)中は WorkFlowy 書込も継続。Phase 2 移行時に WorkFlowy 書込を停止判定。
- dry-run draft の出力:
- 配置先:
~/working/_claude_workspace_global/handoffs/scheduled-tasks-phase1-rewrite-dry-run.md - 各タスクごとに「旧 prompt(verbatim)」「新 prompt(verbatim)」「差分サマリ」をセットで記載
-
対象タスク件数 / 書き換え行数 / dual-write 終了時の予定変更箇所 も明記
-
重要な制約:
- この時点で
mcp__scheduled-tasks__update_scheduled_taskは呼ばない(Chat 承認待ち)
commit メッセージ案:
Stage 2-C:scheduled-tasks prompt 本番反映(Chat 承認後)¶
目的:Chat 承認後、scheduled-tasks の prompt を実機反映。
実装手順¶
- Chat 承認の確認:
- Chat から「2-B 承認・本番反映へ」の明示発言を受領
-
発言がない場合、待機(自動反映禁止)
-
各タスクの prompt 更新:
対象タスク全件に対して順次実行(エラー時は即停止)。 -
更新ログの配置:
- 配置先:
~/KUDO-Vault/memory/decisions/2026-05-22-stage-2-scheduled-tasks-rewrite.md - ADR 形式(frontmatter:
type: decision/status: completed) - 含める内容:
- 反映済タスク一覧(taskId + 旧 prompt 抜粋 + 新 prompt 抜粋)
- 反映時刻
- 反映後の
nextRunAt予測 - rollback 手順(旧 prompt verbatim 保存込み)
commit メッセージ案:
Stage 2-E:Phase 1 移行完了確認¶
目的:翌朝以降、scheduled-tasks の実行結果を検証し、dual-write が機能しているか確認。
実装手順¶
-
scheduled-tasks の lastRunAt 確認:
各タスクのlastRunAtが 更新後の予測時刻と一致しているか 確認。 -
Vault logs/ への新規書込確認:
翌日の日付ファイルが存在するか確認。 -
WorkFlowy 「過去生成ログ」への並行書込確認:
workflowy_searchで同日付のダイジェストノードを検索-
両方に存在することを確認(dual-write 成功)
-
整合性検証:
- Vault 側と WorkFlowy 側の同日同案件のダイジェストが 内容的に同等 であることを確認
-
不整合があれば原因調査(Cowork バッチの prompt エラー / 部分書込 等)
-
異常検出時のアクション:
- WorkFlowy 単独書込(Vault 欠落):新 prompt の Vault 書込ロジックを再確認
- Vault 単独書込(WorkFlowy 欠落):dual-write が片方失敗→ rollback 検討
- 両方欠落:Cowork バッチ全体の失敗(
#failure-detectionプロトコル発動)
commit メッセージ案:
§3 Cowork → Code への完了報告¶
全タスク完了後、以下を Drive _claude_workspace_global/reports/ に配置:
ファイル:stage2a-c-e-cowork-complete-2026-05-22.md
含める内容:
| セクション | 内容 |
|---|---|
| Stage 2-A 取込結果 | 年月別件数表 / 案件別件数表 / 取込失敗件数 / ~/.claude/scripts/workflowy_to_vault_logs.py のバージョン |
| Stage 2-B dry-run draft | 対象タスク数 / 書き換え行数 / draft 配置確認 |
| Stage 2-B → Chat 承認 → Stage 2-C 実行 | Chat 承認発言の引用 / Stage 2-C 反映済タスク数 / ADR 配置確認 |
| Stage 2-E 翌朝検証結果 | lastRunAt 確認結果 / Vault 書込確認結果 / WorkFlowy 並行書込確認結果 / 整合性検証結果 |
| 問題があれば詳細 | 不整合発見時の原因分析・rollback 判断 |
§4 Code セッションへの引き継ぎ¶
Cowork 完遂報告を受領した Code セッション(または翌日の Code セッション)が以下を実行:
Stage 2-F:Stage 2 完遂 ADR + 個人設定 v5.3 差分提示¶
- ADR 配置:
~/KUDO-Vault/memory/decisions/2026-05-22-stage-2-phase1-complete.md- frontmatter:
title: Stage 2 完遂 — WorkFlowy → Vault Phase 1 移行完了/status: completed -
内容:Stage 2-A〜2-E の各タスク完遂サマリ + dual-write 期間運用方針 + Phase 2 移行判定基準
-
個人設定 v5.3 差分起草:
~/working/_claude_workspace_global/handoffs/personal-settings-v5.3-draft.md- 項目 4:Vault
logs/を最優先に格上げ反映 - 項目 14:主要スキル直接参照リストの version 番号最新化(v3.4 / v1.6 / v1.1)
-
冒頭ヘッダー:
[個人設定 v5.3(2026-05-22)] -
最終総括報告:
~/working/_claude_workspace_global/reports/stage2-complete-2026-05-22.md- Stage 1 + Stage 2 累計 commit 数
- Phase 1 移行で確立した新運用フロー
§5 並走 / 連動する SKILL¶
kudo-workflowy-double-save v3.4#read-priority/#3-x Phase 1 dual-write 期間中の運用kudo-project-state-recovery v1.6#read-priority(優先度 2 = Vault logs/)kudo-triple-store-write v1.1#migration-roadmap(Phase 1 進行中)kudo-cowork-code-handoff-protocol v1.13#environment-asymmetry(本 HANDOFF の環境前提根拠)kudo-ai-error-watchlist#section-4Entry #20(本 HANDOFF の存在理由)
§6 Cowork 着手前の最終チェックリスト¶
- 本 HANDOFF を read し、§0 ファイル配置マップで全外部参照物の実在を確認
- WorkFlowy MCP / scheduled-tasks MCP が稼働している環境か確認(
tool_searchで実機確認) - Stage 2-A 着手前に、
~/KUDO-Vault/logs/階層が存在することを確認(Code 配置済) - Stage 2-B の dry-run 完了時、Chat 承認発言を待ってから Stage 2-C に進む(自動反映禁止)
- 完了報告フォーマット(§3)を着手前に把握
本 HANDOFF は Stage 2 Phase 1 移行の Cowork 担当範囲を完全に規定する。Code セッションは並行して Stage 2-D(スキル改訂)+ logs/ フォルダ + 本 HANDOFF 起草を完遂済。Cowork 完遂後、Code が Stage 2-F で全体を締める。