ralphy-spec 0.1.1 → 0.3.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.
Files changed (257) hide show
  1. package/CHANGELOG.md +32 -0
  2. package/README.ja.md +94 -127
  3. package/README.ko.md +94 -127
  4. package/README.md +94 -129
  5. package/README.zh.md +94 -127
  6. package/bin/ralphy-spec.js +0 -0
  7. package/dist/cli/budget.d.ts +3 -0
  8. package/dist/cli/budget.d.ts.map +1 -0
  9. package/dist/cli/budget.js +77 -0
  10. package/dist/cli/budget.js.map +1 -0
  11. package/dist/cli/checkpoint.d.ts +3 -0
  12. package/dist/cli/checkpoint.d.ts.map +1 -0
  13. package/dist/cli/checkpoint.js +23 -0
  14. package/dist/cli/checkpoint.js.map +1 -0
  15. package/dist/cli/init.d.ts +3 -0
  16. package/dist/cli/init.d.ts.map +1 -0
  17. package/dist/cli/init.js +72 -0
  18. package/dist/cli/init.js.map +1 -0
  19. package/dist/cli/report.d.ts +3 -0
  20. package/dist/cli/report.d.ts.map +1 -0
  21. package/dist/cli/report.js +53 -0
  22. package/dist/cli/report.js.map +1 -0
  23. package/dist/cli/run.d.ts +3 -0
  24. package/dist/cli/run.d.ts.map +1 -0
  25. package/dist/cli/run.js +112 -0
  26. package/dist/cli/run.js.map +1 -0
  27. package/dist/cli/status.d.ts +3 -0
  28. package/dist/cli/status.d.ts.map +1 -0
  29. package/dist/cli/status.js +76 -0
  30. package/dist/cli/status.js.map +1 -0
  31. package/dist/cli/tail.d.ts +3 -0
  32. package/dist/cli/tail.d.ts.map +1 -0
  33. package/dist/cli/tail.js +46 -0
  34. package/dist/cli/tail.js.map +1 -0
  35. package/dist/cli/update.d.ts +3 -0
  36. package/dist/cli/update.d.ts.map +1 -0
  37. package/dist/cli/update.js +62 -0
  38. package/dist/cli/update.js.map +1 -0
  39. package/dist/cli/validate.d.ts +3 -0
  40. package/dist/cli/validate.d.ts.map +1 -0
  41. package/dist/cli/validate.js +83 -0
  42. package/dist/cli/validate.js.map +1 -0
  43. package/dist/core/artifacts/budget-writer.d.ts +11 -0
  44. package/dist/core/artifacts/budget-writer.d.ts.map +1 -0
  45. package/dist/core/artifacts/budget-writer.js +28 -0
  46. package/dist/core/artifacts/budget-writer.js.map +1 -0
  47. package/dist/core/artifacts/run-log-writer.d.ts +20 -0
  48. package/dist/core/artifacts/run-log-writer.d.ts.map +1 -0
  49. package/dist/core/artifacts/run-log-writer.js +40 -0
  50. package/dist/core/artifacts/run-log-writer.js.map +1 -0
  51. package/dist/core/artifacts/run-log-writer.test.d.ts +2 -0
  52. package/dist/core/artifacts/run-log-writer.test.d.ts.map +1 -0
  53. package/dist/core/artifacts/run-log-writer.test.js +37 -0
  54. package/dist/core/artifacts/run-log-writer.test.js.map +1 -0
  55. package/dist/core/artifacts/status-writer.d.ts +16 -0
  56. package/dist/core/artifacts/status-writer.d.ts.map +1 -0
  57. package/dist/core/artifacts/status-writer.js +52 -0
  58. package/dist/core/artifacts/status-writer.js.map +1 -0
  59. package/dist/core/artifacts/status-writer.test.d.ts +2 -0
  60. package/dist/core/artifacts/status-writer.test.d.ts.map +1 -0
  61. package/dist/core/artifacts/status-writer.test.js +47 -0
  62. package/dist/core/artifacts/status-writer.test.js.map +1 -0
  63. package/dist/core/artifacts/task-artifacts.d.ts +19 -0
  64. package/dist/core/artifacts/task-artifacts.d.ts.map +1 -0
  65. package/dist/core/artifacts/task-artifacts.js +35 -0
  66. package/dist/core/artifacts/task-artifacts.js.map +1 -0
  67. package/dist/core/artifacts/tasks-writer.d.ts +19 -0
  68. package/dist/core/artifacts/tasks-writer.d.ts.map +1 -0
  69. package/dist/core/artifacts/tasks-writer.js +67 -0
  70. package/dist/core/artifacts/tasks-writer.js.map +1 -0
  71. package/dist/core/artifacts/tasks-writer.test.d.ts +2 -0
  72. package/dist/core/artifacts/tasks-writer.test.d.ts.map +1 -0
  73. package/dist/core/artifacts/tasks-writer.test.js +28 -0
  74. package/dist/core/artifacts/tasks-writer.test.js.map +1 -0
  75. package/dist/core/backends/claude-code.d.ts +17 -0
  76. package/dist/core/backends/claude-code.d.ts.map +1 -0
  77. package/dist/core/backends/claude-code.js +75 -0
  78. package/dist/core/backends/claude-code.js.map +1 -0
  79. package/dist/core/backends/cursor.d.ts +17 -0
  80. package/dist/core/backends/cursor.d.ts.map +1 -0
  81. package/dist/core/backends/cursor.js +75 -0
  82. package/dist/core/backends/cursor.js.map +1 -0
  83. package/dist/core/backends/noop.d.ts +10 -0
  84. package/dist/core/backends/noop.d.ts.map +1 -0
  85. package/dist/core/backends/noop.js +17 -0
  86. package/dist/core/backends/noop.js.map +1 -0
  87. package/dist/core/backends/opencode.d.ts +16 -0
  88. package/dist/core/backends/opencode.d.ts.map +1 -0
  89. package/dist/core/backends/opencode.js +73 -0
  90. package/dist/core/backends/opencode.js.map +1 -0
  91. package/dist/core/backends/types.d.ts +21 -0
  92. package/dist/core/backends/types.d.ts.map +1 -0
  93. package/dist/core/backends/types.js +3 -0
  94. package/dist/core/backends/types.js.map +1 -0
  95. package/dist/core/budgets/errors.d.ts +5 -0
  96. package/dist/core/budgets/errors.d.ts.map +1 -0
  97. package/dist/core/budgets/errors.js +11 -0
  98. package/dist/core/budgets/errors.js.map +1 -0
  99. package/dist/core/budgets/manager.d.ts +21 -0
  100. package/dist/core/budgets/manager.d.ts.map +1 -0
  101. package/dist/core/budgets/manager.js +48 -0
  102. package/dist/core/budgets/manager.js.map +1 -0
  103. package/dist/core/budgets/state.d.ts +25 -0
  104. package/dist/core/budgets/state.d.ts.map +1 -0
  105. package/dist/core/budgets/state.js +33 -0
  106. package/dist/core/budgets/state.js.map +1 -0
  107. package/dist/core/budgets/tiers.d.ts +32 -0
  108. package/dist/core/budgets/tiers.d.ts.map +1 -0
  109. package/dist/core/budgets/tiers.js +67 -0
  110. package/dist/core/budgets/tiers.js.map +1 -0
  111. package/dist/core/engine/constraints.d.ts +16 -0
  112. package/dist/core/engine/constraints.d.ts.map +1 -0
  113. package/dist/core/engine/constraints.js +21 -0
  114. package/dist/core/engine/constraints.js.map +1 -0
  115. package/dist/core/engine/constraints.policy.test.d.ts +2 -0
  116. package/dist/core/engine/constraints.policy.test.d.ts.map +1 -0
  117. package/dist/core/engine/constraints.policy.test.js +85 -0
  118. package/dist/core/engine/constraints.policy.test.js.map +1 -0
  119. package/dist/core/engine/context-pack.d.ts +12 -0
  120. package/dist/core/engine/context-pack.d.ts.map +1 -0
  121. package/dist/core/engine/context-pack.js +45 -0
  122. package/dist/core/engine/context-pack.js.map +1 -0
  123. package/dist/core/engine/loop.d.ts +28 -0
  124. package/dist/core/engine/loop.d.ts.map +1 -0
  125. package/dist/core/engine/loop.hardcap.test.d.ts +2 -0
  126. package/dist/core/engine/loop.hardcap.test.d.ts.map +1 -0
  127. package/dist/core/engine/loop.hardcap.test.js +77 -0
  128. package/dist/core/engine/loop.hardcap.test.js.map +1 -0
  129. package/dist/core/engine/loop.js +864 -0
  130. package/dist/core/engine/loop.js.map +1 -0
  131. package/dist/core/engine/phases.d.ts +2 -0
  132. package/dist/core/engine/phases.d.ts.map +1 -0
  133. package/dist/core/engine/phases.js +3 -0
  134. package/dist/core/engine/phases.js.map +1 -0
  135. package/dist/core/engine/repair.d.ts +6 -0
  136. package/dist/core/engine/repair.d.ts.map +1 -0
  137. package/dist/core/engine/repair.js +23 -0
  138. package/dist/core/engine/repair.js.map +1 -0
  139. package/dist/core/folders.d.ts +26 -0
  140. package/dist/core/folders.d.ts.map +1 -0
  141. package/dist/core/folders.js +58 -0
  142. package/dist/core/folders.js.map +1 -0
  143. package/dist/core/memory/ledger.d.ts +13 -0
  144. package/dist/core/memory/ledger.d.ts.map +1 -0
  145. package/dist/core/memory/ledger.js +24 -0
  146. package/dist/core/memory/ledger.js.map +1 -0
  147. package/dist/core/memory/persistence.d.ts +54 -0
  148. package/dist/core/memory/persistence.d.ts.map +1 -0
  149. package/dist/core/memory/persistence.js +180 -0
  150. package/dist/core/memory/persistence.js.map +1 -0
  151. package/dist/core/reporting/failure-summary.d.ts +23 -0
  152. package/dist/core/reporting/failure-summary.d.ts.map +1 -0
  153. package/dist/core/reporting/failure-summary.js +63 -0
  154. package/dist/core/reporting/failure-summary.js.map +1 -0
  155. package/dist/core/reporting/failure-summary.test.d.ts +2 -0
  156. package/dist/core/reporting/failure-summary.test.d.ts.map +1 -0
  157. package/dist/core/reporting/failure-summary.test.js +22 -0
  158. package/dist/core/reporting/failure-summary.test.js.map +1 -0
  159. package/dist/core/reporting/spend.d.ts +40 -0
  160. package/dist/core/reporting/spend.d.ts.map +1 -0
  161. package/dist/core/reporting/spend.js +157 -0
  162. package/dist/core/reporting/spend.js.map +1 -0
  163. package/dist/core/spec/dag.d.ts +7 -0
  164. package/dist/core/spec/dag.d.ts.map +1 -0
  165. package/dist/core/spec/dag.js +65 -0
  166. package/dist/core/spec/dag.js.map +1 -0
  167. package/dist/core/spec/file-contract.d.ts +13 -0
  168. package/dist/core/spec/file-contract.d.ts.map +1 -0
  169. package/dist/core/spec/file-contract.js +29 -0
  170. package/dist/core/spec/file-contract.js.map +1 -0
  171. package/dist/core/spec/loader.d.ts +8 -0
  172. package/dist/core/spec/loader.d.ts.map +1 -0
  173. package/dist/core/spec/loader.js +62 -0
  174. package/dist/core/spec/loader.js.map +1 -0
  175. package/dist/core/spec/schemas.d.ts +1135 -0
  176. package/dist/core/spec/schemas.d.ts.map +1 -0
  177. package/dist/core/spec/schemas.js +235 -0
  178. package/dist/core/spec/schemas.js.map +1 -0
  179. package/dist/core/spec/sprint-defaults.d.ts +16 -0
  180. package/dist/core/spec/sprint-defaults.d.ts.map +1 -0
  181. package/dist/core/spec/sprint-defaults.js +55 -0
  182. package/dist/core/spec/sprint-defaults.js.map +1 -0
  183. package/dist/core/spec/sprint-defaults.test.d.ts +2 -0
  184. package/dist/core/spec/sprint-defaults.test.d.ts.map +1 -0
  185. package/dist/core/spec/sprint-defaults.test.js +51 -0
  186. package/dist/core/spec/sprint-defaults.test.js.map +1 -0
  187. package/dist/core/spec/types.d.ts +82 -0
  188. package/dist/core/spec/types.d.ts.map +1 -0
  189. package/dist/core/spec/types.js +3 -0
  190. package/dist/core/spec/types.js.map +1 -0
  191. package/dist/core/validators/parsers/eslint.d.ts +3 -0
  192. package/dist/core/validators/parsers/eslint.d.ts.map +1 -0
  193. package/dist/core/validators/parsers/eslint.js +35 -0
  194. package/dist/core/validators/parsers/eslint.js.map +1 -0
  195. package/dist/core/validators/parsers/jest.d.ts +3 -0
  196. package/dist/core/validators/parsers/jest.d.ts.map +1 -0
  197. package/dist/core/validators/parsers/jest.js +16 -0
  198. package/dist/core/validators/parsers/jest.js.map +1 -0
  199. package/dist/core/validators/parsers/tsc.d.ts +3 -0
  200. package/dist/core/validators/parsers/tsc.d.ts.map +1 -0
  201. package/dist/core/validators/parsers/tsc.js +32 -0
  202. package/dist/core/validators/parsers/tsc.js.map +1 -0
  203. package/dist/core/validators/runner.d.ts +8 -0
  204. package/dist/core/validators/runner.d.ts.map +1 -0
  205. package/dist/core/validators/runner.js +85 -0
  206. package/dist/core/validators/runner.js.map +1 -0
  207. package/dist/core/validators/signatures.d.ts +3 -0
  208. package/dist/core/validators/signatures.d.ts.map +1 -0
  209. package/dist/core/validators/signatures.js +10 -0
  210. package/dist/core/validators/signatures.js.map +1 -0
  211. package/dist/core/validators/types.d.ts +27 -0
  212. package/dist/core/validators/types.d.ts.map +1 -0
  213. package/dist/core/validators/types.js +3 -0
  214. package/dist/core/validators/types.js.map +1 -0
  215. package/dist/core/workspace/contract-enforcer.d.ts +54 -0
  216. package/dist/core/workspace/contract-enforcer.d.ts.map +1 -0
  217. package/dist/core/workspace/contract-enforcer.js +128 -0
  218. package/dist/core/workspace/contract-enforcer.js.map +1 -0
  219. package/dist/core/workspace/manager.d.ts +28 -0
  220. package/dist/core/workspace/manager.d.ts.map +1 -0
  221. package/dist/core/workspace/manager.js +3 -0
  222. package/dist/core/workspace/manager.js.map +1 -0
  223. package/dist/core/workspace/merge.d.ts +38 -0
  224. package/dist/core/workspace/merge.d.ts.map +1 -0
  225. package/dist/core/workspace/merge.js +92 -0
  226. package/dist/core/workspace/merge.js.map +1 -0
  227. package/dist/core/workspace/patch-mode.d.ts +22 -0
  228. package/dist/core/workspace/patch-mode.d.ts.map +1 -0
  229. package/dist/core/workspace/patch-mode.js +91 -0
  230. package/dist/core/workspace/patch-mode.js.map +1 -0
  231. package/dist/core/workspace/scope-detector.d.ts +13 -0
  232. package/dist/core/workspace/scope-detector.d.ts.map +1 -0
  233. package/dist/core/workspace/scope-detector.js +34 -0
  234. package/dist/core/workspace/scope-detector.js.map +1 -0
  235. package/dist/core/workspace/worktree-mode.d.ts +28 -0
  236. package/dist/core/workspace/worktree-mode.d.ts.map +1 -0
  237. package/dist/core/workspace/worktree-mode.js +157 -0
  238. package/dist/core/workspace/worktree-mode.js.map +1 -0
  239. package/dist/index.js +16 -4
  240. package/dist/index.js.map +1 -1
  241. package/dist/templates/claude-code/ralphy-archive.md +1 -1
  242. package/dist/templates/claude-code/ralphy-implement.md +1 -1
  243. package/dist/templates/claude-code/ralphy-plan.md +1 -1
  244. package/dist/templates/claude-code/ralphy-validate.md +1 -1
  245. package/dist/templates/cursor/ralphy-archive.md +1 -1
  246. package/dist/templates/cursor/ralphy-implement.md +1 -1
  247. package/dist/templates/cursor/ralphy-plan.md +1 -1
  248. package/dist/templates/cursor/ralphy-validate.md +1 -1
  249. package/dist/templates/shared/openspec-tasks-template.md +23 -3
  250. package/dist/templates/shared/project-template.yml +232 -0
  251. package/dist/utils/installer.d.ts.map +1 -1
  252. package/dist/utils/installer.js +31 -1
  253. package/dist/utils/installer.js.map +1 -1
  254. package/dist/utils/validator.d.ts.map +1 -1
  255. package/dist/utils/validator.js +10 -0
  256. package/dist/utils/validator.js.map +1 -1
  257. package/package.json +15 -5
package/CHANGELOG.md ADDED
@@ -0,0 +1,32 @@
1
+ # Changelog
2
+
3
+ All notable changes to this project will be documented in this file.
4
+
5
+ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
6
+ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7
+
8
+ ## [0.2.0] - 2026-01-23
9
+
10
+ ### Added
11
+ - Initial public release of `ralphy-spec`.
12
+ - Astro-powered documentation site with i18n (en/zh/ko/ja).
13
+
14
+ ### Changed
15
+ - N/A
16
+
17
+ ### Fixed
18
+ - N/A
19
+
20
+ ## [0.3.0] - 2026-01-23
21
+
22
+ ### Added
23
+ - Budget intelligence: three-tier budgets (optimal → warning → hard) with hard-cap blocking + failure summaries.
24
+ - Sprint semantics: `sprint.size` defaults, `sprint.intent` constraints, and configurable scope guard policy (`off|warn|block`).
25
+ - Artifact system: `ralphy-spec/` folder, STATUS/TASKS/BUDGET writers, per-task artifacts, immutable run logs, and `--artifact-dir`.
26
+ - New CLI command: `ralphy-spec budget` and a full CLI docs page on the website.
27
+ - Test suite (Vitest) covering the above behaviors.
28
+
29
+ ### Changed
30
+ - `ralphy-spec run` now supports `worktree` mode and real backend selection (`cursor|opencode|claude-code|noop`).
31
+ - Docs + README (all languages) updated to reflect the new artifacts and CLI.
32
+
package/README.ja.md CHANGED
@@ -2,180 +2,147 @@
2
2
 
3
3
  [English](README.md) | [简体中文](README.zh.md) | [한국어](README.ko.md) | [日本語](README.ja.md)
4
4
 
5
- 以下のツール向けに **Ralph ループ + OpenSpec** ワークフローを1つのコマンドでセットアップ:
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)
8
+ **ドキュメント:** [https://ralphy-spec.org/ja/docs/](https://ralphy-spec.org/ja/docs/)
9
+ **変更履歴:** [https://ralphy-spec.org/ja/changelog/](https://ralphy-spec.org/ja/changelog/) · [GitHub](https://github.com/wenqingyu/ralphy-openspec/blob/main/CHANGELOG.md)
11
10
 
12
- ## Ralphy-Specとは?
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(インストール不要)
11
+ ## クイックスタート
67
12
 
68
13
  ```bash
69
14
  npx ralphy-spec init
70
15
  ```
71
16
 
72
- ### curlインストールスクリプト
17
+ CLI 基本:
73
18
 
74
19
  ```bash
75
- curl -fsSL https://raw.githubusercontent.com/anthropics/ralphy-openspec/main/scripts/install.sh | sh
20
+ ralphy-spec run --dry-run
21
+ ralphy-spec run
22
+ ralphy-spec status
23
+ ralphy-spec budget --json
76
24
  ```
77
25
 
78
- ## 使用方法
79
-
80
- ### プロジェクトで初期化
26
+ 次に、AIツールに対応するコマンドを使用します:
81
27
 
82
- ```bash
83
- cd your-project
84
- ralphy-spec init
85
- ```
28
+ ### Cursor
86
29
 
87
- 非対話的なツール選択:
30
+ | コマンド | 機能 |
31
+ |----------|------|
32
+ | `/ralphy-plan` | 要件からスペック作成 |
33
+ | `/ralphy-implement` | 反復ループでビルド |
34
+ | `/ralphy-validate` | 受け入れ基準を検証 |
35
+ | `/ralphy-archive` | 完了してアーカイブ |
88
36
 
89
- ```bash
90
- ralphy-spec init --tools cursor,claude-code,opencode
91
- ```
37
+ ### Claude Code
92
38
 
93
- 既存ファイルの上書き:
39
+ | コマンド | 機能 |
40
+ |----------|------|
41
+ | `/ralphy-plan` | 要件からスペック作成 |
42
+ | `/ralphy-implement` | 反復ループでビルド |
43
+ | `/ralphy-validate` | 受け入れ基準を検証 |
44
+ | `/ralphy-archive` | 完了してアーカイブ |
94
45
 
95
- ```bash
96
- ralphy-spec init --force
97
- ```
46
+ ### OpenCode
98
47
 
99
- ### セットアップの検証
48
+ AGENTS.mdと自然言語を使用:
49
+ - `"Follow AGENTS.md to plan [機能]"`
50
+ - `"Follow AGENTS.md to implement [変更]"`
51
+ - `"Follow AGENTS.md to validate"`
52
+ - `"Follow AGENTS.md to archive [変更]"`
100
53
 
54
+ **Ralph Loopランナーと一緒に:**
101
55
  ```bash
102
- ralphy-spec validate
56
+ npm install -g @th0rgal/ralph-wiggum
57
+ ralph "Follow AGENTS.md to implement add-api. Output <promise>TASK_COMPLETE</promise> when done." --max-iterations 20
103
58
  ```
104
59
 
105
- ### テンプレートの更新
60
+ ## ワークフロー例
106
61
 
107
62
  ```bash
108
- ralphy-spec update --force
109
- ```
63
+ # 1. 計画: アイデアからスペック作成
64
+ You: /ralphy-plan JWT ユーザー認証を追加
110
65
 
111
- ## ワークフロー(PRD -> リリース)
112
-
113
- ```
114
- PRD/要件 --> OpenSpec(スペック + タスク + 受け入れ基準)
115
- |
116
- v
117
- Ralphループ(テストが通るまで反復)
118
- |
119
- v
120
- アーカイブ(ソーススペックにマージ)
121
- ```
66
+ # 2. 実装: AIが反復的にビルド
67
+ You: /ralphy-implement add-user-auth
122
68
 
123
- ### 1) 計画:PRD -> OpenSpec変更
69
+ # 3. 検証: テストパスを確認
70
+ You: /ralphy-validate
124
71
 
125
- AIツールで`/ralphy:plan`(Cursor / Claude Code)を使用するか、OpenCodeに`AGENTS.md`に従うよう依頼します。
72
+ # 4. アーカイブ: 変更を完了
73
+ You: /ralphy-archive add-user-auth
74
+ ```
126
75
 
127
- リポジトリでの期待される出力:
76
+ ## 作成されるファイル
128
77
 
129
78
  ```
130
- openspec/changes/<change-name>/
131
- proposal.md
132
- tasks.md
133
- specs/
134
- <domain>/
135
- spec.md
136
- ```
137
-
138
- ### 2) 実装:完了するまで反復
79
+ .cursor/prompts/ # または .claude/commands/
80
+ ├── ralphy-plan.md
81
+ ├── ralphy-implement.md
82
+ ├── ralphy-validate.md
83
+ └── ralphy-archive.md
139
84
 
140
- `/ralphy:implement`を使用してタスクを実装し、テストを追加します。
85
+ AGENTS.md # OpenCode用
141
86
 
142
- Ralphループランナーで実行する場合、エージェントは**すべてのタスクが完了しテストが通った場合のみ**以下を出力します:
87
+ openspec/
88
+ ├── specs/ # 真実の情報源
89
+ ├── changes/ # 進行中の作業
90
+ ├── archive/ # 完了
91
+ └── project.md # コンテキスト
143
92
 
144
- ```
145
- <promise>TASK_COMPLETE</promise>
93
+ ralphy-spec/ # ローカル状態 + アーティファクト(IDE向け)
94
+ ├── state.db # SQLite 実行/タスクログ
95
+ ├── STATUS.md # ライブ状態(`ralphy-spec status` が優先)
96
+ ├── TASKS.md # タスクボード
97
+ ├── BUDGET.md # コスト/予算
98
+ ├── runs/ # 不変の実行ログ(`runs/<runId>.md`)
99
+ ├── logs/ # バックエンド出力(ベストエフォート)
100
+ ├── worktrees/ # Git worktree(worktreeモード時)
101
+ └── tasks/ # タスク別アーティファクト(CONTEXT / REPAIR / NOTES)
102
+ └── <taskId>/
103
+ ├── CONTEXT.md
104
+ ├── REPAIR.md
105
+ └── NOTES.md
146
106
  ```
147
107
 
148
- ### 3) 検証:テストで受け入れ基準を証明
108
+ > 注: 既存の `.ralphy/` フォルダが見つかった場合、`ralphy-spec/` へ自動的に移行します。
149
109
 
150
- `/ralphy:validate`を使用してテストを実行し、通過したテストをOpenSpecシナリオにマッピングします。
110
+ ## 仕組み
151
111
 
152
- ### 4) アーカイブ:変更をスペックにマージ
112
+ **Ralph Wiggum Loop:** AIがタスク完了まで同じプロンプトを繰り返し受け取ります。各イテレーションで、ファイルの以前の作業を見て自己修正します。
153
113
 
154
- `/ralphy:archive`を使用し、利用可能であればOpenSpec CLIを使用します:
114
+ **OpenSpec:** コードの前にスペック。構造化されたスペックと受け入れ基準により、AIが何をビルドすべきか正確に分かります。
155
115
 
156
- ```bash
157
- openspec archive <change-name> --yes
158
- ```
116
+ **組み合わせる理由:**
159
117
 
160
- ## 謝辞
118
+ | 問題 | 解決策 |
119
+ |------|--------|
120
+ | チャットの曖昧な要件 | スペックが意図を固定 |
121
+ | AIが途中で停止 | 完了するまでループがリトライ |
122
+ | 検証方法がない | テストが出力を検証 |
123
+ | ツール固有のセットアップ | 1つのコマンドですべて解決 |
161
124
 
162
- Ralphy-Specは巨人の肩の上に立っています:
125
+ ## インストールオプション
163
126
 
164
- - **Ralph Wiggum方法論** - [Geoffrey Huntley](https://ghuntley.com/ralph)が考案。AIエージェントが反復を通じて自己修正できるという洞察は、AI支援開発についての私たちの考え方を変えました。
127
+ ```bash
128
+ # npx(推奨)
129
+ npx ralphy-spec init
165
130
 
166
- - **[opencode-ralph-wiggum](https://github.com/Th0rgal/opencode-ralph-wiggum)** by [@Th0rgal](https://github.com/Th0rgal) - 私たちの統合アプローチにインスピレーションを与えたOpenCode用のクリーンなRalphループCLI実装。
131
+ # グローバルインストール
132
+ npm install -g ralphy-spec
133
+ ralphy-spec init
167
134
 
168
- - **[OpenSpec](https://github.com/Fission-AI/OpenSpec)** by [Fission-AI](https://github.com/Fission-AI) - AIコーディングに構造と予測可能性をもたらすスペック駆動開発フレームワーク。
135
+ # 特定のツールを指定
136
+ ralphy-spec init --tools cursor,claude-code,opencode
137
+ ```
169
138
 
170
- これらのアプローチを開拓したこれらのプロジェクトとメンテナーに感謝します。
139
+ ## 謝辞
171
140
 
172
- ## 開発
141
+ 以下のプロジェクトに基づいています:
173
142
 
174
- ```bash
175
- npm install
176
- npm run build
177
- node bin/ralphy-spec.js --help
178
- ```
143
+ - **[Ralph方法論](https://ghuntley.com/ralph)** by Geoffrey Huntley
144
+ - **[opencode-ralph-wiggum](https://github.com/Th0rgal/opencode-ralph-wiggum)** by @Th0rgal
145
+ - **[OpenSpec](https://github.com/Fission-AI/OpenSpec)** by Fission-AI
179
146
 
180
147
  ## ライセンス
181
148
 
package/README.ko.md CHANGED
@@ -2,180 +2,147 @@
2
2
 
3
3
  [English](README.md) | [简体中文](README.zh.md) | [한국어](README.ko.md) | [日本語](README.ja.md)
4
4
 
5
- 다음 도구를 위한 **Ralph 루프 + OpenSpec** 워크플로우를 번의 명령으로 설정:
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)
8
+ **문서:** [https://ralphy-spec.org/ko/docs/](https://ralphy-spec.org/ko/docs/)
9
+ **변경 로그:** [https://ralphy-spec.org/ko/changelog/](https://ralphy-spec.org/ko/changelog/) · [GitHub](https://github.com/wenqingyu/ralphy-openspec/blob/main/CHANGELOG.md)
11
10
 
12
- ## Ralphy-Spec이란?
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 (설치 없이)
11
+ ## 빠른 시작
67
12
 
68
13
  ```bash
69
14
  npx ralphy-spec init
70
15
  ```
71
16
 
72
- ### curl 설치 스크립트
17
+ CLI 기본 사용:
73
18
 
74
19
  ```bash
75
- curl -fsSL https://raw.githubusercontent.com/anthropics/ralphy-openspec/main/scripts/install.sh | sh
20
+ ralphy-spec run --dry-run
21
+ ralphy-spec run
22
+ ralphy-spec status
23
+ ralphy-spec budget --json
76
24
  ```
77
25
 
78
- ## 사용법
79
-
80
- ### 프로젝트에서 초기화
26
+ 그런 다음 AI 도구에 맞는 명령을 사용하세요:
81
27
 
82
- ```bash
83
- cd your-project
84
- ralphy-spec init
85
- ```
28
+ ### Cursor
86
29
 
87
- 비대화형 도구 선택:
30
+ | 명령 | 기능 |
31
+ |------|------|
32
+ | `/ralphy-plan` | 요구사항에서 스펙 생성 |
33
+ | `/ralphy-implement` | 반복 루프로 빌드 |
34
+ | `/ralphy-validate` | 인수 기준 검증 |
35
+ | `/ralphy-archive` | 완료 및 아카이브 |
88
36
 
89
- ```bash
90
- ralphy-spec init --tools cursor,claude-code,opencode
91
- ```
37
+ ### Claude Code
92
38
 
93
- 기존 파일 덮어쓰기:
39
+ | 명령 | 기능 |
40
+ |------|------|
41
+ | `/ralphy-plan` | 요구사항에서 스펙 생성 |
42
+ | `/ralphy-implement` | 반복 루프로 빌드 |
43
+ | `/ralphy-validate` | 인수 기준 검증 |
44
+ | `/ralphy-archive` | 완료 및 아카이브 |
94
45
 
95
- ```bash
96
- ralphy-spec init --force
97
- ```
46
+ ### OpenCode
98
47
 
99
- ### 설정 검증
48
+ AGENTS.md와 함께 자연어 사용:
49
+ - `"Follow AGENTS.md to plan [기능]"`
50
+ - `"Follow AGENTS.md to implement [변경]"`
51
+ - `"Follow AGENTS.md to validate"`
52
+ - `"Follow AGENTS.md to archive [변경]"`
100
53
 
54
+ **Ralph Loop 러너와 함께:**
101
55
  ```bash
102
- ralphy-spec validate
56
+ npm install -g @th0rgal/ralph-wiggum
57
+ ralph "Follow AGENTS.md to implement add-api. Output <promise>TASK_COMPLETE</promise> when done." --max-iterations 20
103
58
  ```
104
59
 
105
- ### 템플릿 업데이트
60
+ ## 워크플로우 예시
106
61
 
107
62
  ```bash
108
- ralphy-spec update --force
109
- ```
63
+ # 1. 계획: 아이디어에서 스펙 생성
64
+ You: /ralphy-plan JWT 사용자 인증 추가
110
65
 
111
- ## 워크플로우 (PRD -> 출시)
112
-
113
- ```
114
- PRD/요구사항 --> OpenSpec (스펙 + 작업 + 인수 기준)
115
- |
116
- v
117
- Ralph 루프 (테스트 통과까지 반복)
118
- |
119
- v
120
- 아카이브 (소스 스펙에 병합)
121
- ```
66
+ # 2. 구현: AI가 반복적으로 빌드
67
+ You: /ralphy-implement add-user-auth
122
68
 
123
- ### 1) 계획: PRD -> OpenSpec 변경
69
+ # 3. 검증: 테스트 통과 확인
70
+ You: /ralphy-validate
124
71
 
125
- AI 도구에서 `/ralphy:plan` (Cursor / Claude Code)을 사용하거나 OpenCode에 `AGENTS.md`를 따르도록 요청합니다.
72
+ # 4. 아카이브: 변경 완료
73
+ You: /ralphy-archive add-user-auth
74
+ ```
126
75
 
127
- 저장소에 예상되는 출력:
76
+ ## 생성되는 파일
128
77
 
129
78
  ```
130
- openspec/changes/<change-name>/
131
- proposal.md
132
- tasks.md
133
- specs/
134
- <domain>/
135
- spec.md
136
- ```
137
-
138
- ### 2) 구현: 완료될 때까지 반복
79
+ .cursor/prompts/ # 또는 .claude/commands/
80
+ ├── ralphy-plan.md
81
+ ├── ralphy-implement.md
82
+ ├── ralphy-validate.md
83
+ └── ralphy-archive.md
139
84
 
140
- `/ralphy:implement`를 사용하여 작업을 구현하고 테스트를 추가합니다.
85
+ AGENTS.md # OpenCode용
141
86
 
142
- Ralph 루프 러너를 통해 실행하는 경우, 에이전트는 **모든 작업이 완료되고 테스트가 통과했을 때만** 다음을 출력해야 합니다:
87
+ openspec/
88
+ ├── specs/ # 진실의 원천
89
+ ├── changes/ # 진행 중인 작업
90
+ ├── archive/ # 완료됨
91
+ └── project.md # 컨텍스트
143
92
 
144
- ```
145
- <promise>TASK_COMPLETE</promise>
93
+ ralphy-spec/ # 로컬 상태 + 아티팩트(IDE 친화적)
94
+ ├── state.db # SQLite 실행/태스크 로그
95
+ ├── STATUS.md # 라이브 상태(`ralphy-spec status`가 우선 사용)
96
+ ├── TASKS.md # 태스크 보드
97
+ ├── BUDGET.md # 비용/예산
98
+ ├── runs/ # 불변 실행 로그(`runs/<runId>.md`)
99
+ ├── logs/ # 백엔드 원본 출력(가능한 경우)
100
+ ├── worktrees/ # Git worktree(worktree 모드 사용 시)
101
+ └── tasks/ # 태스크별 아티팩트(CONTEXT / REPAIR / NOTES)
102
+ └── <taskId>/
103
+ ├── CONTEXT.md
104
+ ├── REPAIR.md
105
+ └── NOTES.md
146
106
  ```
147
107
 
148
- ### 3) 검증: 테스트로 인수 기준 증명
108
+ > 참고: 기존 `.ralphy/` 폴더가 있으면 자동으로 `ralphy-spec/`로 마이그레이션됩니다.
149
109
 
150
- `/ralphy:validate`를 사용하여 테스트를 실행하고 통과한 테스트를 OpenSpec 시나리오에 매핑합니다.
110
+ ## 작동 방식
151
111
 
152
- ### 4) 아카이브: 변경을 스펙에 병합
112
+ **Ralph Wiggum Loop:** AI가 작업 완료까지 동일한 프롬프트를 반복적으로 받습니다. 각 반복에서 파일의 이전 작업을 보고 자기 수정합니다.
153
113
 
154
- `/ralphy:archive`를 사용하고, 가능하다면 OpenSpec CLI를 사용합니다:
114
+ **OpenSpec:** 코드 전에 스펙. 구조화된 스펙과 인수 기준으로 AI가 무엇을 빌드해야 하는지 정확히 알 수 있습니다.
155
115
 
156
- ```bash
157
- openspec archive <change-name> --yes
158
- ```
116
+ **결합하는 이유:**
159
117
 
160
- ## 감사의
118
+ | 문제 | 해결책 |
119
+ |------|--------|
120
+ | 채팅의 모호한 요구사항 | 스펙이 의도를 고정 |
121
+ | AI가 중간에 멈춤 | 완료될 때까지 루프 재시도 |
122
+ | 검증 방법 없음 | 테스트가 출력 검증 |
123
+ | 도구별 설정 | 하나의 명령으로 모두 해결 |
161
124
 
162
- Ralphy-Spec은 거인의 어깨 위에 서 있습니다:
125
+ ## 설치 옵션
163
126
 
164
- - **Ralph Wiggum 방법론** - [Geoffrey Huntley](https://ghuntley.com/ralph)가 고안. AI 에이전트가 반복을 통해 자기 수정할 수 있다는 통찰력은 AI 지원 개발에 대한 우리의 생각을 바꾸었습니다.
127
+ ```bash
128
+ # npx (권장)
129
+ npx ralphy-spec init
165
130
 
166
- - **[opencode-ralph-wiggum](https://github.com/Th0rgal/opencode-ralph-wiggum)** by [@Th0rgal](https://github.com/Th0rgal) - 우리의 통합 방식에 영감을 준 OpenCode용 깔끔한 Ralph 루프 CLI 구현.
131
+ # 전역 설치
132
+ npm install -g ralphy-spec
133
+ ralphy-spec init
167
134
 
168
- - **[OpenSpec](https://github.com/Fission-AI/OpenSpec)** by [Fission-AI](https://github.com/Fission-AI) - AI 코딩에 구조와 예측 가능성을 부여하는 스펙 기반 개발 프레임워크.
135
+ # 특정 도구 지정
136
+ ralphy-spec init --tools cursor,claude-code,opencode
137
+ ```
169
138
 
170
- 이러한 접근 방식을 개척한 이 프로젝트들과 유지 관리자들에게 감사드립니다.
139
+ ## 감사의
171
140
 
172
- ## 개발
141
+ 다음 프로젝트를 기반으로 합니다:
173
142
 
174
- ```bash
175
- npm install
176
- npm run build
177
- node bin/ralphy-spec.js --help
178
- ```
143
+ - **[Ralph 방법론](https://ghuntley.com/ralph)** by Geoffrey Huntley
144
+ - **[opencode-ralph-wiggum](https://github.com/Th0rgal/opencode-ralph-wiggum)** by @Th0rgal
145
+ - **[OpenSpec](https://github.com/Fission-AI/OpenSpec)** by Fission-AI
179
146
 
180
147
  ## 라이선스
181
148