前提
マインドマップのmacOSネイティブアプリケーションを作っています。
意識していること
- 決定論的な操作はスクリプトにして、Codexに使ってもらう。
- 判断基準はMarkdownに書き、Codexに判断してもらう。
流れ
- 新しい機能を思いつく
- 自分で仕様の方針を決める(ときにはCodexとアイデア壁打ち)
- 自分で仕様の各ケースを思いつく限り列挙する
grill-with-docsスキルを使って仕様詰めを行う- 詰め切ったら
to-ticketsスキルとgroup-featureスキルでGitHubのイシューにする(※1) - イシューの内容・粒度をレビューする(※1)
- レビュー内容を反映したイシューを作ってもらう(※1)
- 初手のissueを
implementスキルで専用ワークツリーを作って実装開始(※2) - Implementからレビュー用スキルを読んでレビュー&修正(※2)
- ユニットテスト(※3)
- E2Eテスト(※3)
- Swift Format, SwiftLint, コードの重複確認(jscpd), 未使用コード確認(Perriphery)
- 追加した機能の打鍵(※4)
- 指摘があれば修正。なければCommit → Push → PRを作る(※5)
- @codex review を投げて15分ごと(最大10回)に指摘を確認するようCodexに監視依頼(※5)
- 指摘があれば自動で修正を開始→テスト→コミット→プッシュ→@codex review を投稿→監視(※5)
- 指摘が仕様の変更に伴う場合は開発者に判断を委ねる(※5)
- 指摘がなくなるまで繰り返す(※5)
- 指摘がなくなったら、変更内容に関する資料を投稿(※5)
- 打鍵をしてからマージ(※4)
- ワークツリーを閉じる(機能開発のために作成されたビルドやキャッシュ関連も削除する)(※6)
- 次の issueを implement開始(※2)
工夫
※1 Issueでプロジェクト管理をする
group-featureは、to-tickets で作ったIssueをSub Issueとしてまとめた親Issueを作るスキル。親Issueにはfeatureラベルをつけるため、GitHub のProjectでラベル絞り込みをすることで、機能単位と作業単位で分けて進捗管理ができる
Feature Issue = 機能管理

Sub issue = 作業単位

※2 実装を進めるとき
依存関係のないIssueは並列で実装する
to-ticketsは依存関係でIssueを分割してくれるので、依存がなければ並列でimplementする
作業の競合を確認する
複数のworktreeで作業するため、着手前でbranchや変更ファイルの重なりを確認する。情報収集はスクリプトを用意しており、その判断はMarkdownでルールを決めている。Codexはそれらを使って情報収集及び判断を行う。
※3 テストの実行環境
テストは副作用に応じてホストとVMを分ける
ロジックだけを確認するテストはホストPCで実行し、アプリの前面化、キーボード入力、Pasteboardの操作など、ホストPCに影響するテストは Tart のVMで実行している。これにより、ホストPCの操作への干渉を防ぐ。
どのテストをホストPCとVMのどちらで実行するか、同時に何件まで実行するかという判断基準はMarkdownにルールを書いている。
VMへのソースの転送、VMの起動、テスト、結果の回収、停止はスクリプトを用意しているので、Codexは実行するテストを選び、決まった手順はスクリプトに任せる。
ビルドの同時実行数を制限する
ビルドやVMを使ったUIテストなどは、共通のスクリプトを通すことで同時実行数を管理している(同時に行われるとPCがアチアチになってしまうので)。実行要求は共通のFIFOキューに入り、順番が来るのを待つ。
※4 実アプリでの確認
複数のworktreeで開発していると、別のbranchや古いビルドのアプリを確認してしまうことがあるため、起動用スクリプトを使い、識別用のラベルを表示する。設定とSQLiteも分け、どのコードを打鍵したのかを明確にしている。
起動中のアプリには、アプリ名とbranch名を表示する。

※5 PRの説明とレビュー
PRに変更内容を説明する資料を載せる
PRには、何を変えたか、どのように確認したか、まだ人が確認する項目があるかをまとめる。変更の構造が伝わりにくいときは、図も載せる。
PRレビューを監視する
PRを作ったセッションに、PRごとに1つのheartbeat監視を紐づけるスクリプトを作って、それをCodexに実行させている。いつ確認し、どの指摘なら自動で直してよいかという監視ルールはMarkdownに書いている。
- 15分ごと、最大10回繰り返す
- 監視によりレビュー指摘を発見したら自動で修正に入る
- 新しいcommitをpushしたら@codex reviewを投稿して、再び監視
直せる指摘は自動で修正する
仕様変更を伴わない指摘は、再現→修正→テスト→commit→push→スレッド返信→再レビュー依頼まで自動で行う。
仕様変更を伴う指摘は開発者が判断する
Issueや仕様変更を伴う指摘は自動修正せず、開発者に判断を委ねる。
※6 マージ後の片づけ
マージ後のworktreeはすぐに削除せず、退役用スクリプトでキューに入れる。未commitの変更や使用中のprocessなど、削除してよい条件はMarkdownに書き、安全なものだけを削除する。