HANDOFF: Code/Cowork 成果物の自動スマホ公開インフラ構築¶
Chat Claude → Code Claude 作成日:2026-05-28 スコープ:恒久インフラ構築・初期セットアップ1回・以後完全自動運用 新規スキル化対象:kudo-shared-storage-protocol §workspace自動公開プロトコル(新設)
1. 背景・ゴール¶
工藤さんの要望:
Code/Cowork が作った資料・メモ・HTMLを、保存アクションなしで自然と共有され、Z Fold 7(Android)で見やすく閲覧できるインフラを、既存生態系をフル活用して永久に使える形で作る。
ゴール¶
~/working/_claude_workspace_global/ 配下の成果物(Markdown / リッチHTML)を、工藤さんのアクションゼロで、Z Fold 7 の PWA アプリから美しく閲覧できる状態にする。
設計思想¶
- 工藤さんが触れるのは両端のみ:「生成を頼む」と「アプリを開く」
- 中間(保存検知→ビルド→デプロイ)は launchd による全自動
- Markdown も リッチHTML も両対応
- 追加コスト 0円・永続的・枯れた技術
2. アーキテクチャ¶
~/working/_claude_workspace_global/ ← ソース(Drive同期・既存集中原則)
↓ launchd が変更検知 → rsync
~/claude-workspace-site/docs/ ← MkDocsソース(新規・git管理外でOK)
↓ mkdocs build
~/claude-workspace-site/site/ ← ビルド結果
↓ wrangler pages deploy
Cloudflare Pages(Access認証付き)
↓
Z Fold 7 PWA(ホーム画面アプリ)
★重要な設計判断:_claude_workspace_global/ 自体は git 化しない。理由:Drive 同期フォルダを git 化すると .git/ が Drive 同期され競合する(kudo-ai-error-watchlist 系の既知リスク)。代わりに launchd が rsync で MkDocs プロジェクトへ内容を複製する。
3. 着手前の環境確認(kudo-cowork-code-handoff-protocol#pre-work-environment-check 準拠)¶
実行前に以下を確認・報告:
- Homebrew が入っているか(
which brew) - Python3 / pip が使えるか(
python3 --version) - fswatch が入っているか(
which fswatch/ なければbrew install fswatch) - Cloudflare アカウントを工藤さんが持っているか(持っていなければ Phase 2 で作成案内)
- Node.js / npm(wrangler 用・
node --version) ~/working/_claude_workspace_global/の現在のディレクトリ構成(master-lists/handoffs/reports/outputs/backups/等)をtree -L 2で把握
★auto mode classifier が ~/Library/LaunchAgents/ への書き込みをブロックする可能性あり(システム設定変更とみなされる場合)。ブロックされたら Phase 4 の launchd plist は工藤さんが手動 cp で配置する経路に切り替える。
4. 構築ステップ(6 Phase)¶
Phase 1:MkDocs Material プロジェクト構築¶
~/claude-workspace-site/を新規作成- MkDocs Material をインストール:
mkdocs.ymlを作成:site_name: KUDO Workspacetheme: material(features: navigation.instant, search.suggest, navigation.sections)plugins: [search, awesome-pages](awesome-pages でフォルダ構造を自動ナビ化)- PWA 対応:
theme.featuresに PWA 関連、または manifest を別途 - ダークモード対応(palette toggle)
- 日本語検索対応(
plugins.search.lang: [ja, en]) docs/ディレクトリを作成、index.mdを仮置き- 初回 rsync で workspace_global の内容を docs/ に複製: ★Markdown と HTML のみを対象(バイナリ・backups は除外推奨)
mkdocs buildでビルド成功を確認mkdocs serveでローカルhttp://127.0.0.1:8000を開き、表示確認
Phase 1 の重要ポイント:リッチHTMLの扱い¶
- MkDocs は
.mdを Material テーマで整形する - 既存の
.html(Plus-Sum マニュアル等の self-contained HTML)は、docs/ に置けばsite/にそのままコピーされ、素のHTMLとして配信される mkdocs.ymlでuse_directory_urls: true、HTMLファイルは直リンクで開ける形に- Markdown のインデックスページから各HTMLへリンクを張る仕組みを検討(awesome-pages or gen-files plugin)
Phase 2:Cloudflare Pages デプロイ¶
- Cloudflare アカウント確認(なければ工藤さんに無料アカウント作成を案内)
- wrangler CLI インストール:
wrangler login(ブラウザでCloudflare認証・工藤さん操作)- Cloudflare Pages プロジェクト作成:
★プロジェクト名は推測困難なものでも可(例:
kudo-ws-{ランダム}) - 初回デプロイ:
- 発行されたURL(例:
https://kudo-workspace.pages.dev/)を取得 - ブラウザで表示確認
Phase 3:Cloudflare Access 認証(機密保護)¶
★workspace_global にはクライアント情報が含まれる可能性があるため、URL秘匿だけでなく厳格な認証を必須とする。
- Cloudflare Zero Trust ダッシュボードで Access アプリケーションを作成
- ポリシー:工藤さんの Google アカウント(メールアドレス)のみ許可
kudo-workspace.pages.dev全体を認証保護- 認証後、工藤さんのアカウントでのみアクセス可能になることを確認
★Cloudflare Access の設定は一部ダッシュボード手動操作が必要。Code が手順を案内し、工藤さんが実行。
★加えて:真に機密な守秘契約対象クライアント情報は、念のため workspace_global ではなく別管理を推奨(個人設定 §12 準拠)。rsync の exclude パターンで特定フォルダを除外する選択肢も提示。
Phase 4:launchd 自動監視¶
- 自動同期+デプロイスクリプトを作成:
~/claude-workspace-site/auto-deploy.sh - 実行権限付与:
chmod +x auto-deploy.sh - launchd plist を作成(推奨:fswatch でファイル変更検知+デバウンス、または定期実行15分間隔)
方式A(推奨):fswatch リアルタイム監視+デバウンス
- ~/Library/LaunchAgents/com.kudo.workspace-autodeploy.plist
- fswatch が workspace_global の変更を検知 → 30秒デバウンス → auto-deploy.sh 実行
方式B(シンプル):定期実行 - 15分ごとに auto-deploy.sh を実行 - 前回ビルドとの差分がある時だけデプロイ(無駄なデプロイ回避)
★Code が方式を選択。fswatch が安定動作するなら方式A、不安定なら方式B。判断理由を報告。
4. launchctl load ~/Library/LaunchAgents/com.kudo.workspace-autodeploy.plist
5. テスト:workspace_global に新規ファイルを置き、自動デプロイされるか確認
★auto mode classifier が LaunchAgents 書き込みをブロックしたら、plist を ~/claude-workspace-site/ に出力し、工藤さんが手動 cp → launchctl load する経路に切り替え。
Phase 5:PWA + Z Fold 7 インストール手順¶
- MkDocs Material の PWA 化を確認(manifest.json + service worker)
- 必要なら
mkdocs.ymlに PWA 設定追加、or manifest を手動配置 - theme-color、app名(「KUDO Workspace」)を設定
- Z Fold 7 向けインストール手順書を作成し、
_claude_workspace_global/handoffs/に保存: - Chrome で URL を開く(Cloudflare Access 認証 → Google ログイン)
- 「︙」→「アプリをインストール」or「ホーム画面に追加」
- アイコンタップで起動確認
- Chat に手順を報告(工藤さんが実行)
Phase 6:永続化(kudo-shared-storage-protocol 追記)¶
kudo-shared-storage-protocolに §workspace自動公開プロトコル を新設:- アーキテクチャ図(本HANDOFF §2)
- launchd 自動デプロイの仕組み
- 「成果物は workspace_global に置けば自動でスマホ閲覧可能」という運用ルール
- リッチHTMLとMarkdownの両対応
- Cloudflare Access 認証の存在
- anchor_id:
workspace-auto-publishを付与 - kudo-skill-cross-reference-resolver#schema-spec の YAML frontmatter スキーマ準拠
- 個人設定 §15(集中原則)から本プロトコルを参照する形に(将来 v5.8 で)
- kudo-ai-error-watchlist に新Entry候補:
- Drive同期フォルダの git 化リスク(.git 競合)→ rsync 経由で回避した設計判断
- present_files で工藤さんに保存促進
5. 完了基準¶
- Phase 1:MkDocs Material でローカルビルド成功・Markdown/HTML両表示確認
- Phase 2:Cloudflare Pages 初回デプロイ成功・URL取得
- Phase 3:Cloudflare Access で工藤さんのみアクセス可能
- Phase 4:launchd 自動監視稼働・テストファイルで自動デプロイ確認
- Phase 5:Z Fold 7 PWA インストール手順書作成
- Phase 6:kudo-shared-storage-protocol §workspace自動公開 追記・保存
- 全Phase完了後、Chat に完了サマリー報告
6. 想定される詰まりポイント¶
| 詰まり | 対処 |
|---|---|
| Drive同期と .git 競合 | workspace_global は git 化しない・rsync 経由(本設計で回避済み) |
| LaunchAgents 書き込みブロック(classifier) | plist を出力 → 工藤さん手動配置 |
| Cloudflare アカウント未保有 | 無料アカウント作成を工藤さんに案内 |
| wrangler login のブラウザ認証 | 工藤さんが操作 |
| Cloudflare Access 設定の複雑さ | ダッシュボード手順を Code が案内・工藤さん実行 |
| リッチHTMLがMaterialテーマでラップされて崩れる | HTMLは素のまま配信(use_directory_urls 設定)・Markdownのみテーマ適用 |
| 日本語全文検索が効かない | mkdocs.yml の search.lang に ja 追加 |
| クライアント機密の公開リスク | Cloudflare Access 厳格認証 + 必要なら rsync exclude で機密フォルダ除外 |
7. 段階的実行の推奨¶
大規模なので、Phase 1-2(ローカルビルド + 初回デプロイ)をまず完成させて Chat に中間報告 → 工藤さんが表示を確認 → Phase 3-6 に進む、という段階実行を推奨。各Phase完了時に動作確認すると、詰まりを早期発見できる。
末尾署名:Chat Claude(2026-05-28)作成。工藤さん承認済み。kudo-cowork-code-handoff-protocol v1.16 / kudo-shared-storage-protocol v1.3 §5.5 集中原則 / kudo-ecosystem-cascade-protocol 準拠。工藤さんのAIワークフロー生態系の「閲覧」ピースを埋める恒久インフラ。