@tuzi-ince/hi-loop 0.6.0 → 0.6.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/docs/guide.md +3 -1
- package/package.json +1 -1
- package/skills/flow/SKILL.md +20 -21
package/docs/guide.md
CHANGED
|
@@ -364,7 +364,9 @@ hiloop_run({ goal, step: true })
|
|
|
364
364
|
> ]
|
|
365
365
|
> ```
|
|
366
366
|
> e2e 는 **셸 명령**이어야 한다(엔진은 Playwright MCP 도구를 부를 수 없다 — 그 경우는 스킬이 루프 후
|
|
367
|
-
> MCP 로 돌린다). `
|
|
367
|
+
> MCP 로 돌린다). `checks` 엔진 게이트는 **opt-in**이다: `flow` 스킬은 기본적으로 시작 시 e2e 를 걸지
|
|
368
|
+
> 않고 **루프 통과 후 UI 변경이 있을 때** e2e 여부를 한 번 묻는다. 매 회차 결정론적 강제가 필요할 때
|
|
369
|
+
> (무인·CI, 또는 "매 회차 e2e 로 막아줘"라고 명시)만 이 `checks` 를 시작 시 건다.
|
|
368
370
|
|
|
369
371
|
> **cwd 기본값은 `CLAUDE_PROJECT_DIR || process.cwd()`.** MCP 는 호스트(클로드코드/커서)가 서버를
|
|
370
372
|
> 띄우는 경로라, "어느 프로젝트인가"의 정답은 호스트가 주입하는 `CLAUDE_PROJECT_DIR` 다. 각 도구에
|
package/package.json
CHANGED
package/skills/flow/SKILL.md
CHANGED
|
@@ -84,19 +84,16 @@ user-invocable: true
|
|
|
84
84
|
- **단계어가 있으면** 위 "인자 문법" 표대로 `stopAfter`(및 필요한 `full`/`ship`/`watch`)를 준다.
|
|
85
85
|
**없으면** `full: true` — 발굴·설계리뷰·코드리뷰를 포함한 전체 라이프사이클로 완료까지.
|
|
86
86
|
- `testCommand`: 프로젝트의 테스트 명령(기본 `npm test`)
|
|
87
|
-
- **
|
|
88
|
-
|
|
89
|
-
(
|
|
90
|
-
|
|
87
|
+
- **e2e 는 시작 시 묻지 않는다.** UI 작업이어도 우선 기본 테스트(`testCommand`)로 루프를 돌린다.
|
|
88
|
+
e2e 확인은 **통과 후(7단계)** — 구현이 실제로 되고 확인할 UI 변경이 생겼을 때 — 로 미룬다.
|
|
89
|
+
(구현이 되는지도 모르는 시작 시점에 헷갈리는 e2e 결정을 강요하지 않는다.)
|
|
90
|
+
- **(고급, opt-in) 매 회차 e2e 강제**: 사용자가 "매 회차 e2e 로 막아줘" 같이 **명시적으로** 원할 때만
|
|
91
|
+
시작 시 `checks` 를 건다(무인·CI 처럼 결정론적 게이트가 필요한 경우). 셸 e2e 명령과 실행 환경(서버 등)이
|
|
92
|
+
있어야 한다. 느리고 비싸므로 **기본이 아니다**:
|
|
91
93
|
```json
|
|
92
|
-
"checks": [
|
|
93
|
-
{ "cmd": "<기본 테스트, 예: npm test>" },
|
|
94
|
-
{ "cmd": "<e2e 셸 명령>", "when": "<UI 글롭, 예: src/**/*.tsx>" }
|
|
95
|
-
]
|
|
94
|
+
"checks": [{ "cmd": "<기본 테스트>" }, { "cmd": "<e2e 셸 명령>", "when": "<UI 글롭, 예: src/**/*.tsx>" }]
|
|
96
95
|
```
|
|
97
|
-
→ 엔진이
|
|
98
|
-
- 셸 e2e 명령이 없고 **Playwright MCP 만** 있으면 `checks` 를 쓰지 않는다(엔진은 MCP 도구를 못 부른다)
|
|
99
|
-
— 루프 통과 후 7단계에서 MCP 로 돌린다. **둘 다 없으면** e2e 는 스킵한다(도구를 임의 설치하지 않는다).
|
|
96
|
+
→ 엔진이 UI 변경 회차마다 e2e 를 돌려 통과해야 pass 로 인정한다.
|
|
100
97
|
|
|
101
98
|
5-a. **스텝 이어가기 (step 모드).** 응답이 `⏭ 스텝 완료 …` 로 오면 루프가 **아직 미완**이다.
|
|
102
99
|
그 한 줄 진행(어느 회차·어느 단계인지)을 **사용자에게 중계**한 뒤, **같은 인자로 `hiloop_run` 을
|
|
@@ -110,18 +107,20 @@ user-invocable: true
|
|
|
110
107
|
6. **결과 보고.** `✅ 통과` / `❌ 실패` 와 반복 횟수, 그리고 함께 온 Gaps(검증 한계)를
|
|
111
108
|
사용자에게 전한다. false green(테스트만 초록이고 실제 미완)을 통과로 포장하지 않는다.
|
|
112
109
|
|
|
113
|
-
7. **e2e
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
-
|
|
117
|
-
|
|
118
|
-
-
|
|
119
|
-
-
|
|
110
|
+
7. **e2e 확인 (통과 후 · UI 변경이 있을 때만).** 여기가 e2e 를 정하는 **기본 지점**이다. 루프가 통과(✅)했고
|
|
111
|
+
**UI(화면·컴포넌트·라우팅·스타일)가 바뀌었으며** e2e 도구가 있으면, **간단히 예/아니오로** 묻는다:
|
|
112
|
+
> "UI 가 바뀌었어요. 지금 e2e 로 실제 화면을 확인할까요? (예 / 아니오)"
|
|
113
|
+
- **예** → e2e 실행. **셸 e2e 명령**(package.json `test:e2e`, 또는 `playwright.config.*` → `npx playwright test`)이
|
|
114
|
+
있으면 그걸, 없고 **Playwright MCP** 만 있으면 MCP 로 돌린다. 서버 등 환경이 필요하면 먼저 확인·기동한다.
|
|
115
|
+
- **아니오** → 기본 테스트로 충분하다고 보고 넘어간다.
|
|
116
|
+
- e2e 도구가 **둘 다 없으면** 묻지 말고 스킵했음을 밝힌다(도구를 임의 설치하지 않는다 — 통과한 루프를 실패로 만들지 않는다).
|
|
117
|
+
- UI 변경이 없으면 e2e 는 해당 없음(묻지 않는다).
|
|
118
|
+
- **4단계에서 `checks` 엔진 게이트를 이미 걸었다면** e2e 는 이미 게이트로 통과했으니 다시 묻지 않는다(스크린샷 저장만 필요하면 물어 저장).
|
|
119
|
+
- 실행한 경우 **결과서·스크린샷을 test 폴더에 저장**한다(리포트 `tests/e2e/report-<날짜시각>.md`,
|
|
120
120
|
스크린샷 `tests/e2e/screenshots/`). 날짜·시각은 실제 값으로 채우고 저장 경로를 알린다.
|
|
121
|
-
스크린샷은 브라우저를 구동하는 도구(Playwright MCP/셸)가 있을 때만 가능하다.
|
|
122
121
|
|
|
123
|
-
> 왜
|
|
124
|
-
>
|
|
122
|
+
> 왜 통과 후에 묻나: 구현이 되기 전엔 e2e 결정이 이르고 헷갈린다. **일이 됐고 확인할 UI가 있을 때**
|
|
123
|
+
> 한 번 묻는 게 자연스럽다. 매 회차 결정론적 강제가 꼭 필요하면(무인·CI) 4단계의 opt-in `checks` 를 쓴다.
|
|
125
124
|
|
|
126
125
|
8. **커밋 게이트 (git 워크플로).** 테스트가 통과(✅)하고 e2e 게이트까지 끝나면 `commitPolicy` 대로
|
|
127
126
|
**로컬** 커밋한다. **push/PR 은 하지 않는다.** git 저장소가 아니면 건너뛴다.
|