ralphy-spec 0.1.1 → 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.ja.md +74 -130
- package/README.ko.md +74 -130
- package/README.md +75 -133
- package/README.zh.md +74 -130
- package/bin/ralphy-spec.js +0 -0
- package/dist/cli/checkpoint.d.ts +3 -0
- package/dist/cli/checkpoint.d.ts.map +1 -0
- package/dist/cli/checkpoint.js +23 -0
- package/dist/cli/checkpoint.js.map +1 -0
- package/dist/cli/init.d.ts +3 -0
- package/dist/cli/init.d.ts.map +1 -0
- package/dist/cli/init.js +66 -0
- package/dist/cli/init.js.map +1 -0
- package/dist/cli/report.d.ts +3 -0
- package/dist/cli/report.d.ts.map +1 -0
- package/dist/cli/report.js +53 -0
- package/dist/cli/report.js.map +1 -0
- package/dist/cli/run.d.ts +3 -0
- package/dist/cli/run.d.ts.map +1 -0
- package/dist/cli/run.js +79 -0
- package/dist/cli/run.js.map +1 -0
- package/dist/cli/status.d.ts +3 -0
- package/dist/cli/status.d.ts.map +1 -0
- package/dist/cli/status.js +45 -0
- package/dist/cli/status.js.map +1 -0
- package/dist/cli/tail.d.ts +3 -0
- package/dist/cli/tail.d.ts.map +1 -0
- package/dist/cli/tail.js +46 -0
- package/dist/cli/tail.js.map +1 -0
- package/dist/cli/update.d.ts +3 -0
- package/dist/cli/update.d.ts.map +1 -0
- package/dist/cli/update.js +62 -0
- package/dist/cli/update.js.map +1 -0
- package/dist/cli/validate.d.ts +3 -0
- package/dist/cli/validate.d.ts.map +1 -0
- package/dist/cli/validate.js +83 -0
- package/dist/cli/validate.js.map +1 -0
- package/dist/core/backends/claude-code.d.ts +17 -0
- package/dist/core/backends/claude-code.d.ts.map +1 -0
- package/dist/core/backends/claude-code.js +75 -0
- package/dist/core/backends/claude-code.js.map +1 -0
- package/dist/core/backends/cursor.d.ts +17 -0
- package/dist/core/backends/cursor.d.ts.map +1 -0
- package/dist/core/backends/cursor.js +75 -0
- package/dist/core/backends/cursor.js.map +1 -0
- package/dist/core/backends/noop.d.ts +10 -0
- package/dist/core/backends/noop.d.ts.map +1 -0
- package/dist/core/backends/noop.js +17 -0
- package/dist/core/backends/noop.js.map +1 -0
- package/dist/core/backends/opencode.d.ts +16 -0
- package/dist/core/backends/opencode.d.ts.map +1 -0
- package/dist/core/backends/opencode.js +73 -0
- package/dist/core/backends/opencode.js.map +1 -0
- package/dist/core/backends/types.d.ts +21 -0
- package/dist/core/backends/types.d.ts.map +1 -0
- package/dist/core/backends/types.js +3 -0
- package/dist/core/backends/types.js.map +1 -0
- package/dist/core/budgets/manager.d.ts +21 -0
- package/dist/core/budgets/manager.d.ts.map +1 -0
- package/dist/core/budgets/manager.js +48 -0
- package/dist/core/budgets/manager.js.map +1 -0
- package/dist/core/budgets/state.d.ts +25 -0
- package/dist/core/budgets/state.d.ts.map +1 -0
- package/dist/core/budgets/state.js +33 -0
- package/dist/core/budgets/state.js.map +1 -0
- package/dist/core/budgets/tiers.d.ts +32 -0
- package/dist/core/budgets/tiers.d.ts.map +1 -0
- package/dist/core/budgets/tiers.js +67 -0
- package/dist/core/budgets/tiers.js.map +1 -0
- package/dist/core/engine/context-pack.d.ts +12 -0
- package/dist/core/engine/context-pack.d.ts.map +1 -0
- package/dist/core/engine/context-pack.js +45 -0
- package/dist/core/engine/context-pack.js.map +1 -0
- package/dist/core/engine/loop.d.ts +28 -0
- package/dist/core/engine/loop.d.ts.map +1 -0
- package/dist/core/engine/loop.js +366 -0
- package/dist/core/engine/loop.js.map +1 -0
- package/dist/core/engine/phases.d.ts +2 -0
- package/dist/core/engine/phases.d.ts.map +1 -0
- package/dist/core/engine/phases.js +3 -0
- package/dist/core/engine/phases.js.map +1 -0
- package/dist/core/engine/repair.d.ts +6 -0
- package/dist/core/engine/repair.d.ts.map +1 -0
- package/dist/core/engine/repair.js +23 -0
- package/dist/core/engine/repair.js.map +1 -0
- package/dist/core/folders.d.ts +26 -0
- package/dist/core/folders.d.ts.map +1 -0
- package/dist/core/folders.js +58 -0
- package/dist/core/folders.js.map +1 -0
- package/dist/core/memory/ledger.d.ts +13 -0
- package/dist/core/memory/ledger.d.ts.map +1 -0
- package/dist/core/memory/ledger.js +24 -0
- package/dist/core/memory/ledger.js.map +1 -0
- package/dist/core/memory/persistence.d.ts +45 -0
- package/dist/core/memory/persistence.d.ts.map +1 -0
- package/dist/core/memory/persistence.js +162 -0
- package/dist/core/memory/persistence.js.map +1 -0
- package/dist/core/reporting/spend.d.ts +40 -0
- package/dist/core/reporting/spend.d.ts.map +1 -0
- package/dist/core/reporting/spend.js +157 -0
- package/dist/core/reporting/spend.js.map +1 -0
- package/dist/core/spec/dag.d.ts +7 -0
- package/dist/core/spec/dag.d.ts.map +1 -0
- package/dist/core/spec/dag.js +65 -0
- package/dist/core/spec/dag.js.map +1 -0
- package/dist/core/spec/file-contract.d.ts +13 -0
- package/dist/core/spec/file-contract.d.ts.map +1 -0
- package/dist/core/spec/file-contract.js +29 -0
- package/dist/core/spec/file-contract.js.map +1 -0
- package/dist/core/spec/loader.d.ts +8 -0
- package/dist/core/spec/loader.d.ts.map +1 -0
- package/dist/core/spec/loader.js +51 -0
- package/dist/core/spec/loader.js.map +1 -0
- package/dist/core/spec/schemas.d.ts +278 -0
- package/dist/core/spec/schemas.d.ts.map +1 -0
- package/dist/core/spec/schemas.js +207 -0
- package/dist/core/spec/schemas.js.map +1 -0
- package/dist/core/spec/types.d.ts +71 -0
- package/dist/core/spec/types.d.ts.map +1 -0
- package/dist/core/spec/types.js +3 -0
- package/dist/core/spec/types.js.map +1 -0
- package/dist/core/validators/parsers/eslint.d.ts +3 -0
- package/dist/core/validators/parsers/eslint.d.ts.map +1 -0
- package/dist/core/validators/parsers/eslint.js +35 -0
- package/dist/core/validators/parsers/eslint.js.map +1 -0
- package/dist/core/validators/parsers/jest.d.ts +3 -0
- package/dist/core/validators/parsers/jest.d.ts.map +1 -0
- package/dist/core/validators/parsers/jest.js +16 -0
- package/dist/core/validators/parsers/jest.js.map +1 -0
- package/dist/core/validators/parsers/tsc.d.ts +3 -0
- package/dist/core/validators/parsers/tsc.d.ts.map +1 -0
- package/dist/core/validators/parsers/tsc.js +32 -0
- package/dist/core/validators/parsers/tsc.js.map +1 -0
- package/dist/core/validators/runner.d.ts +8 -0
- package/dist/core/validators/runner.d.ts.map +1 -0
- package/dist/core/validators/runner.js +85 -0
- package/dist/core/validators/runner.js.map +1 -0
- package/dist/core/validators/signatures.d.ts +3 -0
- package/dist/core/validators/signatures.d.ts.map +1 -0
- package/dist/core/validators/signatures.js +10 -0
- package/dist/core/validators/signatures.js.map +1 -0
- package/dist/core/validators/types.d.ts +27 -0
- package/dist/core/validators/types.d.ts.map +1 -0
- package/dist/core/validators/types.js +3 -0
- package/dist/core/validators/types.js.map +1 -0
- package/dist/core/workspace/contract-enforcer.d.ts +54 -0
- package/dist/core/workspace/contract-enforcer.d.ts.map +1 -0
- package/dist/core/workspace/contract-enforcer.js +128 -0
- package/dist/core/workspace/contract-enforcer.js.map +1 -0
- package/dist/core/workspace/manager.d.ts +28 -0
- package/dist/core/workspace/manager.d.ts.map +1 -0
- package/dist/core/workspace/manager.js +3 -0
- package/dist/core/workspace/manager.js.map +1 -0
- package/dist/core/workspace/merge.d.ts +38 -0
- package/dist/core/workspace/merge.d.ts.map +1 -0
- package/dist/core/workspace/merge.js +92 -0
- package/dist/core/workspace/merge.js.map +1 -0
- package/dist/core/workspace/patch-mode.d.ts +22 -0
- package/dist/core/workspace/patch-mode.d.ts.map +1 -0
- package/dist/core/workspace/patch-mode.js +91 -0
- package/dist/core/workspace/patch-mode.js.map +1 -0
- package/dist/core/workspace/worktree-mode.d.ts +28 -0
- package/dist/core/workspace/worktree-mode.d.ts.map +1 -0
- package/dist/core/workspace/worktree-mode.js +156 -0
- package/dist/core/workspace/worktree-mode.js.map +1 -0
- package/dist/index.js +14 -4
- package/dist/index.js.map +1 -1
- package/dist/templates/shared/openspec-tasks-template.md +23 -3
- package/dist/templates/shared/project-template.yml +232 -0
- package/dist/utils/installer.d.ts.map +1 -1
- package/dist/utils/installer.js +31 -1
- package/dist/utils/installer.js.map +1 -1
- package/dist/utils/validator.d.ts.map +1 -1
- package/dist/utils/validator.js +10 -0
- package/dist/utils/validator.js.map +1 -1
- package/package.json +11 -4
package/README.ja.md
CHANGED
|
@@ -2,180 +2,124 @@
|
|
|
2
2
|
|
|
3
3
|
[English](README.md) | [简体中文](README.zh.md) | [한국어](README.ko.md) | [日本語](README.ja.md)
|
|
4
4
|
|
|
5
|
-
|
|
6
|
-
- Cursor
|
|
7
|
-
- OpenCode
|
|
8
|
-
- Claude Code
|
|
5
|
+
**スペック駆動AI開発 + 反復実行。** OpenSpecとRalph Loopを組み合わせて、予測可能なAI支援コーディングを実現します。
|
|
9
6
|
|
|
10
7
|
**ウェブサイト:** [https://ralphy-spec.org](https://ralphy-spec.org)
|
|
11
8
|
|
|
12
|
-
##
|
|
13
|
-
|
|
14
|
-
Ralphy-Specは2つの強力なAI開発方法論を組み合わせています:
|
|
15
|
-
|
|
16
|
-
### Ralph Wiggumループ
|
|
17
|
-
|
|
18
|
-
Ralph方法論([Geoffrey Huntley](https://ghuntley.com/ralph)が提唱)は、AIエージェントがタスクを完了するまで**同じプロンプトを繰り返し**受け取る開発アプローチです。各イテレーションで、AIはファイルとgit履歴で以前の作業を確認し、自己修正フィードバックループを形成します。
|
|
19
|
-
|
|
20
|
-
```
|
|
21
|
-
while true; do
|
|
22
|
-
ai_agent "機能Xを構築してください。完了したら<promise>DONE</promise>を出力してください。"
|
|
23
|
-
# AIは以前の作業を見て、ミスを修正し、進捗を続けます
|
|
24
|
-
done
|
|
25
|
-
```
|
|
26
|
-
|
|
27
|
-
### OpenSpec(スペック駆動開発)
|
|
28
|
-
|
|
29
|
-
[OpenSpec](https://github.com/Fission-AI/OpenSpec)は、コードの前にスペックを要求することでAIコーディングに構造をもたらします:
|
|
30
|
-
- `openspec/specs/` - 真実の情報源となるスペック
|
|
31
|
-
- `openspec/changes/` - 受け入れ基準を含む変更提案
|
|
32
|
-
- 完了した変更をマージするアーカイブワークフロー
|
|
33
|
-
|
|
34
|
-
### なぜ組み合わせるのか?
|
|
35
|
-
|
|
36
|
-
| 問題 | 解決策 |
|
|
37
|
-
|------|--------|
|
|
38
|
-
| チャット履歴の曖昧な要件 | OpenSpecが意図を構造化されたスペックに固定 |
|
|
39
|
-
| AIが途中で停止したりミスをする | Ralphループが完了するまでリトライ |
|
|
40
|
-
| 正確性を検証する方法がない | 受け入れ基準 + テストで出力を検証 |
|
|
41
|
-
| ツール固有のセットアップが面倒 | 1つのコマンドでCursor、OpenCode、Claude Codeをセットアップ |
|
|
42
|
-
|
|
43
|
-
## プロジェクトにインストールされるもの
|
|
44
|
-
|
|
45
|
-
- `openspec/` スキャフォールド:
|
|
46
|
-
- `openspec/specs/`(真実の情報源)
|
|
47
|
-
- `openspec/changes/`(アクティブな変更)
|
|
48
|
-
- `openspec/archive/`(完了した変更)
|
|
49
|
-
- `openspec/project.md`(プロジェクトコンテキスト)
|
|
50
|
-
- ツール統合:
|
|
51
|
-
- Cursor: `.cursor/prompts/ralphy-*.md`
|
|
52
|
-
- Claude Code: `.claude/commands/ralphy-*.md`
|
|
53
|
-
- OpenCode: `AGENTS.md`
|
|
54
|
-
- Ralphループ状態/設定:
|
|
55
|
-
- `.ralphy/config.json`
|
|
56
|
-
- `.ralphy/ralph-loop.state.json`
|
|
57
|
-
|
|
58
|
-
## インストール
|
|
59
|
-
|
|
60
|
-
### npm(グローバル)
|
|
61
|
-
|
|
62
|
-
```bash
|
|
63
|
-
npm install -g ralphy-spec
|
|
64
|
-
```
|
|
65
|
-
|
|
66
|
-
### npx(インストール不要)
|
|
9
|
+
## クイックスタート
|
|
67
10
|
|
|
68
11
|
```bash
|
|
69
12
|
npx ralphy-spec init
|
|
70
13
|
```
|
|
71
14
|
|
|
72
|
-
|
|
15
|
+
次に、AIツールに対応するコマンドを使用します:
|
|
73
16
|
|
|
74
|
-
|
|
75
|
-
curl -fsSL https://raw.githubusercontent.com/anthropics/ralphy-openspec/main/scripts/install.sh | sh
|
|
76
|
-
```
|
|
17
|
+
### Cursor
|
|
77
18
|
|
|
78
|
-
|
|
19
|
+
| コマンド | 機能 |
|
|
20
|
+
|----------|------|
|
|
21
|
+
| `/ralphy:plan` | 要件からスペック作成 |
|
|
22
|
+
| `/ralphy:implement` | 反復ループでビルド |
|
|
23
|
+
| `/ralphy:validate` | 受け入れ基準を検証 |
|
|
24
|
+
| `/ralphy:archive` | 完了してアーカイブ |
|
|
79
25
|
|
|
80
|
-
###
|
|
26
|
+
### Claude Code
|
|
81
27
|
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
ralphy
|
|
85
|
-
|
|
28
|
+
| コマンド | 機能 |
|
|
29
|
+
|----------|------|
|
|
30
|
+
| `/ralphy:plan` | 要件からスペック作成 |
|
|
31
|
+
| `/ralphy:implement` | 反復ループでビルド |
|
|
32
|
+
| `/ralphy:validate` | 受け入れ基準を検証 |
|
|
33
|
+
| `/ralphy:archive` | 完了してアーカイブ |
|
|
86
34
|
|
|
87
|
-
|
|
35
|
+
### OpenCode
|
|
88
36
|
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
37
|
+
AGENTS.mdと自然言語を使用:
|
|
38
|
+
- `"Follow AGENTS.md to plan [機能]"`
|
|
39
|
+
- `"Follow AGENTS.md to implement [変更]"`
|
|
40
|
+
- `"Follow AGENTS.md to validate"`
|
|
41
|
+
- `"Follow AGENTS.md to archive [変更]"`
|
|
94
42
|
|
|
43
|
+
**Ralph Loopランナーと一緒に:**
|
|
95
44
|
```bash
|
|
96
|
-
|
|
45
|
+
npm install -g @th0rgal/ralph-wiggum
|
|
46
|
+
ralph "Follow AGENTS.md to implement add-api. Output <promise>TASK_COMPLETE</promise> when done." --max-iterations 20
|
|
97
47
|
```
|
|
98
48
|
|
|
99
|
-
|
|
49
|
+
## ワークフロー例
|
|
100
50
|
|
|
101
51
|
```bash
|
|
102
|
-
|
|
103
|
-
|
|
52
|
+
# 1. 計画: アイデアからスペック作成
|
|
53
|
+
You: /ralphy:plan JWT ユーザー認証を追加
|
|
104
54
|
|
|
105
|
-
|
|
55
|
+
# 2. 実装: AIが反復的にビルド
|
|
56
|
+
You: /ralphy:implement add-user-auth
|
|
106
57
|
|
|
107
|
-
|
|
108
|
-
ralphy
|
|
58
|
+
# 3. 検証: テストパスを確認
|
|
59
|
+
You: /ralphy:validate
|
|
60
|
+
|
|
61
|
+
# 4. アーカイブ: 変更を完了
|
|
62
|
+
You: /ralphy:archive add-user-auth
|
|
109
63
|
```
|
|
110
64
|
|
|
111
|
-
##
|
|
65
|
+
## 作成されるファイル
|
|
112
66
|
|
|
113
67
|
```
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
v
|
|
120
|
-
アーカイブ(ソーススペックにマージ)
|
|
121
|
-
```
|
|
122
|
-
|
|
123
|
-
### 1) 計画:PRD -> OpenSpec変更
|
|
68
|
+
.cursor/prompts/ # または .claude/commands/
|
|
69
|
+
├── ralphy-plan.md
|
|
70
|
+
├── ralphy-implement.md
|
|
71
|
+
├── ralphy-validate.md
|
|
72
|
+
└── ralphy-archive.md
|
|
124
73
|
|
|
125
|
-
|
|
74
|
+
AGENTS.md # OpenCode用
|
|
126
75
|
|
|
127
|
-
|
|
76
|
+
openspec/
|
|
77
|
+
├── specs/ # 真実の情報源
|
|
78
|
+
├── changes/ # 進行中の作業
|
|
79
|
+
├── archive/ # 完了
|
|
80
|
+
└── project.md # コンテキスト
|
|
128
81
|
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
tasks.md
|
|
133
|
-
specs/
|
|
134
|
-
<domain>/
|
|
135
|
-
spec.md
|
|
82
|
+
.ralphy/
|
|
83
|
+
├── config.json
|
|
84
|
+
└── ralph-loop.state.json
|
|
136
85
|
```
|
|
137
86
|
|
|
138
|
-
|
|
87
|
+
## 仕組み
|
|
139
88
|
|
|
140
|
-
|
|
89
|
+
**Ralph Wiggum Loop:** AIがタスク完了まで同じプロンプトを繰り返し受け取ります。各イテレーションで、ファイルの以前の作業を見て自己修正します。
|
|
141
90
|
|
|
142
|
-
|
|
91
|
+
**OpenSpec:** コードの前にスペック。構造化されたスペックと受け入れ基準により、AIが何をビルドすべきか正確に分かります。
|
|
143
92
|
|
|
144
|
-
|
|
145
|
-
<promise>TASK_COMPLETE</promise>
|
|
146
|
-
```
|
|
93
|
+
**組み合わせる理由:**
|
|
147
94
|
|
|
148
|
-
|
|
95
|
+
| 問題 | 解決策 |
|
|
96
|
+
|------|--------|
|
|
97
|
+
| チャットの曖昧な要件 | スペックが意図を固定 |
|
|
98
|
+
| AIが途中で停止 | 完了するまでループがリトライ |
|
|
99
|
+
| 検証方法がない | テストが出力を検証 |
|
|
100
|
+
| ツール固有のセットアップ | 1つのコマンドですべて解決 |
|
|
149
101
|
|
|
150
|
-
|
|
102
|
+
## インストールオプション
|
|
151
103
|
|
|
152
|
-
|
|
104
|
+
```bash
|
|
105
|
+
# npx(推奨)
|
|
106
|
+
npx ralphy-spec init
|
|
153
107
|
|
|
154
|
-
|
|
108
|
+
# グローバルインストール
|
|
109
|
+
npm install -g ralphy-spec
|
|
110
|
+
ralphy-spec init
|
|
155
111
|
|
|
156
|
-
|
|
157
|
-
|
|
112
|
+
# 特定のツールを指定
|
|
113
|
+
ralphy-spec init --tools cursor,claude-code,opencode
|
|
158
114
|
```
|
|
159
115
|
|
|
160
116
|
## 謝辞
|
|
161
117
|
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
- **Ralph Wiggum方法論** - [Geoffrey Huntley](https://ghuntley.com/ralph)が考案。AIエージェントが反復を通じて自己修正できるという洞察は、AI支援開発についての私たちの考え方を変えました。
|
|
118
|
+
以下のプロジェクトに基づいています:
|
|
165
119
|
|
|
166
|
-
- **[
|
|
167
|
-
|
|
168
|
-
- **[OpenSpec](https://github.com/Fission-AI/OpenSpec)** by
|
|
169
|
-
|
|
170
|
-
これらのアプローチを開拓したこれらのプロジェクトとメンテナーに感謝します。
|
|
171
|
-
|
|
172
|
-
## 開発
|
|
173
|
-
|
|
174
|
-
```bash
|
|
175
|
-
npm install
|
|
176
|
-
npm run build
|
|
177
|
-
node bin/ralphy-spec.js --help
|
|
178
|
-
```
|
|
120
|
+
- **[Ralph方法論](https://ghuntley.com/ralph)** by Geoffrey Huntley
|
|
121
|
+
- **[opencode-ralph-wiggum](https://github.com/Th0rgal/opencode-ralph-wiggum)** by @Th0rgal
|
|
122
|
+
- **[OpenSpec](https://github.com/Fission-AI/OpenSpec)** by Fission-AI
|
|
179
123
|
|
|
180
124
|
## ライセンス
|
|
181
125
|
|
package/README.ko.md
CHANGED
|
@@ -2,180 +2,124 @@
|
|
|
2
2
|
|
|
3
3
|
[English](README.md) | [简体中文](README.zh.md) | [한국어](README.ko.md) | [日本語](README.ja.md)
|
|
4
4
|
|
|
5
|
-
|
|
6
|
-
- Cursor
|
|
7
|
-
- OpenCode
|
|
8
|
-
- Claude Code
|
|
5
|
+
**스펙 기반 AI 개발 + 반복 실행.** OpenSpec과 Ralph Loop를 결합하여 예측 가능한 AI 지원 코딩을 실현합니다.
|
|
9
6
|
|
|
10
7
|
**웹사이트:** [https://ralphy-spec.org](https://ralphy-spec.org)
|
|
11
8
|
|
|
12
|
-
##
|
|
13
|
-
|
|
14
|
-
Ralphy-Spec은 두 가지 강력한 AI 개발 방법론을 결합합니다:
|
|
15
|
-
|
|
16
|
-
### Ralph Wiggum 루프
|
|
17
|
-
|
|
18
|
-
Ralph 방법론([Geoffrey Huntley](https://ghuntley.com/ralph)가 제안)은 AI 에이전트가 작업을 완료할 때까지 **동일한 프롬프트를 반복적으로** 받는 개발 방식입니다. 각 반복에서 AI는 파일과 git 히스토리에서 이전 작업을 보고 자기 수정 피드백 루프를 형성합니다.
|
|
19
|
-
|
|
20
|
-
```
|
|
21
|
-
while true; do
|
|
22
|
-
ai_agent "기능 X를 구축하세요. 완료되면 <promise>DONE</promise>을 출력하세요."
|
|
23
|
-
# AI가 이전 작업을 보고, 실수를 수정하고, 진행을 계속합니다
|
|
24
|
-
done
|
|
25
|
-
```
|
|
26
|
-
|
|
27
|
-
### OpenSpec (스펙 기반 개발)
|
|
28
|
-
|
|
29
|
-
[OpenSpec](https://github.com/Fission-AI/OpenSpec)은 코드 전에 스펙을 요구하여 AI 코딩에 구조를 부여합니다:
|
|
30
|
-
- `openspec/specs/` - 진실의 원천 스펙
|
|
31
|
-
- `openspec/changes/` - 인수 기준이 있는 변경 제안
|
|
32
|
-
- 완료된 변경을 다시 병합하는 아카이브 워크플로우
|
|
33
|
-
|
|
34
|
-
### 왜 결합하는가?
|
|
35
|
-
|
|
36
|
-
| 문제 | 해결책 |
|
|
37
|
-
|------|--------|
|
|
38
|
-
| 채팅 기록의 모호한 요구사항 | OpenSpec이 의도를 구조화된 스펙에 고정 |
|
|
39
|
-
| AI가 중간에 멈추거나 실수함 | Ralph 루프가 완료될 때까지 재시도 |
|
|
40
|
-
| 정확성을 검증할 방법 없음 | 인수 기준 + 테스트로 출력 검증 |
|
|
41
|
-
| 도구별 설정이 번거로움 | 한 번의 명령으로 Cursor, OpenCode, Claude Code 설정 |
|
|
42
|
-
|
|
43
|
-
## 프로젝트에 설치되는 내용
|
|
44
|
-
|
|
45
|
-
- `openspec/` 스캐폴드:
|
|
46
|
-
- `openspec/specs/` (진실의 원천)
|
|
47
|
-
- `openspec/changes/` (활성 변경)
|
|
48
|
-
- `openspec/archive/` (완료된 변경)
|
|
49
|
-
- `openspec/project.md` (프로젝트 컨텍스트)
|
|
50
|
-
- 도구 통합:
|
|
51
|
-
- Cursor: `.cursor/prompts/ralphy-*.md`
|
|
52
|
-
- Claude Code: `.claude/commands/ralphy-*.md`
|
|
53
|
-
- OpenCode: `AGENTS.md`
|
|
54
|
-
- Ralph 루프 상태/설정:
|
|
55
|
-
- `.ralphy/config.json`
|
|
56
|
-
- `.ralphy/ralph-loop.state.json`
|
|
57
|
-
|
|
58
|
-
## 설치
|
|
59
|
-
|
|
60
|
-
### npm (전역)
|
|
61
|
-
|
|
62
|
-
```bash
|
|
63
|
-
npm install -g ralphy-spec
|
|
64
|
-
```
|
|
65
|
-
|
|
66
|
-
### npx (설치 없이)
|
|
9
|
+
## 빠른 시작
|
|
67
10
|
|
|
68
11
|
```bash
|
|
69
12
|
npx ralphy-spec init
|
|
70
13
|
```
|
|
71
14
|
|
|
72
|
-
|
|
15
|
+
그런 다음 AI 도구에 맞는 명령을 사용하세요:
|
|
73
16
|
|
|
74
|
-
|
|
75
|
-
curl -fsSL https://raw.githubusercontent.com/anthropics/ralphy-openspec/main/scripts/install.sh | sh
|
|
76
|
-
```
|
|
17
|
+
### Cursor
|
|
77
18
|
|
|
78
|
-
|
|
19
|
+
| 명령 | 기능 |
|
|
20
|
+
|------|------|
|
|
21
|
+
| `/ralphy:plan` | 요구사항에서 스펙 생성 |
|
|
22
|
+
| `/ralphy:implement` | 반복 루프로 빌드 |
|
|
23
|
+
| `/ralphy:validate` | 인수 기준 검증 |
|
|
24
|
+
| `/ralphy:archive` | 완료 및 아카이브 |
|
|
79
25
|
|
|
80
|
-
###
|
|
26
|
+
### Claude Code
|
|
81
27
|
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
ralphy
|
|
85
|
-
|
|
28
|
+
| 명령 | 기능 |
|
|
29
|
+
|------|------|
|
|
30
|
+
| `/ralphy:plan` | 요구사항에서 스펙 생성 |
|
|
31
|
+
| `/ralphy:implement` | 반복 루프로 빌드 |
|
|
32
|
+
| `/ralphy:validate` | 인수 기준 검증 |
|
|
33
|
+
| `/ralphy:archive` | 완료 및 아카이브 |
|
|
86
34
|
|
|
87
|
-
|
|
35
|
+
### OpenCode
|
|
88
36
|
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
37
|
+
AGENTS.md와 함께 자연어 사용:
|
|
38
|
+
- `"Follow AGENTS.md to plan [기능]"`
|
|
39
|
+
- `"Follow AGENTS.md to implement [변경]"`
|
|
40
|
+
- `"Follow AGENTS.md to validate"`
|
|
41
|
+
- `"Follow AGENTS.md to archive [변경]"`
|
|
94
42
|
|
|
43
|
+
**Ralph Loop 러너와 함께:**
|
|
95
44
|
```bash
|
|
96
|
-
|
|
45
|
+
npm install -g @th0rgal/ralph-wiggum
|
|
46
|
+
ralph "Follow AGENTS.md to implement add-api. Output <promise>TASK_COMPLETE</promise> when done." --max-iterations 20
|
|
97
47
|
```
|
|
98
48
|
|
|
99
|
-
|
|
49
|
+
## 워크플로우 예시
|
|
100
50
|
|
|
101
51
|
```bash
|
|
102
|
-
|
|
103
|
-
|
|
52
|
+
# 1. 계획: 아이디어에서 스펙 생성
|
|
53
|
+
You: /ralphy:plan JWT 사용자 인증 추가
|
|
104
54
|
|
|
105
|
-
|
|
55
|
+
# 2. 구현: AI가 반복적으로 빌드
|
|
56
|
+
You: /ralphy:implement add-user-auth
|
|
106
57
|
|
|
107
|
-
|
|
108
|
-
ralphy
|
|
58
|
+
# 3. 검증: 테스트 통과 확인
|
|
59
|
+
You: /ralphy:validate
|
|
60
|
+
|
|
61
|
+
# 4. 아카이브: 변경 완료
|
|
62
|
+
You: /ralphy:archive add-user-auth
|
|
109
63
|
```
|
|
110
64
|
|
|
111
|
-
##
|
|
65
|
+
## 생성되는 파일
|
|
112
66
|
|
|
113
67
|
```
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
v
|
|
120
|
-
아카이브 (소스 스펙에 병합)
|
|
121
|
-
```
|
|
122
|
-
|
|
123
|
-
### 1) 계획: PRD -> OpenSpec 변경
|
|
68
|
+
.cursor/prompts/ # 또는 .claude/commands/
|
|
69
|
+
├── ralphy-plan.md
|
|
70
|
+
├── ralphy-implement.md
|
|
71
|
+
├── ralphy-validate.md
|
|
72
|
+
└── ralphy-archive.md
|
|
124
73
|
|
|
125
|
-
|
|
74
|
+
AGENTS.md # OpenCode용
|
|
126
75
|
|
|
127
|
-
|
|
76
|
+
openspec/
|
|
77
|
+
├── specs/ # 진실의 원천
|
|
78
|
+
├── changes/ # 진행 중인 작업
|
|
79
|
+
├── archive/ # 완료됨
|
|
80
|
+
└── project.md # 컨텍스트
|
|
128
81
|
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
tasks.md
|
|
133
|
-
specs/
|
|
134
|
-
<domain>/
|
|
135
|
-
spec.md
|
|
82
|
+
.ralphy/
|
|
83
|
+
├── config.json
|
|
84
|
+
└── ralph-loop.state.json
|
|
136
85
|
```
|
|
137
86
|
|
|
138
|
-
|
|
87
|
+
## 작동 방식
|
|
139
88
|
|
|
140
|
-
|
|
89
|
+
**Ralph Wiggum Loop:** AI가 작업 완료까지 동일한 프롬프트를 반복적으로 받습니다. 각 반복에서 파일의 이전 작업을 보고 자기 수정합니다.
|
|
141
90
|
|
|
142
|
-
|
|
91
|
+
**OpenSpec:** 코드 전에 스펙. 구조화된 스펙과 인수 기준으로 AI가 무엇을 빌드해야 하는지 정확히 알 수 있습니다.
|
|
143
92
|
|
|
144
|
-
|
|
145
|
-
<promise>TASK_COMPLETE</promise>
|
|
146
|
-
```
|
|
93
|
+
**결합하는 이유:**
|
|
147
94
|
|
|
148
|
-
|
|
95
|
+
| 문제 | 해결책 |
|
|
96
|
+
|------|--------|
|
|
97
|
+
| 채팅의 모호한 요구사항 | 스펙이 의도를 고정 |
|
|
98
|
+
| AI가 중간에 멈춤 | 완료될 때까지 루프 재시도 |
|
|
99
|
+
| 검증 방법 없음 | 테스트가 출력 검증 |
|
|
100
|
+
| 도구별 설정 | 하나의 명령으로 모두 해결 |
|
|
149
101
|
|
|
150
|
-
|
|
102
|
+
## 설치 옵션
|
|
151
103
|
|
|
152
|
-
|
|
104
|
+
```bash
|
|
105
|
+
# npx (권장)
|
|
106
|
+
npx ralphy-spec init
|
|
153
107
|
|
|
154
|
-
|
|
108
|
+
# 전역 설치
|
|
109
|
+
npm install -g ralphy-spec
|
|
110
|
+
ralphy-spec init
|
|
155
111
|
|
|
156
|
-
|
|
157
|
-
|
|
112
|
+
# 특정 도구 지정
|
|
113
|
+
ralphy-spec init --tools cursor,claude-code,opencode
|
|
158
114
|
```
|
|
159
115
|
|
|
160
116
|
## 감사의 말
|
|
161
117
|
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
- **Ralph Wiggum 방법론** - [Geoffrey Huntley](https://ghuntley.com/ralph)가 고안. AI 에이전트가 반복을 통해 자기 수정할 수 있다는 통찰력은 AI 지원 개발에 대한 우리의 생각을 바꾸었습니다.
|
|
118
|
+
다음 프로젝트를 기반으로 합니다:
|
|
165
119
|
|
|
166
|
-
- **[
|
|
167
|
-
|
|
168
|
-
- **[OpenSpec](https://github.com/Fission-AI/OpenSpec)** by
|
|
169
|
-
|
|
170
|
-
이러한 접근 방식을 개척한 이 프로젝트들과 유지 관리자들에게 감사드립니다.
|
|
171
|
-
|
|
172
|
-
## 개발
|
|
173
|
-
|
|
174
|
-
```bash
|
|
175
|
-
npm install
|
|
176
|
-
npm run build
|
|
177
|
-
node bin/ralphy-spec.js --help
|
|
178
|
-
```
|
|
120
|
+
- **[Ralph 방법론](https://ghuntley.com/ralph)** by Geoffrey Huntley
|
|
121
|
+
- **[opencode-ralph-wiggum](https://github.com/Th0rgal/opencode-ralph-wiggum)** by @Th0rgal
|
|
122
|
+
- **[OpenSpec](https://github.com/Fission-AI/OpenSpec)** by Fission-AI
|
|
179
123
|
|
|
180
124
|
## 라이선스
|
|
181
125
|
|