update agent-ops rules and skills
This commit is contained in:
parent
aaeb65d24d
commit
ebd2832ab8
3 changed files with 116 additions and 1 deletions
|
|
@ -30,6 +30,7 @@
|
|||
- 사용자 실행 파이프라인에는 `bin/**`, `apps/*/cmd/**`, `apps/*/internal/bootstrap/**`, edge-node transport/service/registry, adapter 실행/stream/cancel/status 경로, `configs/**`, `packages/config/**`, 관련 protobuf 계약 변경이 포함된다.
|
||||
- 기본 E2E smoke는 mock adapter와 임시 설정/포트를 사용해 외부 CLI 의존성 없이 수행한다.
|
||||
- E2E smoke에서는 최소한 node 등록, `/nodes` 확인, console 메시지 전송, delta/message 출력, complete event를 확인한다.
|
||||
- 상세 수행 절차와 기능별 체크리스트는 `agent-ops/skills/project/e2e-smoke/SKILL.md`를 따른다.
|
||||
- `make test-e2e` 같은 고정 명령이 생기면 그 명령을 우선 사용한다. 아직 고정 명령이 없으면 동일한 내용을 수동 smoke 절차로 검증하거나, 실행하지 못한 이유를 최종 보고에 명시한다.
|
||||
- 실제 외부 CLI profile 검증은 사용자가 명시했거나 환경이 준비된 경우에만 opt-in으로 수행한다.
|
||||
- 작업 최종 보고에는 실행한 테스트 명령과 E2E smoke 수행 여부를 명시한다. 수행하지 못한 필수 검증은 이유와 남은 위험을 함께 적는다.
|
||||
|
|
|
|||
|
|
@ -76,5 +76,5 @@
|
|||
|
||||
## 스킬 라우팅
|
||||
|
||||
- 현재 프로젝트 전용 skill은 만들지 않는다.
|
||||
- 사용자 실행 파이프라인 검증, E2E smoke, `bin/edge.sh`/`bin/node.sh` 통합 테스트: `agent-ops/skills/project/e2e-smoke/SKILL.md`
|
||||
- 반복 작업이 확인되면 `agent-ops/skills/project/<skill-name>/SKILL.md`를 생성하고 이 표에 등록한다.
|
||||
|
|
|
|||
114
agent-ops/skills/project/e2e-smoke/SKILL.md
Normal file
114
agent-ops/skills/project/e2e-smoke/SKILL.md
Normal file
|
|
@ -0,0 +1,114 @@
|
|||
---
|
||||
name: e2e-smoke
|
||||
version: 1.0.0
|
||||
description: bin/edge.sh와 bin/node.sh 기반 사용자 실행 파이프라인 E2E smoke 및 CLI opt-in 통합 검증 절차
|
||||
---
|
||||
|
||||
# e2e-smoke
|
||||
|
||||
## 목적
|
||||
|
||||
사용자 실행 방식에 가까운 `bin/edge.sh` + `bin/node.sh` 경로로 edge-node 실행 파이프라인을 검증한다. 기본 검증은 mock adapter 기반으로 외부 CLI 의존성 없이 수행하고, 실제 CLI profile 검증은 opt-in으로 분리한다.
|
||||
|
||||
## 언제 호출할지
|
||||
|
||||
- 사용자 실행 파이프라인에 닿는 작업을 완료한 뒤 검증 단계에 들어갈 때
|
||||
- `bin/**`, `apps/*/cmd/**`, `apps/*/internal/bootstrap/**`, edge-node transport/service/registry, adapter 실행/stream/cancel/status 경로를 변경했을 때
|
||||
- `configs/**`, `packages/config/**`, 관련 protobuf 계약 변경이 edge-node 실행 방식에 영향을 줄 때
|
||||
- `make test-e2e` 또는 E2E smoke 스크립트를 만들거나 갱신할 때
|
||||
|
||||
## 입력
|
||||
|
||||
- `scope`: 검증할 변경 범위와 영향을 받은 도메인 (필수)
|
||||
- `mode`: `mock` 또는 `real-cli` 또는 `both` (선택, 기본값: `mock`)
|
||||
- `profiles`: opt-in으로 검증할 CLI profile 목록. 예: `claude`, `gemini`, `codex`, `opencode`, `cline-dgx` (선택)
|
||||
- `config_strategy`: 임시 config 파일 또는 환경 변수 override 방식 (선택)
|
||||
|
||||
## 먼저 확인할 것
|
||||
|
||||
- [ ] `agent-ops/rules/project/domain/testing/rules.md`를 읽고 이번 작업이 필수 E2E smoke 대상인지 확인한다.
|
||||
- [ ] `bin/edge.sh`와 `bin/node.sh`가 현재 사용자 실행 entrypoint인지 확인한다.
|
||||
- [ ] `make test-e2e` 같은 고정 명령이 이미 있으면 그 명령을 우선 사용한다.
|
||||
- [ ] 고정 명령이 없으면 임시 config와 랜덤 포트로 수동 smoke 절차를 구성한다.
|
||||
- [ ] real CLI 검증을 할 경우 실제 command 경로, 로그인/계정 상태, provider 설정, workspace 권한이 준비되어 있는지 확인한다.
|
||||
|
||||
## 실행 절차
|
||||
|
||||
1. **검증 범위 결정**
|
||||
- 변경 파일이 사용자 실행 파이프라인에 닿는지 확인한다.
|
||||
- 필수 검증은 `go test ./...` 또는 대상 패키지 테스트와 mock E2E smoke이다.
|
||||
- real CLI 검증은 사용자가 명시했거나 환경이 준비된 경우에만 opt-in으로 추가한다.
|
||||
|
||||
2. **기본 E2E smoke 준비**
|
||||
- 기본 `configs/*.yaml`을 오염시키지 말고 임시 edge/node config 또는 환경 변수 override를 사용한다.
|
||||
- edge listen 주소와 node edge 주소는 충돌을 피하기 위해 임시 포트를 사용한다.
|
||||
- edge console target은 외부 CLI가 아닌 mock adapter target으로 구성한다.
|
||||
|
||||
3. **기본 E2E smoke 실행**
|
||||
- `bin/edge.sh`와 `bin/node.sh`를 실제 entrypoint로 실행한다.
|
||||
- node가 edge에 register되고 console `/nodes` 출력에 node ID와 alias가 표시되는지 확인한다.
|
||||
- mock adapter 대상으로 같은 session에서 메시지를 최소 2회 전송한다.
|
||||
- 두 요청 모두 `[edge] sent`, `[node-*-event] start`, `[node-*-message]`, `[node-*-event] complete` 출력이 생기는지 확인한다.
|
||||
- 두 번째 메시지가 첫 번째 메시지 이후에도 같은 edge-node 연결에서 정상 처리되는지 확인한다.
|
||||
- background off 기본값에서 foreground 응답 대기가 complete event까지 이어지는지 확인한다.
|
||||
- `/session <id>` 변경 후 메시지를 보내고 출력의 session 값과 node event/message 흐름이 유지되는지 확인한다.
|
||||
- `/terminate-session` 명령이 성공 출력 또는 mock adapter의 명확한 unsupported/error 출력을 내는지 확인한다.
|
||||
|
||||
4. **edge console / transport 항목 확인**
|
||||
- node 연결/해제 lifecycle event가 run event와 분리되어 출력되는지 확인한다.
|
||||
- `RunEvent`의 `start`, `delta`, `complete`, `error`, `cancelled`가 console 출력 형식에 맞게 라우팅되는지 확인한다.
|
||||
- node가 1대일 때는 node 선택 없이 single-node fallback으로 실행되는지 확인한다.
|
||||
- node가 2대 이상인 smoke를 수행한다면 `/node <id|alias>` 선택 없이는 ambiguous error가 출력되는지 확인한다.
|
||||
- `/node <id|alias>` 선택 후 선택된 node로 run request가 전달되고 출력 prefix가 해당 node label을 사용하는지 확인한다.
|
||||
|
||||
5. **CLI profile opt-in 검증**
|
||||
- real CLI 환경이 준비된 경우에만 수행한다.
|
||||
- `claude`, `gemini`, `codex`, `opencode`, `cline-dgx` 또는 `cline-m1` 중 요청된 profile을 대상으로 같은 session 메시지를 최소 2회 주고받는다.
|
||||
- 각 profile에서 start, delta-or-message, complete 출력이 모두 생기는지 확인한다.
|
||||
- `opencode`는 SSE 기반 delta/message와 complete 출력이 생기는지 확인한다.
|
||||
- `cline` 계열은 JSON stream delta/message와 complete 출력이 생기는지 확인한다.
|
||||
|
||||
6. **usage status opt-in 검증**
|
||||
- `/status`로 `codex`, `claude`, `gemini` 사용량을 조회한다.
|
||||
- `[edge] sent command=status`와 `[node-*-status]`가 출력되는지 확인한다.
|
||||
- `codex`와 `claude`는 daily/weekly limit 또는 raw fallback 출력이 표시되는지 확인한다.
|
||||
- `gemini`는 quota metadata 또는 model usage 출력이 표시되는지 확인한다.
|
||||
- `opencode`와 `cline`처럼 status checker가 아직 없는 profile은 조용히 실패하지 않고 명확한 unsupported error를 출력하는지 확인한다.
|
||||
- parsed limit이 있으면 label/reset 정보를 포함하고, parsed limit이 없으면 raw output 일부를 보여주는지 확인한다.
|
||||
|
||||
7. **cancel / session lifecycle 검증**
|
||||
- 변경 범위가 cancel, timeout, persistent session에 닿는 경우 수행한다.
|
||||
- foreground run 중 cancel 요청이 전달되면 cancelled event가 출력되고 node store 상태가 cancelled로 마감되는지 확인한다.
|
||||
- persistent CLI session에서 `/terminate-session` 후 같은 session 재사용 시 새 worker 생성 또는 `REQUIRE_EXISTING` 실패가 의도대로 동작하는지 확인한다.
|
||||
- timeout 발생 시 timeout message와 error/cancelled 상태가 사용자 출력에 드러나는지 확인한다.
|
||||
|
||||
8. **결과 보고**
|
||||
- 실행한 Go 테스트 명령과 결과를 적는다.
|
||||
- 실행한 E2E smoke 방식, 사용한 config 전략, 검증한 profile을 적는다.
|
||||
- 필수 검증을 실행하지 못했다면 이유와 남은 위험을 명시한다.
|
||||
|
||||
## 실행 결과 검증
|
||||
|
||||
- [ ] 일반 Go 테스트 또는 대상 패키지 테스트 결과가 보고되었는가
|
||||
- [ ] 사용자 실행 파이프라인 변경 시 mock E2E smoke 수행 여부가 보고되었는가
|
||||
- [ ] node register, `/nodes`, 메시지 최소 2회, event/message/complete 출력 확인 여부가 보고되었는가
|
||||
- [ ] real CLI opt-in을 수행했다면 profile별 메시지 왕복과 `/status` 결과가 보고되었는가
|
||||
- 검증 실패 시: 실패한 항목, 관련 로그/출력 요약, 남은 위험을 최종 보고에 포함한다.
|
||||
|
||||
## 출력 형식
|
||||
|
||||
```text
|
||||
검증 결과
|
||||
- Go 테스트: <명령> — <통과|실패|미실행 사유>
|
||||
- E2E smoke: <mock|real-cli|both> — <통과|실패|미실행 사유>
|
||||
- 확인 항목: node register, /nodes, message x2, event/message/complete, <추가 항목>
|
||||
- Real CLI profile: <profile 목록 또는 미수행 사유>
|
||||
- 남은 위험: <없음 또는 내용>
|
||||
```
|
||||
|
||||
## 금지 사항
|
||||
|
||||
- 사용자 실행 파이프라인에 닿는 변경을 하고 유닛/패키지 테스트만으로 완료 처리하지 않는다.
|
||||
- 기본 E2E smoke를 외부 CLI 설치, 로그인, 네트워크 계정 상태에 의존하게 만들지 않는다.
|
||||
- E2E smoke를 위해 기본 `configs/*.yaml`을 임시값으로 오염시키지 않는다.
|
||||
- 필수 검증을 실행하지 못했는데 조용히 생략하지 않는다.
|
||||
Loading…
Reference in a new issue