ralph について
ralph は PRD をユーザーストーリー形式の prd.json に変換し、自律実行用の独立した Git worktree を準備するスキルです。1 回のイテレーションで完了できる小さなストーリーに分割し、依存順と検証可能な受け入れ条件を重視します。
主な機能
- 01PRD を prd.json に変換
- 021 回のイテレーション単位に分割
- 03依存関係に沿ってストーリーを順序付け
- 04検証可能な受け入れ条件を記述
- 05独立した Git worktree を作成
- 06進捗トラッキングを初期化
活用シーン
- 01Markdown の PRD を構造化ストーリーに変換
- 02大規模な機能を管理可能なタスクに分割
- 03Ralph 用の独立 worktree を準備
- 04自律実行向けの進捗トラッキングを設定
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ ralphcrisostomo/ nuxt-development-skills --skill ralphインストール後、Claude Code で/ralphを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
ralph/CLAUDE.mdralph-audit.tsralph-tree.shralph.shreferences/example.md詳細
Ralph PRD Converter
既存の PRD を prd.json に変換し、自律実行用の分離された Git ワークツリーを設定します。
作業内容
- PRD(Markdown ファイルまたはテキスト)を受け取り、prd.json に変換します
- Ralph が作業するための Git ワークツリーを作成します
- ワークツリーに prd.json を保存し、進捗の追跡を初期化します
出力形式
{
"project": "[Project Name]",
"branchName": "ralph/[feature-name-kebab-case]",
"description": "[Feature description from PRD title/intro]",
"userStories": [
{
"id": "US-001",
"title": "[Story title]",
"description": "As a [user], I want [feature] so that [benefit]",
"acceptanceCriteria": [
"Criterion 1",
"Criterion 2",
"Typecheck passes"
],
"priority": 1,
"passes": false,
"notes": ""
}
]
}
ストーリーのサイズ:最重要ルール
各ストーリーは、Ralph の 1 回のイテレーション(1 つのコンテキストウィンドウ)で完了できる必要があります。
Ralph はイテレーションごとに新しい Amp インスタンスを起動し、前回の作業の記憶はありません。ストーリーが大きすぎると、LLM は完了前にコンテキストを使い切り、壊れたコードを生成します。
適切なサイズのストーリー:
- データベースのカラムとマイグレーションを追加する
- 既存のページに UI コンポーネントを追加する
- 新しいロジックでサーバーアクションを更新する
- リストにフィルタードロップダウンを追加する
大きすぎるストーリー(分割してください):
- 「ダッシュボード全体を構築する」- スキーマ、クエリ、UI コンポーネント、フィルターに分割します
- 「認証を追加する」- スキーマ、ミドルウェア、ログイン UI、セッション処理に分割します
- 「API をリファクタリングする」- エンドポイントまたはパターンごとに 1 つのストーリーに分割します
目安: 変更内容を 2~3 文で説明できない場合、大きすぎます。
ストーリーの順序:依存関係を先に
ストーリーは優先順位順に実行されます。先行するストーリーが後続のストーリーに依存してはなりません。
正しい順序:
- スキーマ/データベースの変更(マイグレーション)
- サーバーアクション/バックエンドロジック
- バックエンドを使用する UI コンポーネント
- データを集約するダッシュボード/サマリービュー
誤った順序:
- UI コンポーネント(まだ存在しないスキーマに依存)
- スキーマ変更
受け入れ基準:検証可能であること
各基準は、曖昧なものではなく、Ralph が確認できるものでなければなりません。
良い基準(検証可能):
- 「tasks テーブルに、デフォルト値が 'pending' の
statusカラムを追加する」 - 「フィルタードロップダウンに All、Active、Completed の選択肢がある」
- 「削除をクリックすると確認ダイアログが表示される」
- 「型チェックが通る」
- 「テストが通る(vitest-testing スキルを使用)」
- 「vitest-testing スキルを使用してテストを作成する」
悪い基準(曖昧):
- 「正しく動作する」
- 「ユーザーが X を簡単に行える」
- 「優れた UX」
- 「エッジケースに対応する」
常に最後の基準として含める:
"Typecheck passes"
テスト可能なロジックを含むストーリーには、次も含めます:
"Tests pass (use vitest-testing skill)"
UI を変更するストーリーには、次も含めます:
"Verify in browser using dev-browser skill"
フロントエンドのストーリーは、視覚的に検証されるまで完了ではありません。Ralph は dev-browser スキルを使用してページを開き、UI を操作し、変更が正しく動作することを確認します。
変換ルール
- 各ユーザーストーリーを 1 つの JSON エントリーにする
- ID:連番(US-001、US-002 など)
- 優先順位:依存関係の順序を優先し、その後にドキュメントの順序を適用
- すべてのストーリー:
passes: falseと空のnotes - branchName:機能名から導出し、ケバブケースにして
ralph/を先頭に付ける - 必ず追加する:「型チェックが通る」をすべてのストーリーの受け入れ基準に含める
大きな PRD の分割
PRD に大きな機能が含まれる場合は、分割してください。
元の内容:
「ユーザー通知システムを追加する」
分割後:
- US-001:データベースに通知テーブルを追加する
- US-002:通知を送信する通知サービスを作成する
- US-003:ヘッダーに通知ベルアイコンを追加する
- US-004:通知ドロップダウンパネルを作成する
- US-005:既読にする機能を追加する
- US-006:通知設定ページを追加する
それぞれが、個別に完了・検証できる、焦点を絞った変更です。
例
入力 PRD:
# Task Status Feature
Add ability to mark tasks with different statuses.
## Requirements
- Toggle between pending/in-progress/done on task list
- Filter list by status
- Show status badge on each task
- Persist status in database
出力 prd.json:
{
"project": "TaskApp",
"branchName": "ralph/task-status",
"description": "Task Status Feature - Track task progress with status indicators",
"userStories": [
{
"id": "US-001",
"title": "Add status field to tasks table",
"description": "As a developer, I need to store task status in the database.",
"acceptanceCriteria": [
"Add status column: 'pending' | 'in_progress' | 'done' (default 'pending')",
"Generate and run migration successfully",
"Typecheck passes",
"Tests pass (use vitest-testing skill)"
],
"priority": 1,
"passes": false,
"notes": ""
},
{
"id": "US-002",
"title": "Display status badge on task cards",
"description": "As a user, I want to see task status at a glance.",
"acceptanceCriteria": [
"Each task card shows colored status badge",
"Badge colors: gray=pending, blue=in_progress, green=done",
"Typecheck passes",
"Verify in browser using dev-browser skill"
],
"priority": 2,
"passes": false,
"notes": ""
},
{
"id": "US-003",
"title": "Add status toggle to task list rows",
"description": "As a user, I want to change task status directly from the list.",
"acceptanceCriteria": [
"Each row has status dropdown or toggle",
"Changing status saves immediately",
"UI updates without page refresh",
"Typecheck passes",
"Verify in browser using dev-browser skill"
],
"priority": 3,
"passes": false,
"notes": ""
},
{
"id": "US-004",
"title": "Filter tasks by status",
"description": "As a user, I want to filter the list to see only certain statuses.",
"acceptanceCriteria": [
"Filter dropdown: All | Pending | In Progress | Done",
"Filter persists in URL params",
"Typecheck passes",
"Verify in browser using dev-browser skill"
],
"priority": 4,
"passes": false,
"notes": ""
}
]
}
ワークツリーの設定
prd.json の生成後、Ralph が作業するための分離された Git ワークツリーを作成します。
1. ワークツリーを作成する
# From the repo root — create worktree with a new branch from main
git worktree add .claude/worktrees/ralph/<feature-name> -b ralph/<feature-name> main
<feature-name> はケバブケースの機能名です(branchName の ralph/ の後の部分)。
2. 依存関係をインストールし、環境変数を取得する
cd .claude/worktrees/ralph/<feature-name>
bun install
bun run env:pull
3. ファイルをワークツリーに保存する
prd.json をワークツリーの ralph ディレクトリに保存します:
.claude/worktrees/ralph/<feature-name>/scripts/ralph/prd.json
ワークツリーに progress.txt を作成して初期化します:
.claude/worktrees/ralph/<feature-name>/scripts/ralph/progress.txt
内容:
# Ralph Progress Log
Started: <current date>
---
4. Ralph の実行方法をユーザーに伝える
# From the main repo root
scripts/ralph/ralph-tree.sh ralph/<feature-name>
# With options
scripts/ralph/ralph-tree.sh ralph/<feature-name> --tool claude 15
保存前のチェックリスト
prd.json を作成する前に、以下を確認してください。
- 各ストーリーが1回のイテレーションで完了できる(十分に小さい)
- ストーリーが依存関係の順に並んでいる(スキーマからバックエンド、次にUI)
- すべてのストーリーに「型チェックが通る」という基準がある
- UI のストーリーに「dev-browser スキルを使ってブラウザーで確認する」という基準がある
- 受け入れ基準が検証可能である(曖昧でない)
- 後続のストーリーに依存するストーリーがない
-
.claude/worktrees/ralph/<feature-name>/にワークツリーが作成されている - ワークツリーで
bun installとbun run env:pullを実行している - prd.json がワークツリーの
scripts/ralph/に保存されている - progress.txt がワークツリーに初期化されている