スマホ(Remote Control)から即相談できる Claude Code タブを VS Code に毎朝自動で用意する
自作VS Code拡張で公式Claude Codeのコマンド(editor.openLast/newConversation/renameSessionTab)を叩き、名前付きタブをN本自動補充。夜間はWM_CLOSE→再起動で毎朝揃える。--bg/ターミナル経路・タブ0でのnewConversation・SendKeys再読み込みが失敗する実測付き
約39.1万トークンの節約 (API料金換算で約590円分)。 要件定義・技術調査・試行錯誤ぶんのトークンがまるごと不要になります。※ 出品者申告とレビューに基づく推定値。モデル・タスク内容により変動します。
この巻物について
「スマホ(Remote Control)から即相談できる Claude Code タブを VS Code に毎朝自動で用意する」は、開発プロセスカテゴリのAI指示書(MDファイル)です。自作VS Code拡張で公式Claude Codeのコマンド(editor.openLast/newConversation/renameSessionTab)を叩き、名前付きタブをN本自動補充。夜間はWM_CLOSE→再起動で毎朝揃える。--bg/ターミナル経路・タブ0でのnewConversation・SendKeys再読み込みが失敗する実測付きこの巻物をAIに読み込ませると、ゼロから設計・調査する場合に比べて 約39.1万トークン(API料金換算で約590円)・98%のトークンを節約できます。
- カテゴリ
- 開発プロセス
- 対応AI
- claude-code、cursor、codex-cli
- ライセンス
- 商用利用可 (再販不可)
- 価格
- 無料
- ゼロから開発時
- 約40万トークン
- この巻物使用時
- 約9,000トークン
- 節約量
- 約39.1万トークン (約590円)
- 更新日
- 2026-09-17
使い方 (AIに渡す3つの方法)
いちばん簡単なのはワンライナー。Claude Code のターミナルに貼るだけです。
claude "https://makimono-md.vercel.app/api/v1/files/remote-control-claude-code-vs-code/raw を読み込んで、この指示書どおりに実装して"
中身
スマホ(Remote Control)から即相談できる Claude Code タブを、VS Code に毎朝自動で用意する
誰向け・何が起きるか
Claude Code を VS Code 拡張で使い、外出先ではスマホの Claude アプリ(Remote Control)から同じ PC のセッションに話しかけたい人向け。 完成すると、毎朝 VS Code に「スマホ用セッション1〜3」という名前の Claude Code タブが自動で並び、スマホ側の一覧にも同じ名前で出る。 PC に戻れば同じタブで会話の続きが見える。user の操作はスマホでタブを選んで書き始めるだけ。
前提
- Claude Code for VS Code(v2.1.2xx 系で確認)と Claude Code CLI が導入済み。
~/.claude/settings.jsonに"remoteControlAtStartup": true。 - Remote Control は Pro/Max 以上。Team/Enterprise は管理者が先に有効化。
- Windows 前提(再起動スクリプトは PowerShell)。macOS/Linux は「再起動」部分だけ osascript / xdotool 等に置き換える。
やってはいけない設計(実測で失敗)
claude --bg --remote-control <名前>のバックグラウンド起動: スマホからは使えるが PC の VS Code に会話が表示されない。claude attachを毎回打つ手間が残る。- Windows Terminal で
claude --remote-controlを起動: 同上。VS Code の一覧にも出ない。 - 公式コマンド
claude-vscode.newConversationだけを起動時に連打: Claude Code の webview タブが 1 つも無いウィンドウでは何も起きない。12 回再試行しても 0 タブ。 claude agents --jsonの name でタブ名を検証: 拡張のタブ改名は反映されない。検証は拡張の Output ログで行う。
作るもの: 小さな自作 VS Code 拡張(onStartupFinished + URI ハンドラ)
公式拡張 (Anthropic.claude-code) が contributes.commands で公開しているコマンドを叩くだけで実現できる。
claude-vscode.editor.openLast… "Claude Code: Open"(設定claudeCode.preferredLocationに従って webview を開く)claude-vscode.newConversation… 既存の webview に会話タブを追加claude-vscode.renameSessionTab… 第 1 引数に名前を渡すとアクティブなタブを改名(/rename相当。Remote Control 一覧の表示名にも反映される=公式 docs)
アルゴリズム(ensureMobileTabs({count, name, attempts}))
claudeTabs() = tabGroups の全タブから TabInputWebview かつ viewType が 'claudeVSCode' を含むもの
existing = claudeTabs() のうち label が <接頭辞> で始まるもの(再利用。増殖させない)
missing = count - existing.length
while missing > 0:
index = 未使用の最小番号(<接頭辞>1, 2, …)
before = claudeTabs().length
cmd = before == 0 ? 'claude-vscode.editor.openLast' : 'claude-vscode.newConversation'
executeCommand(cmd)(openLast が例外なら 'claude-vscode.editor.open' にフォールバック)
200ms 間隔で最長 5 秒、claudeTabs().length > before を待つ
増えなければ 5 秒待って再試行(起動経路は attempts=12、URI 経路は 1 回)
増えたら executeCommand('claude-vscode.renameSessionTab', `${接頭辞}${index}`)
- 起動時(
onStartupFinished):vscode.extensions.getExtension('Anthropic.claude-code').activate()を待った後、vscode.commands.getCommands(true)にclaude-vscode.newConversationが現れるまで最長 60 秒ポーリングしてから上を呼ぶ。 - 設定:
myext.mobileTabs(既定 0 = 無効、1〜10)、myext.mobileTabName(既定「スマホ用セッション」)。 - URI ハンドラ:
vscode://<publisher>.<name>/mobile?count=3&name=…で日中の手動補充もできるようにする。URI は最後にフォーカスした VS Code ウィンドウに届くので、別ウィンドウを開いたまま撃たない。 - 経過は
OutputChannel(例: "Mobile Tabs")に 1 行ずつ残す。検証は%APPDATA%\Code\logs\<本体起動時刻>\window<N>\exthost\output_logging_*\<n>-Mobile Tabs.logを読む。
配布
npx @vscode/vsce package で VSIX を作り code --install-extension <vsix> --force。拡張の更新はウィンドウ再読み込みまで有効化されないので、code --list-extensions --show-versions(ディスク版)と実際に動いている版は別物として扱う。
毎朝タブを揃えるための夜間再起動(Windows タスクスケジューラ)
VS Code は「前回のタブを復元する」ため日中は補充が効くが、確実に毎朝 N 本にするには深夜に VS Code を再起動する。次の 3 点が無いと無人では失敗し続ける(3 日連続 SKIP の実測)。
- 前面化に依存しない:
AppActivate+SendKeysは画面ロック中に失敗する。代わりに user32EnumWindowsでタイトルが*Visual Studio Codeの可視ウィンドウ全部へPostMessage(h, 0x0010 /*WM_CLOSE*/)を送り、全Codeプロセスが終わるのを最長 60 秒待ってからcode.cmdを引数なしで起動(window.restoreWindows: allで復元。復元されなければglobalStorage/storage.jsonのwindowsState.openedWindows[].folderを開く)。Get-Process CodeのMainWindowHandleは複数窓を取り違えるので使わない。強制終了はしない。 - 「作業中」判定は VS Code 内のセッションだけ数える:
claude agents --jsonのkind == "interactive"のsessionIdに一致する~/.claude/projects/**/<id>.jsonlが直近 15 分に更新されていれば見送る。headless のclaude -pや夜間バッチの jsonl まで数えると毎晩 busy になる。 - 拡張の更新待ちでも実行する: ディスク版 > 「有効化を確認した版」マーカーなら再起動対象にする。
補足: タスクスケジューラの powershell.exe(5.1)で走る .ps1 は UTF-8 BOM 付きで保存する。BOM 無し日本語だと関数定義ごと誤読され CommandNotFoundException で無音失敗する。PATH に claude が無い環境向けに ~/.local/bin/claude.exe へのフォールバックも入れる。
検証手順(Claude 側で完結)
node --testで純関数(開くコマンドの選択、再試行判定、ルーティング)を確認。- タブが 0 個の新規ウィンドウ(信頼済みフォルダ配下に空フォルダを作って
code -n <folder>)を開き、60〜90 秒後に Output ログへmobile tab created: …1/2/3が並ぶこと。未信頼フォルダは Restricted Mode で拡張が起動しないので使わない。 - 稼働中ウィンドウへ URI を撃ち、既存タブありの経路でも 3 本揃うこと。
- 検証ウィンドウはタイトルで選んで WM_CLOSE で閉じる(
CloseMainWindow()は別窓を掴む)。 - 翌朝、夜間ログに
RELOADED行、Output ログに 3 本のcreated行があること。
実測値
- 既存タブありの補充: 0.25〜2 秒/本。タブ 0 からの起動補充: 約 23 秒で 3 本(3 本目に再試行 1〜2 回)。
- 夜間再起動は 3 夜連続成功。深夜も VS Code 内セッションが動いている日は安全側で見送られる。
よくある質問
+「スマホ(Remote Control)から即相談できる Claude Code タブを VS Code に毎朝自動で用意する」とは何ですか?
自作VS Code拡張で公式Claude Codeのコマンド(editor.openLast/newConversation/renameSessionTab)を叩き、名前付きタブをN本自動補充。夜間はWM_CLOSE→再起動で毎朝揃える。--bg/ターミナル経路・タブ0でのnewConversation・SendKeys再読み込みが失敗する実測付き
+どれくらいトークン(費用)を節約できますか?
ゼロから開発すると約40万トークンかかりますが、この巻物を使えば約9,000トークンで済みます。差し引き約39.1万トークン(API料金換算で約590円)・98%の節約です。
+どうやって使いますか?
無料です。MDファイルを Claude Code などのAIに読み込ませるだけ。ワンライナーをターミナルに貼れば実装が始まります。要件定義や技術調査を省いて実装だけにトークンを使えます。
+どのAIツールに対応していますか?
claude-code、cursor、codex-cli に対応しています。
+商用利用できますか?
ライセンスは「商用利用可 (再販不可)」です。
🤝 自分でAIを動かすのは、まだ不安…という方へ
この巻物の内容を、AIを使うプロに丸ごと任せることもできます。姉妹サービスAI代行堂なら「LINEで頼むだけで、仕事が完成」。
関連する巻物
夜間ジョブ異常を通知で終わらせず自動修復→AI修理PR→人へ引き渡す閉ループ
監視の『検知して通知』の後段に、決定的Playbook→AIコーダーの隔離worktree修理PR→持ち越し→人への3要素引き渡し、を足す実装指示書。argvで指示を渡すな等の実測の落とし穴つき
ドキュメント駆動開発プロセス CLAUDE.md — 作るものを固めてから書かせる
「AIが暴走して意図と違うものを作る」を根絶する開発プロセス指示書。UI仕様→機能設計→実装の順をAIに強制し、1ファイルごとに承認ゲートを挟む。受託開発・チーム開発向け。
Discord bot の Administrator を剥がす — 「自分では外せない」壁の越え方
bot は自分の最上位ロールを編集できない。position の測り方、明示 overwrite への置き換え(VIEW_CHANNEL 抜けの検算)、token が読めない上位 bot のデプロイ環境を使う唯一の経路、後片付けまで。
この巻物、誰かのトークンも救えます
𝕏 で節約レシートをシェア