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.
- package/CHANGELOG.md +32 -0
- package/README.ja.md +94 -127
- package/README.ko.md +94 -127
- package/README.md +94 -129
- package/README.zh.md +94 -127
- package/bin/ralphy-spec.js +0 -0
- package/dist/cli/budget.d.ts +3 -0
- package/dist/cli/budget.d.ts.map +1 -0
- package/dist/cli/budget.js +77 -0
- package/dist/cli/budget.js.map +1 -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 +72 -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 +112 -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 +76 -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/artifacts/budget-writer.d.ts +11 -0
- package/dist/core/artifacts/budget-writer.d.ts.map +1 -0
- package/dist/core/artifacts/budget-writer.js +28 -0
- package/dist/core/artifacts/budget-writer.js.map +1 -0
- package/dist/core/artifacts/run-log-writer.d.ts +20 -0
- package/dist/core/artifacts/run-log-writer.d.ts.map +1 -0
- package/dist/core/artifacts/run-log-writer.js +40 -0
- package/dist/core/artifacts/run-log-writer.js.map +1 -0
- package/dist/core/artifacts/run-log-writer.test.d.ts +2 -0
- package/dist/core/artifacts/run-log-writer.test.d.ts.map +1 -0
- package/dist/core/artifacts/run-log-writer.test.js +37 -0
- package/dist/core/artifacts/run-log-writer.test.js.map +1 -0
- package/dist/core/artifacts/status-writer.d.ts +16 -0
- package/dist/core/artifacts/status-writer.d.ts.map +1 -0
- package/dist/core/artifacts/status-writer.js +52 -0
- package/dist/core/artifacts/status-writer.js.map +1 -0
- package/dist/core/artifacts/status-writer.test.d.ts +2 -0
- package/dist/core/artifacts/status-writer.test.d.ts.map +1 -0
- package/dist/core/artifacts/status-writer.test.js +47 -0
- package/dist/core/artifacts/status-writer.test.js.map +1 -0
- package/dist/core/artifacts/task-artifacts.d.ts +19 -0
- package/dist/core/artifacts/task-artifacts.d.ts.map +1 -0
- package/dist/core/artifacts/task-artifacts.js +35 -0
- package/dist/core/artifacts/task-artifacts.js.map +1 -0
- package/dist/core/artifacts/tasks-writer.d.ts +19 -0
- package/dist/core/artifacts/tasks-writer.d.ts.map +1 -0
- package/dist/core/artifacts/tasks-writer.js +67 -0
- package/dist/core/artifacts/tasks-writer.js.map +1 -0
- package/dist/core/artifacts/tasks-writer.test.d.ts +2 -0
- package/dist/core/artifacts/tasks-writer.test.d.ts.map +1 -0
- package/dist/core/artifacts/tasks-writer.test.js +28 -0
- package/dist/core/artifacts/tasks-writer.test.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/errors.d.ts +5 -0
- package/dist/core/budgets/errors.d.ts.map +1 -0
- package/dist/core/budgets/errors.js +11 -0
- package/dist/core/budgets/errors.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/constraints.d.ts +16 -0
- package/dist/core/engine/constraints.d.ts.map +1 -0
- package/dist/core/engine/constraints.js +21 -0
- package/dist/core/engine/constraints.js.map +1 -0
- package/dist/core/engine/constraints.policy.test.d.ts +2 -0
- package/dist/core/engine/constraints.policy.test.d.ts.map +1 -0
- package/dist/core/engine/constraints.policy.test.js +85 -0
- package/dist/core/engine/constraints.policy.test.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.hardcap.test.d.ts +2 -0
- package/dist/core/engine/loop.hardcap.test.d.ts.map +1 -0
- package/dist/core/engine/loop.hardcap.test.js +77 -0
- package/dist/core/engine/loop.hardcap.test.js.map +1 -0
- package/dist/core/engine/loop.js +864 -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 +54 -0
- package/dist/core/memory/persistence.d.ts.map +1 -0
- package/dist/core/memory/persistence.js +180 -0
- package/dist/core/memory/persistence.js.map +1 -0
- package/dist/core/reporting/failure-summary.d.ts +23 -0
- package/dist/core/reporting/failure-summary.d.ts.map +1 -0
- package/dist/core/reporting/failure-summary.js +63 -0
- package/dist/core/reporting/failure-summary.js.map +1 -0
- package/dist/core/reporting/failure-summary.test.d.ts +2 -0
- package/dist/core/reporting/failure-summary.test.d.ts.map +1 -0
- package/dist/core/reporting/failure-summary.test.js +22 -0
- package/dist/core/reporting/failure-summary.test.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 +62 -0
- package/dist/core/spec/loader.js.map +1 -0
- package/dist/core/spec/schemas.d.ts +1135 -0
- package/dist/core/spec/schemas.d.ts.map +1 -0
- package/dist/core/spec/schemas.js +235 -0
- package/dist/core/spec/schemas.js.map +1 -0
- package/dist/core/spec/sprint-defaults.d.ts +16 -0
- package/dist/core/spec/sprint-defaults.d.ts.map +1 -0
- package/dist/core/spec/sprint-defaults.js +55 -0
- package/dist/core/spec/sprint-defaults.js.map +1 -0
- package/dist/core/spec/sprint-defaults.test.d.ts +2 -0
- package/dist/core/spec/sprint-defaults.test.d.ts.map +1 -0
- package/dist/core/spec/sprint-defaults.test.js +51 -0
- package/dist/core/spec/sprint-defaults.test.js.map +1 -0
- package/dist/core/spec/types.d.ts +82 -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/scope-detector.d.ts +13 -0
- package/dist/core/workspace/scope-detector.d.ts.map +1 -0
- package/dist/core/workspace/scope-detector.js +34 -0
- package/dist/core/workspace/scope-detector.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 +157 -0
- package/dist/core/workspace/worktree-mode.js.map +1 -0
- package/dist/index.js +16 -4
- package/dist/index.js.map +1 -1
- package/dist/templates/claude-code/ralphy-archive.md +1 -1
- package/dist/templates/claude-code/ralphy-implement.md +1 -1
- package/dist/templates/claude-code/ralphy-plan.md +1 -1
- package/dist/templates/claude-code/ralphy-validate.md +1 -1
- package/dist/templates/cursor/ralphy-archive.md +1 -1
- package/dist/templates/cursor/ralphy-implement.md +1 -1
- package/dist/templates/cursor/ralphy-plan.md +1 -1
- package/dist/templates/cursor/ralphy-validate.md +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 +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
|
-
|
|
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
|
-
##
|
|
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
|
-
|
|
17
|
+
CLI 基本:
|
|
73
18
|
|
|
74
19
|
```bash
|
|
75
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
109
|
-
|
|
63
|
+
# 1. 計画: アイデアからスペック作成
|
|
64
|
+
You: /ralphy-plan JWT ユーザー認証を追加
|
|
110
65
|
|
|
111
|
-
|
|
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
|
-
|
|
69
|
+
# 3. 検証: テストパスを確認
|
|
70
|
+
You: /ralphy-validate
|
|
124
71
|
|
|
125
|
-
|
|
72
|
+
# 4. アーカイブ: 変更を完了
|
|
73
|
+
You: /ralphy-archive add-user-auth
|
|
74
|
+
```
|
|
126
75
|
|
|
127
|
-
|
|
76
|
+
## 作成されるファイル
|
|
128
77
|
|
|
129
78
|
```
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
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
|
-
|
|
85
|
+
AGENTS.md # OpenCode用
|
|
141
86
|
|
|
142
|
-
|
|
87
|
+
openspec/
|
|
88
|
+
├── specs/ # 真実の情報源
|
|
89
|
+
├── changes/ # 進行中の作業
|
|
90
|
+
├── archive/ # 完了
|
|
91
|
+
└── project.md # コンテキスト
|
|
143
92
|
|
|
144
|
-
|
|
145
|
-
|
|
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
|
-
|
|
108
|
+
> 注: 既存の `.ralphy/` フォルダが見つかった場合、`ralphy-spec/` へ自動的に移行します。
|
|
149
109
|
|
|
150
|
-
|
|
110
|
+
## 仕組み
|
|
151
111
|
|
|
152
|
-
|
|
112
|
+
**Ralph Wiggum Loop:** AIがタスク完了まで同じプロンプトを繰り返し受け取ります。各イテレーションで、ファイルの以前の作業を見て自己修正します。
|
|
153
113
|
|
|
154
|
-
|
|
114
|
+
**OpenSpec:** コードの前にスペック。構造化されたスペックと受け入れ基準により、AIが何をビルドすべきか正確に分かります。
|
|
155
115
|
|
|
156
|
-
|
|
157
|
-
openspec archive <change-name> --yes
|
|
158
|
-
```
|
|
116
|
+
**組み合わせる理由:**
|
|
159
117
|
|
|
160
|
-
|
|
118
|
+
| 問題 | 解決策 |
|
|
119
|
+
|------|--------|
|
|
120
|
+
| チャットの曖昧な要件 | スペックが意図を固定 |
|
|
121
|
+
| AIが途中で停止 | 完了するまでループがリトライ |
|
|
122
|
+
| 検証方法がない | テストが出力を検証 |
|
|
123
|
+
| ツール固有のセットアップ | 1つのコマンドですべて解決 |
|
|
161
124
|
|
|
162
|
-
|
|
125
|
+
## インストールオプション
|
|
163
126
|
|
|
164
|
-
|
|
127
|
+
```bash
|
|
128
|
+
# npx(推奨)
|
|
129
|
+
npx ralphy-spec init
|
|
165
130
|
|
|
166
|
-
|
|
131
|
+
# グローバルインストール
|
|
132
|
+
npm install -g ralphy-spec
|
|
133
|
+
ralphy-spec init
|
|
167
134
|
|
|
168
|
-
|
|
135
|
+
# 特定のツールを指定
|
|
136
|
+
ralphy-spec init --tools cursor,claude-code,opencode
|
|
137
|
+
```
|
|
169
138
|
|
|
170
|
-
|
|
139
|
+
## 謝辞
|
|
171
140
|
|
|
172
|
-
|
|
141
|
+
以下のプロジェクトに基づいています:
|
|
173
142
|
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
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
|
-
|
|
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
|
-
##
|
|
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
|
-
|
|
17
|
+
CLI 기본 사용:
|
|
73
18
|
|
|
74
19
|
```bash
|
|
75
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
109
|
-
|
|
63
|
+
# 1. 계획: 아이디어에서 스펙 생성
|
|
64
|
+
You: /ralphy-plan JWT 사용자 인증 추가
|
|
110
65
|
|
|
111
|
-
|
|
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
|
-
|
|
69
|
+
# 3. 검증: 테스트 통과 확인
|
|
70
|
+
You: /ralphy-validate
|
|
124
71
|
|
|
125
|
-
|
|
72
|
+
# 4. 아카이브: 변경 완료
|
|
73
|
+
You: /ralphy-archive add-user-auth
|
|
74
|
+
```
|
|
126
75
|
|
|
127
|
-
|
|
76
|
+
## 생성되는 파일
|
|
128
77
|
|
|
129
78
|
```
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
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
|
-
|
|
85
|
+
AGENTS.md # OpenCode용
|
|
141
86
|
|
|
142
|
-
|
|
87
|
+
openspec/
|
|
88
|
+
├── specs/ # 진실의 원천
|
|
89
|
+
├── changes/ # 진행 중인 작업
|
|
90
|
+
├── archive/ # 완료됨
|
|
91
|
+
└── project.md # 컨텍스트
|
|
143
92
|
|
|
144
|
-
|
|
145
|
-
|
|
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
|
-
|
|
108
|
+
> 참고: 기존 `.ralphy/` 폴더가 있으면 자동으로 `ralphy-spec/`로 마이그레이션됩니다.
|
|
149
109
|
|
|
150
|
-
|
|
110
|
+
## 작동 방식
|
|
151
111
|
|
|
152
|
-
|
|
112
|
+
**Ralph Wiggum Loop:** AI가 작업 완료까지 동일한 프롬프트를 반복적으로 받습니다. 각 반복에서 파일의 이전 작업을 보고 자기 수정합니다.
|
|
153
113
|
|
|
154
|
-
|
|
114
|
+
**OpenSpec:** 코드 전에 스펙. 구조화된 스펙과 인수 기준으로 AI가 무엇을 빌드해야 하는지 정확히 알 수 있습니다.
|
|
155
115
|
|
|
156
|
-
|
|
157
|
-
openspec archive <change-name> --yes
|
|
158
|
-
```
|
|
116
|
+
**결합하는 이유:**
|
|
159
117
|
|
|
160
|
-
|
|
118
|
+
| 문제 | 해결책 |
|
|
119
|
+
|------|--------|
|
|
120
|
+
| 채팅의 모호한 요구사항 | 스펙이 의도를 고정 |
|
|
121
|
+
| AI가 중간에 멈춤 | 완료될 때까지 루프 재시도 |
|
|
122
|
+
| 검증 방법 없음 | 테스트가 출력 검증 |
|
|
123
|
+
| 도구별 설정 | 하나의 명령으로 모두 해결 |
|
|
161
124
|
|
|
162
|
-
|
|
125
|
+
## 설치 옵션
|
|
163
126
|
|
|
164
|
-
|
|
127
|
+
```bash
|
|
128
|
+
# npx (권장)
|
|
129
|
+
npx ralphy-spec init
|
|
165
130
|
|
|
166
|
-
|
|
131
|
+
# 전역 설치
|
|
132
|
+
npm install -g ralphy-spec
|
|
133
|
+
ralphy-spec init
|
|
167
134
|
|
|
168
|
-
|
|
135
|
+
# 특정 도구 지정
|
|
136
|
+
ralphy-spec init --tools cursor,claude-code,opencode
|
|
137
|
+
```
|
|
169
138
|
|
|
170
|
-
|
|
139
|
+
## 감사의 말
|
|
171
140
|
|
|
172
|
-
|
|
141
|
+
다음 프로젝트를 기반으로 합니다:
|
|
173
142
|
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
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
|
|