@graypark/loophaus 3.5.0 → 3.5.1

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.ko.md CHANGED
@@ -10,7 +10,7 @@
10
10
  <a href="https://github.com/vcz-Gray/loophaus/blob/main/LICENSE"><img src="https://img.shields.io/badge/license-MIT-blue.svg?style=flat-square" alt="license" /></a>
11
11
  <img src="https://img.shields.io/badge/node-%3E%3D20-brightgreen.svg?style=flat-square" alt="node version" />
12
12
  <img src="https://img.shields.io/badge/platform-Claude%20Code%20%7C%20Codex%20CLI%20%7C%20Kiro%20CLI-purple.svg?style=flat-square" alt="platform" />
13
- <img src="https://img.shields.io/badge/tests-90%20passing-brightgreen.svg?style=flat-square" alt="tests" />
13
+ <img src="https://img.shields.io/badge/tests-296%20passing-brightgreen.svg?style=flat-square" alt="tests" />
14
14
  </p>
15
15
 
16
16
  <p align="center">
@@ -156,7 +156,7 @@ loophaus는 세 개의 주요 코딩 에이전트 플랫폼을 지원합니다:
156
156
  | Stop hook | bash 기반 | Node.js 기반 | bash 기반 |
157
157
  | 루프 실행 | Skill tool | 네이티브 커맨드 | 네이티브 커맨드 |
158
158
  | 멀티 에이전트 | Agent tool | 서브에이전트 | 서브에이전트 |
159
- | 상태 파일 | `.claude/ralph-loop.local.md` | `progress.txt` | `progress.txt` |
159
+ | 상태 파일 | `.loophaus/state.json` | `.loophaus/state.json` | `.loophaus/state.json` |
160
160
 
161
161
  ## 설치
162
162
 
@@ -271,49 +271,52 @@ loophaus quality --story US-001 # 특정 스토리 품질 측정
271
271
 
272
272
  ```
273
273
  loophaus/
274
- ├── .claude-plugin/plugin.json # Claude Code 마켓플레이스 매니페스트
275
274
  ├── bin/
276
- │ ├── loophaus.mjs # CLI 진입점
277
- │ ├── install.mjs # 크로스 플랫폼 설치기
278
- │ └── uninstall.mjs # 제거기
279
- ├── hooks/
280
- │ └── stop-hook.mjs # 핵심 루프 엔진 (Node.js)
281
- ├── commands/
282
- │ ├── loop.md # /loop 커맨드
283
- │ ├── loop-plan.md # /loop-plan 커맨드
284
- │ ├── loop-stop.md # /loop-stop 커맨드
285
- │ ├── loop-pulse.md # /loop-pulse 커맨드
286
- │ └── help.md # /help 커맨드
287
- ├── platforms/ # 호스트별 어댑터
288
- ├── store/ # 상태 저장소
275
+ │ ├── loophaus.ts # CLI 진입점
276
+ │ ├── install.ts # 크로스 플랫폼 설치기
277
+ │ └── uninstall.ts # 제거기
289
278
  ├── core/
290
- │ ├── engine.mjs # 핵심 루프 엔진
291
- │ ├── event-logger.mjs # 이벤트 추적
292
- │ ├── quality-scorer.mjs # 품질 측정 (점수, 평가, 로깅)
293
- │ ├── refine-loop.mjs # 유지/폐기 개선 로직
294
- └── loop.schema.json # PRD 검증 스키마
295
- ├── skills/
296
- │ ├── ralph-interview/SKILL.md # Codex: 인터랙티브 커맨드 생성기
297
- │ ├── ralph-orchestrator/SKILL.md # Codex: 멀티 에이전트 패턴
298
- │ ├── ralph-claude-interview/SKILL.md # Claude: 인터뷰 + Skill tool 호출
299
- │ ├── ralph-claude-loop/SKILL.md # Claude: PRD 기반 루프
300
- │ ├── ralph-claude-cancel/SKILL.md # Claude: 루프 취소
301
- └── ralph-claude-orchestrator/SKILL.md # Claude: Agent tool 패턴
279
+ │ ├── types.ts # 공유 TypeScript 인터페이스
280
+ │ ├── engine.ts # 핵심 루프 엔진
281
+ │ ├── event-logger.ts # 이벤트 추적
282
+ │ ├── quality-scorer.ts # 품질 측정 (점수, 평가, 로깅)
283
+ ├── refine-loop.ts # 유지/폐기 개선 로직
284
+ ├── validate.ts # PRD + 상태 스키마 검증
285
+ │ ├── policy.ts # 루프 정책 평가
286
+ │ ├── cost-tracker.ts # 토큰 비용 추정
287
+ │ ├── trace-analyzer.ts # 트레이스 분석 + 비교
288
+ │ ├── worktree.ts # Git 워크트리 관리
289
+ │ ├── merge-strategy.ts # 병렬 머지 전략
290
+ ├── parallel-runner.ts # 멀티 워크트리 오케스트레이션
291
+ │ ├── session.ts # 체크포인트 / 세션 관리
292
+ │ └── loop-registry.ts # 멀티 루프 레지스트리
293
+ ├── store/
294
+ │ └── state-store.ts # 루프 상태 저장소
302
295
  ├── lib/
303
- │ ├── paths.mjs # 크로스 플랫폼 경로
304
- ├── state.mjs # 루프 상태 관리
305
- │ └── stop-hook-core.mjs # 테스트 가능한 hook 로직
306
- └── tests/ # 90개 테스트 케이스 (vitest)
296
+ │ ├── paths.ts # 크로스 플랫폼 경로
297
+ └── stop-hook-core.ts # 테스트 가능한 hook 로직
298
+ ├── platforms/
299
+ │ ├── claude-code/installer.mjs # 플러그인 캐시 설치기
300
+ │ ├── codex-cli/installer.mjs # hooks.json 설치기
301
+ │ └── kiro-cli/installer.mjs # agents/ + steering/ 설치기
302
+ ├── hooks/
303
+ │ └── stop-hook.mjs # 범용 Stop hook (Node.js)
304
+ ├── commands/ # 슬래시 커맨드 정의
305
+ ├── skills/ # 플랫폼별 스킬 정의
306
+ ├── .claude-plugin/
307
+ │ └── plugin.json # Claude Code 마켓플레이스 매니페스트
308
+ ├── dist/ # 컴파일 출력 (tsc)
309
+ └── tests/ # 296개 테스트 케이스 (vitest)
307
310
  ```
308
311
 
309
312
  ## PRD 포맷
310
313
 
311
- loophaus는 **ralph-skills 호환** `prd.json` 포맷을 사용합니다:
314
+ loophaus는 `prd.json` 포맷을 사용합니다:
312
315
 
313
316
  ```json
314
317
  {
315
318
  "project": "MyApp",
316
- "branchName": "ralph/auth-system",
319
+ "branchName": "feature/auth-system",
317
320
  "description": "JWT 인증 시스템과 로그인 UI",
318
321
  "userStories": [
319
322
  {
@@ -335,37 +338,6 @@ loophaus는 **ralph-skills 호환** `prd.json` 포맷을 사용합니다:
335
338
 
336
339
  각 스토리는 **한 번의 반복**(하나의 컨텍스트 윈도우)에서 완료할 수 있는 크기입니다. 의존성은 priority 순으로 정렬됩니다.
337
340
 
338
- ## ralph-codex에서 마이그레이션
339
-
340
- 기존에 `ralph-codex`를 사용하고 있었다면, loophaus가 자동으로 마이그레이션을 처리합니다:
341
-
342
- - **상태 파일 호환** — 기존 `prd.json`과 `progress.txt`를 그대로 사용 가능
343
- - **자동 감지** — 설치 시 기존 ralph-codex 설정을 감지하고 loophaus 포맷으로 업그레이드
344
- - **커맨드 매핑** — 기존 `/ralph-interview` → `/loop-plan`, `/ralph-loop` → `/loop`, `/cancel-ralph` → `/loop-stop`
345
-
346
- 마이그레이션 방법:
347
-
348
- ```bash
349
- # 기존 ralph-codex 제거
350
- npx @graypark/ralph-codex uninstall
351
-
352
- # loophaus 설치 (기존 상태 파일 자동 인식)
353
- npx @graypark/loophaus install
354
- ```
355
-
356
- 기존 PRD 파일은 수정 없이 그대로 동작합니다. `progress.txt`에 축적된 학습 내용도 보존됩니다.
357
-
358
- ## 생태계 호환성
359
-
360
- loophaus는 기존 Ralph 도구들과 호환됩니다:
361
-
362
- | 도구 | 호환성 |
363
- | --- | --- |
364
- | `ralph-skills:prd` | 동일한 `prd.json` 포맷 — 거기서 PRD를 생성하고 여기서 루프 실행 |
365
- | `ralph-skills:ralph` | 동일한 `progress.txt`, `passes` 추적, `COMPLETE` promise |
366
- | 공식 `ralph-loop` 플러그인 | PRD 파일이 양쪽 stop hook에서 동작 |
367
- | `snarktank/ralph` | 호환되는 PRD 구조 및 반복 패턴 |
368
-
369
341
  ## 멀티 에이전트 오케스트레이션
370
342
 
371
343
  여러 서비스에 걸치거나 광범위한 탐색이 필요한 태스크에 사용합니다:
@@ -395,19 +367,23 @@ Phase 2 — 순차 수정 (루프):
395
367
  ## 업데이트
396
368
 
397
369
  ```bash
398
- npx @graypark/loophaus install --force
370
+ npm install -g @graypark/loophaus@latest
371
+ loophaus install --force
399
372
  ```
400
373
 
401
374
  ## 제거
402
375
 
403
376
  ```bash
404
- npx @graypark/loophaus uninstall
377
+ loophaus uninstall
378
+ npm uninstall -g @graypark/loophaus
405
379
  ```
406
380
 
407
381
  ## 개발
408
382
 
409
383
  ```bash
410
- npm install && npm test # 90개 테스트
384
+ npm install && npm test # 296개 테스트
385
+ npm run typecheck # TypeScript strict 모드
386
+ npm run build # dist/로 컴파일
411
387
  npx vitest # watch 모드
412
388
  ```
413
389
 
package/README.md CHANGED
@@ -10,7 +10,7 @@
10
10
  <a href="https://github.com/vcz-Gray/loophaus/blob/main/LICENSE"><img src="https://img.shields.io/badge/license-MIT-blue.svg?style=flat-square" alt="license" /></a>
11
11
  <img src="https://img.shields.io/badge/node-%3E%3D20-brightgreen.svg?style=flat-square" alt="node version" />
12
12
  <img src="https://img.shields.io/badge/platform-Claude%20Code%20%7C%20Codex%20CLI%20%7C%20Kiro%20CLI-purple.svg?style=flat-square" alt="platform" />
13
- <img src="https://img.shields.io/badge/tests-90%20passing-brightgreen.svg?style=flat-square" alt="tests" />
13
+ <img src="https://img.shields.io/badge/tests-296%20passing-brightgreen.svg?style=flat-square" alt="tests" />
14
14
  </p>
15
15
 
16
16
  <h3 align="center">Control plane for coding agents — iterative dev loops across Claude Code, Codex CLI, and Kiro CLI.</h3>
@@ -117,7 +117,7 @@ That's it. The interview generates a PRD, activates the loop, and starts impleme
117
117
  | **Commands** | `/reload-plugins` | native | steering manual mode |
118
118
  | **Multi-agent** | Agent tool | subprocesses | steering agents |
119
119
 
120
- All three platforms share the same core engine (`core/engine.mjs`) and state store (`store/state-store.mjs`). Platform-specific adapters handle the differences.
120
+ All three platforms share the same core engine (`core/engine.ts`) and state store (`store/state-store.ts`). Platform-specific adapters handle the differences.
121
121
 
122
122
  ## Installation
123
123
 
@@ -215,60 +215,51 @@ loophaus quality --story US-001 # Score a specific story
215
215
  ```
216
216
  loophaus/
217
217
  ├── bin/
218
- │ ├── loophaus.mjs # CLI entry point
219
- │ ├── install.mjs # Cross-platform installer
220
- │ └── uninstall.mjs # Clean uninstaller
218
+ │ ├── loophaus.ts # CLI entry point
219
+ │ ├── install.ts # Cross-platform installer
220
+ │ └── uninstall.ts # Clean uninstaller
221
221
  ├── core/
222
- │ ├── engine.mjs # Core loop engine (shared)
223
- │ ├── event-logger.mjs # Iteration event tracking
224
- │ ├── quality-scorer.mjs # Quality scoring (score, evaluate, log)
225
- │ ├── refine-loop.mjs # Keep/discard refinement logic
226
- └── loop.schema.json # PRD validation schema
222
+ │ ├── types.ts # Shared TypeScript interfaces
223
+ │ ├── engine.ts # Core loop engine (shared)
224
+ │ ├── event-logger.ts # Iteration event tracking
225
+ │ ├── quality-scorer.ts # Quality scoring (score, evaluate, log)
226
+ ├── refine-loop.ts # Keep/discard refinement logic
227
+ │ ├── validate.ts # PRD + state schema validation
228
+ │ ├── policy.ts # Loop policy evaluation
229
+ │ ├── cost-tracker.ts # Token cost estimation
230
+ │ ├── trace-analyzer.ts # Trace analysis + comparison
231
+ │ ├── worktree.ts # Git worktree lifecycle
232
+ │ ├── merge-strategy.ts # Parallel merge strategies
233
+ │ ├── parallel-runner.ts # Multi-worktree orchestration
234
+ │ ├── session.ts # Checkpoint / session management
235
+ │ └── loop-registry.ts # Multi-loop registry
227
236
  ├── store/
228
- │ └── state-store.mjs # Loop state persistence
237
+ │ └── state-store.ts # Loop state persistence
238
+ ├── lib/
239
+ │ ├── paths.ts # Cross-platform path resolution
240
+ │ └── stop-hook-core.ts # Testable hook logic
229
241
  ├── platforms/
230
- │ ├── claude-code/
231
- ├── adapter.mjs # Claude Code platform adapter
232
- └── installer.mjs # Plugin cache installer
233
- │ ├── codex-cli/
234
- │ │ ├── adapter.mjs # Codex CLI platform adapter
235
- │ │ └── installer.mjs # hooks.json installer
236
- │ └── kiro-cli/
237
- │ ├── adapter.mjs # Kiro CLI platform adapter
238
- │ └── installer.mjs # agents/ + steering/ installer
242
+ │ ├── claude-code/installer.mjs # Plugin cache installer
243
+ │ ├── codex-cli/installer.mjs # hooks.json installer
244
+ │ └── kiro-cli/installer.mjs # agents/ + steering/ installer
239
245
  ├── hooks/
240
- ├── stop-hook.mjs # Universal stop hook (Node.js)
241
- │ └── hooks.json # Hook configuration template
242
- ├── commands/
243
- │ ├── loop-plan.md # /loop-plan command definition
244
- │ ├── loop.md # /loop command definition
245
- │ ├── loop-stop.md # /loop-stop command definition
246
- │ ├── loop-pulse.md # /loop-pulse command definition
247
- │ └── help.md # /help command definition
248
- ├── skills/
249
- │ ├── ralph-interview/ # Interactive PRD generator
250
- │ ├── ralph-orchestrator/ # Multi-agent patterns
251
- │ ├── ralph-claude-interview/ # Claude Code interview + Skill tool
252
- │ ├── ralph-claude-loop/ # Claude Code PRD-driven loop
253
- │ ├── ralph-claude-cancel/ # Claude Code cancel
254
- │ └── ralph-claude-orchestrator/# Claude Code Agent tool patterns
255
- ├── lib/
256
- │ ├── paths.mjs # Cross-platform path resolution
257
- │ ├── state.mjs # Legacy state management
258
- │ └── stop-hook-core.mjs # Testable hook logic
246
+ └── stop-hook.mjs # Universal stop hook (Node.js)
247
+ ├── commands/ # Slash command definitions
248
+ ├── skills/ # Platform-specific skill definitions
259
249
  ├── .claude-plugin/
260
250
  │ └── plugin.json # Claude Code marketplace manifest
261
- └── tests/ # 90 test cases (vitest)
251
+ ├── dist/ # Compiled output (tsc)
252
+ └── tests/ # 296 test cases (vitest)
262
253
  ```
263
254
 
264
255
  ## PRD Format
265
256
 
266
- loophaus uses a `prd.json` format compatible with the ralph-skills ecosystem:
257
+ loophaus uses a `prd.json` format:
267
258
 
268
259
  ```json
269
260
  {
270
261
  "project": "MyApp",
271
- "branchName": "loop/auth-system",
262
+ "branchName": "feature/auth-system",
272
263
  "description": "JWT authentication with login UI",
273
264
  "userStories": [
274
265
  {
@@ -290,30 +281,19 @@ loophaus uses a `prd.json` format compatible with the ralph-skills ecosystem:
290
281
 
291
282
  Each story is sized to complete in one iteration (one context window). Dependencies are ordered by priority. The loop engine picks the next story where `passes` is `false` and works on it until verification succeeds.
292
283
 
293
- ## Migrating from ralph-codex
294
-
295
- `@graypark/ralph-codex` has been deprecated in favor of `@graypark/loophaus`. The migration is straightforward:
296
-
297
- 1. **Install loophaus** — it replaces ralph-codex entirely:
298
- ```bash
299
- npx @graypark/loophaus install --force
300
- ```
301
-
302
- 2. **State files auto-migrate** — Existing `prd.json` and `progress.txt` files are fully compatible. No changes needed.
284
+ ## Update
303
285
 
304
- 3. **Command mapping:**
286
+ ```bash
287
+ npm install -g @graypark/loophaus@latest
288
+ loophaus install --force
289
+ ```
305
290
 
306
- | ralph-codex | loophaus |
307
- |-------------|----------|
308
- | `/ralph-interview` | `/loop-plan` |
309
- | `/ralph-loop` | `/loop` |
310
- | `/cancel-ralph` | `/loop-stop` |
311
- | (none) | `/loop-pulse` |
291
+ ## Uninstall
312
292
 
313
- 4. **Uninstall the old package** (optional):
314
- ```bash
315
- npx @graypark/ralph-codex uninstall
316
- ```
293
+ ```bash
294
+ loophaus uninstall
295
+ npm uninstall -g @graypark/loophaus
296
+ ```
317
297
 
318
298
  ## Development
319
299
 
@@ -321,7 +301,9 @@ Each story is sized to complete in one iteration (one context window). Dependenc
321
301
  git clone https://github.com/vcz-Gray/loophaus.git
322
302
  cd loophaus
323
303
  npm install
324
- npm test # 90 test cases
304
+ npm test # 296 test cases
305
+ npm run typecheck # TypeScript strict mode
306
+ npm run build # Compile to dist/
325
307
  npx vitest # watch mode
326
308
  ```
327
309
 
package/dist/README.ko.md CHANGED
@@ -10,7 +10,7 @@
10
10
  <a href="https://github.com/vcz-Gray/loophaus/blob/main/LICENSE"><img src="https://img.shields.io/badge/license-MIT-blue.svg?style=flat-square" alt="license" /></a>
11
11
  <img src="https://img.shields.io/badge/node-%3E%3D20-brightgreen.svg?style=flat-square" alt="node version" />
12
12
  <img src="https://img.shields.io/badge/platform-Claude%20Code%20%7C%20Codex%20CLI%20%7C%20Kiro%20CLI-purple.svg?style=flat-square" alt="platform" />
13
- <img src="https://img.shields.io/badge/tests-90%20passing-brightgreen.svg?style=flat-square" alt="tests" />
13
+ <img src="https://img.shields.io/badge/tests-296%20passing-brightgreen.svg?style=flat-square" alt="tests" />
14
14
  </p>
15
15
 
16
16
  <p align="center">
@@ -156,7 +156,7 @@ loophaus는 세 개의 주요 코딩 에이전트 플랫폼을 지원합니다:
156
156
  | Stop hook | bash 기반 | Node.js 기반 | bash 기반 |
157
157
  | 루프 실행 | Skill tool | 네이티브 커맨드 | 네이티브 커맨드 |
158
158
  | 멀티 에이전트 | Agent tool | 서브에이전트 | 서브에이전트 |
159
- | 상태 파일 | `.claude/ralph-loop.local.md` | `progress.txt` | `progress.txt` |
159
+ | 상태 파일 | `.loophaus/state.json` | `.loophaus/state.json` | `.loophaus/state.json` |
160
160
 
161
161
  ## 설치
162
162
 
@@ -271,49 +271,52 @@ loophaus quality --story US-001 # 특정 스토리 품질 측정
271
271
 
272
272
  ```
273
273
  loophaus/
274
- ├── .claude-plugin/plugin.json # Claude Code 마켓플레이스 매니페스트
275
274
  ├── bin/
276
- │ ├── loophaus.mjs # CLI 진입점
277
- │ ├── install.mjs # 크로스 플랫폼 설치기
278
- │ └── uninstall.mjs # 제거기
279
- ├── hooks/
280
- │ └── stop-hook.mjs # 핵심 루프 엔진 (Node.js)
281
- ├── commands/
282
- │ ├── loop.md # /loop 커맨드
283
- │ ├── loop-plan.md # /loop-plan 커맨드
284
- │ ├── loop-stop.md # /loop-stop 커맨드
285
- │ ├── loop-pulse.md # /loop-pulse 커맨드
286
- │ └── help.md # /help 커맨드
287
- ├── platforms/ # 호스트별 어댑터
288
- ├── store/ # 상태 저장소
275
+ │ ├── loophaus.ts # CLI 진입점
276
+ │ ├── install.ts # 크로스 플랫폼 설치기
277
+ │ └── uninstall.ts # 제거기
289
278
  ├── core/
290
- │ ├── engine.mjs # 핵심 루프 엔진
291
- │ ├── event-logger.mjs # 이벤트 추적
292
- │ ├── quality-scorer.mjs # 품질 측정 (점수, 평가, 로깅)
293
- │ ├── refine-loop.mjs # 유지/폐기 개선 로직
294
- └── loop.schema.json # PRD 검증 스키마
295
- ├── skills/
296
- │ ├── ralph-interview/SKILL.md # Codex: 인터랙티브 커맨드 생성기
297
- │ ├── ralph-orchestrator/SKILL.md # Codex: 멀티 에이전트 패턴
298
- │ ├── ralph-claude-interview/SKILL.md # Claude: 인터뷰 + Skill tool 호출
299
- │ ├── ralph-claude-loop/SKILL.md # Claude: PRD 기반 루프
300
- │ ├── ralph-claude-cancel/SKILL.md # Claude: 루프 취소
301
- └── ralph-claude-orchestrator/SKILL.md # Claude: Agent tool 패턴
279
+ │ ├── types.ts # 공유 TypeScript 인터페이스
280
+ │ ├── engine.ts # 핵심 루프 엔진
281
+ │ ├── event-logger.ts # 이벤트 추적
282
+ │ ├── quality-scorer.ts # 품질 측정 (점수, 평가, 로깅)
283
+ ├── refine-loop.ts # 유지/폐기 개선 로직
284
+ ├── validate.ts # PRD + 상태 스키마 검증
285
+ │ ├── policy.ts # 루프 정책 평가
286
+ │ ├── cost-tracker.ts # 토큰 비용 추정
287
+ │ ├── trace-analyzer.ts # 트레이스 분석 + 비교
288
+ │ ├── worktree.ts # Git 워크트리 관리
289
+ │ ├── merge-strategy.ts # 병렬 머지 전략
290
+ ├── parallel-runner.ts # 멀티 워크트리 오케스트레이션
291
+ │ ├── session.ts # 체크포인트 / 세션 관리
292
+ │ └── loop-registry.ts # 멀티 루프 레지스트리
293
+ ├── store/
294
+ │ └── state-store.ts # 루프 상태 저장소
302
295
  ├── lib/
303
- │ ├── paths.mjs # 크로스 플랫폼 경로
304
- ├── state.mjs # 루프 상태 관리
305
- │ └── stop-hook-core.mjs # 테스트 가능한 hook 로직
306
- └── tests/ # 90개 테스트 케이스 (vitest)
296
+ │ ├── paths.ts # 크로스 플랫폼 경로
297
+ └── stop-hook-core.ts # 테스트 가능한 hook 로직
298
+ ├── platforms/
299
+ │ ├── claude-code/installer.mjs # 플러그인 캐시 설치기
300
+ │ ├── codex-cli/installer.mjs # hooks.json 설치기
301
+ │ └── kiro-cli/installer.mjs # agents/ + steering/ 설치기
302
+ ├── hooks/
303
+ │ └── stop-hook.mjs # 범용 Stop hook (Node.js)
304
+ ├── commands/ # 슬래시 커맨드 정의
305
+ ├── skills/ # 플랫폼별 스킬 정의
306
+ ├── .claude-plugin/
307
+ │ └── plugin.json # Claude Code 마켓플레이스 매니페스트
308
+ ├── dist/ # 컴파일 출력 (tsc)
309
+ └── tests/ # 296개 테스트 케이스 (vitest)
307
310
  ```
308
311
 
309
312
  ## PRD 포맷
310
313
 
311
- loophaus는 **ralph-skills 호환** `prd.json` 포맷을 사용합니다:
314
+ loophaus는 `prd.json` 포맷을 사용합니다:
312
315
 
313
316
  ```json
314
317
  {
315
318
  "project": "MyApp",
316
- "branchName": "ralph/auth-system",
319
+ "branchName": "feature/auth-system",
317
320
  "description": "JWT 인증 시스템과 로그인 UI",
318
321
  "userStories": [
319
322
  {
@@ -335,37 +338,6 @@ loophaus는 **ralph-skills 호환** `prd.json` 포맷을 사용합니다:
335
338
 
336
339
  각 스토리는 **한 번의 반복**(하나의 컨텍스트 윈도우)에서 완료할 수 있는 크기입니다. 의존성은 priority 순으로 정렬됩니다.
337
340
 
338
- ## ralph-codex에서 마이그레이션
339
-
340
- 기존에 `ralph-codex`를 사용하고 있었다면, loophaus가 자동으로 마이그레이션을 처리합니다:
341
-
342
- - **상태 파일 호환** — 기존 `prd.json`과 `progress.txt`를 그대로 사용 가능
343
- - **자동 감지** — 설치 시 기존 ralph-codex 설정을 감지하고 loophaus 포맷으로 업그레이드
344
- - **커맨드 매핑** — 기존 `/ralph-interview` → `/loop-plan`, `/ralph-loop` → `/loop`, `/cancel-ralph` → `/loop-stop`
345
-
346
- 마이그레이션 방법:
347
-
348
- ```bash
349
- # 기존 ralph-codex 제거
350
- npx @graypark/ralph-codex uninstall
351
-
352
- # loophaus 설치 (기존 상태 파일 자동 인식)
353
- npx @graypark/loophaus install
354
- ```
355
-
356
- 기존 PRD 파일은 수정 없이 그대로 동작합니다. `progress.txt`에 축적된 학습 내용도 보존됩니다.
357
-
358
- ## 생태계 호환성
359
-
360
- loophaus는 기존 Ralph 도구들과 호환됩니다:
361
-
362
- | 도구 | 호환성 |
363
- | --- | --- |
364
- | `ralph-skills:prd` | 동일한 `prd.json` 포맷 — 거기서 PRD를 생성하고 여기서 루프 실행 |
365
- | `ralph-skills:ralph` | 동일한 `progress.txt`, `passes` 추적, `COMPLETE` promise |
366
- | 공식 `ralph-loop` 플러그인 | PRD 파일이 양쪽 stop hook에서 동작 |
367
- | `snarktank/ralph` | 호환되는 PRD 구조 및 반복 패턴 |
368
-
369
341
  ## 멀티 에이전트 오케스트레이션
370
342
 
371
343
  여러 서비스에 걸치거나 광범위한 탐색이 필요한 태스크에 사용합니다:
@@ -395,19 +367,23 @@ Phase 2 — 순차 수정 (루프):
395
367
  ## 업데이트
396
368
 
397
369
  ```bash
398
- npx @graypark/loophaus install --force
370
+ npm install -g @graypark/loophaus@latest
371
+ loophaus install --force
399
372
  ```
400
373
 
401
374
  ## 제거
402
375
 
403
376
  ```bash
404
- npx @graypark/loophaus uninstall
377
+ loophaus uninstall
378
+ npm uninstall -g @graypark/loophaus
405
379
  ```
406
380
 
407
381
  ## 개발
408
382
 
409
383
  ```bash
410
- npm install && npm test # 90개 테스트
384
+ npm install && npm test # 296개 테스트
385
+ npm run typecheck # TypeScript strict 모드
386
+ npm run build # dist/로 컴파일
411
387
  npx vitest # watch 모드
412
388
  ```
413
389
 
package/dist/README.md CHANGED
@@ -10,7 +10,7 @@
10
10
  <a href="https://github.com/vcz-Gray/loophaus/blob/main/LICENSE"><img src="https://img.shields.io/badge/license-MIT-blue.svg?style=flat-square" alt="license" /></a>
11
11
  <img src="https://img.shields.io/badge/node-%3E%3D20-brightgreen.svg?style=flat-square" alt="node version" />
12
12
  <img src="https://img.shields.io/badge/platform-Claude%20Code%20%7C%20Codex%20CLI%20%7C%20Kiro%20CLI-purple.svg?style=flat-square" alt="platform" />
13
- <img src="https://img.shields.io/badge/tests-90%20passing-brightgreen.svg?style=flat-square" alt="tests" />
13
+ <img src="https://img.shields.io/badge/tests-296%20passing-brightgreen.svg?style=flat-square" alt="tests" />
14
14
  </p>
15
15
 
16
16
  <h3 align="center">Control plane for coding agents — iterative dev loops across Claude Code, Codex CLI, and Kiro CLI.</h3>
@@ -117,7 +117,7 @@ That's it. The interview generates a PRD, activates the loop, and starts impleme
117
117
  | **Commands** | `/reload-plugins` | native | steering manual mode |
118
118
  | **Multi-agent** | Agent tool | subprocesses | steering agents |
119
119
 
120
- All three platforms share the same core engine (`core/engine.mjs`) and state store (`store/state-store.mjs`). Platform-specific adapters handle the differences.
120
+ All three platforms share the same core engine (`core/engine.ts`) and state store (`store/state-store.ts`). Platform-specific adapters handle the differences.
121
121
 
122
122
  ## Installation
123
123
 
@@ -215,60 +215,51 @@ loophaus quality --story US-001 # Score a specific story
215
215
  ```
216
216
  loophaus/
217
217
  ├── bin/
218
- │ ├── loophaus.mjs # CLI entry point
219
- │ ├── install.mjs # Cross-platform installer
220
- │ └── uninstall.mjs # Clean uninstaller
218
+ │ ├── loophaus.ts # CLI entry point
219
+ │ ├── install.ts # Cross-platform installer
220
+ │ └── uninstall.ts # Clean uninstaller
221
221
  ├── core/
222
- │ ├── engine.mjs # Core loop engine (shared)
223
- │ ├── event-logger.mjs # Iteration event tracking
224
- │ ├── quality-scorer.mjs # Quality scoring (score, evaluate, log)
225
- │ ├── refine-loop.mjs # Keep/discard refinement logic
226
- └── loop.schema.json # PRD validation schema
222
+ │ ├── types.ts # Shared TypeScript interfaces
223
+ │ ├── engine.ts # Core loop engine (shared)
224
+ │ ├── event-logger.ts # Iteration event tracking
225
+ │ ├── quality-scorer.ts # Quality scoring (score, evaluate, log)
226
+ ├── refine-loop.ts # Keep/discard refinement logic
227
+ │ ├── validate.ts # PRD + state schema validation
228
+ │ ├── policy.ts # Loop policy evaluation
229
+ │ ├── cost-tracker.ts # Token cost estimation
230
+ │ ├── trace-analyzer.ts # Trace analysis + comparison
231
+ │ ├── worktree.ts # Git worktree lifecycle
232
+ │ ├── merge-strategy.ts # Parallel merge strategies
233
+ │ ├── parallel-runner.ts # Multi-worktree orchestration
234
+ │ ├── session.ts # Checkpoint / session management
235
+ │ └── loop-registry.ts # Multi-loop registry
227
236
  ├── store/
228
- │ └── state-store.mjs # Loop state persistence
237
+ │ └── state-store.ts # Loop state persistence
238
+ ├── lib/
239
+ │ ├── paths.ts # Cross-platform path resolution
240
+ │ └── stop-hook-core.ts # Testable hook logic
229
241
  ├── platforms/
230
- │ ├── claude-code/
231
- ├── adapter.mjs # Claude Code platform adapter
232
- └── installer.mjs # Plugin cache installer
233
- │ ├── codex-cli/
234
- │ │ ├── adapter.mjs # Codex CLI platform adapter
235
- │ │ └── installer.mjs # hooks.json installer
236
- │ └── kiro-cli/
237
- │ ├── adapter.mjs # Kiro CLI platform adapter
238
- │ └── installer.mjs # agents/ + steering/ installer
242
+ │ ├── claude-code/installer.mjs # Plugin cache installer
243
+ │ ├── codex-cli/installer.mjs # hooks.json installer
244
+ │ └── kiro-cli/installer.mjs # agents/ + steering/ installer
239
245
  ├── hooks/
240
- ├── stop-hook.mjs # Universal stop hook (Node.js)
241
- │ └── hooks.json # Hook configuration template
242
- ├── commands/
243
- │ ├── loop-plan.md # /loop-plan command definition
244
- │ ├── loop.md # /loop command definition
245
- │ ├── loop-stop.md # /loop-stop command definition
246
- │ ├── loop-pulse.md # /loop-pulse command definition
247
- │ └── help.md # /help command definition
248
- ├── skills/
249
- │ ├── ralph-interview/ # Interactive PRD generator
250
- │ ├── ralph-orchestrator/ # Multi-agent patterns
251
- │ ├── ralph-claude-interview/ # Claude Code interview + Skill tool
252
- │ ├── ralph-claude-loop/ # Claude Code PRD-driven loop
253
- │ ├── ralph-claude-cancel/ # Claude Code cancel
254
- │ └── ralph-claude-orchestrator/# Claude Code Agent tool patterns
255
- ├── lib/
256
- │ ├── paths.mjs # Cross-platform path resolution
257
- │ ├── state.mjs # Legacy state management
258
- │ └── stop-hook-core.mjs # Testable hook logic
246
+ └── stop-hook.mjs # Universal stop hook (Node.js)
247
+ ├── commands/ # Slash command definitions
248
+ ├── skills/ # Platform-specific skill definitions
259
249
  ├── .claude-plugin/
260
250
  │ └── plugin.json # Claude Code marketplace manifest
261
- └── tests/ # 90 test cases (vitest)
251
+ ├── dist/ # Compiled output (tsc)
252
+ └── tests/ # 296 test cases (vitest)
262
253
  ```
263
254
 
264
255
  ## PRD Format
265
256
 
266
- loophaus uses a `prd.json` format compatible with the ralph-skills ecosystem:
257
+ loophaus uses a `prd.json` format:
267
258
 
268
259
  ```json
269
260
  {
270
261
  "project": "MyApp",
271
- "branchName": "loop/auth-system",
262
+ "branchName": "feature/auth-system",
272
263
  "description": "JWT authentication with login UI",
273
264
  "userStories": [
274
265
  {
@@ -290,30 +281,19 @@ loophaus uses a `prd.json` format compatible with the ralph-skills ecosystem:
290
281
 
291
282
  Each story is sized to complete in one iteration (one context window). Dependencies are ordered by priority. The loop engine picks the next story where `passes` is `false` and works on it until verification succeeds.
292
283
 
293
- ## Migrating from ralph-codex
294
-
295
- `@graypark/ralph-codex` has been deprecated in favor of `@graypark/loophaus`. The migration is straightforward:
296
-
297
- 1. **Install loophaus** — it replaces ralph-codex entirely:
298
- ```bash
299
- npx @graypark/loophaus install --force
300
- ```
301
-
302
- 2. **State files auto-migrate** — Existing `prd.json` and `progress.txt` files are fully compatible. No changes needed.
284
+ ## Update
303
285
 
304
- 3. **Command mapping:**
286
+ ```bash
287
+ npm install -g @graypark/loophaus@latest
288
+ loophaus install --force
289
+ ```
305
290
 
306
- | ralph-codex | loophaus |
307
- |-------------|----------|
308
- | `/ralph-interview` | `/loop-plan` |
309
- | `/ralph-loop` | `/loop` |
310
- | `/cancel-ralph` | `/loop-stop` |
311
- | (none) | `/loop-pulse` |
291
+ ## Uninstall
312
292
 
313
- 4. **Uninstall the old package** (optional):
314
- ```bash
315
- npx @graypark/ralph-codex uninstall
316
- ```
293
+ ```bash
294
+ loophaus uninstall
295
+ npm uninstall -g @graypark/loophaus
296
+ ```
317
297
 
318
298
  ## Development
319
299
 
@@ -321,7 +301,9 @@ Each story is sized to complete in one iteration (one context window). Dependenc
321
301
  git clone https://github.com/vcz-Gray/loophaus.git
322
302
  cd loophaus
323
303
  npm install
324
- npm test # 90 test cases
304
+ npm test # 296 test cases
305
+ npm run typecheck # TypeScript strict mode
306
+ npm run build # Compile to dist/
325
307
  npx vitest # watch mode
326
308
  ```
327
309
 
package/dist/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@graypark/loophaus",
3
- "version": "3.5.0",
3
+ "version": "3.5.1",
4
4
  "type": "module",
5
5
  "description": "loophaus — Control plane for coding agents. Iterative dev loops with multi-agent orchestration.",
6
6
  "license": "MIT",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@graypark/loophaus",
3
- "version": "3.5.0",
3
+ "version": "3.5.1",
4
4
  "type": "module",
5
5
  "description": "loophaus — Control plane for coding agents. Iterative dev loops with multi-agent orchestration.",
6
6
  "license": "MIT",