[{"data":1,"prerenderedAt":560},["ShallowReactive",2],{"post-index":3,"post-git-worktree-runner-guide":453},{"posts":4,"categories":402,"tags":411},[5,17,35,43,60,74,87,105,122,144,156,167,179,193,208,223,239,250,264,275,285,296,308,319,331,343,356,367,377,387],{"slug":6,"title":7,"description":8,"publishedAt":9,"updatedAt":9,"category":10,"tags":13,"thumbnail":16},"ai-cognitive-debt-approval"," 認知負債は「承認」で生まれる ── コーディングエージェント時代の意図負債と、個人・チームの向き合い方","コーディングエージェントに実装を任せると、コードは速く書けるのに人の理解が追いつかない。認知負債・意図負債・理解負債の違いを「下り」と「上り」で整理し、負債が生まれる承認の瞬間と、個人とチームでできる対策、まだ答えのない問いを、自分の体験から考える。","2026-11-03T17:12:07.686Z",{"name":11,"slug":12},"AI","ai",[14],{"name":15,"slug":15},"organization",null,{"slug":18,"title":19,"description":20,"publishedAt":21,"updatedAt":21,"category":22,"tags":23,"thumbnail":16},"design-harness-personal-product","デザインハーネスを個人開発で組んだ — AI が作る画面のずれを止めるまで","デザイナーのいない個人開発で、AI が作る画面のずれを止めるまでの記録。Codex の Product Design で画像の案を出して画面を作り直し、デザインファイルとコードの食い違いを正本の分担で片付け、lint・見た目の比較・AI の評価役からなるデザインハーネスで外れたら止める仕組みを組んだ。","2026-11-03T15:39:02.665Z",{"name":11,"slug":12},[24,27,30,32],{"name":25,"slug":26},"claude code","claude-code",{"name":28,"slug":29},"design system","design-system",{"name":31,"slug":31},"codex",{"name":33,"slug":34},"design harnes","design-harnes",{"slug":36,"title":37,"description":38,"publishedAt":39,"updatedAt":39,"category":40,"tags":41,"thumbnail":16},"claude-code-mods-intro","Claude Codeの「Claude Mods」とは？ 入れてみた3つのmodと、安全に入れる手順","Claude Codeの新機能Claude Mods（v2.1.287〜）を紹介する。hooks・skills・MCPとの違い、入れてみたmod 3つ（prompt-rail・md-prompt・qa-guide）の使い方、claude plugin validateで中身を確かめて入れる手順をまとめた。","2026-11-03T15:30:44.678Z",{"name":11,"slug":12},[42],{"name":25,"slug":26},{"slug":44,"title":45,"description":46,"publishedAt":47,"updatedAt":47,"category":48,"tags":51,"thumbnail":16},"worktree-shared-reverse-proxy","AI 時代の並列開発の環境構築 — git worktree ごとにアプリを同時に動かす","git worktree の並列開発で、各 worktree のフロントとバックを同時に動かす Docker Compose 構成を紹介する。ポートはずらさず共有のリバースプロキシでホスト名に振り分け、DB は 1 つを共有ネットワークに置いて全 worktree から参照する。","2026-11-03T15:24:32.067Z",{"name":49,"slug":50},"Dev Env","dev-env",[52,54,57],{"name":53,"slug":53},"git",{"name":55,"slug":56},"Docker","docker",{"name":58,"slug":59},"開発環境","development-environment",{"slug":61,"title":62,"description":63,"publishedAt":64,"updatedAt":64,"category":65,"tags":66,"thumbnail":16},"ghostty-herdr-dev-env","Ghostty + herdr で組む開発環境（2026年9月版） — AI エージェントを並べてターミナルで開発する","WezTerm + tmux + 自作ツールから Ghostty + herdr に移した私の開発環境を紹介する。Claude Code・Codex・takt を並べて動かす 1 タスクの流れ、ターミナル内ブラウザで画面の要素を AI に渡す方法、Neovim・lazygit・hunk・Nix まで層ごとにまとめた。","2026-11-03T15:14:47.700Z",{"name":49,"slug":50},[67,68,70,72],{"name":58,"slug":59},{"name":69,"slug":69},"herdr",{"name":71,"slug":71},"ghostty",{"name":73,"slug":73},"terminal",{"slug":75,"title":76,"description":77,"publishedAt":78,"updatedAt":78,"category":79,"tags":80,"thumbnail":16},"dotfiles-operation-and-nix","設定ファイルを端末に置いたままにしない — dotfiles 運用のすすめと、その先の Nix","設定ファイルを Git リポジトリで管理する dotfiles 運用の始め方と、その先で効いてくる Nix の話。何を入れて何を入れないか、配線の 3 手法の比較、運用して見えてくる穴、3 端末を 1 つの設定で回すところまでを実例で書く。","2026-11-03T15:04:48.084Z",{"name":49,"slug":50},[81,82,85],{"name":58,"slug":59},{"name":83,"slug":84},"Nix","nix",{"name":86,"slug":86},"dotfiles",{"slug":88,"title":89,"description":90,"publishedAt":91,"updatedAt":91,"category":92,"tags":93,"thumbnail":102},"opencode-go-plan-evaluation","OpenCode Go プランを評価する — 月$10 で LLM オーケストレーションの中間層は作れるか","OpenCode が提供する月額固定の Go プラン（初月$5、翌月以降$10\u002F月）を、料金体系・想定ユースケース・3層 LLM 構成における中間モデル層としての適合性まで含めて評価する。","2026-05-07T12:12:31.936Z",{"name":11,"slug":12},[94,97,100],{"name":95,"slug":96},"Harness Engineering","harness-engineering",{"name":98,"slug":99},"LLM","llm",{"name":101,"slug":101},"opencode",{"url":103,"description":104},"https:\u002F\u002Fimages.ctfassets.net\u002Fd3b1looh8iwg\u002F6Nh8tVuSCuHunaVeqyegdU\u002F0fee3536b9ee406b986430ebc1b8ebfd\u002FOpenCode_Go_%C3%A3__%C3%A3__%C3%A3__%C3%A3__%C3%A3__%C3%A8__%C3%A4__%C3%A3__%C3%A3__.png","",{"slug":106,"title":107,"description":108,"publishedAt":109,"updatedAt":109,"category":110,"tags":111,"thumbnail":120},"prompt-context-harness-engineering","ハーネスエンジニアリングとは何か：プロンプト→コンテキスト→ハーネスへ至るAIエージェント設計の変遷","「ハーネスエンジニアリング」とは何か。プロンプトエンジニアリング、コンテキストエンジニアリングから続く3段階の変遷を、論文引用（Lost in the Middle \u002F SWE-bench）とClaude Codeの実装例（フック・ルール・Skill）で階層構造として整理する。","2026-04-07T13:04:49.564Z",{"name":11,"slug":12},[112,115,116,119],{"name":113,"slug":114},"Prompt Engineering","prompt-engineering",{"name":95,"slug":96},{"name":117,"slug":118},"Context Engineering","context-engineering",{"name":98,"slug":99},{"url":121,"description":104},"https:\u002F\u002Fimages.ctfassets.net\u002Fd3b1looh8iwg\u002F74HnVGS2R8wphJ1nGHgLfb\u002Fb87d3d6e35ccc518e04d9959c7637a88\u002Fã__ã__ã__ã__ã__ã__ã__ã__ã__ã__ã_ªã__ã__ã__ã__ã__ä__ã__ï__ã__ã__ã__ã__ã__ã__ã__â__ã__ã__ã__ã__ã__ã__â__ã__ã__ã__ã__ã__è__ã__A.png",{"slug":123,"title":124,"description":125,"publishedAt":126,"updatedAt":126,"category":127,"tags":130,"thumbnail":142},"authjs-v5-jwt-dual-timeout-bff-django","Auth.js v5 でJWT二重タイムアウトを実装する：BFF + Django連携の設計パターン","Auth.js v5のjwt callbackで8時間の絶対有効期限と30分のアイドルタイムアウトを両立する実装方法を解説。Next.js MiddlewareによるBFF API保護とDjango REST Frameworkとの Token Exchange パターンも紹介する。","2026-04-06T12:45:28.328Z",{"name":128,"slug":129},"Programming","programming",[131,134,136,139],{"name":132,"slug":133},"auth.js","auth-js",{"name":135,"slug":135},"jwt",{"name":137,"slug":138},"Django REST Framework","django-rest-framework",{"name":140,"slug":141},"Next.js","next-js",{"url":143,"description":104},"https:\u002F\u002Fimages.ctfassets.net\u002Fd3b1looh8iwg\u002FpqkFfHKpf2UqoNrB6KrKS\u002F672a78076f28d88b31509c230f9c3f64\u002FAuth.js_v5_ã__ã__JWTäº_é__ã__ã__ã__ã__ã__ã__ã__å__è__ã__ã__ï__BFF___Djangoé__æ_ºã__è__è__ã__ã__ã__ã__ã__.png",{"slug":145,"title":146,"description":147,"publishedAt":148,"updatedAt":148,"category":149,"tags":150,"thumbnail":154},"claude-code-spec-to-growing-claudemd","仕様書を「渡す」からCLAUDE.mdを「育てる」へ — Claude Codeの使い方が変わった話","Claude Codeに仕様書を丸ごと渡す運用から、CLAUDE.mdを継続的に育てる運用へ。「間違えたら追加」ルールの実践例と、20行→146行+31スキルに育てた記録。","2026-04-02T14:58:11.375Z",{"name":11,"slug":12},[151,152,153],{"name":25,"slug":26},{"name":113,"slug":114},{"name":117,"slug":118},{"url":155,"description":104},"https:\u002F\u002Fimages.ctfassets.net\u002Fd3b1looh8iwg\u002FqybhQ2TQSYQhIvDhWxqvs\u002F9f8b888e11a76223c8a1b1da42df5ce1\u002Fä__æ__æ__ã__ã__æ__ã__ã__ã__ã__CLAUDE.mdã__ã__è__ã__ã__ã__ã___â___Claude_Codeã__ä__ã__æ__ã__ã__å__ã__ã__ã__è__.png",{"slug":157,"title":158,"description":159,"publishedAt":160,"updatedAt":160,"category":161,"tags":162,"thumbnail":165},"claude-code-harness-engineering","Claude Codeを覚醒させる「ハーネスエンジニアリング」 CLAUDE.md・Hooks・Rules設定の徹底解説","プロンプトを書く時代から、AIが最高に働く環境を設計する時代へ。Claude CodeのCLAUDE.md、Hooks、Rules、Settings、Agent Routingを体系的に解説し、自作のオーケストレーションシステム「ai-orchestra」による統合管理の実践例を紹介する。","2026-03-22T08:59:48.575Z",{"name":11,"slug":12},[163,164],{"name":25,"slug":26},{"name":95,"slug":96},{"url":166,"description":104},"https:\u002F\u002Fimages.ctfassets.net\u002Fd3b1looh8iwg\u002F3liirUgzBlFBuAMoytyN5E\u002F66ba6b07385791bcaae4ddf404f06ce1\u002FClaude_Codeã__è__é__ã__ã__ã__ã__ã__ã__ã__ã__ã__ã__ã__ã__ã__ã__ã_ªã__ã__ã__ã___CLAUDE.mdã__Hooksã__Rulesè__å__ã__å__åº_è__èª_.png",{"slug":168,"title":169,"description":170,"publishedAt":171,"updatedAt":172,"category":173,"tags":174,"thumbnail":177},"claude-code-dev-toolchain","Claude Code開発を支える私のツールチェイン — ターミナルからAIデザインまで","Claude Code CLIを中心とした開発環境を紹介する。WezTerm + Tmuxのターミナル構成、GTRやBatonによる並列開発、ステータスライン・通知フックのカスタマイズ、MCP\u002Fプラグイン活用、Aqua VoiceやPencilとの連携まで、実際に使っているツールチェインの全体像をまとめた。","2026-03-21T19:30:43.616Z","2026-11-03T15:18:14.982Z",{"name":49,"slug":50},[175,176],{"name":25,"slug":26},{"name":58,"slug":59},{"url":178,"description":104},"https:\u002F\u002Fimages.ctfassets.net\u002Fd3b1looh8iwg\u002F4wFUBAqC9yuIgeo3xWVHJM\u002F8843248b854fee93872b5ac519d16bc2\u002FClaude_Codeé__ç_ºã__æ__ã__ã__ç__ã__ã__ã__ã__ã__ã__ã__ã___â___ã__ã__ã__ã__ã__ã__ã__AIã__ã__ã_µã__ã__ã__ã__ã__ã__.png",{"slug":180,"title":181,"description":182,"publishedAt":183,"updatedAt":184,"category":185,"tags":186,"thumbnail":191},"lazygit-commit-message-auto-generate","【コピペで導入】lazygit × Claude Code でコミットメッセージ自動生成","lazygit の customCommands と Claude Code の --print モードを組み合わせ、Ctrl+G 一発で Conventional Commits 形式のコミットメッセージを自動生成する方法を解説。コピペ可能な完成形設定と、4段階の試行錯誤で得たハマりポイントを共有します。","2026-03-15T04:36:20.532Z","2026-11-03T15:18:53.496Z",{"name":49,"slug":50},[187,188,189],{"name":53,"slug":53},{"name":25,"slug":26},{"name":190,"slug":190},"lazygit",{"url":192,"description":104},"https:\u002F\u002Fimages.ctfassets.net\u002Fd3b1looh8iwg\u002F62ov1mzeLUjRm6cbzQ7R92\u002F3bc21a7fe7ec517ad3258b6264d4097e\u002Fã__ã__ã__ã__ã__ã__ã__ã__å__å__ã__lazygit_Ã__Claude_Code_ã__ã__ã__ã__ã__ã__ã__ã__ã__ã__ã__ã__è_ªå__ç__æ__.png",{"slug":194,"title":195,"description":196,"publishedAt":197,"updatedAt":198,"category":199,"tags":200,"thumbnail":206},"git-worktree-runner-guide","git-worktree-runner で worktree 管理が劇的にラクになった話","git-worktree-runner（GTR）は git worktree の操作を 1 コマンドに集約する CLI ラッパーです。Taskfile.yaml での運用から GTR に移行した体験を元に、インストール・設定・AI 並列開発での活用法を解説します。","2026-03-09T15:32:31.316Z","2026-11-03T15:18:33.924Z",{"name":49,"slug":50},[201,202,204],{"name":53,"slug":53},{"name":203,"slug":203},"git-worktree",{"name":205,"slug":205},"git-worktree-runner",{"url":207,"description":104},"https:\u002F\u002Fimages.ctfassets.net\u002Fd3b1looh8iwg\u002F7BRBfHFocF2ABOeOQmtIic\u002Fa63ce99493098bc42123e4315f43d768\u002Fgit-worktree-runner_ã__ã___worktree_ç__ç__ã__ã__å__ç__ã__ã__ã__ã__ã_ªã__ã__è__.png",{"slug":209,"title":210,"description":211,"publishedAt":212,"updatedAt":212,"category":213,"tags":214,"thumbnail":221},"rag-basic-knowledge","RAG入門 — 検索拡張生成の基礎知識を実験結果とともに学ぶ","RAG（検索拡張生成）の仕組みをVectorDB・Embedding・チャンク分割の3要素に分解して解説。Embeddingモデル変更で正答率0\u002F5→4\u002F5に改善した検証データも公開。","2026-03-01T11:29:25.841Z",{"name":11,"slug":12},[215,218,219],{"name":216,"slug":217},"RAG","rag",{"name":98,"slug":99},{"name":220,"slug":220},"ollama",{"url":222,"description":104},"https:\u002F\u002Fimages.ctfassets.net\u002Fd3b1looh8iwg\u002F1enfpUixTuvis0oX9x5Cfa\u002F934aed76ac994412ceb37dfdf5dc6f6c\u002FRAGå__é___â___æ__ç__æ__å_µç__æ__ã__å_ºç__ç__è__ã__å__é__çµ_æ__ã__ã__ã__ã__å__ã_µã__.png",{"slug":224,"title":225,"description":226,"publishedAt":227,"updatedAt":228,"category":229,"tags":230,"thumbnail":237},"engineer-ai-daily-workflow","1人のエンジニアがAIを日常にどう組み込んでいるか — 契約サービスから活用フローまで全公開","Claude Code、ChatGPT、Gemini、Aqua Voice、Adobe Fireflyの5サービスを使い分けるエンジニアが、開発・情報収集・ブレスト・音声入力・振り返りまで、AIを日常に組み込んだリアルな活用フローを全公開します。","2026-02-18T14:13:58.531Z","2026-02-18T14:14:12.514Z",{"name":11,"slug":12},[231,232,234],{"name":98,"slug":99},{"name":233,"slug":233},"openclaw",{"name":235,"slug":236},"マルチエージェント","multi-agent",{"url":238,"description":104},"https:\u002F\u002Fimages.ctfassets.net\u002Fd3b1looh8iwg\u002F5gBC06O8WX2GX8wmoOXQfy\u002F27a11e0f280f642a781e462dead9d3ae\u002F1äººã__ã__ã__ã__ã__ã__ã__ã__ã__AIã__æ__å__ã__ã__ã__ã__çµ_ã__è__ã__ã__ã__ã__ã__ã___â___å__ç__ã_µã__ã__ã__ã__ã__ã__æ__ç__ã__ã_.png",{"slug":240,"title":241,"description":242,"publishedAt":243,"updatedAt":243,"category":244,"tags":245,"thumbnail":248},"ai-orchestra-design-and-practice","Claude Codeマルチエージェント実践｜AI Orchestraで超えた2つの壁","Claude Code単体運用で生じるコンテキスト溢れ・役割混乱の課題を、25種の専門エージェントとClaude×Codex×Geminiのマルチモデル連携で解決するオーケストレーションシステム「AI Orchestra」。その設計思想、Hookによる自動ルーティング、並列レビューなどの実装を具体的に紹介します。","2026-02-08T08:01:16.212Z",{"name":11,"slug":12},[246,247],{"name":235,"slug":236},{"name":98,"slug":99},{"url":249,"description":104},"https:\u002F\u002Fimages.ctfassets.net\u002Fd3b1looh8iwg\u002F6j2KWOOo7wJfUobTCg3o2w\u002F126c8d413cd9a56e64fba107544ec4e1\u002FClaude_Codeã__ã__ã__ã__ã__ã__ã__ã__ã__ã__å__è_µï__AI_Orchestraã__ã__è__ã__ã__2ã__ã__å__.png",{"slug":251,"title":252,"description":253,"publishedAt":254,"updatedAt":255,"category":256,"tags":257,"thumbnail":262},"ai-benchmark-guide","AIベンチマーク読み方ガイド｜SWE-bench・GPQA・ARC-AGIの意味と活用法","SWE-bench、GPQA Diamond、ARC-AGI、Terminal-Benchなど主要AIベンチマークの読み方を解説。2026年2月最新のモデルスコア比較と、コーディングエージェントへのタスク振り分けに活かす実践的な指針を紹介します。","2026-02-07T16:10:19.131Z","2026-02-07T16:11:56.095Z",{"name":11,"slug":12},[258,259],{"name":98,"slug":99},{"name":260,"slug":261},"Benchmark","benchmark",{"url":263,"description":104},"https:\u002F\u002Fimages.ctfassets.net\u002Fd3b1looh8iwg\u002F3QlfPsXmLogdj9o4mdgFYQ\u002F73a69ca272ac4e4fdcf977f322c0218a\u002FAIã__ã__ã__ã__ã__ã__ã__èª_ã__æ__ã__ã__ã__ã__ã__ï__SWE-benchã__GPQAã__ARC-AGIã__æ__å__ã__æ__ç__æ__.png",{"slug":265,"title":266,"description":267,"publishedAt":268,"updatedAt":268,"category":269,"tags":270,"thumbnail":273},"multi-agent-building-guide","マルチエージェント構築入門｜構成の全体像と3つの実装アプローチ","マルチエージェントの構築方法を解説。オーケストレーター・サブエージェント・ツール連携の3要素から、自作・フレームワーク・既存ツール活用の選択肢まで。Claude Codeでの実装例付き。","2026-02-05T12:52:58.095Z",{"name":11,"slug":12},[271,272],{"name":98,"slug":99},{"name":235,"slug":236},{"url":274,"description":104},"https:\u002F\u002Fimages.ctfassets.net\u002Fd3b1looh8iwg\u002F68XZFvLA17pegNy0lHCrYN\u002Ff90202a483bf087f4fa4cbb80dae934e\u002Fã__ã__ã__ã__ã__ã__ã__ã__ã__ã__æ__ç__å__é__ï__æ__æ__ã__å__ä__å__ã__3ã__ã__å__è__ã__ã__ã__ã__ã__ã__.png",{"slug":276,"title":277,"description":278,"publishedAt":279,"updatedAt":279,"category":280,"tags":281,"thumbnail":283},"openclaw-security-and-features","OpenClaw徹底解説 ── セルフホスト型AIアシスタントの可能性とセキュリティリスク","「AIが自分の代わりにメッセージを返信してくれたら…」そんな願いを叶えるツールが、いま爆発的な人気を集めています。その名も「OpenClaw」。わずか2ヶ月でGitHub Stars 10万を突破し、週間200万人が訪れるほどの注目を浴びています。  しかし、その急成長の裏には商標問題、詐欺騒動、そして深刻なセキュリティ脆弱性の発覚と、波乱万丈なドラマがありました。","2026-02-03T15:20:26.415Z",{"name":11,"slug":12},[282],{"name":233,"slug":233},{"url":284,"description":104},"https:\u002F\u002Fimages.ctfassets.net\u002Fd3b1looh8iwg\u002F7aKouVOZSGnzVUGgLQfa22\u002F5688eb515dc5f0b2c301b9b8c267ec20\u002F00036.png",{"slug":286,"title":287,"description":104,"publishedAt":288,"updatedAt":289,"category":290,"tags":291,"thumbnail":294},"custom-instructions","ChatGPTやClaudeがもっと賢くなる！カスタム指示の書き方と実例集","2026-01-30T17:42:57.415Z","2026-02-03T15:03:06.461Z",{"name":11,"slug":12},[292,293],{"name":98,"slug":99},{"name":113,"slug":114},{"url":295,"description":287},"https:\u002F\u002Fimages.ctfassets.net\u002Fd3b1looh8iwg\u002F4EojonTOebJGeiaXf98ol0\u002F9e391fc8bd6e548f8c96136c805b49d7\u002FChatGPTã__Claudeã__ã__ã__ã__ã__è__ã__ã_ªã__ï__ã__ã__ã__ã__æ__ç_ºã__æ__ã__æ__ã__å__ä__é__.png",{"slug":297,"title":298,"description":299,"publishedAt":300,"updatedAt":301,"category":302,"tags":303,"thumbnail":306},"ollama-local-llm-setup","ローカルLLMはまず小さめモデルから：Ollamaで始める導入〜疎通確認","acでOllamaを使い、ローカルLLMを最短で起動→1回応答まで確認する手順を解説。モデル選定の考え方、遅い\u002Fメモリ\u002Fディスクの切り分け、API疎通(curl)もまとめます。","2026-01-18T06:40:49.270Z","2026-01-21T13:05:14.924Z",{"name":11,"slug":12},[304,305],{"name":220,"slug":220},{"name":98,"slug":99},{"url":307,"description":104},"https:\u002F\u002Fimages.ctfassets.net\u002Fd3b1looh8iwg\u002F1NQmtspOD1S6LEb4SrCYIQ\u002F49c213de131a9a4ea139c32e805f3b01\u002Fã__ã__ã__ã__LLMã__ã__ã__ã__å__ã__ã__ã__ã__ã__ã__ã__ã__ï__Ollamaã__ã__å__ã__ã__å__å__ã__ç__é__ç_ºèª_.png",{"slug":309,"title":310,"description":104,"publishedAt":311,"updatedAt":312,"category":313,"tags":314,"thumbnail":317},"llm-leaderboard-score-guide","LLMリーダーボードの読み方：スコア指針とベンチマーク確認手順","2026-01-10T08:57:26.636Z","2026-01-18T06:55:58.990Z",{"name":11,"slug":12},[315,316],{"name":260,"slug":261},{"name":98,"slug":99},{"url":318,"description":104},"https:\u002F\u002Fimages.ctfassets.net\u002Fd3b1looh8iwg\u002F8u7GQ3mAlcvIHOc5bFJc6\u002Fa953bf74c33117efa393eaf8541f515a\u002FLLMã_ªã__ã__ã__ã__ã__ã__ã__ã__ã__ã__èª_ã__æ__.png",{"slug":320,"title":321,"description":104,"publishedAt":322,"updatedAt":322,"category":323,"tags":324,"thumbnail":329},"vite_docker_esbuild-error","Vite + Docker + ESBuild Errorの解決","2021-11-12T03:53:22.965Z",{"name":128,"slug":129},[325,326],{"name":55,"slug":56},{"name":327,"slug":328},"Vite","vite",{"url":330,"description":104},"https:\u002F\u002Fimages.ctfassets.net\u002Fd3b1looh8iwg\u002F5gqsl4ZChCI3uaSXQA86du\u002F3c94f9928ffaaab2d8911d32e742de1e\u002Fprogramming.jpg",{"slug":332,"title":333,"description":104,"publishedAt":334,"updatedAt":335,"category":336,"tags":337,"thumbnail":341},"nuxt-router-scroll-control","Nuxt.jsのページ遷移時のスクロール制御したい","2021-10-28T14:31:11.276Z","2021-10-28T14:35:33.155Z",{"name":128,"slug":129},[338],{"name":339,"slug":340},"Nuxt.js","nuxt-js",{"url":342,"description":104},"https:\u002F\u002Fimages.ctfassets.net\u002Fd3b1looh8iwg\u002F6dqpNPZsBJJ7x9XJj1Ld1z\u002Fcd1bb9323a8ffb0657ad79525403e1ff\u002Fnuxt.jpg",{"slug":344,"title":345,"description":104,"publishedAt":346,"updatedAt":347,"category":348,"tags":349,"thumbnail":354},"react-drf-img_uploader-backend","React × DRFで画像アップロード機能作成 (バックエンド実装編)","2021-10-26T02:56:58.215Z","2021-10-27T11:37:43.829Z",{"name":128,"slug":129},[350,353],{"name":351,"slug":352},"React","react",{"name":137,"slug":138},{"url":355,"description":104},"https:\u002F\u002Fimages.ctfassets.net\u002Fd3b1looh8iwg\u002F4jbVtK0nXsMKZplpBAwhri\u002Fb0ccef5153d92a7947eb0c682008255c\u002Fdjango-rest-framework.jpg",{"slug":357,"title":358,"description":104,"publishedAt":359,"updatedAt":360,"category":361,"tags":362,"thumbnail":365},"react-drf-img_uploader-frontend","React × DRFで画像アップロード機能作成 (フロント実装編)","2021-10-26T02:39:01.629Z","2021-10-27T11:37:24.670Z",{"name":128,"slug":129},[363,364],{"name":351,"slug":352},{"name":137,"slug":138},{"url":366,"description":104},"https:\u002F\u002Fimages.ctfassets.net\u002Fd3b1looh8iwg\u002F3uFOs5NyHOvRqYgE1lQ3p6\u002Fd79c8fabb7d4151c5773ffe1cdd2bce3\u002Freact.jpg",{"slug":368,"title":369,"description":104,"publishedAt":370,"updatedAt":371,"category":372,"tags":373,"thumbnail":376},"react-drf-img_uploader-environment","React × DRFで画像アップロード機能作成 (環境構築編)","2021-10-26T02:00:01.702Z","2021-10-27T11:47:28.398Z",{"name":128,"slug":129},[374,375],{"name":351,"slug":352},{"name":137,"slug":138},{"url":330,"description":104},{"slug":378,"title":379,"description":104,"publishedAt":380,"updatedAt":381,"category":382,"tags":383,"thumbnail":385},"docker-install-procedure","各OS毎のDockerインストール手順","2021-10-26T01:43:54.692Z","2022-02-07T14:32:07.791Z",{"name":128,"slug":129},[384],{"name":55,"slug":56},{"url":386,"description":104},"https:\u002F\u002Fimages.ctfassets.net\u002Fd3b1looh8iwg\u002F3aVlE8NIfX12QvTafaC8xE\u002Fd00bf480e212538e1816fc10d2e7b77d\u002Fdocker.jpg",{"slug":388,"title":389,"description":104,"publishedAt":390,"updatedAt":391,"category":392,"tags":395,"thumbnail":399},"notion-clear-trash","Notionのゴミ箱を一括削除する","2021-09-12T13:04:59.853Z","2021-10-21T14:29:03.528Z",{"name":393,"slug":394},"Lifestyle","lifestyle",[396],{"name":397,"slug":398},"Notion","notion",{"url":400,"description":401},"https:\u002F\u002Fimages.ctfassets.net\u002Fd3b1looh8iwg\u002F5binM4YxsZdSXX9SKkGyNP\u002Fcf39353211db8b3e0c4ac18e03b55527\u002Fnotion.jpg","Notion記事用のサムネイル",[403,405,407,409],{"name":49,"slug":50,"count":404},6,{"name":11,"slug":12,"count":406},16,{"name":128,"slug":129,"count":408},7,{"name":393,"slug":394,"count":410},1,[412,414,415,417,418,420,421,422,423,424,425,427,428,429,430,431,432,433,434,435,436,437,438,439,440,441,442,443,444,445,446,447,448,449,450],{"name":98,"slug":99,"count":413},10,{"name":25,"slug":26,"count":404},{"name":137,"slug":138,"count":416},4,{"name":58,"slug":59,"count":416},{"name":55,"slug":56,"count":419},3,{"name":53,"slug":53,"count":419},{"name":95,"slug":96,"count":419},{"name":113,"slug":114,"count":419},{"name":351,"slug":352,"count":419},{"name":235,"slug":236,"count":419},{"name":260,"slug":261,"count":426},2,{"name":117,"slug":118,"count":426},{"name":220,"slug":220,"count":426},{"name":233,"slug":233,"count":426},{"name":132,"slug":133,"count":410},{"name":31,"slug":31,"count":410},{"name":33,"slug":34,"count":410},{"name":28,"slug":29,"count":410},{"name":86,"slug":86,"count":410},{"name":71,"slug":71,"count":410},{"name":203,"slug":203,"count":410},{"name":205,"slug":205,"count":410},{"name":69,"slug":69,"count":410},{"name":135,"slug":135,"count":410},{"name":190,"slug":190,"count":410},{"name":140,"slug":141,"count":410},{"name":83,"slug":84,"count":410},{"name":397,"slug":398,"count":410},{"name":339,"slug":340,"count":410},{"name":101,"slug":101,"count":410},{"name":15,"slug":15,"count":410},{"name":216,"slug":217,"count":410},{"name":73,"slug":73,"count":410},{"name":327,"slug":328,"count":410},{"name":451,"slug":451,"count":452},"takt",0,{"slug":194,"title":195,"description":196,"publishedAt":197,"updatedAt":198,"category":454,"tags":455,"thumbnail":459,"html":460,"headings":461,"readingMinutes":413,"older":526,"newer":533,"related":540},{"name":49,"slug":50},[456,457,458],{"name":53,"slug":53},{"name":203,"slug":203},{"name":205,"slug":205},{"url":207,"description":104},"\u003Ch2 id=\"git-worktree、便利だけど運用が面倒だった\" tabindex=\"-1\">\u003Cspan class=\"h-no\" aria-hidden=\"true\">01\u003C\u002Fspan>git worktree、便利だけど運用が面倒だった\u003C\u002Fh2>\n\u003Cp>\u003Cstrong>git worktree は強力な機能だが、実際の運用ではセットアップの手間がボトルネックになりがちだ。\u003C\u002Fstrong> git-worktree-runner（GTR）を使えば、その面倒を 1 コマンドに集約できる。\u003C\u002Fp>\n\u003Ch3 id=\"git-worktree-の基本（30秒でおさらい）\" tabindex=\"-1\">git worktree の基本（30秒でおさらい）\u003C\u002Fh3>\n\u003Cp>\u003Ccode>git worktree\u003C\u002Fcode> は Git 2.5 で追加された機能で、1 つのリポジトリから複数のブランチを同時にチェックアウトできる。\u003Ccode>git stash\u003C\u002Fcode> やブランチ切り替えなしに、別ディレクトリで別ブランチの作業が可能になる。\u003C\u002Fp>\n\u003Cfigure class=\"code\" data-lang=\"bash\">\u003Cdiv class=\"code-bar\">\u003Cspan class=\"lang\">BASH\u003C\u002Fspan>\u003Cspan>4 LINES\u003C\u002Fspan>\u003Cbutton class=\"copy\" type=\"button\" data-cursor=\"COPY\">COPY\u003C\u002Fbutton>\u003C\u002Fdiv>\u003Cpre class=\"shiki site-code\" style=\"background-color:var(--shiki-background);color:var(--shiki-foreground)\" tabindex=\"0\">\u003Ccode class=\"language-bash\">\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--shiki-token-comment)\"># 素の git worktree コマンド\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--shiki-token-function)\">git\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-string)\"> worktree\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-string)\"> add\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-string)\"> ..\u002Fmy-feature\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-string)\"> feature-branch\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--shiki-token-function)\">git\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-string)\"> worktree\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-string)\"> list\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--shiki-token-function)\">git\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-string)\"> worktree\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-string)\"> remove\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-string)\"> ..\u002Fmy-feature\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fcode>\u003C\u002Fpre>\n\u003C\u002Ffigure>\n\u003Ch3 id=\"素のコマンドで困ること\" tabindex=\"-1\">素のコマンドで困ること\u003C\u002Fh3>\n\u003Cp>git worktree 自体はシンプルだが、実務で使うと以下の課題にぶつかる。\u003C\u002Fp>\n\u003Col>\n\u003Cli>\u003Cstrong>コマンドが長い\u003C\u002Fstrong>: パス指定やブランチ名の指定が毎回必要\u003C\u002Fli>\n\u003Cli>\u003Cstrong>環境ファイルのコピーが手動\u003C\u002Fstrong>: \u003Ccode>.env\u003C\u002Fcode> や \u003Ccode>.env.local\u003C\u002Fcode> を新しい worktree にコピーし忘れて動かない\u003C\u002Fli>\n\u003Cli>\u003Cstrong>依存パッケージのインストールが手動\u003C\u002Fstrong>: \u003Ccode>npm install\u003C\u002Fcode> や \u003Ccode>pnpm install\u003C\u002Fcode> を忘れてエラー\u003C\u002Fli>\n\u003Cli>\u003Cstrong>クリーンアップが面倒\u003C\u002Fstrong>: worktree 削除時に Docker コンテナの停止、ブランチ削除、\u003Ccode>git worktree prune\u003C\u002Fcode> を個別に実行\u003C\u002Fli>\n\u003C\u002Fol>\n\u003Cp>筆者もこれらの課題に対処するため、Taskfile.yaml（Go 製タスクランナー）で worktree 操作を定義して運用していた。しかし、プロジェクトごとに Taskfile を用意する必要があり、それ自体が負担になっていた。\u003C\u002Fp>\n\u003Chr>\n\u003Ch2 id=\"git-worktree-runner（gtr）とは\" tabindex=\"-1\">\u003Cspan class=\"h-no\" aria-hidden=\"true\">02\u003C\u002Fspan>git-worktree-runner（GTR）とは\u003C\u002Fh2>\n\u003Cp>\u003Cstrong>GTR は CodeRabbit が開発した git worktree の CLI ラッパーだ。\u003C\u002Fstrong> worktree の作成・削除・環境セットアップを 1 コマンドに集約し、AI ツールとの連携もビルトインで提供する。\u003C\u002Fp>\n\u003Ch3 id=\"coderabbit-が作った-worktree-cli-ラッパー\" tabindex=\"-1\">CodeRabbit が作った worktree CLI ラッパー\u003C\u002Fh3>\n\u003Cul>\n\u003Cli>\u003Cstrong>リポジトリ\u003C\u002Fstrong>: \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fcoderabbitai\u002Fgit-worktree-runner\" target=\"_blank\" rel=\"noopener noreferrer\">coderabbitai\u002Fgit-worktree-runner\u003C\u002Fa>\u003C\u002Fli>\n\u003Cli>\u003Cstrong>言語\u003C\u002Fstrong>: Bash（3.2+ 対応、macOS \u002F Linux \u002F Git Bash）\u003C\u002Fli>\n\u003Cli>\u003Cstrong>ライセンス\u003C\u002Fstrong>: Apache 2.0\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>CodeRabbit は AI によるプルリクエストレビューサービスで知られる企業だ。GTR は同社が AI 開発ワークフローの一環としてオープンソースで公開したツールになる。\u003C\u002Fp>\n\u003Ch3 id=\"gtr-でできること一覧\" tabindex=\"-1\">GTR でできること一覧\u003C\u002Fh3>\n\u003Cdiv class=\"tbl\" tabindex=\"0\" role=\"region\" aria-label=\"Table\">\u003Ctable>\n\u003Cthead>\n\u003Ctr>\n\u003Cth>機能\u003C\u002Fth>\n\u003Cth>説明\u003C\u002Fth>\n\u003C\u002Ftr>\n\u003C\u002Fthead>\n\u003Ctbody>\n\u003Ctr>\n\u003Ctd>\u003Ccode>git gtr new\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>worktree 作成 + env コピー + 依存インストール + フック実行\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>git gtr list\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>worktree 一覧表示\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>git gtr rm\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>worktree 削除 + クリーンアップ\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>git gtr clean\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>マージ済み worktree の一括削除\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>git gtr ai\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>既存 worktree で AI ツールを起動\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>.gtrconfig\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>リポジトリ単位の共通設定\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>フック\u003C\u002Ftd>\n\u003Ctd>\u003Ccode>postCreate\u003C\u002Fcode>, \u003Ccode>preRemove\u003C\u002Fcode>, \u003Ccode>postRemove\u003C\u002Fcode>, \u003Ccode>postCd\u003C\u002Fcode>\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>fzf 連携\u003C\u002Ftd>\n\u003Ctd>インタラクティブな worktree 選択（v2.4.0〜）\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003C\u002Ftbody>\n\u003C\u002Ftable>\u003C\u002Fdiv>\n\u003Chr>\n\u003Ch2 id=\"インストールと初期設定\" tabindex=\"-1\">\u003Cspan class=\"h-no\" aria-hidden=\"true\">03\u003C\u002Fspan>インストールと初期設定\u003C\u002Fh2>\n\u003Ch3 id=\"homebrew-でインストール\" tabindex=\"-1\">Homebrew でインストール\u003C\u002Fh3>\n\u003Cp>macOS \u002F Linux（Linuxbrew）の場合、2 コマンドで完了する。\u003C\u002Fp>\n\u003Cfigure class=\"code\" data-lang=\"bash\">\u003Cdiv class=\"code-bar\">\u003Cspan class=\"lang\">BASH\u003C\u002Fspan>\u003Cspan>2 LINES\u003C\u002Fspan>\u003Cbutton class=\"copy\" type=\"button\" data-cursor=\"COPY\">COPY\u003C\u002Fbutton>\u003C\u002Fdiv>\u003Cpre class=\"shiki site-code\" style=\"background-color:var(--shiki-background);color:var(--shiki-foreground)\" tabindex=\"0\">\u003Ccode class=\"language-bash\">\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--shiki-token-function)\">brew\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-string)\"> tap\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-string)\"> coderabbitai\u002Ftap\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--shiki-token-function)\">brew\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-string)\"> install\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-string)\"> git-gtr\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fcode>\u003C\u002Fpre>\n\u003C\u002Ffigure>\n\u003Cp>スクリプトでインストールする場合:\u003C\u002Fp>\n\u003Cfigure class=\"code\" data-lang=\"bash\">\u003Cdiv class=\"code-bar\">\u003Cspan class=\"lang\">BASH\u003C\u002Fspan>\u003Cspan>2 LINES\u003C\u002Fspan>\u003Cbutton class=\"copy\" type=\"button\" data-cursor=\"COPY\">COPY\u003C\u002Fbutton>\u003C\u002Fdiv>\u003Cpre class=\"shiki site-code\" style=\"background-color:var(--shiki-background);color:var(--shiki-foreground)\" tabindex=\"0\">\u003Ccode class=\"language-bash\">\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--shiki-token-function)\">git\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-string)\"> clone\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-string)\"> https:\u002F\u002Fgithub.com\u002Fcoderabbitai\u002Fgit-worktree-runner.git\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--shiki-token-function)\">cd\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-string)\"> git-worktree-runner\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-punctuation)\"> &#x26;&#x26;\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-function)\"> .\u002Finstall.sh\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fcode>\u003C\u002Fpre>\n\u003C\u002Ffigure>\n\u003Cp>インストール後、バージョンを確認する。\u003C\u002Fp>\n\u003Cfigure class=\"code\" data-lang=\"bash\">\u003Cdiv class=\"code-bar\">\u003Cspan class=\"lang\">BASH\u003C\u002Fspan>\u003Cspan>2 LINES\u003C\u002Fspan>\u003Cbutton class=\"copy\" type=\"button\" data-cursor=\"COPY\">COPY\u003C\u002Fbutton>\u003C\u002Fdiv>\u003Cpre class=\"shiki site-code\" style=\"background-color:var(--shiki-background);color:var(--shiki-foreground)\" tabindex=\"0\">\u003Ccode class=\"language-bash\">\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--shiki-token-function)\">git\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-string)\"> gtr\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-string)\"> --version\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--shiki-token-comment)\"># git-gtr version 2.4.0\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fcode>\u003C\u002Fpre>\n\u003C\u002Ffigure>\n\u003Ch3 id=\".gtrconfig-を書く\" tabindex=\"-1\">\u003Ccode>.gtrconfig\u003C\u002Fcode> を書く\u003C\u002Fh3>\n\u003Cp>リポジトリルートに \u003Ccode>.gtrconfig\u003C\u002Fcode> を配置すると、worktree 作成時の自動処理を定義できる。\u003C\u002Fp>\n\u003Cfigure class=\"code\" data-lang=\"ini\">\u003Cdiv class=\"code-bar\">\u003Cspan class=\"lang\">INI\u003C\u002Fspan>\u003Cspan>12 LINES\u003C\u002Fspan>\u003Cbutton class=\"copy\" type=\"button\" data-cursor=\"COPY\">COPY\u003C\u002Fbutton>\u003C\u002Fdiv>\u003Cpre class=\"shiki site-code\" style=\"background-color:var(--shiki-background);color:var(--shiki-foreground)\" tabindex=\"0\">\u003Ccode class=\"language-ini\">\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--shiki-foreground)\">[copy]\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--shiki-token-comment)\"># worktree 作成時に自動コピーするファイル（glob パターン）\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--shiki-token-keyword)\">include\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-keyword)\"> =\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-foreground)\"> **\u002F.env.example\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--shiki-foreground)\">[hooks]\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--shiki-token-comment)\"># worktree 作成後に自動実行するコマンド\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--shiki-token-keyword)\">postCreate\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-keyword)\"> =\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-foreground)\"> pnpm install\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--shiki-foreground)\">[defaults]\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--shiki-token-comment)\"># デフォルトのエディタと AI ツール\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--shiki-token-keyword)\">editor\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-keyword)\"> =\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-foreground)\"> cursor\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--shiki-token-keyword)\">ai\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-keyword)\"> =\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-foreground)\"> claude\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fcode>\u003C\u002Fpre>\n\u003C\u002Ffigure>\n\u003Cp>この設定ファイルをリポジトリにコミットすれば、チームメンバー全員が同じ worktree 設定を共有できる。\u003C\u002Fp>\n\u003Chr>\n\u003Ch2 id=\"基本的な使い方\" tabindex=\"-1\">\u003Cspan class=\"h-no\" aria-hidden=\"true\">04\u003C\u002Fspan>基本的な使い方\u003C\u002Fh2>\n\u003Ch3 id=\"worktree-を作る（git-gtr-new）\" tabindex=\"-1\">worktree を作る（git gtr new）\u003C\u002Fh3>\n\u003Cfigure class=\"code\" data-lang=\"bash\">\u003Cdiv class=\"code-bar\">\u003Cspan class=\"lang\">BASH\u003C\u002Fspan>\u003Cspan>11 LINES\u003C\u002Fspan>\u003Cbutton class=\"copy\" type=\"button\" data-cursor=\"COPY\">COPY\u003C\u002Fbutton>\u003C\u002Fdiv>\u003Cpre class=\"shiki site-code\" style=\"background-color:var(--shiki-background);color:var(--shiki-foreground)\" tabindex=\"0\">\u003Ccode class=\"language-bash\">\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--shiki-token-comment)\"># ブランチ名を指定して worktree 作成\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--shiki-token-function)\">git\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-string)\"> gtr\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-string)\"> new\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-string)\"> my-feature\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--shiki-token-comment)\"># ベースブランチを指定\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--shiki-token-function)\">git\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-string)\"> gtr\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-string)\"> new\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-string)\"> my-feature\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-string)\"> --base\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-string)\"> develop\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--shiki-token-comment)\"># 作成と同時にエディタを開く\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--shiki-token-function)\">git\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-string)\"> gtr\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-string)\"> new\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-string)\"> my-feature\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-string)\"> --editor\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--shiki-token-comment)\"># 作成と同時に AI ツールを起動\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--shiki-token-function)\">git\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-string)\"> gtr\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-string)\"> new\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-string)\"> my-feature\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-string)\"> --ai\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fcode>\u003C\u002Fpre>\n\u003C\u002Ffigure>\n\u003Cp>\u003Ccode>git gtr new\u003C\u002Fcode> を実行すると、以下が自動で行われる:\u003C\u002Fp>\n\u003Col>\n\u003Cli>\u003Ccode>git worktree add\u003C\u002Fcode> でブランチと作業ディレクトリを作成\u003C\u002Fli>\n\u003Cli>\u003Ccode>.gtrconfig\u003C\u002Fcode> の \u003Ccode>[copy]\u003C\u002Fcode> に基づきファイルをコピー\u003C\u002Fli>\n\u003Cli>\u003Ccode>[hooks] postCreate\u003C\u002Fcode> を実行（例: \u003Ccode>pnpm install\u003C\u002Fcode>）\u003C\u002Fli>\n\u003Cli>\u003Ccode>--editor\u003C\u002Fcode> 指定時はエディタを起動\u003C\u002Fli>\n\u003Cli>\u003Ccode>--ai\u003C\u002Fcode> 指定時は AI ツールを起動\u003C\u002Fli>\n\u003C\u002Fol>\n\u003Ch3 id=\"一覧と切り替え（git-gtr-list-\u002F-cd）\" tabindex=\"-1\">一覧と切り替え（git gtr list \u002F cd）\u003C\u002Fh3>\n\u003Cfigure class=\"code\" data-lang=\"bash\">\u003Cdiv class=\"code-bar\">\u003Cspan class=\"lang\">BASH\u003C\u002Fspan>\u003Cspan>5 LINES\u003C\u002Fspan>\u003Cbutton class=\"copy\" type=\"button\" data-cursor=\"COPY\">COPY\u003C\u002Fbutton>\u003C\u002Fdiv>\u003Cpre class=\"shiki site-code\" style=\"background-color:var(--shiki-background);color:var(--shiki-foreground)\" tabindex=\"0\">\u003Ccode class=\"language-bash\">\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--shiki-token-comment)\"># worktree 一覧\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--shiki-token-function)\">git\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-string)\"> gtr\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-string)\"> list\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--shiki-token-comment)\"># fzf でインタラクティブに選択して移動\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--shiki-token-function)\">git\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-string)\"> gtr\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-string)\"> cd\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fcode>\u003C\u002Fpre>\n\u003C\u002Ffigure>\n\u003Ch3 id=\"worktree-を消す（git-gtr-rm-\u002F-clean）\" tabindex=\"-1\">worktree を消す（git gtr rm \u002F clean）\u003C\u002Fh3>\n\u003Cfigure class=\"code\" data-lang=\"bash\">\u003Cdiv class=\"code-bar\">\u003Cspan class=\"lang\">BASH\u003C\u002Fspan>\u003Cspan>5 LINES\u003C\u002Fspan>\u003Cbutton class=\"copy\" type=\"button\" data-cursor=\"COPY\">COPY\u003C\u002Fbutton>\u003C\u002Fdiv>\u003Cpre class=\"shiki site-code\" style=\"background-color:var(--shiki-background);color:var(--shiki-foreground)\" tabindex=\"0\">\u003Ccode class=\"language-bash\">\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--shiki-token-comment)\"># 指定した worktree を削除\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--shiki-token-function)\">git\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-string)\"> gtr\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-string)\"> rm\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-string)\"> my-feature\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--shiki-token-comment)\"># マージ済み worktree を一括削除\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--shiki-token-function)\">git\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-string)\"> gtr\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-string)\"> clean\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-string)\"> --merged\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fcode>\u003C\u002Fpre>\n\u003C\u002Ffigure>\n\u003Cp>\u003Ccode>git gtr rm\u003C\u002Fcode> は \u003Ccode>[hooks] preRemove\u003C\u002Fcode> → worktree 削除 → ブランチ削除 → \u003Ccode>git worktree prune\u003C\u002Fcode> → \u003Ccode>[hooks] postRemove\u003C\u002Fcode> を一括で処理する。\u003C\u002Fp>\n\u003Chr>\n\u003Ch2 id=\"【体験談】taskfile.yaml-から-gtr-に移行してみた\" tabindex=\"-1\">\u003Cspan class=\"h-no\" aria-hidden=\"true\">05\u003C\u002Fspan>【体験談】Taskfile.yaml から GTR に移行してみた\u003C\u002Fh2>\n\u003Ch3 id=\"before-—-taskfile.worktree.yml-での運用\" tabindex=\"-1\">Before — Taskfile.worktree.yml での運用\u003C\u002Fh3>\n\u003Cp>以前は Go 製タスクランナーの \u003Ca href=\"https:\u002F\u002Ftaskfile.dev\u002F\" target=\"_blank\" rel=\"noopener noreferrer\">Task\u003C\u002Fa> を使い、プロジェクトごとに \u003Ccode>Taskfile.worktree.yml\u003C\u002Fcode> を書いて worktree を管理していた。\u003C\u002Fp>\n\u003Cfigure class=\"code\" data-lang=\"yaml\">\u003Cdiv class=\"code-bar\">\u003Cspan class=\"lang\">YAML\u003C\u002Fspan>\u003Cspan>38 LINES\u003C\u002Fspan>\u003Cbutton class=\"copy\" type=\"button\" data-cursor=\"COPY\">COPY\u003C\u002Fbutton>\u003C\u002Fdiv>\u003Cpre class=\"shiki site-code\" style=\"background-color:var(--shiki-background);color:var(--shiki-foreground)\" tabindex=\"0\">\u003Ccode class=\"language-yaml\">\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--shiki-token-comment)\"># Taskfile.worktree.yml（実際に使っていた定義）\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--shiki-token-keyword)\">version\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-keyword)\">:\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-string-expression)\"> \"3\"\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--shiki-token-keyword)\">vars\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-keyword)\">:\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--shiki-token-keyword)\">  MAIN_DIR\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-keyword)\">:\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-string-expression)\"> \"{{.TASKFILE_DIR}}\u002F..\"\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--shiki-token-keyword)\">  WK_DIR\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-keyword)\">:\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-string-expression)\"> \"{{.MAIN_DIR}}\u002F..\u002Fwk\"\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--shiki-token-keyword)\">  SHARED_ENV\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-keyword)\">:\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-string-expression)\"> \"{{.MAIN_DIR}}\u002F..\u002F.env.shared\"\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--shiki-token-keyword)\">tasks\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-keyword)\">:\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--shiki-token-keyword)\">  add\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-keyword)\">:\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--shiki-token-keyword)\">    desc\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-keyword)\">:\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-string-expression)\"> 新しいworktreeを作成（NAME=auth BASE=develop）\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--shiki-token-keyword)\">    dir\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-keyword)\">:\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-string-expression)\"> \"{{.MAIN_DIR}}\"\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--shiki-token-keyword)\">    requires\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-keyword)\">:\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--shiki-token-keyword)\">      vars\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-keyword)\">:\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-foreground)\"> [\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-string)\">NAME\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-foreground)\">]\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--shiki-token-keyword)\">    vars\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-keyword)\">:\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--shiki-token-keyword)\">      BASE\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-keyword)\">:\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-string-expression)\"> '{{.BASE | default \"develop\"}}'\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--shiki-token-keyword)\">    cmds\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-keyword)\">:\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--shiki-foreground)\">      - \u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-string-expression)\">git fetch origin\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--shiki-foreground)\">      - \u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-string-expression)\">git worktree add -b \"{{.NAME}}\" \"{{.WK_DIR}}\u002F{{.NAME}}\" \"{{.BASE}}\"\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--shiki-foreground)\">      - \u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-string-expression)\">.\u002Fscripts\u002Fworktree-env.sh \"{{.WK_DIR}}\u002F{{.NAME}}\" \"{{.SHARED_ENV}}\"\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--shiki-foreground)\">      - \u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-keyword)\">task\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-keyword)\">:\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-string-expression)\"> wk:install-wk\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--shiki-token-keyword)\">        vars\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-keyword)\">:\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--shiki-token-keyword)\">          NAME\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-keyword)\">:\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-string-expression)\"> \"{{.NAME}}\"\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--shiki-foreground)\">      - \u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-keyword)\">cmd\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-keyword)\">:\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-string-expression)\"> mise trust \"{{.WK_PATH}}\u002Fmise.toml\"\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--shiki-token-keyword)\">  remove\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-keyword)\">:\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--shiki-token-keyword)\">    desc\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-keyword)\">:\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-string-expression)\"> worktreeを削除（NAME=auth）\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--shiki-token-keyword)\">    dir\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-keyword)\">:\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-string-expression)\"> \"{{.MAIN_DIR}}\"\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--shiki-token-keyword)\">    requires\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-keyword)\">:\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--shiki-token-keyword)\">      vars\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-keyword)\">:\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-foreground)\"> [\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-string)\">NAME\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-foreground)\">]\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--shiki-token-keyword)\">    cmds\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-keyword)\">:\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--shiki-foreground)\">      - \u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-keyword)\">|\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--shiki-token-string)\">        if [ -d \"{{.WK_DIR}}\u002F{{.NAME}}\" ]; then\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--shiki-token-string)\">          (cd \"{{.WK_DIR}}\u002F{{.NAME}}\" &#x26;&#x26; docker compose down --volumes --remove-orphans)\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--shiki-token-string)\">        fi\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--shiki-foreground)\">      - \u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-string-expression)\">git worktree remove \"{{.WK_DIR}}\u002F{{.NAME}}\"\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--shiki-foreground)\">      - \u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-string-expression)\">git worktree prune\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--shiki-foreground)\">      - \u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-string-expression)\">git branch -D \"{{.NAME}}\"\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fcode>\u003C\u002Fpre>\n\u003C\u002Ffigure>\n\u003Cp>この運用で困っていたこと:\u003C\u002Fp>\n\u003Cul>\n\u003Cli>\u003Cstrong>プロジェクトごとに Taskfile を書く必要がある\u003C\u002Fstrong>: 新しいリポジトリを始めるたびに、パス構成や依存インストール方法に合わせた定義が必要\u003C\u002Fli>\n\u003Cli>\u003Cstrong>env コピーのスクリプトも別途管理\u003C\u002Fstrong>: \u003Ccode>worktree-env.sh\u003C\u002Fcode> を各プロジェクトに配置\u003C\u002Fli>\n\u003Cli>\u003Cstrong>動作確認のコスト\u003C\u002Fstrong>: Taskfile を書いた後、実際に worktree を作って正しく動くか毎回テスト\u003C\u002Fli>\n\u003Cli>\u003Cstrong>チーム共有が難しい\u003C\u002Fstrong>: Taskfile のテンプレート構文に慣れていないメンバーへの説明コスト\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch3 id=\"after-—-gtr-での運用\" tabindex=\"-1\">After — GTR での運用\u003C\u002Fh3>\n\u003Cp>GTR に移行後は \u003Ccode>.gtrconfig\u003C\u002Fcode> を 1 ファイル書くだけで完了する。\u003C\u002Fp>\n\u003Cfigure class=\"code\" data-lang=\"ini\">\u003Cdiv class=\"code-bar\">\u003Cspan class=\"lang\">INI\u003C\u002Fspan>\u003Cspan>11 LINES\u003C\u002Fspan>\u003Cbutton class=\"copy\" type=\"button\" data-cursor=\"COPY\">COPY\u003C\u002Fbutton>\u003C\u002Fdiv>\u003Cpre class=\"shiki site-code\" style=\"background-color:var(--shiki-background);color:var(--shiki-foreground)\" tabindex=\"0\">\u003Ccode class=\"language-ini\">\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--shiki-token-comment)\"># .gtrconfig\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--shiki-foreground)\">[copy]\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--shiki-token-keyword)\">include\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-keyword)\"> =\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-foreground)\"> **\u002F.env.example\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--shiki-token-keyword)\">include\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-keyword)\"> =\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-foreground)\"> **\u002F.env.shared\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--shiki-foreground)\">[hooks]\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--shiki-token-keyword)\">postCreate\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-keyword)\"> =\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-foreground)\"> pnpm install &#x26;&#x26; mise trust mise.toml\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--shiki-token-keyword)\">preRemove\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-keyword)\"> =\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-foreground)\"> docker compose down --volumes --remove-orphans\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--shiki-foreground)\">[defaults]\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--shiki-token-keyword)\">ai\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-keyword)\"> =\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-foreground)\"> claude\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fcode>\u003C\u002Fpre>\n\u003C\u002Ffigure>\n\u003Cp>実行コマンド:\u003C\u002Fp>\n\u003Cfigure class=\"code\" data-lang=\"bash\">\u003Cdiv class=\"code-bar\">\u003Cspan class=\"lang\">BASH\u003C\u002Fspan>\u003Cspan>5 LINES\u003C\u002Fspan>\u003Cbutton class=\"copy\" type=\"button\" data-cursor=\"COPY\">COPY\u003C\u002Fbutton>\u003C\u002Fdiv>\u003Cpre class=\"shiki site-code\" style=\"background-color:var(--shiki-background);color:var(--shiki-foreground)\" tabindex=\"0\">\u003Ccode class=\"language-bash\">\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--shiki-token-comment)\"># Before（Taskfile）\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--shiki-token-function)\">task\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-string)\"> wk:add\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-string)\"> NAME=my-feature\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-string)\"> BASE=develop\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--shiki-token-comment)\"># After（GTR）\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--shiki-token-function)\">git\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-string)\"> gtr\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-string)\"> new\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-string)\"> my-feature\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-string)\"> --base\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-string)\"> develop\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fcode>\u003C\u002Fpre>\n\u003C\u002Ffigure>\n\u003Ch3 id=\"比較まとめ\" tabindex=\"-1\">比較まとめ\u003C\u002Fh3>\n\u003Cdiv class=\"tbl\" tabindex=\"0\" role=\"region\" aria-label=\"Table\">\u003Ctable>\n\u003Cthead>\n\u003Ctr>\n\u003Cth>項目\u003C\u002Fth>\n\u003Cth>Taskfile.yaml\u003C\u002Fth>\n\u003Cth>GTR（.gtrconfig）\u003C\u002Fth>\n\u003C\u002Ftr>\n\u003C\u002Fthead>\n\u003Ctbody>\n\u003Ctr>\n\u003Ctd>セットアップ\u003C\u002Ftd>\n\u003Ctd>プロジェクトごとに YAML を作成\u003C\u002Ftd>\n\u003Ctd>\u003Ccode>.gtrconfig\u003C\u002Fcode> 1 ファイル\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>env コピー\u003C\u002Ftd>\n\u003Ctd>専用シェルスクリプトが必要\u003C\u002Ftd>\n\u003Ctd>glob パターンで宣言的に指定\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>依存インストール\u003C\u002Ftd>\n\u003Ctd>タスク定義内に記述\u003C\u002Ftd>\n\u003Ctd>\u003Ccode>postCreate\u003C\u002Fcode> フックに記述\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>削除時クリーンアップ\u003C\u002Ftd>\n\u003Ctd>条件分岐を含む複雑な定義\u003C\u002Ftd>\n\u003Ctd>\u003Ccode>preRemove\u003C\u002Fcode> フックに 1 行\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>AI ツール連携\u003C\u002Ftd>\n\u003Ctd>非対応（別途起動）\u003C\u002Ftd>\n\u003Ctd>\u003Ccode>--ai\u003C\u002Fcode> フラグでビルトイン\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>学習コスト\u003C\u002Ftd>\n\u003Ctd>Taskfile テンプレート構文\u003C\u002Ftd>\n\u003Ctd>git config ライクな INI 形式\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>ポータビリティ\u003C\u002Ftd>\n\u003Ctd>プロジェクトに Task のインストールが必要\u003C\u002Ftd>\n\u003Ctd>Bash のみ（追加依存なし）\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003C\u002Ftbody>\n\u003C\u002Ftable>\u003C\u002Fdiv>\n\u003Cp>結論として、GTR に移行したことで「プロジェクトごとに定義ファイルを書く」という作業自体がなくなった。新しいリポジトリでも \u003Ccode>.gtrconfig\u003C\u002Fcode> を数行書けば、すぐに worktree 運用を開始できる。\u003C\u002Fp>\n\u003Chr>\n\u003Ch2 id=\"ai-並列開発への活用\" tabindex=\"-1\">\u003Cspan class=\"h-no\" aria-hidden=\"true\">06\u003C\u002Fspan>AI 並列開発への活用\u003C\u002Fh2>\n\u003Ch3 id=\"claude-code-×-gtr-で並列セッション\" tabindex=\"-1\">Claude Code × GTR で並列セッション\u003C\u002Fh3>\n\u003Cp>GTR の最大の特徴の一つが、AI ツールとのビルトイン連携だ。\u003Ccode>.gtrconfig\u003C\u002Fcode> で \u003Ccode>ai = claude\u003C\u002Fcode> を設定すれば、worktree 作成時に Claude Code セッションを同時起動できる。\u003C\u002Fp>\n\u003Cfigure class=\"code\" data-lang=\"bash\">\u003Cdiv class=\"code-bar\">\u003Cspan class=\"lang\">BASH\u003C\u002Fspan>\u003Cspan>5 LINES\u003C\u002Fspan>\u003Cbutton class=\"copy\" type=\"button\" data-cursor=\"COPY\">COPY\u003C\u002Fbutton>\u003C\u002Fdiv>\u003Cpre class=\"shiki site-code\" style=\"background-color:var(--shiki-background);color:var(--shiki-foreground)\" tabindex=\"0\">\u003Ccode class=\"language-bash\">\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--shiki-token-comment)\"># worktree を作ると同時に Claude Code を起動\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--shiki-token-function)\">git\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-string)\"> gtr\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-string)\"> new\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-string)\"> auth-feature\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-string)\"> --ai\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--shiki-token-comment)\"># 既存の worktree で Claude Code を起動\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--shiki-token-function)\">git\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-string)\"> gtr\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-string)\"> ai\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-string)\"> auth-feature\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fcode>\u003C\u002Fpre>\n\u003C\u002Ffigure>\n\u003Cp>これにより、以下のような並列開発ワークフローが実現する:\u003C\u002Fp>\n\u003Col>\n\u003Cli>\u003Ccode>git gtr new auth --ai\u003C\u002Fcode> → 認証機能を Claude Code に任せる\u003C\u002Fli>\n\u003Cli>\u003Ccode>git gtr new ui-fix --ai\u003C\u002Fcode> → UI 修正を別の Claude Code セッションに任せる\u003C\u002Fli>\n\u003Cli>メインの worktree では自分がコアロジックを実装\u003C\u002Fli>\n\u003Cli>各セッションが完了したら PR を作成してマージ\u003C\u002Fli>\n\u003C\u002Fol>\n\u003Ch3 id=\"ワークフロー例\" tabindex=\"-1\">ワークフロー例\u003C\u002Fh3>\n\u003Cfigure class=\"code\" data-lang=\"bash\">\u003Cdiv class=\"code-bar\">\u003Cspan class=\"lang\">BASH\u003C\u002Fspan>\u003Cspan>10 LINES\u003C\u002Fspan>\u003Cbutton class=\"copy\" type=\"button\" data-cursor=\"COPY\">COPY\u003C\u002Fbutton>\u003C\u002Fdiv>\u003Cpre class=\"shiki site-code\" style=\"background-color:var(--shiki-background);color:var(--shiki-foreground)\" tabindex=\"0\">\u003Ccode class=\"language-bash\">\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--shiki-token-comment)\"># 1. 3 つの worktree を作成し、それぞれ AI セッションを起動\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--shiki-token-function)\">git\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-string)\"> gtr\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-string)\"> new\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-string)\"> feature-auth\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-string)\"> --ai\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--shiki-token-function)\">git\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-string)\"> gtr\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-string)\"> new\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-string)\"> fix-pagination\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-string)\"> --ai\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--shiki-token-function)\">git\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-string)\"> gtr\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-string)\"> new\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-string)\"> refactor-api\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-string)\"> --ai\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--shiki-token-comment)\"># 2. 一覧で状況確認\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--shiki-token-function)\">git\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-string)\"> gtr\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-string)\"> list\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--shiki-token-comment)\"># 3. 作業完了後、マージ済み worktree を一括クリーンアップ\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:var(--shiki-token-function)\">git\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-string)\"> gtr\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-string)\"> clean\u003C\u002Fspan>\u003Cspan style=\"color:var(--shiki-token-string)\"> --merged\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fcode>\u003C\u002Fpre>\n\u003C\u002Ffigure>\n\u003Cp>Claude Code の worktree 対応（\u003Ccode>--worktree\u003C\u002Fcode> フラグや Agent ツールの \u003Ccode>isolation: &quot;worktree&quot;\u003C\u002Fcode> オプション）と組み合わせることで、AI エージェントが安全に隔離された環境で作業できる。GTR はその「環境を用意する」部分の手間を省いてくれるツールだ。\u003C\u002Fp>\n\u003Chr>\n\u003Ch2 id=\"まとめ-—-worktree-運用の「面倒」を消す\" tabindex=\"-1\">\u003Cspan class=\"h-no\" aria-hidden=\"true\">07\u003C\u002Fspan>まとめ — worktree 運用の「面倒」を消す\u003C\u002Fh2>\n\u003Cp>git-worktree-runner（GTR）は、git worktree の「便利だけど面倒」を解消するツールだ。\u003C\u002Fp>\n\u003Cul>\n\u003Cli>\u003Cstrong>1 コマンドで完結\u003C\u002Fstrong>: \u003Ccode>git gtr new\u003C\u002Fcode> だけで worktree 作成 + env コピー + 依存インストール\u003C\u002Fli>\n\u003Cli>\u003Cstrong>設定は \u003Ccode>.gtrconfig\u003C\u002Fcode> に集約\u003C\u002Fstrong>: プロジェクトごとのスクリプト管理が不要に\u003C\u002Fli>\n\u003Cli>\u003Cstrong>AI 連携がビルトイン\u003C\u002Fstrong>: \u003Ccode>--ai\u003C\u002Fcode> フラグで Claude Code 等を即起動\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>以前は Taskfile.yaml でプロジェクトごとに定義を書いていたが、GTR への移行で worktree 運用のハードルが大幅に下がった。AI による並列開発がますます一般的になる中、worktree をストレスなく使えるようにしておくことは、開発効率に直結する。\u003C\u002Fp>\n\u003Ch3 id=\"gtr-導入チェックリスト\" tabindex=\"-1\">GTR 導入チェックリスト\u003C\u002Fh3>\n\u003Cul>\n\u003Cli>[ ] \u003Ccode>brew tap coderabbitai\u002Ftap &amp;&amp; brew install git-gtr\u003C\u002Fcode> でインストール\u003C\u002Fli>\n\u003Cli>[ ] \u003Ccode>git gtr --version\u003C\u002Fcode> でバージョン確認\u003C\u002Fli>\n\u003Cli>[ ] リポジトリに \u003Ccode>.gtrconfig\u003C\u002Fcode> を作成（copy \u002F hooks \u002F defaults）\u003C\u002Fli>\n\u003Cli>[ ] \u003Ccode>git gtr new test-branch\u003C\u002Fcode> で動作確認\u003C\u002Fli>\n\u003Cli>[ ] \u003Ccode>git gtr rm test-branch\u003C\u002Fcode> で削除確認\u003C\u002Fli>\n\u003Cli>[ ] （任意）\u003Ccode>git gtr config set gtr.ai.default claude\u003C\u002Fcode> で AI ツール設定\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Chr>\n\u003Ch2 id=\"faq\" tabindex=\"-1\">\u003Cspan class=\"h-no\" aria-hidden=\"true\">08\u003C\u002Fspan>FAQ\u003C\u002Fh2>\n\u003Cp>\u003Cstrong>Q: git-worktree-runner は git worktree の代替ですか？\u003C\u002Fstrong>\u003Cbr>\nA: 代替ではなく、git worktree コマンドのラッパーです。内部で \u003Ccode>git worktree add\u003C\u002Fcode> \u002F \u003Ccode>git worktree remove\u003C\u002Fcode> を呼んでおり、追加の環境設定やフック実行を自動化します。\u003C\u002Fp>\n\u003Cp>\u003Cstrong>Q: Windows でも使えますか？\u003C\u002Fstrong>\u003Cbr>\nA: Git Bash または WSL 環境で動作します。Bash 3.2 以上が必要なため、PowerShell ネイティブでは使用できません。WSL での利用を推奨します。\u003C\u002Fp>\n\u003Cp>\u003Cstrong>Q: \u003Ccode>.gtrconfig\u003C\u002Fcode> はリポジトリにコミットすべきですか？\u003C\u002Fstrong>\u003Cbr>\nA: チーム開発であればコミット推奨です。メンバー全員が同じ worktree 設定（env コピー、フック）を共有できます。個人設定は \u003Ccode>git config --local\u003C\u002Fcode> で上書き可能です。\u003C\u002Fp>\n\u003Cp>\u003Cstrong>Q: 既存の worktree がある状態で GTR を導入できますか？\u003C\u002Fstrong>\u003Cbr>\nA: はい。GTR は \u003Ccode>git worktree list\u003C\u002Fcode> の出力をベースにしているため、既存の worktree もそのまま管理対象になります。\u003Ccode>.gtrconfig\u003C\u002Fcode> を追加するだけで運用を開始できます。\u003C\u002Fp>\n\u003Cp>\u003Cstrong>Q: Claude Code 以外の AI ツールにも対応していますか？\u003C\u002Fstrong>\u003Cbr>\nA: Cursor, VS Code, Aider, Codex, Gemini, Copilot 等のアダプターがビルトインで用意されています。\u003Ccode>git gtr config set gtr.ai.default &lt;ツール名&gt;\u003C\u002Fcode> で切り替え可能です。\u003C\u002Fp>\n",[462,465,468,470,473,476,479,481,484,487,489,492,495,498,501,504,507,509,512,515,517,520,523],{"level":426,"id":463,"text":464},"git-worktree、便利だけど運用が面倒だった","git worktree、便利だけど運用が面倒だった",{"level":419,"id":466,"text":467},"git-worktree-の基本（30秒でおさらい）","git worktree の基本（30秒でおさらい）",{"level":419,"id":469,"text":469},"素のコマンドで困ること",{"level":426,"id":471,"text":472},"git-worktree-runner（gtr）とは","git-worktree-runner（GTR）とは",{"level":419,"id":474,"text":475},"coderabbit-が作った-worktree-cli-ラッパー","CodeRabbit が作った worktree CLI ラッパー",{"level":419,"id":477,"text":478},"gtr-でできること一覧","GTR でできること一覧",{"level":426,"id":480,"text":480},"インストールと初期設定",{"level":419,"id":482,"text":483},"homebrew-でインストール","Homebrew でインストール",{"level":419,"id":485,"text":486},".gtrconfig-を書く",".gtrconfig を書く",{"level":426,"id":488,"text":488},"基本的な使い方",{"level":419,"id":490,"text":491},"worktree-を作る（git-gtr-new）","worktree を作る（git gtr new）",{"level":419,"id":493,"text":494},"一覧と切り替え（git-gtr-list-\u002F-cd）","一覧と切り替え（git gtr list \u002F cd）",{"level":419,"id":496,"text":497},"worktree-を消す（git-gtr-rm-\u002F-clean）","worktree を消す（git gtr rm \u002F clean）",{"level":426,"id":499,"text":500},"【体験談】taskfile.yaml-から-gtr-に移行してみた","【体験談】Taskfile.yaml から GTR に移行してみた",{"level":419,"id":502,"text":503},"before-—-taskfile.worktree.yml-での運用","Before — Taskfile.worktree.yml での運用",{"level":419,"id":505,"text":506},"after-—-gtr-での運用","After — GTR での運用",{"level":419,"id":508,"text":508},"比較まとめ",{"level":426,"id":510,"text":511},"ai-並列開発への活用","AI 並列開発への活用",{"level":419,"id":513,"text":514},"claude-code-×-gtr-で並列セッション","Claude Code × GTR で並列セッション",{"level":419,"id":516,"text":516},"ワークフロー例",{"level":426,"id":518,"text":519},"まとめ-—-worktree-運用の「面倒」を消す","まとめ — worktree 運用の「面倒」を消す",{"level":419,"id":521,"text":522},"gtr-導入チェックリスト","GTR 導入チェックリスト",{"level":426,"id":524,"text":525},"faq","FAQ",{"slug":209,"title":210,"description":211,"publishedAt":212,"updatedAt":212,"category":527,"tags":528,"thumbnail":532},{"name":11,"slug":12},[529,530,531],{"name":216,"slug":217},{"name":98,"slug":99},{"name":220,"slug":220},{"url":222,"description":104},{"slug":180,"title":181,"description":182,"publishedAt":183,"updatedAt":184,"category":534,"tags":535,"thumbnail":539},{"name":49,"slug":50},[536,537,538],{"name":53,"slug":53},{"name":25,"slug":26},{"name":190,"slug":190},{"url":192,"description":104},[541,547,554],{"slug":44,"title":45,"description":46,"publishedAt":47,"updatedAt":47,"category":542,"tags":543,"thumbnail":16},{"name":49,"slug":50},[544,545,546],{"name":53,"slug":53},{"name":55,"slug":56},{"name":58,"slug":59},{"slug":61,"title":62,"description":63,"publishedAt":64,"updatedAt":64,"category":548,"tags":549,"thumbnail":16},{"name":49,"slug":50},[550,551,552,553],{"name":58,"slug":59},{"name":69,"slug":69},{"name":71,"slug":71},{"name":73,"slug":73},{"slug":75,"title":76,"description":77,"publishedAt":78,"updatedAt":78,"category":555,"tags":556,"thumbnail":16},{"name":49,"slug":50},[557,558,559],{"name":58,"slug":59},{"name":83,"slug":84},{"name":86,"slug":86},1793725977501]