コンテンツにスキップ

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 準拠)

実行前に以下を確認・報告:

  1. Homebrew が入っているか(which brew
  2. Python3 / pip が使えるか(python3 --version
  3. fswatch が入っているか(which fswatch / なければ brew install fswatch
  4. Cloudflare アカウントを工藤さんが持っているか(持っていなければ Phase 2 で作成案内)
  5. Node.js / npm(wrangler 用・node --version
  6. ~/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 プロジェクト構築

  1. ~/claude-workspace-site/ を新規作成
  2. MkDocs Material をインストール:
    pip3 install --break-system-packages mkdocs-material mkdocs-awesome-pages-plugin
    
  3. mkdocs.yml を作成:
  4. site_name: KUDO Workspace
  5. theme: material(features: navigation.instant, search.suggest, navigation.sections)
  6. plugins: [search, awesome-pages](awesome-pages でフォルダ構造を自動ナビ化)
  7. PWA 対応:theme.features に PWA 関連、または manifest を別途
  8. ダークモード対応(palette toggle)
  9. 日本語検索対応(plugins.search.lang: [ja, en]
  10. docs/ ディレクトリを作成、index.md を仮置き
  11. 初回 rsync で workspace_global の内容を docs/ に複製:
    rsync -av --delete \
      --include='*.md' --include='*.html' --include='*/' --exclude='*' \
      ~/working/_claude_workspace_global/ ~/claude-workspace-site/docs/
    
    ★Markdown と HTML のみを対象(バイナリ・backups は除外推奨)
  12. mkdocs build でビルド成功を確認
  13. mkdocs serve でローカル http://127.0.0.1:8000 を開き、表示確認

Phase 1 の重要ポイント:リッチHTMLの扱い

  • MkDocs は .md を Material テーマで整形する
  • 既存の .html(Plus-Sum マニュアル等の self-contained HTML)は、docs/ に置けば site/ にそのままコピーされ、素のHTMLとして配信される
  • mkdocs.ymluse_directory_urls: true、HTMLファイルは直リンクで開ける形に
  • Markdown のインデックスページから各HTMLへリンクを張る仕組みを検討(awesome-pages or gen-files plugin)

Phase 2:Cloudflare Pages デプロイ

  1. Cloudflare アカウント確認(なければ工藤さんに無料アカウント作成を案内)
  2. wrangler CLI インストール:
    npm install -g wrangler
    
  3. wrangler login(ブラウザでCloudflare認証・工藤さん操作)
  4. Cloudflare Pages プロジェクト作成:
    wrangler pages project create kudo-workspace
    
    ★プロジェクト名は推測困難なものでも可(例:kudo-ws-{ランダム}
  5. 初回デプロイ:
    cd ~/claude-workspace-site && mkdocs build && wrangler pages deploy ./site --project-name=kudo-workspace
    
  6. 発行されたURL(例:https://kudo-workspace.pages.dev/)を取得
  7. ブラウザで表示確認

Phase 3:Cloudflare Access 認証(機密保護)

★workspace_global にはクライアント情報が含まれる可能性があるため、URL秘匿だけでなく厳格な認証を必須とする。

  1. Cloudflare Zero Trust ダッシュボードで Access アプリケーションを作成
  2. ポリシー:工藤さんの Google アカウント(メールアドレス)のみ許可
  3. kudo-workspace.pages.dev 全体を認証保護
  4. 認証後、工藤さんのアカウントでのみアクセス可能になることを確認

★Cloudflare Access の設定は一部ダッシュボード手動操作が必要。Code が手順を案内し、工藤さんが実行。

★加えて:真に機密な守秘契約対象クライアント情報は、念のため workspace_global ではなく別管理を推奨(個人設定 §12 準拠)。rsync の exclude パターンで特定フォルダを除外する選択肢も提示。

Phase 4:launchd 自動監視

  1. 自動同期+デプロイスクリプトを作成:~/claude-workspace-site/auto-deploy.sh
    #!/bin/bash
    SRC=~/working/_claude_workspace_global/
    SITE=~/claude-workspace-site
    rsync -av --delete \
      --include='*.md' --include='*.html' --include='*/' --exclude='*' \
      "$SRC" "$SITE/docs/"
    cd "$SITE" && mkdocs build && wrangler pages deploy ./site --project-name=kudo-workspace --commit-dirty=true
    
  2. 実行権限付与:chmod +x auto-deploy.sh
  3. 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/ に出力し、工藤さんが手動 cplaunchctl load する経路に切り替え。

Phase 5:PWA + Z Fold 7 インストール手順

  1. MkDocs Material の PWA 化を確認(manifest.json + service worker)
  2. 必要なら mkdocs.yml に PWA 設定追加、or manifest を手動配置
  3. theme-color、app名(「KUDO Workspace」)を設定
  4. Z Fold 7 向けインストール手順書を作成し、_claude_workspace_global/handoffs/ に保存:
  5. Chrome で URL を開く(Cloudflare Access 認証 → Google ログイン)
  6. 「︙」→「アプリをインストール」or「ホーム画面に追加」
  7. アイコンタップで起動確認
  8. Chat に手順を報告(工藤さんが実行)

Phase 6:永続化(kudo-shared-storage-protocol 追記)

  1. kudo-shared-storage-protocol§workspace自動公開プロトコル を新設:
  2. アーキテクチャ図(本HANDOFF §2)
  3. launchd 自動デプロイの仕組み
  4. 「成果物は workspace_global に置けば自動でスマホ閲覧可能」という運用ルール
  5. リッチHTMLとMarkdownの両対応
  6. Cloudflare Access 認証の存在
  7. anchor_id: workspace-auto-publish を付与
  8. kudo-skill-cross-reference-resolver#schema-spec の YAML frontmatter スキーマ準拠
  9. 個人設定 §15(集中原則)から本プロトコルを参照する形に(将来 v5.8 で)
  10. kudo-ai-error-watchlist に新Entry候補:
  11. Drive同期フォルダの git 化リスク(.git 競合)→ rsync 経由で回避した設計判断
  12. 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ワークフロー生態系の「閲覧」ピースを埋める恒久インフラ。