⚒️

GitHub Issueを20並列で捌くためのターミナルを開発した

に公開

ターミナルマルチプレクサghmuxを作ってみた

https://github.com/maito1201/ghmux

GitHubにPRを作成する前提でIssueのリンク、PRのステータスを常に表示するターミナル、ghmuxを作りました。
基本的な発想はバグIssueを一気に20個修正しようとして脳が限界を迎えた際の思いつきです。
cmuxと同じ技術選定にすることをコンセプトに、libghosttyを使ってswiftアプリケーションを開発してみたものです。
あくまでもコンセプトだけをパクっているのでcmuxのフォークではなく、内蔵ブラウザ非搭載など、cmuxほどリッチな作り込みはしていません。

MACユーザーであればリリースページからダウンロードしてすぐに利用可能です。
配布形式はdmgです、ほぼ自分しか使わない想定なので署名などはしていません。

ghmuxで解決したい課題

どのClaudeに何やらせているかわからない問題

最も解決したい課題はこれです。
AI前提でのタスク管理は諸説ありますが、自分は未だにGitHubを活用しています。
しかし10並列くらいでIssueを捌いていると、何か調べ物をしたり、Slackを見ている間に「こいつ何の仕事してたんだっけ...」と記憶が消し飛び、ClaudeのログからIssueやPRを発掘する、という無駄な仕事が発生するようになりました。

そこで、ターミナルのペインを開くと、各ペインの上部にIssueないしPRのリンクを貼っておく、
というものがghmuxの基本コンセプトです。

最近のAIの性能だとClaude1体に複数Issue全部やっておいて、と指示を投げてもワークフローを駆使して難なくこなせてしまったりしますが、1Issue1Claudeくらいの粒度でもう少し丁寧に面倒を見てあげたい人向けのツールです。

CI通過するまでのケアを自動化する

ghmuxは、Issue, PRのリンクを貼り付けると自動でClaudeが起動する
PRのCIが落ちる、PASSする、PRがコンフリクトする、といったイベント毎にClaudeに自動で指示を流し込む、
作成されたPRのCIが通っているかどうかをアイコンで可視化する、
という機能を作っています。

エンジニアの仕事はいろいろあり、昨今のAI時代は一層付加価値が求められますが、仕事の何割かはIssueを拾ってきて、CIを通して、マージする、という作業が占めているはずです。
最近はClaude自身もCIが無事にPASSするかを監視するような工夫を行いつつありますが、PRをマージするまでのプロセスをある程度自動化する事で、人間が「本当は残タスクがあるのに停止していないか」とClaudeの動きを監視するコストを下げています。
そういった定期監視でトークンを消費するのは勿体無いよね、という思想もあります。

各種のイベント毎にどのような指示を出すかは設定で柔軟に変更できます。
Issueをghmuxに貼り付けた際には、Issueをどのように読んで、どのスキルを使って開発するか、CIが落ちたらどのような命令を出すか、といった指示をghmuxに設定しておきます。
Issueを読めばどのような開発作業をするべきかが自明になるまでIssueを記載しておき、ghmuxにIssueを投げるだけで、あとはPRが作成されるのを待つ、というスタイルで開発しています。

やるべきIssueを把握する

ターミナルのサイドバーに、自分にアサインされた未処理Issueを表示する機能を作っています。
アサイン済みタスクを思い出す手間を最小化しています。

上記の仕事を自動化する

自分はあまりこの機能を使っていませんが、tmuxのように別ペインに指示を送る機能、処理するIssueを指定して新ペインを作成する機能をCLIとして提供しています。

ghmux pane new --issue "https://github/repo/issues/999"

詳細は skillとして提供しています。

抱えているタスク量次第では、親Claudeにghmuxの機能を使ってIssue全部終わらせて、と指示するだけで、各Issueの進行状況を可視化しつつ、日々の仕事が終わるかもしれません。
究極的には自分の全てを自動化してみたいものです。

Discussion