github-trend-summarizer

Ralph とは何か

Ralph は PRD(プロダクト要件定義)を渡すと、AIコーディングエージェント(Claude Code / Amp)を繰り返し起動して、すべてのユーザーストーリーが完了するまで自律的に実装を進めるバッシュスクリプトベースのループオーケストレーターである。

中核は ralph.sh という約150行のシェルスクリプトで、以下を繰り返す:

  1. 毎回フレッシュなAIインスタンスを起動(コンテキスト汚染を防ぐ)
  2. AIは prd.json から passes: false の最優先ストーリーを1つ選び、実装
  3. typecheck / lint / test を通してからコミット
  4. prd.json の該当ストーリーを passes: true に更新し、progress.txt に学びを追記
  5. 全ストーリーが passes: true になったら <promise>COMPLETE</promise> を返して終了

記憶の永続化は、gitの履歴・progress.txtprd.json の状態によって実現される。各イテレーションは前回の学びを読んでから作業を開始するため、回を重ねるごとに精度が上がる仕組みになっている。

既存手段と比べて何が嬉しいのか

比較軸 素のClaude Code / Cursor Devin等の自律エージェント Ralph
タスク粒度の管理 人間が都度指示 エージェント任せ(粒度ブレやすい) PRDでストーリー分割済み→1ストーリー/1イテレーションで確実
コンテキスト肥大化 長い会話で劣化 内部で管理(ブラックボックス) 毎回フレッシュ起動+progress.txtで必要な学びだけ引き継ぐ
進捗の透明性 会話ログに埋もれる ダッシュボード依存 prd.jsonのpasses/progress.txtでgit上に全記録
失敗時の復旧 手動やり直し 再試行コスト高い ストーリー単位で冪等。落ちても次のイテレーションで再開
ツール非依存 特定エディタに縛られる SaaS縛り Claude Code / Amp どちらでも動く。シェルスクリプト1本

要するに、「AIに長いタスクを一気にやらせると途中で破綻する」問題を、PRDによるタスク分割+フレッシュ起動ループ+学習の蓄積という構造で解決している点が最大の利点である。

使うときの流れ

┌─────────────────────────────────────────────────┐
│  Phase 1: 準備                                    │
│                                                   │
│  ① ralph.sh, CLAUDE.md 等をプロジェクトにコピー     │
│     (または /plugin marketplace add snarktank/ralph)│
│                                                   │
│  ② /prd スキルで PRD(Markdown)を作成             │
│     → tasks/prd-feature-name.md が生成される       │
│                                                   │
│  ③ /ralph スキルで prd.json に変換                 │
│     → ストーリーごとに priority, passes: false が付く│
└───────────────────────┬─────────────────────────┘
                        ▼
┌─────────────────────────────────────────────────┐
│  Phase 2: 実行                                    │
│                                                   │
│  $ ./ralph.sh --tool claude 20                    │
│                                                   │
│  → 最大20回のイテレーションが自動で回る              │
│  → 各回で1ストーリーを実装→テスト→コミット          │
│  → progress.txt に学びが蓄積されていく              │
│  → 全ストーリー完了で自動停止                       │
└───────────────────────┬─────────────────────────┘
                        ▼
┌─────────────────────────────────────────────────┐
│  Phase 3: 確認                                    │
│                                                   │
│  ・ブランチ上に機能実装済みのコミット列が並ぶ        │
│  ・progress.txt でどのストーリーで何を学んだか確認    │
│  ・通常通り PR を作成してレビュー・マージ             │
└─────────────────────────────────────────────────┘

ストーリーの書き方が成否を分ける。「ダッシュボード全体を作れ」は大きすぎて失敗する。「既存ページにフィルタードロップダウンを追加」くらいの粒度が適切。依存関係順(スキーマ→バックエンド→UI)に priority を振ることも重要である。