20 歳で 45 個のアプリを持ち、そのうちの 1 つが月 3 万ドルを稼いでいる。大学生が 70 日で 6 桁を達成した。あなたのフィードにもこういう話は溢れている — 私のフィードも同じだ。
でも、どの投稿も教えてくれないことがある。「アイデア」から「App Store で公開」まで、何度でも、誰かが逐一監視しなくても自動で進む、地味だけど確実なシステムのことだ。
私は今年、そのシステムを構築した。AI エージェントが動かしている — Claude Code と Codex が交代で働く。10 個の iOS アプリと、十数個のオープンソースツールがこのシステムを通った。提出、却下、再提出、プロダクションデプロイ、広告キャンペーン、そして、生き残る価値のなかったプロジェクトの葬式まで。
今日、これをオープンソースにする。無料だ。MIT ライセンス。コースも、ニュースレターも、「DM で教えます」もない。
→ github.com/davidmosiah/agents-that-ship
コードは決して難しい部分ではなかった
AI はもうコードを書ける。その部分は解決済みだ。2026 年になってもアプリを殺しているのは、別の要因だ:
- 5 つのことを始めて、どれも完了しない
- エージェントが午前 2 時に同じ修正を 12 回も繰り返す
- 誰も iPad でダークモードで開いたことのない UI に対して「完了!」
- ラップトップにプッシュされずに放置された 1 週間分の作業
- 「リリース完了!」の実態が「ローカルブランチにあるだけ」
- 死んだプロジェクトの cron ジョブが、葬式の後も何日も投稿(そして出費)し続ける
- これらはどれも、コーディングの問題ではない。運用の問題だ。そして、私がこれまで見てきた CLAUDE.md や AGENTS.md ファイルはどれも、コードベースを説明するだけで、お金を生む作業が始まるところで止まっている。
- だから私は、もう半分を書いた。
- このシステムを構築するために、7,500 件のプロンプトを監査した
- ある時点で、私は自分の 2 つのエージェントに送ったすべてのプロンプトを調べた。約 7,500 件だ。残酷な発見があった:ほとんどは、同じ 5 つの教訓を再び教え直しているものだった。作業をプッシュしろ。その修正をやり直すのをやめろ。5 つの選択肢をくれ。iPad を確認しろ。実際に実行したか?
- そこで、繰り返し指摘したすべての修正を、明文化されたルールにした。それ以降、私の最も多いプロンプトは「はい、お願いします」になった。
- これが全ての秘訣だ。エージェントに必要なのは、より多くの自律性ではない。意思決定が事前に完璧に組み立てられていて、こちらは「はい」と言うだけに仕事が縮小されることだ。
- 9 つのプレイブック
- それぞれがエージェントに向けて書かれている — 二人称で、エージェントが言い訳できないゲートが設定されている:
- 01 キックオフ → 状態を読み取り、1 つのことを提案する。選択肢は提示しない。
- 02 スペック → 実行可能なゲートを持つフェーズ。「洗練された」はゲートではない。
- 03 ビルド → 最小限の差分。実際に実行する。祝う前にプッシュする。
- 04 スタック解除 → 2 回の修正失敗 = 編集をやめて、戦略を変更する。
- 05 ポリッシュ → すべての画面を確認する。ライト+ダーク、電話+タブレット、すべての言語。スクリーンショットがなければ、やったことにならない。
- 06 フレッシュアイズ → 別のモデルが、リポジトリからすべての主張を再導出する。自己レビューは、自分のアリバイを校正するようなものだ。
- 07 シップ → コミット済み ≠ プッシュ済み ≠ 提出済み ≠ 承認済み ≠ 公開済み。本当の状態を名指しせよ。
- 08 メトリクス → すべての数値とその差分、すべての実験には終了日を設定する。
- 09 サンセット → 死んだプロジェクトを適切に埋葬する:すべてのスケジューラーを掃除し、支出を止め、評決を書く。
- 時間を節約するルール
- 2 ストライク。同じ失敗を 2 回すると、エージェントのその問題に対するモデルが間違っているということだ。編集をやめろ。ゼロから再現し、実際に異なる仮説を書き、計装し、それから修正しろ。変数名を変えてリトライするのは、アイデア 2 ではなく、ストライク 2 だ。この 1 つのルールは、私が知るどんなプロンプトのテクニックよりも多くのトークンを節約する。
- 作者は検証者ではない。リスクのあることで「完了」と言う前に、別のエージェント(異なるモデル、クリーンなコンテキスト)が、実際のリポジトリから主張を再導出する。2 つの異なるモデルが相互レビューすることで、自己レビューでは構造的に不可能な問題を発見できる。
- プッシュされていない作業は存在しない。「プッシュしたか?」が、かつて私の最も繰り返しの多い質問だった。今は、コミット+プッシュが、頼まれなくてもすべてのブロックを閉じる。たった 1 つの文で、ある種の不安のカテゴリー全体を消し去った。
- 適切に埋葬せよ。かつて私はプロジェクトを殺したが、その幽霊が 2 日間毎日ダイジェストを投稿し続けた — 忘れられたタイマーが 1 つ、葬式を生き延びたのだ。サンセットプレイブックは、すべてのマシンのすべてのスケジューラーを掃除し、その証拠として出力を残す。
- 2 つのエージェント、1 つのマシン
- 乗数効果:私のエージェントは交代で働く。クォータを持っている方が実装し、もう一方が検証する。引き継ぎは、感触ではなく、ゲート付きのスペックで行われる。そして、約 150 行のロックスクリプトが、同じリポジトリで衝突するのを防ぐ — 終了コード 3 は「別のエージェントがここにいる。別のフロントを選べ」を意味する。
- パイプラインとして 2 つの異なるモデルを実行することは、現在 AI において最も安価な品質向上策だ。リポジトリには完全な契約書がある。
- なぜ無料なのか
- なぜなら、これはマークダウンだからだ。9 つのファイル。SDK も、フレームワークも、次のモデルがリリースされたときに陳腐化するものは何もない。これは Claude Code スキル、AGENTS.md セクション、または Cursor ルールとして動作する — アダプターも含まれている。
- そして、もう 1 つ、私が何よりも守りたいルールがそこにある:あなたの名前で公開されるものは、新鮮な「はい」なしには何もない。リポジトリも、投稿も、パッケージも。エージェントの熱意が、あなたの評判を消費できてはならない。
- (この記事はエージェントが草稿を書き、人間が承認した。システムが機能している証拠だ。)
- 自由に使え:
- → github.com/davidmosiah/agents-that-ship
- フォークして、解体して、半分に同意しなくてもいい。どんな犠牲を払っても守るべきルールはただ 1 つ:契約は書面で存在する。あなたの頭の中にだけあるルールは、エージェントが明日また破るルールだ。





