jpskill.com
✍️ ライティング コミュニティ

ralph-prompt-project

新規プロジェクト全体に対し、設計から実装、テスト、ドキュメント作成までを網羅したRalph互換のプロンプトを自動生成し、アプリケーションやライブラリなどの開発を効率的に進めるSkill。

📜 元の英語説明(参考)

Generate Ralph-compatible prompts for entire projects from scratch. Creates comprehensive prompts with architecture phase, implementation phases, testing, and documentation. Use when building complete applications, libraries, CLI tools, or any greenfield project requiring end-to-end development.

🇯🇵 日本人クリエイター向け解説

一言でいうと

新規プロジェクト全体に対し、設計から実装、テスト、ドキュメント作成までを網羅したRalph互換のプロンプトを自動生成し、アプリケーションやライブラリなどの開発を効率的に進めるSkill。

※ jpskill.com 編集部が日本のビジネス現場向けに補足した解説です。Skill本体の挙動とは独立した参考情報です。

⚡ おすすめ: コマンド1行でインストール(60秒)

下記のコマンドをコピーしてターミナル(Mac/Linux)または PowerShell(Windows)に貼り付けてください。 ダウンロード → 解凍 → 配置まで全自動。

🍎 Mac / 🐧 Linux
mkdir -p ~/.claude/skills && cd ~/.claude/skills && curl -L -o ralph-prompt-project.zip https://jpskill.com/download/9480.zip && unzip -o ralph-prompt-project.zip && rm ralph-prompt-project.zip
🪟 Windows (PowerShell)
$d = "$env:USERPROFILE\.claude\skills"; ni -Force -ItemType Directory $d | Out-Null; iwr https://jpskill.com/download/9480.zip -OutFile "$d\ralph-prompt-project.zip"; Expand-Archive "$d\ralph-prompt-project.zip" -DestinationPath $d -Force; ri "$d\ralph-prompt-project.zip"

完了後、Claude Code を再起動 → 普通に「動画プロンプト作って」のように話しかけるだけで自動発動します。

💾 手動でダウンロードしたい(コマンドが難しい人向け)
  1. 1. 下の青いボタンを押して ralph-prompt-project.zip をダウンロード
  2. 2. ZIPファイルをダブルクリックで解凍 → ralph-prompt-project フォルダができる
  3. 3. そのフォルダを C:\Users\あなたの名前\.claude\skills\(Win)または ~/.claude/skills/(Mac)へ移動
  4. 4. Claude Code を再起動

⚠️ ダウンロード・利用は自己責任でお願いします。当サイトは内容・動作・安全性について責任を負いません。

🎯 このSkillでできること

下記の説明文を読むと、このSkillがあなたに何をしてくれるかが分かります。Claudeにこの分野の依頼をすると、自動で発動します。

📦 インストール方法 (3ステップ)

  1. 1. 上の「ダウンロード」ボタンを押して .skill ファイルを取得
  2. 2. ファイル名の拡張子を .skill から .zip に変えて展開(macは自動展開可)
  3. 3. 展開してできたフォルダを、ホームフォルダの .claude/skills/ に置く
    • · macOS / Linux: ~/.claude/skills/
    • · Windows: %USERPROFILE%\.claude\skills\

Claude Code を再起動すれば完了。「このSkillを使って…」と話しかけなくても、関連する依頼で自動的に呼び出されます。

詳しい使い方ガイドを見る →
最終更新
2026-05-18
取得日時
2026-05-18
同梱ファイル
1

📖 Skill本文(日本語訳)

※ 原文(英語/中国語)を Gemini で日本語化したものです。Claude 自身は原文を読みます。誤訳がある場合は原文をご確認ください。

Ralph Prompt Generator: 完全なプロジェクト

概要

Ralph Wiggumの手法を用いて、プロジェクト全体をゼロから構築するための包括的なプロンプトを生成します。これらのプロンプトは、開発をアーキテクチャの段階(設計、実装、テスト、ドキュメント)に構造化し、明確なマイルストーンと段階的な完了を目指します。

最適な用途:

  • 完全なREST APIをゼロから構築する
  • CLIツールを作成する
  • ライブラリ/パッケージを開発する
  • Webアプリケーションを構築する
  • 自動化ツールを作成する
  • 明確な要件を持つグリーンフィールドプロジェクト

現実世界の成功:

  • Geoffrey HuntleyはRalphを使用して、3ヶ月かけて「呪われた」プログラミング言語を作成しました
  • Y Combinatorハッカソン:一晩で6つのリポジトリが生成されました
  • 5万ドルの契約が、APIコスト297ドルで完了しました

Ralphの哲学: これらの成功は、Ralphが失敗は決定的であり、修正可能であるという考え方を受け入れているからこそ実現しています。各イテレーションは、前のイテレーションから学習します。失敗を恐れないでください。失敗は予期されており、ツールを変更するのではなく、プロンプトの調整を通じて改善するためのデータを提供します。

クイックスタート

必要な入力:

  1. プロジェクトの説明(何を構築するか)
  2. 技術要件(言語、フレームワーク、機能)
  3. 成功基準(何を完了とするか)
  4. 最終的な完了の約束

プロンプトの生成:

Ralphプロジェクトのプロンプトを生成してください:
プロジェクト: [プロジェクトの説明]
技術スタック: [言語、フレームワーク、ツール]
機能: [必要な機能のリスト]
約束: [COMPLETION_PHRASE]

プロンプト生成ワークフロー

ステップ1: プロジェクトのスコープを定義する

プロジェクト定義テンプレート:

PROJECT: [プロジェクト名]
PURPOSE: [それが何をするかを説明する一文]
TECH STACK: [言語、フレームワーク、ツール]
TARGET USERS: [誰がこれを使用するか]

CORE FEATURES:
1. [機能1]
2. [機能2]
3. [機能3]

NON-GOALS (対象外):
- [このプロジェクトが行わないこと]
- [明示的な除外]

SUCCESS DEFINITION:
[測定可能で検証可能な完了基準]

ステップ2: プロジェクトのフェーズをマッピングする

標準的なプロジェクトフェーズ:

フェーズ 名前 目的 一般的な割合
0 セットアップ プロジェクトのスキャフォールディング、依存関係 5%
1 アーキテクチャ 設計パターン、構造 10%
2 コア 主要な機能 40%
3 機能 追加機能 25%
4 テスト テストカバレッジ 10%
5 仕上げ ドキュメント、クリーンアップ 10%

ステップ3: マイルストーンを定義する

各フェーズには具体的なマイルストーンが必要です:

良いマイルストーン:

  • コマンドを実行して検証可能
  • 二元的(完了または未完了)
  • 主観的な判断に依存しない

例:

  • 「プロジェクトがエラーなしでビルドされる」(検証可能)
  • 「すべてのテストに合格する」(検証可能)
  • 「CLIのヘルプコマンドが動作する」(検証可能)

ステップ4: プロンプトを構造化する

このテンプレートを使用してください:

# プロジェクト: [プロジェクト名]

## ビジョン
[このプロジェクトが何であり、なぜ存在するのかを説明する2〜3文]

## 技術仕様
- **言語**: [例:TypeScript, Python, Go]
- **フレームワーク**: [例:Express, FastAPI, なし]
- **データベース**: [例:PostgreSQL, SQLite, なし]
- **テスト**: [例:Jest, pytest, go test]
- **ビルド**: [例:npm, poetry, go build]

## コア機能
1. [機能1]: [簡単な説明]
2. [機能2]: [簡単な説明]
3. [機能3]: [簡単な説明]
[...]

## 対象外
- [明示的な除外1]
- [明示的な除外2]

---

## フェーズ0: プロジェクトのセットアップ (基盤)

### 目的
すべての依存関係と構成を含むプロジェクト構造を初期化します。

### タスク
1. プロジェクト構造を初期化する
2. パッケージ管理を設定する
3. 開発ツール(lint、フォーマット)を構成する
4. 初期ディレクトリ構造を作成する
5. 基本的な構成ファイルを追加する

### 成果物
- [ ] プロジェクトディレクトリが作成された
- [ ] 依存関係がインストールされた
- [ ] Lintが構成され、合格している
- [ ] 基本的な構造が整っている
- [ ] セットアップ手順を含むREADME

### 検証
```bash
# プロジェクトがビルドされる
[build command]

# Lintが合格する
[lint command]

# 基本的な構造が存在する
ls -la [期待されるディレクトリ]

フェーズ0のチェックポイント

フェーズ0完了:
- プロジェクトが初期化されました: [path]
- 依存関係: インストール済み
- Lint: 合格

→ フェーズ1に進む


フェーズ1: アーキテクチャと設計

目的

コアアーキテクチャ、インターフェース、およびパターンを確立します。

タスク

  1. メインのインターフェース/型を定義する
  2. 選択したパターンに従ってディレクトリ構造を作成する
  3. コアユーティリティを実装する
  4. エラー処理パターンを設定する
  5. 構成管理を作成する

成果物

  • [ ] コアの型/インターフェースが定義された
  • [ ] ディレクトリ構造がアーキテクチャと一致する
  • [ ] ユーティリティ関数が実装された
  • [ ] エラー処理パターンが確立された
  • [ ] 構成のロードが動作する

検証

# 型がコンパイルされる
[typecheck command]

# 構成がロードされる
[test config command]

フェーズ1のチェックポイント

フェーズ1完了:
- アーキテクチャ: [使用されたパターン]
- 型: 定義され、コンパイルされている
- 構成: 正しくロードされている

→ フェーズ2に進む


フェーズ2: コアの実装

目的

このプロジェクトを定義する主要な機能を実装します。

タスク

[プロジェクトの種類に基づいてコア実装タスクをリストする]

成果物

  • [ ] [コアの成果物1]
  • [ ] [コアの成果物2]
  • [ ] [コアの成果物3]
  • [ ] コアテストが合格している

検証

# コア機能が動作する
[verification command]

# テストが合格する
[test command]

フェーズ2のチェックポイント

フェーズ2完了:
- コア機能1: 動作中
- コア機能2: 動作中
- テスト: 合格

→ フェーズ3に進む


フェーズ3: 機能の実装

目的

コアを超える必要な機能をすべて追加します。

タスク

[追加の機能タスクをリストする]

成果物

  • [ ] [機能の成果物1]
  • [ ] [機能の成果物2]
  • [ ] すべての機能テストが合格している

検証

# 機能が動作する
[feature verification commands]

# すべてのテストが合格する
[full test command]

フェーズ3のチェックポイント

フェーズ3完了:
- 機能1: 動作中
- 機能2: 動作中
- すべてのテスト: 合格

→ フェーズ4に進む


フェーズ4: テストと品質

目的

包括的な

📜 原文 SKILL.md(Claudeが読む英語/中国語)を展開

Ralph Prompt Generator: Complete Project

Overview

Generates comprehensive prompts for building entire projects from scratch using the Ralph Wiggum technique. These prompts structure development into architectural phases (design, implementation, testing, documentation) with clear milestones and incremental completion.

Best For:

  • Building complete REST APIs from scratch
  • Creating CLI tools
  • Developing libraries/packages
  • Building web applications
  • Creating automation tools
  • Greenfield projects with clear requirements

Real-World Success:

  • Geoffrey Huntley used Ralph to create the "cursed" programming language over 3 months
  • Y Combinator hackathon: 6 repositories generated overnight
  • $50k contract completed for $297 in API costs

Ralph Philosophy: These successes work because Ralph embraces that failures are deterministic and fixable. Each iteration learns from the previous. Don't fear failures—they're expected and provide data for improvement through prompt tuning, not tool changes.

Quick Start

Input Required:

  1. Project description (what to build)
  2. Technical requirements (language, framework, features)
  3. Success criteria (what makes it complete)
  4. Final completion promise

Generate prompt with:

Generate a Ralph project prompt for:
Project: [Project description]
Tech stack: [Language, framework, tools]
Features: [List of required features]
Promise: [COMPLETION_PHRASE]

Prompt Generation Workflow

Step 1: Define Project Scope

Project Definition Template:

PROJECT: [Project Name]
PURPOSE: [One sentence explaining what it does]
TECH STACK: [Languages, frameworks, tools]
TARGET USERS: [Who will use this]

CORE FEATURES:
1. [Feature 1]
2. [Feature 2]
3. [Feature 3]

NON-GOALS (Out of scope):
- [What this project will NOT do]
- [Explicit exclusions]

SUCCESS DEFINITION:
[Measurable, verifiable completion criteria]

Step 2: Map Project Phases

Standard project phases:

Phase Name Purpose Typical %
0 Setup Project scaffolding, dependencies 5%
1 Architecture Design patterns, structure 10%
2 Core Main functionality 40%
3 Features Additional features 25%
4 Testing Test coverage 10%
5 Polish Documentation, cleanup 10%

Step 3: Define Milestones

Each phase needs concrete milestones:

Good Milestones:

  • Verifiable by running commands
  • Binary (complete or not)
  • Independent of subjective judgment

Examples:

  • "Project builds without errors" (verifiable)
  • "All tests pass" (verifiable)
  • "CLI help command works" (verifiable)

Step 4: Structure the Prompt

Use this template:

# Project: [Project Name]

## Vision
[2-3 sentences describing what this project is and why it exists]

## Technical Specifications
- **Language**: [e.g., TypeScript, Python, Go]
- **Framework**: [e.g., Express, FastAPI, none]
- **Database**: [e.g., PostgreSQL, SQLite, none]
- **Testing**: [e.g., Jest, pytest, go test]
- **Build**: [e.g., npm, poetry, go build]

## Core Features
1. [Feature 1]: [Brief description]
2. [Feature 2]: [Brief description]
3. [Feature 3]: [Brief description]
[...]

## Non-Goals
- [Explicit exclusion 1]
- [Explicit exclusion 2]

---

## Phase 0: Project Setup (Foundation)

### Objective
Initialize project structure with all dependencies and configuration.

### Tasks
1. Initialize project structure
2. Set up package management
3. Configure development tools (linting, formatting)
4. Create initial directory structure
5. Add basic configuration files

### Deliverables
- [ ] Project directory created
- [ ] Dependencies installed
- [ ] Linting configured and passing
- [ ] Basic structure in place
- [ ] README with setup instructions

### Verification
```bash
# Project builds
[build command]

# Lint passes
[lint command]

# Basic structure exists
ls -la [expected directories]

Phase 0 Checkpoint

PHASE 0 COMPLETE:
- Project initialized: [path]
- Dependencies: Installed
- Lint: Passing

→ Continue to Phase 1


Phase 1: Architecture & Design

Objective

Establish core architecture, interfaces, and patterns.

Tasks

  1. Define main interfaces/types
  2. Create directory structure following chosen pattern
  3. Implement core utilities
  4. Set up error handling patterns
  5. Create configuration management

Deliverables

  • [ ] Core types/interfaces defined
  • [ ] Directory structure matches architecture
  • [ ] Utility functions implemented
  • [ ] Error handling pattern established
  • [ ] Configuration loading works

Verification

# Types compile
[typecheck command]

# Config loads
[test config command]

Phase 1 Checkpoint

PHASE 1 COMPLETE:
- Architecture: [pattern used]
- Types: Defined and compiling
- Config: Loading correctly

→ Continue to Phase 2


Phase 2: Core Implementation

Objective

Implement the primary functionality that defines this project.

Tasks

[List core implementation tasks based on project type]

Deliverables

  • [ ] [Core deliverable 1]
  • [ ] [Core deliverable 2]
  • [ ] [Core deliverable 3]
  • [ ] Core tests passing

Verification

# Core functionality works
[verification command]

# Tests pass
[test command]

Phase 2 Checkpoint

PHASE 2 COMPLETE:
- Core feature 1: Working
- Core feature 2: Working
- Tests: Passing

→ Continue to Phase 3


Phase 3: Feature Implementation

Objective

Add all required features beyond the core.

Tasks

[List additional feature tasks]

Deliverables

  • [ ] [Feature deliverable 1]
  • [ ] [Feature deliverable 2]
  • [ ] All feature tests passing

Verification

# Features work
[feature verification commands]

# All tests pass
[full test command]

Phase 3 Checkpoint

PHASE 3 COMPLETE:
- Feature 1: Working
- Feature 2: Working
- All tests: Passing

→ Continue to Phase 4


Phase 4: Testing & Quality

Objective

Ensure comprehensive test coverage and code quality.

Tasks

  1. Write unit tests for all modules
  2. Write integration tests
  3. Add edge case tests
  4. Ensure code coverage target met
  5. Fix any linting issues

Deliverables

  • [ ] Unit test coverage ≥ [X]%
  • [ ] Integration tests passing
  • [ ] Edge cases covered
  • [ ] All lint rules pass
  • [ ] No TypeScript/type errors

Verification

# Coverage report
[coverage command]

# All quality checks
[lint command] && [typecheck command] && [test command]

Phase 4 Checkpoint

PHASE 4 COMPLETE:
- Coverage: [X]%
- All tests: Passing
- Quality: All checks green

→ Continue to Phase 5


Phase 5: Documentation & Polish

Objective

Complete documentation and final polish.

Tasks

  1. Write comprehensive README
  2. Add inline documentation/comments for complex code
  3. Create usage examples
  4. Add CHANGELOG if applicable
  5. Final code cleanup

Deliverables

  • [ ] README complete with all sections
  • [ ] Usage examples documented
  • [ ] Complex code has comments
  • [ ] No TODO comments remaining
  • [ ] Code formatted consistently

Verification

# Check for TODOs
grep -r "TODO" src/

# Lint final
[lint command]

# Build final
[build command]

Final Project Verification

Complete Checklist

  • [ ] Phase 0: Setup complete
  • [ ] Phase 1: Architecture established
  • [ ] Phase 2: Core functionality working
  • [ ] Phase 3: All features implemented
  • [ ] Phase 4: Tests passing, quality green
  • [ ] Phase 5: Documentation complete

Final Verification Commands

# Clean build
[clean and build command]

# All tests
[full test command]

# Lint
[lint command]

# Type check (if applicable)
[typecheck command]

# Manual smoke test
[manual verification steps]

Completion

When ALL of the following are true:

  • All 6 phases completed and verified
  • All tests passing
  • All quality checks green
  • Documentation complete
  • No TODO items remaining

Output: <promise>[COMPLETION_PHRASE]</promise>

Progress Tracking

Update after each phase:

PROJECT PROGRESS:
Phase 0 (Setup): [COMPLETE/IN PROGRESS]
Phase 1 (Architecture): [COMPLETE/IN PROGRESS/NOT STARTED]
Phase 2 (Core): [COMPLETE/IN PROGRESS/NOT STARTED]
Phase 3 (Features): [COMPLETE/IN PROGRESS/NOT STARTED]
Phase 4 (Testing): [COMPLETE/IN PROGRESS/NOT STARTED]
Phase 5 (Documentation): [COMPLETE/IN PROGRESS/NOT STARTED]

Current Phase: [X]
Overall: [description of state]

If Stuck

After multiple iterations on same issue:

  1. Document the specific blocker
  2. List what approaches have been tried
  3. Identify the root cause if possible
  4. Consider if feature should be descoped (but DO NOT skip without documenting)
  5. Do NOT output false promise - continue or wait for max-iterations

Example: REST API Project

Input:

  • Project: Todo List REST API
  • Tech: Node.js, Express, TypeScript, SQLite
  • Features: CRUD todos, user auth, categories, due dates
  • Promise: TODO_API_COMPLETE

Generated Prompt:

# Project: Todo List REST API

## Vision
A RESTful API for managing todo items with user authentication, categories, and due date tracking. Built with TypeScript and Express for type safety and ease of development.

## Technical Specifications
- **Language**: TypeScript
- **Framework**: Express.js
- **Database**: SQLite with better-sqlite3
- **Testing**: Jest with supertest
- **Build**: npm with tsc

## Core Features
1. **User Authentication**: JWT-based auth with signup/login/logout
2. **Todo CRUD**: Create, read, update, delete todo items
3. **Categories**: Organize todos by category
4. **Due Dates**: Set and track due dates with overdue detection
5. **Filtering**: Filter todos by status, category, due date

## Non-Goals
- Frontend/UI (API only)
- Real-time updates (polling only)
- File attachments
- Collaboration/sharing

---

## Phase 0: Project Setup

### Tasks
1. `npm init` with TypeScript configuration
2. Install dependencies: express, better-sqlite3, jsonwebtoken, bcrypt
3. Install dev dependencies: typescript, jest, supertest, eslint
4. Configure tsconfig.json, eslint, jest
5. Create directory structure: src/{routes,controllers,models,middleware}

### Deliverables
- [ ] package.json with all dependencies
- [ ] tsconfig.json configured
- [ ] ESLint configured and passing
- [ ] Directory structure created
- [ ] `npm run build` works

### Verification
```bash
npm run build
npm run lint
ls src/

Phase 0 Checkpoint

PHASE 0 COMPLETE: Project scaffolded, builds successfully

Phase 1: Architecture

Tasks

  1. Define TypeScript interfaces: User, Todo, Category
  2. Create database schema and initialization
  3. Set up Express app structure with middleware
  4. Implement error handling middleware
  5. Create config management

Deliverables

  • [ ] Types in src/types/
  • [ ] Database schema creates tables
  • [ ] Express app configured with JSON parsing, CORS
  • [ ] Error handler returns proper JSON errors
  • [ ] Config loads from environment

Verification

npm run build
npm test -- --grep "database"

Phase 2: Core Implementation

Tasks

  1. Implement User model with password hashing
  2. Create auth routes: POST /auth/signup, POST /auth/login
  3. Implement JWT middleware for protected routes
  4. Implement Todo model and CRUD
  5. Create todo routes: GET, POST, PUT, DELETE /todos

Deliverables

  • [ ] Signup creates user, returns JWT
  • [ ] Login validates, returns JWT
  • [ ] Protected routes require valid JWT
  • [ ] CRUD operations work for todos
  • [ ] User can only access their own todos

Verification

# Signup
curl -X POST -H "Content-Type: application/json" \
  -d '{"email":"test@test.com","password":"password123"}' \
  http://localhost:3000/auth/signup

# Login and use token for todos
TOKEN=$(curl -s -X POST -H "Content-Type: application/json" \
  -d '{"email":"test@test.com","password":"password123"}' \
  http://localhost:3000/auth/login | jq -r '.token')

curl -H "Authorization: Bearer $TOKEN" http://localhost:3000/todos

Phase 3: Features

Tasks

  1. Implement Category model and routes
  2. Add category relationship to todos
  3. Implement due date field with validation
  4. Add overdue detection endpoint
  5. Implement filtering (status, category, due date range)

Deliverables

  • [ ] Categories CRUD works
  • [ ] Todos can be assigned to categories
  • [ ] Due dates stored and validated
  • [ ] GET /todos/overdue returns overdue items
  • [ ] Filtering by query params works

Phase 4: Testing

Tasks

  1. Unit tests for models
  2. Integration tests for all routes
  3. Auth flow tests
  4. Edge case tests (invalid inputs, unauthorized access)

Deliverables

  • [ ] ≥80% code coverage
  • [ ] All auth scenarios tested
  • [ ] All CRUD scenarios tested
  • [ ] Error cases tested

Verification

npm test -- --coverage

Phase 5: Documentation

Tasks

  1. README with API documentation
  2. Setup instructions
  3. Example requests for each endpoint
  4. Environment variables documentation

Deliverables

  • [ ] README complete
  • [ ] All endpoints documented
  • [ ] Examples provided
  • [ ] No TODOs remaining

Final Verification

npm run lint
npm run build
npm test -- --coverage
npm start  # Manual smoke test

Completion

When all phases verified and:

  • All tests passing with ≥80% coverage
  • All endpoints working
  • Documentation complete

Output: <promise>TODO_API_COMPLETE</promise>


## Best Practices

### Project Scope
- Define clear boundaries (non-goals)
- Start smaller than you think necessary
- Add features incrementally

### Phase Management
- Complete phases in order
- Don't skip testing phase
- Document checkpoints

### Verification
- Include actual commands to run
- Make success criteria binary
- Automate where possible

### DO:
- Define clear project scope
- Use all 6 phases
- Include verification commands
- Set realistic feature scope
- Document progress at checkpoints

### DON'T:
- Skip architectural phase
- Rush to implementation
- Leave testing for "later"
- Scope creep mid-project
- Output promise before documentation

## Integration with Ralph Loop

```bash
/ralph-wiggum:ralph-loop "[paste generated prompt]" --completion-promise "YOUR_PROMISE" --max-iterations 100

Recommended iterations by project size:

  • Small project (CLI tool, simple API): --max-iterations 60-80
  • Medium project (Full API with auth): --max-iterations 100-150
  • Large project (Multi-feature app): --max-iterations 150-200

Tip: For large projects, consider splitting into multiple Ralph sessions:

  1. First session: Phases 0-2 (Setup through Core)
  2. Second session: Phases 3-5 (Features through Polish)

For single-task prompts, see ralph-prompt-single-task. For multi-task prompts, see ralph-prompt-multi-task. For research/analysis prompts, see ralph-prompt-research.