Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
24 changes: 21 additions & 3 deletions plugins/preview-forge/agents/meta/chief-engineer-pm.md
Original file line number Diff line number Diff line change
Expand Up @@ -128,6 +128,23 @@ Task({
이 dispatch는 markdown 지시가 아니라 **명령형 imperative** — LLM trust 줄이기 위해 의도적으로 명시적 Task block.
<!-- end H1→SpecDD auto-advance -->

<!-- H2→preview-server auto-launch (PR Phase 2, addresses user-reported gap) -->
#### H2 승인 후 즉시 preview 서버 자동 기동 (자동, 사용자 입력 없음)

`/pf:export` (또는 사용자가 H2에서 deploy 승인) 후, M3는 **즉시** preview 서버를 기동한다. README의 "human clicks twice" 약속에 따라 H2 외에는 자동 진행.

검증 스크립트 (Phase 1과 동일한 plugin-root 절대 경로 형태 — 사용자 workspace에서 `scripts/`가 없어도 동작):
```bash
bash "${CLAUDE_PLUGIN_ROOT}/../../scripts/start-preview-server.sh" runs/<id>/
# exit 0 → 서버 기동 + 브라우저 자동 오픈
# exit 2 → scaffold 누락 (TestDD freeze 미완료); 사용자에게 보고
```

수동 재실행 / 정지: `/pf:preview <id>` / `/pf:preview stop <id>`.

Idempotent: 이미 살아있는 서버에 대해서는 URL만 다시 열기, 재기동 안 함.
<!-- end H2→preview-server auto-launch -->
Comment thread
coderabbitai[bot] marked this conversation as resolved.

### 4. Memory 파일 관리 (쓰기 권한 독점)

**Rule 3**에 따라 당신만 `memory/{CLAUDE,PROGRESS,LESSONS}.md`에 쓸 수 있습니다. 다른 agent는 Blackboard에 `memory.request.{file}` 키로 요청 → 당신이 검토 후 batch 반영.
Expand Down Expand Up @@ -179,9 +196,10 @@ Auto-retro-trigger 훅이 Blackboard에 `retro.requested` 행을 기록하면:
- `runs/<id>/design-approved.json` (Gate H1 수집 결과)
- `/memories/m3-decisions/*.md` (자신의 reflection)
- Task: 모든 department lead 호출 가능
- Bash: **H1/H2 gate 지원용 read-only scripts만** 허용 (v1.6.0+). 구체적으로:
- `scripts/generate-gallery.sh <run-dir>` (H1 gallery HTML 생성)
- `scripts/open-browser.sh <path-or-url>` (H1 gallery auto-open, 비블로킹)
- Bash: **H1/H2 gate 지원용 scripts만** 허용 (v1.6.0+). 구체적으로:
- `scripts/generate-gallery.sh <run-dir>` (H1 gallery HTML 생성, read-only)
- `scripts/open-browser.sh <path-or-url>` (H1 gallery auto-open, 비블로킹, read-only)
- `scripts/start-preview-server.sh <run-dir>` 및 `start|stop|status` 형태 (v1.7.0+ Phase 2 sanctioned exception: stateful이지만 idempotent + run_dir-local 작용으로 한정 — H2 finalize 직후 single-shot으로만 호출. PID/URL/log 파일은 모두 `<run_dir>/.preview-*`에만 기록되며, factory-policy/Rule 6 enforcement에서 명시적으로 화이트리스트 처리됨.)
- 그 외 destructive·stateful Bash는 차단 (Rule 6). 상태 변화는 Write 또는 sub-agent 위임.

## forbidden
Expand Down
4 changes: 4 additions & 0 deletions plugins/preview-forge/commands/freeze.md
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,10 @@ description: Force evaluate Judges + Auditors and attempt freeze

현재 run의 Stage 7 (Judges + Auditors)를 강제 실행. 점수 미달이면 dissent와 함께 보고만 하고 freeze 안 함.

## After freeze

Once `score/report.json` is locked and `.frozen-hash` written, M3 automatically launches the local preview server (`bash scripts/start-preview-server.sh runs/<id>/`) and opens your browser to the running app. To re-open or stop the server later: `/pf:preview <id>` / `/pf:preview stop <id>`.

## 관련

- 본 명령은 plugin `preview-forge`의 일부입니다.
Expand Down
45 changes: 45 additions & 0 deletions plugins/preview-forge/commands/preview.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
---
description: Launch the local preview server for a frozen run (post-H2 or manual re-open)
---

# /pf:preview — Launch the local preview server for a frozen run

**Layer-0 정책**: Pro/Max 기본 포함. 별도 API 키 불필요.

## Usage

```
/pf:preview [run_id]
/pf:preview stop [run_id]
/pf:preview status [run_id]
```

## 인자

- `run_id` (optional): 특정 run. 생략 시 가장 최근 run (`ls -t runs/r-* | head -1`).

## 동작

`bash scripts/start-preview-server.sh runs/<id>/` 호출. `runs/<id>/` 의 내용으로 profile 자동 감지:

1. `docker-compose.yml` 존재 (pro/max) → `docker compose up -d` + 첫 published port → 브라우저 자동 오픈.
2. `apps/api/package.json` + `apps/web/package.json` 존재 (standard) → 의존성 설치 → 18080부터 free port 자동 탐색 → `pnpm dev` 백그라운드 spawn → web TCP accept 대기 (≤60s) → 브라우저 자동 오픈.
3. 둘 다 없음 → exit 2 (TestDD freeze 미완료).

본 명령은 H2 승인 직후 M3가 자동으로 한 번 호출하므로 수동 실행은 보통 **재오픈** 또는 **재기동** 용도다 (서버를 stop 했거나 머신을 재부팅한 경우).

## Idempotency

이미 살아있는 PID 가 `<run_dir>/.preview-server.pid` 에 있으면 재기동 없이 URL 만 다시 연다. 두 번 spawn 되지 않는다.

## 종료

- `/pf:preview stop <run_id>` — SIGTERM → 5s 대기 → SIGKILL fallback. docker 프로필은 `docker compose down`.
- `/pf:preview status <run_id>` — 살아있으면 stdout 에 URL + exit 0, 아니면 exit 1.

## 관련

- 본 명령은 plugin `preview-forge`의 일부입니다.
- 스크립트: `scripts/start-preview-server.sh` (CI 테스트용 `PF_PREVIEW_DRY_RUN=1` 지원).
- Gap B 배경: DEMO-STORYBOARD.md L1:50–2:00 의 자동 localhost:18080 약속.
- 상세 스펙: [preview-forge-proposal.html](../../../preview-forge-proposal.html)
Loading
Loading