@walwal-harness/cli 6.1.3 → 6.1.4
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 +10 -0
- package/assets/templates/HARNESS.md +216 -403
- package/assets/templates/config.json +3 -3
- package/conventions/README.md +92 -0
- package/conventions/conductor.md +24 -0
- package/conventions/coo-developer.md +24 -0
- package/conventions/cqo.md +24 -0
- package/conventions/cto.md +24 -0
- package/conventions/dispatcher.md +24 -0
- package/conventions/documentationer.md +24 -0
- package/conventions/evaluator-architecture.md +24 -0
- package/conventions/evaluator-code-quality.md +24 -0
- package/conventions/evaluator-functional.md +24 -0
- package/conventions/evaluator-security.md +24 -0
- package/conventions/evaluator-visual.md +24 -0
- package/conventions/generator-backend.md +24 -0
- package/conventions/generator-designer.md +24 -0
- package/conventions/generator-devops.md +24 -0
- package/conventions/generator-frontend.md +24 -0
- package/conventions/meeting-manager.md +24 -0
- package/conventions/planner.md +24 -0
- package/conventions/service-ops.md +24 -0
- package/conventions/shared.md +24 -0
- package/package.json +2 -1
package/CHANGELOG.md
CHANGED
|
@@ -29,6 +29,16 @@ docmeta:
|
|
|
29
29
|
|
|
30
30
|
# Changelog
|
|
31
31
|
|
|
32
|
+
## 6.1.4 — Template + package files alignment with v6 NEXUS (2026-05-08)
|
|
33
|
+
|
|
34
|
+
### Why
|
|
35
|
+
6.1.3 까지 `assets/templates/HARNESS.md` 와 `assets/templates/config.json` 의 메타 헤더가 v3 시절 "7-Agent Production Harness / 5.6.0" 으로 정지해 있어, `--force` 가 stale 템플릿을 그대로 덮어쓰는 회귀 발생. 또 신규 `conventions/` 디렉토리가 `package.json` "files" 에 누락되어 게시 패키지에 포함되지 않았다.
|
|
36
|
+
|
|
37
|
+
### Changed
|
|
38
|
+
- `assets/templates/HARNESS.md`: v6 NEXUS 도큐트린 기준으로 전면 재작성 (단일 대화 창구·조직도·디렉토리·실행 흐름·6종 회의·parallel-tracks·Solo/Team/Hypothesis 모드·품질 게이트·자주 쓰는 명령).
|
|
39
|
+
- `assets/templates/config.json`: `harness.name` / `version` / `description` 메타 헤더를 v6.1.4 NEXUS 기준으로 갱신.
|
|
40
|
+
- `package.json` "files": `conventions/` 추가 (이제 게시 tarball 에 포함됨).
|
|
41
|
+
|
|
32
42
|
## 6.1.3 — Parallel-tracks fork-join + role gotchas/conventions backfill (2026-05-08)
|
|
33
43
|
|
|
34
44
|
### Added
|
|
@@ -1,413 +1,226 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
1
|
+
---
|
|
2
|
+
docmeta:
|
|
3
|
+
id: HARNESS
|
|
4
|
+
title: walwal-harness — NEXUS Company Harness 가이드
|
|
5
|
+
type: output
|
|
6
|
+
createdAt: 2026-05-08T00:00:00Z
|
|
7
|
+
updatedAt: 2026-05-08T00:00:00Z
|
|
8
|
+
source:
|
|
9
|
+
producer: agent
|
|
10
|
+
skillId: harness-release
|
|
11
|
+
inputs:
|
|
12
|
+
- documentId: AGENTS
|
|
13
|
+
uri: ../../AGENTS.md
|
|
14
|
+
relation: output-from
|
|
15
|
+
sections:
|
|
16
|
+
- sourceRange: { startLine: 121, endLine: 126 }
|
|
17
|
+
targetRange: { startLine: 11, endLine: 22 }
|
|
18
|
+
- sourceRange: { startLine: 94, endLine: 120 }
|
|
19
|
+
targetRange: { startLine: 24, endLine: 45 }
|
|
20
|
+
- sourceRange: { startLine: 35, endLine: 81 }
|
|
21
|
+
targetRange: { startLine: 49, endLine: 102 }
|
|
22
|
+
- sourceRange: { startLine: 170, endLine: 195 }
|
|
23
|
+
targetRange: { startLine: 144, endLine: 161 }
|
|
24
|
+
- sourceRange: { startLine: 214, endLine: 237 }
|
|
25
|
+
targetRange: { startLine: 171, endLine: 179 }
|
|
26
|
+
- sourceRange: { startLine: 238, endLine: 243 }
|
|
27
|
+
targetRange: { startLine: 181, endLine: 187 }
|
|
28
|
+
tags: [harness, template, nexus, v6.1.4, doctrine]
|
|
29
|
+
---
|
|
30
|
+
|
|
31
|
+
# walwal-harness — NEXUS Company Harness 가이드
|
|
32
|
+
|
|
33
|
+
> Anthropic 블로그 "Harness Design for Long-Running Application Development" 기반.
|
|
34
|
+
> v6 NEXUS 도큐트린: 하네스를 **하나의 회사**로 본다. Owner(사용자)는 Dispatcher(CEO)와만 대화하고, 회사 내부 부서가 자율적으로 GOAL 을 실행·검증·운영한다.
|
|
35
|
+
>
|
|
36
|
+
> 이 파일은 **빠른 운영 가이드** 입니다. 프로젝트별 살아있는 컨텍스트는 `AGENTS.md` (CLAUDE.md = AGENTS.md 심볼릭 링크) 를 참조하세요.
|
|
37
|
+
|
|
38
|
+
## 단일 대화 창구 (Doctrine)
|
|
39
|
+
|
|
40
|
+
```
|
|
41
|
+
Owner (사용자)
|
|
42
|
+
↕ (단일 대화 창구)
|
|
43
|
+
Dispatcher = CEO ── 부서 식별 · GOAL 협의 · escalation 보고
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
- Owner ↔ Dispatcher만 직접 대화. 다른 부서가 Owner와 직접 대화하는 것은 **금지**.
|
|
47
|
+
- 모든 escalation은 Dispatcher 경유.
|
|
48
|
+
- GOAL 작성·수정은 CEO 전용 (`.harness/actions/goals.md`, CTO와 협의로 구체화).
|
|
49
|
+
|
|
50
|
+
## 조직 구조 (v6 NEXUS)
|
|
51
|
+
|
|
52
|
+
```
|
|
53
|
+
Owner
|
|
54
|
+
↕
|
|
55
|
+
Dispatcher (CEO)
|
|
56
|
+
├─ Conductor # 자율 실행 엔진 (Gen↔Eval↔Ops 루프, escalation 트리거)
|
|
57
|
+
└─ Meeting-Manager # 동기화 엔진 (6종 회의 · 적응형 cadence · parallel-tracks fork-join)
|
|
58
|
+
↓
|
|
59
|
+
Planner (COO + HR) # Sprint·AC·인선·온보딩
|
|
60
|
+
└─ COO Hypothesis Cell (직영)
|
|
61
|
+
├─ coo-developer # 가설 검증 spike·백데이터 실험
|
|
62
|
+
└─ documentationer # 웹리서치·보고서·가설 판정
|
|
63
|
+
↓
|
|
64
|
+
┌─────┴────────┬──────────────┐
|
|
65
|
+
CTO CQO Service-Ops
|
|
66
|
+
(Gen 총괄) (Eval 총괄) (운용·모니터·인시던트·자율회고)
|
|
67
|
+
├ Gen-BE ├ Eval-Functional
|
|
68
|
+
├ Gen-FE ├ Eval-Visual
|
|
69
|
+
├ Designer ├ Eval-CodeQuality
|
|
70
|
+
└ DevOps ├ Eval-Architecture
|
|
71
|
+
└ Eval-Security
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
각 역할의 상세 트리거·산출물·금기는 `.claude/skills/harness-<role>/SKILL.md` 와 `gotchas/<role>.md`, `conventions/<role>.md` 에 명시.
|
|
6
75
|
|
|
7
76
|
## 디렉토리 구조
|
|
8
77
|
|
|
9
|
-
|
|
10
|
-
CONVENTIONS.md # 프로젝트 컨벤션 (사용자 작성, 에이전트 읽기 전용)
|
|
11
|
-
.harness/
|
|
12
|
-
├── HARNESS.md # 이 파일
|
|
13
|
-
├── config.json # 하네스 설정
|
|
14
|
-
├── progress.json # 기계 판독 상태 (세션 오케스트레이션)
|
|
15
|
-
├── progress.log # 사람 판독 히스토리 (append-only)
|
|
16
|
-
├── handoff.json # 세션 전환 문서 (prompt, model, artifacts, regression 등)
|
|
17
|
-
├── actions/ # 현재 활성 문서
|
|
18
|
-
│ ├── pipeline.json # Dispatcher 결정 (어떤 파이프라인인지)
|
|
19
|
-
│ ├── plan.md # 제품 사양
|
|
20
|
-
│ ├── feature-list.json # 기능 추적 (layer + service 필드)
|
|
21
|
-
│ ├── api-contract.json # API 계약서
|
|
22
|
-
│ ├── sprint-contract.md # 현재 스프린트 계약
|
|
23
|
-
│ ├── evaluation-functional.md
|
|
24
|
-
│ └── evaluation-visual.md
|
|
25
|
-
└── archive/ # 완료 스프린트 보관 (불변)
|
|
26
|
-
└── sprint-NNN/
|
|
27
|
-
```
|
|
28
|
-
|
|
29
|
-
## 실행 흐름
|
|
30
|
-
|
|
31
|
-
```
|
|
32
|
-
사용자: 프로젝트 요청 (자유 형식)
|
|
33
|
-
│
|
|
34
|
-
▼
|
|
35
|
-
┌──────────────────┐
|
|
36
|
-
│ 0. DISPATCHER │ 요청 분석 → pipeline.json 생성
|
|
37
|
-
│ (파이프라인 선택) │ 사용자 확인
|
|
38
|
-
└────────┬─────────┘
|
|
39
|
-
│
|
|
40
|
-
┌────┴────┬──────────┐
|
|
41
|
-
▼ ▼ ▼
|
|
42
|
-
FULLSTACK FE-ONLY BE-ONLY
|
|
43
|
-
```
|
|
44
|
-
|
|
45
|
-
### Evaluator Chain (공통)
|
|
46
|
-
|
|
47
|
-
Generator 이후는 **3-Evaluator 직렬 체인 + 조기 종료**:
|
|
48
|
-
|
|
49
|
-
```
|
|
50
|
-
Generator
|
|
51
|
-
→ Eval-Code-Quality (정적 · 저비용 · 브라우저 없음)
|
|
52
|
-
→ Eval-Functional (동작 · 중비용 · Playwright/curl)
|
|
53
|
-
→ Eval-Visual (렌더 · 고비용 · 스크린샷)
|
|
54
|
-
→ Archive
|
|
55
|
-
```
|
|
56
|
-
|
|
57
|
-
앞단 FAIL 시 뒤 평가자는 실행하지 않고 즉시 Generator 재작업으로 리라우팅.
|
|
58
|
-
구조가 깨진 코드에 동작/렌더 테스트를 낭비하지 않기 위함.
|
|
59
|
-
|
|
60
|
-
| 평가자 | 관심사 | 도구 |
|
|
61
|
-
|--------|--------|------|
|
|
62
|
-
| evaluator-code-quality | 유지보수성·레이어·타입 안정성·테스트 품질 (BE/FE/libs 공통) | Read/Grep + tsc/eslint |
|
|
63
|
-
| evaluator-functional | 엔드포인트·E2E 사용자 플로우·API 계약 준수 | Playwright(browser_*) 또는 curl(api-only) |
|
|
64
|
-
| evaluator-visual | 레이아웃·반응형·접근성·AI슬롭 | Playwright(screenshot/resize/snapshot) |
|
|
65
|
-
|
|
66
|
-
### FULLSTACK — 신규 PRD 기반 풀스택
|
|
67
|
-
|
|
68
|
-
```
|
|
69
|
-
Planner → Gen-BE → Gen-FE → Eval-Code-Quality → Eval-Func → Eval-Visual → Archive
|
|
70
|
-
```
|
|
71
|
-
|
|
72
|
-
### FE-ONLY — 기존 API + 프론트엔드 연동
|
|
73
|
-
|
|
74
|
-
```
|
|
75
|
-
Planner(light) → Gen-FE → Eval-Code-Quality → Eval-Func → Eval-Visual → Archive
|
|
76
|
-
│
|
|
77
|
-
└─ OpenAPI spec → api-contract.json 변환
|
|
78
|
-
Gen-BE SKIP (외부 서버 사용)
|
|
79
|
-
```
|
|
80
|
-
|
|
81
|
-
### BE-ONLY — 기존 서버 + 백엔드 기능 추가
|
|
82
|
-
|
|
83
|
-
```
|
|
84
|
-
Planner → Gen-BE → Eval-Code-Quality → Eval-Func(API-only) → Archive
|
|
85
|
-
│
|
|
86
|
-
└─ 기존 코드 분석 후 확장 설계
|
|
87
|
-
Gen-FE SKIP, Eval-Visual SKIP
|
|
88
|
-
Eval-Func: Playwright 대신 curl/httpie API 테스트
|
|
89
|
-
```
|
|
90
|
-
|
|
91
|
-
### 공통 — 실패 시 루프
|
|
92
|
-
|
|
93
|
-
```
|
|
94
|
-
Eval-Code-Quality FAIL → failure.location 에 따라 Gen-BE 또는 Gen-FE 재작업 (뒤 평가자 실행 없음)
|
|
95
|
-
Eval-Func FAIL → 동일 규칙으로 재작업
|
|
96
|
-
Eval-Visual FAIL → Gen-FE 재작업
|
|
97
|
-
3회 실패 → Planner 에스컬레이션 (scope 축소/접근 변경)
|
|
98
|
-
5회 초과 → 사용자 개입 요청
|
|
99
|
-
```
|
|
100
|
-
|
|
101
|
-
### Pre-Eval Gate (Deterministic Checks)
|
|
102
|
-
|
|
103
|
-
Generator → Evaluator 전환 전, 결정론적 검증을 자동 실행합니다:
|
|
104
|
-
|
|
105
|
-
```
|
|
106
|
-
Generator 완료 → [tsc --noEmit] → [eslint] → [jest/vitest --bail] → Evaluator
|
|
107
|
-
↓ FAIL
|
|
108
|
-
Generator로 리라우팅 (Evaluator 세션 미개설)
|
|
109
|
-
```
|
|
110
|
-
|
|
111
|
-
- Backend: `tsc --noEmit`, `eslint . --max-warnings=0`, `jest --bail`
|
|
112
|
-
- Frontend: `tsc --noEmit`, `eslint . --max-warnings=0`, `vitest run --bail 1`
|
|
113
|
-
- `config.json`의 `flow.pre_eval_gate`에서 커스터마이징 가능
|
|
114
|
-
|
|
115
|
-
### Runtime Guardrail (파일 소유권 검증)
|
|
116
|
-
|
|
117
|
-
에이전트 전환 시 `git diff`로 이전 에이전트가 권한 밖 파일을 수정했는지 검증합니다.
|
|
118
|
-
위반 발견 시 경고를 출력하고 리뷰를 요청합니다.
|
|
119
|
-
|
|
120
|
-
### Context Isolation Guard (컨텍스트 분리 가드레일)
|
|
121
|
-
|
|
122
|
-
한 세션에서 여러 에이전트를 실행하면 컨텍스트가 오염됩니다.
|
|
123
|
-
`UserPromptSubmit` 훅이 다음 위반을 실시간 감지합니다:
|
|
124
|
-
|
|
125
|
-
- `current_agent`가 running인데 다른 `/harness-*` 스킬 호출 시 경고 주입
|
|
126
|
-
- `agent_status`를 completed로 변경하지 않고 다음 에이전트 호출 시 경고
|
|
127
|
-
|
|
128
|
-
### Statusline (상시 상태 표시)
|
|
129
|
-
|
|
130
|
-
터미널 하단에 항상 고정되는 1줄 compact 상태:
|
|
131
|
-
|
|
132
|
-
```
|
|
133
|
-
[S1] FULL | >backend | 2/5 feat | ctx 45% | $1.23
|
|
134
|
-
```
|
|
135
|
-
|
|
136
|
-
- `scripts/harness-statusline.sh`가 3초 간격으로 `progress.json`을 읽어 갱신
|
|
137
|
-
- `.claude/settings.json`의 `statusLine` 설정으로 활성화
|
|
138
|
-
- 세션 시작 시 장황한 프로그래스 출력 대신 statusline으로 대체
|
|
139
|
-
|
|
140
|
-
### Artifact State Machine
|
|
141
|
-
|
|
142
|
-
주요 아티팩트는 상태를 추적합니다:
|
|
143
|
-
|
|
144
|
-
```
|
|
145
|
-
pending → draft → reviewed → approved
|
|
146
|
-
```
|
|
147
|
-
|
|
148
|
-
| 아티팩트 | 생성 에이전트 | 필수 상태 (다음 에이전트 진행 조건) |
|
|
149
|
-
|----------|-------------|----------------------------------|
|
|
150
|
-
| plan.md | Planner | draft 이상 → Generator |
|
|
151
|
-
| api-contract.json | Planner | draft 이상 → Generator |
|
|
152
|
-
| feature-list.json | Planner | draft 이상 → Generator |
|
|
153
|
-
| sprint-contract.md | Generator | draft 이상 → Evaluator |
|
|
154
|
-
|
|
155
|
-
상태는 `progress.json.artifacts`에서 추적됩니다.
|
|
156
|
-
|
|
157
|
-
## 세션 오케스트레이션
|
|
158
|
-
|
|
159
|
-
### 핵심: 한 세션에 1 에이전트 단계
|
|
160
|
-
|
|
161
|
-
각 에이전트는 독립 Claude Code 세션에서 실행됩니다. 컨텍스트 소진을 방지하고 품질을 유지합니다.
|
|
162
|
-
|
|
163
|
-
### 상태 관리
|
|
164
|
-
|
|
165
|
-
| 파일 | 역할 |
|
|
166
|
-
|------|------|
|
|
167
|
-
| `.harness/progress.json` | 기계 판독 상태 (현재 에이전트, 파이프라인, 실패 정보) |
|
|
168
|
-
| `.harness/progress.log` | 사람 판독 히스토리 (append-only, 전체) |
|
|
169
|
-
| `.harness/handoff.json` | 세션 전환 문서 (prompt, model, thinking_mode, artifacts) |
|
|
170
|
-
| `.harness/actions/audit.log` | Sprint cycle 단위 실행 추적 (Planner→Eval 통과) |
|
|
171
|
-
|
|
172
|
-
### Audit Log
|
|
173
|
-
|
|
174
|
-
1 sprint cycle(Planner/Dispatcher 시작 → Eval 통과) 단위의 상세 실행 추적입니다.
|
|
78
|
+
### 프로젝트 루트 (개발자가 직접 보는 파일)
|
|
175
79
|
|
|
176
80
|
```
|
|
177
|
-
#
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
2026-04-09T14:50:00Z | gen-backend | develop | complete | apps/service-user/ | 4 endpoints
|
|
185
|
-
2026-04-09T14:50:01Z | gen-backend | handoff | complete | →eval-functional |
|
|
186
|
-
2026-04-09T14:55:00Z | eval-func | review | start | POST /api/auth/register | AC-001~003 검증
|
|
187
|
-
2026-04-09T14:58:00Z | eval-func | review | fail | POST /api/auth/register | 409→400 contract 불일치
|
|
188
|
-
2026-04-09T14:58:01Z | eval-func | handoff | complete | →gen-backend | Re-Generate
|
|
81
|
+
AGENTS.md # 프로젝트 컨텍스트 (Planner 가 유지) · v6 IA-MAP·조직도·권한 매트릭스
|
|
82
|
+
CLAUDE.md # → AGENTS.md 심볼릭 링크 (Claude Code 진입점)
|
|
83
|
+
CONVENTIONS.md # 프로젝트 최상위 규칙 (사용자 작성, 에이전트 읽기 전용)
|
|
84
|
+
gotchas/<role>.md # 부서별 부정형 규칙 (G-NNN entry append)
|
|
85
|
+
conventions/<role>.md # 부서별 긍정형 규칙 (C-NNN entry append)
|
|
86
|
+
scripts/ # 하네스 스크립트 (init.js 가 동기화)
|
|
87
|
+
.claude/skills/harness-<role>/ # Claude Code 가 로드하는 스킬 정의 (init.js 가 동기화)
|
|
189
88
|
```
|
|
190
89
|
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
**에이전트 기록 의무**: 모든 에이전트는 세션 중 주요 작업의 시작/완료를 audit에 기록해야 합니다.
|
|
90
|
+
### `.harness/` 런타임 (회사가 작동하면서 만드는 산출물)
|
|
194
91
|
|
|
195
|
-
```bash
|
|
196
|
-
# 에이전트 스킬에서 호출:
|
|
197
|
-
source scripts/lib/harness-audit.sh && init_audit .
|
|
198
|
-
audit_log "gen-backend" "develop" "start" "apps/service-user/" "User CRUD 구현"
|
|
199
|
-
audit_log "gen-backend" "develop" "complete" "apps/service-user/" "4 endpoints 완료"
|
|
200
92
|
```
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
#
|
|
220
|
-
#
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
##
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
|
322
|
-
| R2 | Acceptance Criteria 전수 통과 | 25% |
|
|
323
|
-
| R3 | 부정 테스트 (엔드포인트당 2개+) | 20% |
|
|
324
|
-
| R4 | E2E 시나리오 (Playwright) | 15% |
|
|
325
|
-
| R5 | 에러 핸들링 & 엣지케이스 | 15% |
|
|
326
|
-
|
|
327
|
-
### Evaluator-Visual 채점 항목 (V1-V5)
|
|
328
|
-
|
|
329
|
-
| # | Criterion | Weight |
|
|
330
|
-
|---|-----------|--------|
|
|
331
|
-
| V1 | 레이아웃 정확성 | 20% |
|
|
332
|
-
| V2 | 반응형 (375/768/1280px) | 20% |
|
|
333
|
-
| V3 | 접근성 WCAG 2.1 AA | 20% |
|
|
334
|
-
| V4 | 시각적 일관성 + AI슬롭 감지 | 20% |
|
|
335
|
-
| V5 | 인터랙션 상태 (로딩/에러/빈/호버/포커스) | 20% |
|
|
336
|
-
|
|
337
|
-
### 자동 FAIL 조건 (Verdict Rules)
|
|
338
|
-
|
|
339
|
-
어떤 상황에서도 아래 조건 충족 시 FAIL:
|
|
340
|
-
|
|
341
|
-
1. Weighted Score < 2.80
|
|
342
|
-
2. AC 100% 미통과 (부분 통과 불인정)
|
|
343
|
-
3. Regression 실패 1건 이상 (신규 점수 무관)
|
|
344
|
-
4. Evidence 누락 항목 존재 → 해당 Score = 0 재계산
|
|
345
|
-
5. Cross-Validation 불일치 1건 이상 → CONDITIONAL FAIL
|
|
346
|
-
6. (Visual) a11y Critical/Serious 위반 1건 이상 → V3 = 0
|
|
347
|
-
7. (Visual) AI Slop 2건 이상 → V4 최대 1점
|
|
348
|
-
|
|
349
|
-
### Executable Acceptance Criteria
|
|
350
|
-
|
|
351
|
-
Planner는 feature-list.json에 기능을 정의할 때 **실행 가능한 검증 조건(AC)**을 반드시 작성합니다:
|
|
352
|
-
|
|
353
|
-
```json
|
|
354
|
-
{
|
|
355
|
-
"id": "AC-001",
|
|
356
|
-
"description": "유효한 이메일로 가입 시 201 응답",
|
|
357
|
-
"type": "api",
|
|
358
|
-
"verify": {
|
|
359
|
-
"method": "POST",
|
|
360
|
-
"path": "/api/auth/register",
|
|
361
|
-
"body": { "email": "test@test.com", "password": "Test1234!" },
|
|
362
|
-
"expect": { "status": 201 }
|
|
363
|
-
}
|
|
364
|
-
}
|
|
365
|
-
```
|
|
366
|
-
|
|
367
|
-
AC 타입: `api` (HTTP 요청), `visual` (UI 요소 존재), `e2e` (사용자 플로우)
|
|
368
|
-
|
|
369
|
-
### Regression Checkpoint
|
|
370
|
-
|
|
371
|
-
Sprint N의 Evaluator는 이전 Sprint에서 PASS된 AC를 재검증합니다:
|
|
372
|
-
- archive에서 이전 feature-list.json의 passed AC를 로드
|
|
373
|
-
- handoff.json의 `regression` 필드로 전달
|
|
374
|
-
- **1건이라도 회귀 실패하면 전체 FAIL**
|
|
375
|
-
|
|
376
|
-
### Cross-Validation
|
|
377
|
-
|
|
378
|
-
Eval-Functional의 결과를 Eval-Visual이 교차 검증합니다:
|
|
379
|
-
- evaluation-functional.md 내 JSON 블록 → handoff.json의 `cross_validation_from_functional`
|
|
380
|
-
- API 성공인데 UI에 에러 표시 = 불일치 = FAIL 사유
|
|
381
|
-
|
|
382
|
-
### Adversarial Rules (적대적 행동 규칙)
|
|
383
|
-
|
|
384
|
-
Evaluator 에이전트에게 강제되는 행동 규칙:
|
|
385
|
-
- Generator의 '완료' 주장을 신뢰하지 않고 직접 검증
|
|
386
|
-
- 정상 1개당 비정상 2개 이상 테스트
|
|
387
|
-
- PASS 전 자문: "내가 이 코드로 PR을 올리겠는가?"
|
|
388
|
-
- '전반적으로 잘 되었습니다' 류의 모호한 긍정 평가 **금지**
|
|
389
|
-
- '시간 제약상 일부만 테스트' **금지** — 전수 불가 시 FAIL 처리
|
|
390
|
-
|
|
391
|
-
## Tech Stack
|
|
392
|
-
|
|
393
|
-
| 영역 | 기술 |
|
|
93
|
+
.harness/
|
|
94
|
+
├── HARNESS.md # 이 파일
|
|
95
|
+
├── config.json # 하네스 설정 (mode_selection, behavior, flow gates)
|
|
96
|
+
├── progress.json # 기계 판독 상태 (세션 오케스트레이션 SoT)
|
|
97
|
+
├── progress.log # 사람 판독 히스토리 (append-only)
|
|
98
|
+
├── handoff.json # 세션 전환 문서 (prompt, model, artifacts, regression)
|
|
99
|
+
├── memory.md # 시스템 entry (예: M-NEXUS-P3) + 사용자 메모
|
|
100
|
+
├── doctrine/nexus.md # NEXUS 도큐트린 본문
|
|
101
|
+
├── ref/<role>-<stack>.md # 스택별 best-practice (FE/BE/Designer/DevOps)
|
|
102
|
+
├── prompts/ # 에이전트 프롬프트
|
|
103
|
+
├── baselines/ # Eval baseline (의존 그래프, 시각 baseline 등)
|
|
104
|
+
├── ops/metrics.jsonl # 운영 메트릭 (DevOps append / Service-Ops read)
|
|
105
|
+
├── actions/ # 활성 스프린트 산출물 (각 부서 쓰기)
|
|
106
|
+
│ ├── pipeline.json # Dispatcher 결정 (FULLSTACK / FE-ONLY / BE-ONLY)
|
|
107
|
+
│ ├── plan.md # Planner — 제품 사양
|
|
108
|
+
│ ├── feature-list.json # Planner — Executable AC
|
|
109
|
+
│ ├── api-contract.json # Planner — API 계약 (BE/FE 공유)
|
|
110
|
+
│ ├── sprint-contract.md # Planner → BE/FE 가 섹션별로 채움
|
|
111
|
+
│ ├── evaluation-*.md # Evaluator-* 별 결과
|
|
112
|
+
│ ├── goals.md # CEO (Dispatcher) 전용
|
|
113
|
+
│ ├── meetings/ # Meeting-Manager — 회의록·prep (followup-review 포함)
|
|
114
|
+
│ ├── incidents/ # Service-Ops — 사고 타임라인·RCA
|
|
115
|
+
│ ├── escalations/ # Conductor — Owner 보고용
|
|
116
|
+
│ ├── onboarding/ # Planner(HR) — 부서 온보딩 패키지
|
|
117
|
+
│ ├── hypothesis/<id>/ # COO Hypothesis Cell (spike/, brief.md, report.md, verdict.json)
|
|
118
|
+
│ ├── hr-roster.md # Planner(HR) — 활성 부서 명단
|
|
119
|
+
│ ├── cto-review-*.md # CTO 전용
|
|
120
|
+
│ ├── cqo-audit-*.md # CQO 전용
|
|
121
|
+
│ └── ops-report-*.md # Service-Ops 전용
|
|
122
|
+
└── archive/ # 완료 스프린트 (불변, Evaluator 가 archive)
|
|
123
|
+
└── D-NNN/S-NNN/ # design-NNN / sprint-NNN
|
|
124
|
+
```
|
|
125
|
+
|
|
126
|
+
## 실행 흐름 (Conductor-driven)
|
|
127
|
+
|
|
128
|
+
```
|
|
129
|
+
Owner: "X 만들어줘" (자유 형식)
|
|
130
|
+
│
|
|
131
|
+
▼
|
|
132
|
+
Dispatcher (CEO)
|
|
133
|
+
├─ Goal 협의 (모호하면 1회 짧게 명료화)
|
|
134
|
+
└─ pipeline.json 결정 → Conductor 핸드오프
|
|
135
|
+
│
|
|
136
|
+
▼
|
|
137
|
+
Conductor (자율 실행 엔진)
|
|
138
|
+
│
|
|
139
|
+
▼
|
|
140
|
+
Planner ─ ┐
|
|
141
|
+
│ ├─ light → 기존 PRD 만 보강
|
|
142
|
+
│ └─ full → plan.md + feature-list + api-contract 확정
|
|
143
|
+
▼
|
|
144
|
+
CTO ── 실행 분할 ── ┐
|
|
145
|
+
▼ ▼
|
|
146
|
+
Gen-BE ⇄ Gen-FE (병렬 / Team 모드)
|
|
147
|
+
│
|
|
148
|
+
▼
|
|
149
|
+
CQO 적대적 검증 (early-exit chain)
|
|
150
|
+
├─ Eval-CodeQuality (정적 · 저비용)
|
|
151
|
+
├─ Eval-Functional (동작 · 중비용 · Playwright/curl)
|
|
152
|
+
├─ Eval-Visual (렌더 · 고비용 · screenshot)
|
|
153
|
+
├─ Eval-Architecture (IA-MAP·계층 위반·의존 그래프)
|
|
154
|
+
└─ Eval-Security (OWASP·SAST·시크릿·CVE)
|
|
155
|
+
│
|
|
156
|
+
▼
|
|
157
|
+
Service-Ops (상시) ── monitor · auto-retro · incident
|
|
158
|
+
│
|
|
159
|
+
▼
|
|
160
|
+
Archive (sprint advance)
|
|
161
|
+
```
|
|
162
|
+
|
|
163
|
+
앞단 FAIL 시 뒤 단계는 실행하지 않고 즉시 재작업으로 리라우팅.
|
|
164
|
+
3회 연속 FAIL · GOAL 위반 · 인시던트 → Conductor 가 Dispatcher 통해 Owner에게 escalation.
|
|
165
|
+
|
|
166
|
+
## 6종 회의 (Meeting-Manager)
|
|
167
|
+
|
|
168
|
+
| 회의 | 시점 | 결정자 |
|
|
169
|
+
|------|------|--------|
|
|
170
|
+
| **standup** | 적응형 cadence (light 30m / normal 1h / heavy 4h) | 부서 발신 |
|
|
171
|
+
| **sprint-review** | sprint advance 직전 | CTO |
|
|
172
|
+
| **spec-review** | Planner 산출물 변경 | CTO |
|
|
173
|
+
| **incident-war-room** | Service-Ops 인시던트 발신 | CEO + CTO |
|
|
174
|
+
| **all-hands** | 분기/대형 결정 | CEO |
|
|
175
|
+
| **followup-review** | parallel-tracks fork 종료 후 | CTO (goal-* fork 면 CEO) |
|
|
176
|
+
|
|
177
|
+
### Parallel Tracks (Fork-Join, v6.2)
|
|
178
|
+
|
|
179
|
+
회의 결정의 `tracks[]` 길이 ≥ 2 면 fork. Conductor 가 트랙 dispatch 와 rendezvous join 을 자동 처리.
|
|
180
|
+
|
|
181
|
+
- 대표 패턴: `track-1: cto/bugfix` + `track-2: planner/hypothesis-validation` → followup-review 에서 통합 결정.
|
|
182
|
+
- followup-review 에서 결정자가 `apply-now / backlog / more-validation` 중 하나로 마무리.
|
|
183
|
+
- followup-review 자체에서 또 fork 금지 (무한 fork 방지).
|
|
184
|
+
- 한 sprint 내 parallel fork ≥ 3 회면 다음 fork 는 single 강제.
|
|
185
|
+
|
|
186
|
+
## Solo / Team / Hypothesis 모드
|
|
187
|
+
|
|
188
|
+
| 모드 | 트리거 | 실행 |
|
|
189
|
+
|------|--------|------|
|
|
190
|
+
| **Solo** | 기본 | 한 번에 한 에이전트 spawn (1개 슬롯 유지) |
|
|
191
|
+
| **Team** | `progress.json.mode = "team"` (Owner 또는 Conductor 결정) | 매 tick `min(ready, 3)` 동시 spawn, parallel evaluator |
|
|
192
|
+
| **Hypothesis** | Planner `requested_mode = "hypothesis"` | `documentationer → coo-developer → documentationer → planner` 가설 검증 루프 |
|
|
193
|
+
|
|
194
|
+
## 품질 게이트
|
|
195
|
+
|
|
196
|
+
| 게이트 | 시점 | 동작 |
|
|
197
|
+
|--------|------|------|
|
|
198
|
+
| **Pre-Eval Gate** | Generator → Evaluator 전환 | tsc / eslint / jest|vitest 자동 실행. 실패 시 Generator 리라우팅 |
|
|
199
|
+
| **파일 소유권 검증** | 에이전트 전환 시 | git diff 로 권한 밖 파일 수정 감지 |
|
|
200
|
+
| **아티팩트 선행조건** | 에이전트 시작 전 | progress.json.artifacts 상태 확인 |
|
|
201
|
+
| **Evaluation PASS 기준** | Evaluator 결과 | 2.80 / 3.00 이상. Evidence 없는 score = 0. AC 부분 통과 = FAIL. Regression 1건 = FAIL |
|
|
202
|
+
| **Known-Bug Hard Gate** | sprint advance | 알려진 런타임 버그 보유 시 PASS / sprint advance 금지 |
|
|
203
|
+
|
|
204
|
+
## Conventions / Gotchas (Hierarchical)
|
|
205
|
+
|
|
206
|
+
- **gotchas/**: 부서별 부정형 규칙. Dispatcher 가 Owner 의 실수 지적을 받아 `### [G-NNN]` 으로 append.
|
|
207
|
+
- **conventions/**: 부서별 긍정형 규칙. 같은 메커니즘으로 `### [C-NNN]` append.
|
|
208
|
+
- **메모리 오염 방어**: 신규 entry 는 `unverified` 로 시작 → Planner 리뷰 시 `verified` 승격. TTL 만료 항목은 sprint 전환 시 갱신/삭제.
|
|
209
|
+
- **검증 불가능 항목 즉시 삭제**.
|
|
210
|
+
|
|
211
|
+
## 자주 쓰는 명령
|
|
212
|
+
|
|
213
|
+
| 명령 | 설명 |
|
|
394
214
|
|------|------|
|
|
395
|
-
|
|
|
396
|
-
|
|
|
397
|
-
|
|
|
398
|
-
|
|
|
399
|
-
|
|
|
400
|
-
|
|
|
401
|
-
|
|
402
|
-
|
|
403
|
-
|
|
404
|
-
|
|
405
|
-
|
|
406
|
-
|
|
407
|
-
## MCP 도구
|
|
408
|
-
|
|
409
|
-
Playwright MCP (`@playwright/mcp`) — headless + vision 모드:
|
|
410
|
-
- `browser_navigate`, `browser_click`, `browser_fill`
|
|
411
|
-
- `browser_take_screenshot`, `browser_snapshot`
|
|
412
|
-
- `browser_console_messages`, `browser_network_requests`
|
|
413
|
-
- `browser_resize`, `browser_press_key`, `browser_wait`
|
|
215
|
+
| `npx walwal-harness` | 첫 설치 / 안전 init (G-NNN, C-NNN 보존) |
|
|
216
|
+
| `npx walwal-harness --force` | 시스템 파일 강제 갱신 (G/C entry 는 여전히 보존) |
|
|
217
|
+
| `npx walwal-harness migrate` | 구버전 progress.json / config.json schema 정상화 |
|
|
218
|
+
| `npx walwal-harness team` | tmux/iTerm Team 스튜디오 기동 |
|
|
219
|
+
| `bash scripts/harness-dashboard-up.sh` | Brick Office 라이브 대시보드 (http://localhost:3001) |
|
|
220
|
+
| `bash scripts/harness-session-start.sh` | SessionStart 훅 (자동 호출) |
|
|
221
|
+
|
|
222
|
+
## 다음 단계
|
|
223
|
+
|
|
224
|
+
1. `AGENTS.md` 의 `[?]` 태그를 Planner 가 분류하도록 요청.
|
|
225
|
+
2. `gotchas/<role>.md`, `conventions/<role>.md` 의 Preserved Rules 섹션 정리.
|
|
226
|
+
3. Owner 는 "하네스 엔지니어링 시작" 또는 자유 형식 지시로 Dispatcher 를 깨운다 — 이후는 Conductor 가 이어받는다.
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
{
|
|
2
2
|
"harness": {
|
|
3
|
-
"name": "
|
|
4
|
-
"version": "
|
|
5
|
-
"description": "
|
|
3
|
+
"name": "walwal-harness — NEXUS company harness",
|
|
4
|
+
"version": "6.1.4",
|
|
5
|
+
"description": "NEXUS-adapted company metaphor for AI-agent engineering. Owner ↔ Dispatcher(CEO) ↔ Conductor + Meeting-Manager ↔ Planner(COO/HR) + CTO + CQO + Service-Ops. Generators (BE/FE/Designer/DevOps) + Evaluators (Functional/Visual/Code-Quality/Architecture/Security) + COO Hypothesis Cell. Solo/Team modes, parallel-tracks fork-join meetings, hierarchical Conventions/Gotchas. React/Next.js/Flutter FE, NestJS/Laravel BE.",
|
|
6
6
|
"source": "https://www.anthropic.com/engineering/harness-design-long-running-apps"
|
|
7
7
|
},
|
|
8
8
|
"agents": {
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
---
|
|
2
|
+
docmeta:
|
|
3
|
+
id: conventions-readme
|
|
4
|
+
title: Conventions — House Style Registry
|
|
5
|
+
type: input
|
|
6
|
+
createdAt: 2026-04-22T00:00:00Z
|
|
7
|
+
updatedAt: 2026-04-22T00:00:00Z
|
|
8
|
+
source:
|
|
9
|
+
producer: user
|
|
10
|
+
skillId: harness-dispatcher
|
|
11
|
+
tags:
|
|
12
|
+
- conventions
|
|
13
|
+
- house-style
|
|
14
|
+
- registry
|
|
15
|
+
---
|
|
16
|
+
|
|
17
|
+
# Conventions — House Style Registry
|
|
18
|
+
|
|
19
|
+
> 이 디렉토리는 프로젝트의 **긍정 규범(house style)** 을 누적 기록합니다.
|
|
20
|
+
> Gotcha(실수 기록) 가 사고 이후의 방어선이라면, Convention 은 합의된 원칙입니다.
|
|
21
|
+
> Dispatcher 가 사용자의 긍정 가이드("~해야 해", "~이렇게 해줘") 를 감지하면
|
|
22
|
+
> 해당 에이전트/스코프의 convention 파일에 `### [C-NNN]` 으로 append 합니다.
|
|
23
|
+
|
|
24
|
+
## 파일 구조
|
|
25
|
+
|
|
26
|
+
```
|
|
27
|
+
.harness/conventions/
|
|
28
|
+
├── README.md # 이 파일
|
|
29
|
+
├── shared.md # 모든 에이전트 공통 규범
|
|
30
|
+
│
|
|
31
|
+
├── conductor.md
|
|
32
|
+
├── dispatcher.md
|
|
33
|
+
├── meeting-manager.md
|
|
34
|
+
├── planner.md
|
|
35
|
+
├── cto.md
|
|
36
|
+
├── cqo.md
|
|
37
|
+
├── service-ops.md
|
|
38
|
+
│
|
|
39
|
+
├── coo-developer.md
|
|
40
|
+
├── documentationer.md
|
|
41
|
+
│
|
|
42
|
+
├── generator-backend.md
|
|
43
|
+
├── generator-frontend.md
|
|
44
|
+
├── generator-designer.md
|
|
45
|
+
├── generator-devops.md
|
|
46
|
+
│
|
|
47
|
+
├── evaluator-code-quality.md
|
|
48
|
+
├── evaluator-functional.md
|
|
49
|
+
├── evaluator-visual.md
|
|
50
|
+
├── evaluator-architecture.md
|
|
51
|
+
└── evaluator-security.md
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
루트의 `CONVENTIONS.md` 는 사용자가 자유롭게 기술하는 **최상위 원칙** 용도로
|
|
55
|
+
그대로 유지됩니다. 여기 `.harness/conventions/` 는 대화 중 Dispatcher 가
|
|
56
|
+
자동 누적하는 계층화된 하위 규범 저장소입니다.
|
|
57
|
+
|
|
58
|
+
## 읽기 순서 (모든 에이전트)
|
|
59
|
+
|
|
60
|
+
세션 시작 시 각 에이전트는 아래 순서로 적용합니다:
|
|
61
|
+
|
|
62
|
+
1. `CONVENTIONS.md` (루트, 최상위 원칙)
|
|
63
|
+
2. `.harness/conventions/shared.md` (공통)
|
|
64
|
+
3. `.harness/conventions/<self>.md` (자기 스코프)
|
|
65
|
+
4. `.harness/gotchas/<self>.md` (과거 실수 방어)
|
|
66
|
+
5. **(v6.2) parallel-tracks 형제 트랙 owner 의 gotcha** — `progress.json.conductor.tracks[]` 에서 자기 트랙이 아닌 형제 트랙의 owner 를 식별, 해당 owner 의 `gotchas/<owner>.md` 도 한 번 훑기. fork 회의에서 같은 결정으로 함께 출발한 부서의 가드를 무시하지 않기 위함.
|
|
67
|
+
6. `.harness/memory.md` (구조적 교훈)
|
|
68
|
+
|
|
69
|
+
**충돌 시 우선순위**: `<self>` > `shared` > 루트 `CONVENTIONS.md`.
|
|
70
|
+
형제 트랙 gotcha 는 **참고**용 — 자기 결정과 충돌 시 자기 스코프가 우선.
|
|
71
|
+
|
|
72
|
+
## 항목 형식
|
|
73
|
+
|
|
74
|
+
```markdown
|
|
75
|
+
### [C-NNN] 간결한 제목
|
|
76
|
+
- **Date**: YYYY-MM-DD
|
|
77
|
+
- **Scope**: <agent> | shared
|
|
78
|
+
- **Rule**: 규범 내용 (긍정형)
|
|
79
|
+
- **Rationale**: 왜 이렇게 하는가
|
|
80
|
+
- **Applies to**: 적용 대상 (에이전트·파일 경로 등)
|
|
81
|
+
- **Added from**: 출처 (사용자 프롬프트 / 마이그레이션 / 수동)
|
|
82
|
+
```
|
|
83
|
+
|
|
84
|
+
## 데이터 보존
|
|
85
|
+
|
|
86
|
+
- `npm install` postinstall 은 `### [C-NNN]` 엔트리가 있는 파일을 **절대 덮어쓰지 않습니다** (v5.6.0+).
|
|
87
|
+
- 스캐폴드 템플릿인 경우에만 갱신됩니다.
|
|
88
|
+
- 원본 백업: `.harness/archive/pre-harness-*.md.bak` (최초 설치 시 마이그레이션)
|
|
89
|
+
|
|
90
|
+
## 수동 편집
|
|
91
|
+
|
|
92
|
+
사용자가 직접 편집해도 됩니다. `### [C-NNN]` 형식만 지키면 Dispatcher 가 다음 자동 append 시 번호를 이어서 부여합니다.
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
---
|
|
2
|
+
docmeta:
|
|
3
|
+
id: conventions-conductor
|
|
4
|
+
title: Conventions — uconductor
|
|
5
|
+
type: input
|
|
6
|
+
createdAt: 2026-05-08T00:00:00Z
|
|
7
|
+
updatedAt: 2026-05-08T00:00:00Z
|
|
8
|
+
source:
|
|
9
|
+
producer: user
|
|
10
|
+
skillId: harness-dispatcher
|
|
11
|
+
tags:
|
|
12
|
+
- conventions
|
|
13
|
+
- conductor
|
|
14
|
+
---
|
|
15
|
+
|
|
16
|
+
# Conventions — uconductor
|
|
17
|
+
|
|
18
|
+
> **세션 시작 시 이 파일이 비어있더라도 루트 `CONVENTIONS.md` 는 반드시 먼저 읽으시오.**
|
|
19
|
+
> 여기는 uconductor 스코프의 긍정 규범만 누적되며, 프로젝트 전체 원칙은 루트에 있습니다.
|
|
20
|
+
>
|
|
21
|
+
> Dispatcher 가 긍정 가이드("~해야 해", "~이렇게 해줘") 를 감지해 여기에 `### [C-NNN]` 엔트리를 추가합니다.
|
|
22
|
+
> 사용자가 직접 편집해도 무방합니다. 항목 형식은 `conventions/README.md` 참고.
|
|
23
|
+
|
|
24
|
+
<!-- 항목이 추가되면 아래에 기록됩니다 -->
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
---
|
|
2
|
+
docmeta:
|
|
3
|
+
id: conventions-coo-developer
|
|
4
|
+
title: Conventions — ucoo-udeveloper
|
|
5
|
+
type: input
|
|
6
|
+
createdAt: 2026-05-08T00:00:00Z
|
|
7
|
+
updatedAt: 2026-05-08T00:00:00Z
|
|
8
|
+
source:
|
|
9
|
+
producer: user
|
|
10
|
+
skillId: harness-dispatcher
|
|
11
|
+
tags:
|
|
12
|
+
- conventions
|
|
13
|
+
- coo-developer
|
|
14
|
+
---
|
|
15
|
+
|
|
16
|
+
# Conventions — ucoo-udeveloper
|
|
17
|
+
|
|
18
|
+
> **세션 시작 시 이 파일이 비어있더라도 루트 `CONVENTIONS.md` 는 반드시 먼저 읽으시오.**
|
|
19
|
+
> 여기는 ucoo-udeveloper 스코프의 긍정 규범만 누적되며, 프로젝트 전체 원칙은 루트에 있습니다.
|
|
20
|
+
>
|
|
21
|
+
> Dispatcher 가 긍정 가이드("~해야 해", "~이렇게 해줘") 를 감지해 여기에 `### [C-NNN]` 엔트리를 추가합니다.
|
|
22
|
+
> 사용자가 직접 편집해도 무방합니다. 항목 형식은 `conventions/README.md` 참고.
|
|
23
|
+
|
|
24
|
+
<!-- 항목이 추가되면 아래에 기록됩니다 -->
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
---
|
|
2
|
+
docmeta:
|
|
3
|
+
id: conventions-cqo
|
|
4
|
+
title: Conventions — ucqo
|
|
5
|
+
type: input
|
|
6
|
+
createdAt: 2026-05-08T00:00:00Z
|
|
7
|
+
updatedAt: 2026-05-08T00:00:00Z
|
|
8
|
+
source:
|
|
9
|
+
producer: user
|
|
10
|
+
skillId: harness-dispatcher
|
|
11
|
+
tags:
|
|
12
|
+
- conventions
|
|
13
|
+
- cqo
|
|
14
|
+
---
|
|
15
|
+
|
|
16
|
+
# Conventions — ucqo
|
|
17
|
+
|
|
18
|
+
> **세션 시작 시 이 파일이 비어있더라도 루트 `CONVENTIONS.md` 는 반드시 먼저 읽으시오.**
|
|
19
|
+
> 여기는 ucqo 스코프의 긍정 규범만 누적되며, 프로젝트 전체 원칙은 루트에 있습니다.
|
|
20
|
+
>
|
|
21
|
+
> Dispatcher 가 긍정 가이드("~해야 해", "~이렇게 해줘") 를 감지해 여기에 `### [C-NNN]` 엔트리를 추가합니다.
|
|
22
|
+
> 사용자가 직접 편집해도 무방합니다. 항목 형식은 `conventions/README.md` 참고.
|
|
23
|
+
|
|
24
|
+
<!-- 항목이 추가되면 아래에 기록됩니다 -->
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
---
|
|
2
|
+
docmeta:
|
|
3
|
+
id: conventions-cto
|
|
4
|
+
title: Conventions — ucto
|
|
5
|
+
type: input
|
|
6
|
+
createdAt: 2026-05-08T00:00:00Z
|
|
7
|
+
updatedAt: 2026-05-08T00:00:00Z
|
|
8
|
+
source:
|
|
9
|
+
producer: user
|
|
10
|
+
skillId: harness-dispatcher
|
|
11
|
+
tags:
|
|
12
|
+
- conventions
|
|
13
|
+
- cto
|
|
14
|
+
---
|
|
15
|
+
|
|
16
|
+
# Conventions — ucto
|
|
17
|
+
|
|
18
|
+
> **세션 시작 시 이 파일이 비어있더라도 루트 `CONVENTIONS.md` 는 반드시 먼저 읽으시오.**
|
|
19
|
+
> 여기는 ucto 스코프의 긍정 규범만 누적되며, 프로젝트 전체 원칙은 루트에 있습니다.
|
|
20
|
+
>
|
|
21
|
+
> Dispatcher 가 긍정 가이드("~해야 해", "~이렇게 해줘") 를 감지해 여기에 `### [C-NNN]` 엔트리를 추가합니다.
|
|
22
|
+
> 사용자가 직접 편집해도 무방합니다. 항목 형식은 `conventions/README.md` 참고.
|
|
23
|
+
|
|
24
|
+
<!-- 항목이 추가되면 아래에 기록됩니다 -->
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
---
|
|
2
|
+
docmeta:
|
|
3
|
+
id: conventions-dispatcher
|
|
4
|
+
title: Conventions — udispatcher
|
|
5
|
+
type: input
|
|
6
|
+
createdAt: 2026-05-08T00:00:00Z
|
|
7
|
+
updatedAt: 2026-05-08T00:00:00Z
|
|
8
|
+
source:
|
|
9
|
+
producer: user
|
|
10
|
+
skillId: harness-dispatcher
|
|
11
|
+
tags:
|
|
12
|
+
- conventions
|
|
13
|
+
- dispatcher
|
|
14
|
+
---
|
|
15
|
+
|
|
16
|
+
# Conventions — udispatcher
|
|
17
|
+
|
|
18
|
+
> **세션 시작 시 이 파일이 비어있더라도 루트 `CONVENTIONS.md` 는 반드시 먼저 읽으시오.**
|
|
19
|
+
> 여기는 udispatcher 스코프의 긍정 규범만 누적되며, 프로젝트 전체 원칙은 루트에 있습니다.
|
|
20
|
+
>
|
|
21
|
+
> Dispatcher 가 긍정 가이드("~해야 해", "~이렇게 해줘") 를 감지해 여기에 `### [C-NNN]` 엔트리를 추가합니다.
|
|
22
|
+
> 사용자가 직접 편집해도 무방합니다. 항목 형식은 `conventions/README.md` 참고.
|
|
23
|
+
|
|
24
|
+
<!-- 항목이 추가되면 아래에 기록됩니다 -->
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
---
|
|
2
|
+
docmeta:
|
|
3
|
+
id: conventions-documentationer
|
|
4
|
+
title: Conventions — udocumentationer
|
|
5
|
+
type: input
|
|
6
|
+
createdAt: 2026-05-08T00:00:00Z
|
|
7
|
+
updatedAt: 2026-05-08T00:00:00Z
|
|
8
|
+
source:
|
|
9
|
+
producer: user
|
|
10
|
+
skillId: harness-dispatcher
|
|
11
|
+
tags:
|
|
12
|
+
- conventions
|
|
13
|
+
- documentationer
|
|
14
|
+
---
|
|
15
|
+
|
|
16
|
+
# Conventions — udocumentationer
|
|
17
|
+
|
|
18
|
+
> **세션 시작 시 이 파일이 비어있더라도 루트 `CONVENTIONS.md` 는 반드시 먼저 읽으시오.**
|
|
19
|
+
> 여기는 udocumentationer 스코프의 긍정 규범만 누적되며, 프로젝트 전체 원칙은 루트에 있습니다.
|
|
20
|
+
>
|
|
21
|
+
> Dispatcher 가 긍정 가이드("~해야 해", "~이렇게 해줘") 를 감지해 여기에 `### [C-NNN]` 엔트리를 추가합니다.
|
|
22
|
+
> 사용자가 직접 편집해도 무방합니다. 항목 형식은 `conventions/README.md` 참고.
|
|
23
|
+
|
|
24
|
+
<!-- 항목이 추가되면 아래에 기록됩니다 -->
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
---
|
|
2
|
+
docmeta:
|
|
3
|
+
id: conventions-evaluator-architecture
|
|
4
|
+
title: Conventions — uevaluator-uarchitecture
|
|
5
|
+
type: input
|
|
6
|
+
createdAt: 2026-05-08T00:00:00Z
|
|
7
|
+
updatedAt: 2026-05-08T00:00:00Z
|
|
8
|
+
source:
|
|
9
|
+
producer: user
|
|
10
|
+
skillId: harness-dispatcher
|
|
11
|
+
tags:
|
|
12
|
+
- conventions
|
|
13
|
+
- evaluator-architecture
|
|
14
|
+
---
|
|
15
|
+
|
|
16
|
+
# Conventions — uevaluator-uarchitecture
|
|
17
|
+
|
|
18
|
+
> **세션 시작 시 이 파일이 비어있더라도 루트 `CONVENTIONS.md` 는 반드시 먼저 읽으시오.**
|
|
19
|
+
> 여기는 uevaluator-uarchitecture 스코프의 긍정 규범만 누적되며, 프로젝트 전체 원칙은 루트에 있습니다.
|
|
20
|
+
>
|
|
21
|
+
> Dispatcher 가 긍정 가이드("~해야 해", "~이렇게 해줘") 를 감지해 여기에 `### [C-NNN]` 엔트리를 추가합니다.
|
|
22
|
+
> 사용자가 직접 편집해도 무방합니다. 항목 형식은 `conventions/README.md` 참고.
|
|
23
|
+
|
|
24
|
+
<!-- 항목이 추가되면 아래에 기록됩니다 -->
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
---
|
|
2
|
+
docmeta:
|
|
3
|
+
id: conventions-evaluator-code-quality
|
|
4
|
+
title: Conventions — evaluator-code-quality
|
|
5
|
+
type: input
|
|
6
|
+
createdAt: 2026-04-22T00:00:00Z
|
|
7
|
+
updatedAt: 2026-04-22T00:00:00Z
|
|
8
|
+
source:
|
|
9
|
+
producer: user
|
|
10
|
+
skillId: harness-dispatcher
|
|
11
|
+
tags:
|
|
12
|
+
- conventions
|
|
13
|
+
- evaluator-code-quality
|
|
14
|
+
---
|
|
15
|
+
|
|
16
|
+
# Conventions — evaluator-code-quality
|
|
17
|
+
|
|
18
|
+
> **세션 시작 시 이 파일이 비어있더라도 루트 `CONVENTIONS.md` 는 반드시 먼저 읽으시오.**
|
|
19
|
+
> 여기(`.harness/conventions/evaluator-code-quality.md`)는 역할 국한 규범만 누적되며, 프로젝트 전체 원칙은 루트에 있습니다.
|
|
20
|
+
>
|
|
21
|
+
> Dispatcher 가 긍정 가이드를 감지해 여기에 `### [C-NNN]` 엔트리를 추가합니다.
|
|
22
|
+
> 사용자가 직접 편집해도 무방합니다. 항목 형식은 `.harness/conventions/README.md` 참고.
|
|
23
|
+
|
|
24
|
+
<!-- 항목이 추가되면 아래에 기록됩니다 -->
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
---
|
|
2
|
+
docmeta:
|
|
3
|
+
id: conventions-evaluator-functional
|
|
4
|
+
title: Conventions — evaluator-functional
|
|
5
|
+
type: input
|
|
6
|
+
createdAt: 2026-04-22T00:00:00Z
|
|
7
|
+
updatedAt: 2026-04-22T00:00:00Z
|
|
8
|
+
source:
|
|
9
|
+
producer: user
|
|
10
|
+
skillId: harness-dispatcher
|
|
11
|
+
tags:
|
|
12
|
+
- conventions
|
|
13
|
+
- evaluator-functional
|
|
14
|
+
---
|
|
15
|
+
|
|
16
|
+
# Conventions — evaluator-functional
|
|
17
|
+
|
|
18
|
+
> **세션 시작 시 이 파일이 비어있더라도 루트 `CONVENTIONS.md` 는 반드시 먼저 읽으시오.**
|
|
19
|
+
> 여기(`.harness/conventions/evaluator-functional.md`)는 역할 국한 규범만 누적되며, 프로젝트 전체 원칙은 루트에 있습니다.
|
|
20
|
+
>
|
|
21
|
+
> Dispatcher 가 긍정 가이드를 감지해 여기에 `### [C-NNN]` 엔트리를 추가합니다.
|
|
22
|
+
> 사용자가 직접 편집해도 무방합니다. 항목 형식은 `.harness/conventions/README.md` 참고.
|
|
23
|
+
|
|
24
|
+
<!-- 항목이 추가되면 아래에 기록됩니다 -->
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
---
|
|
2
|
+
docmeta:
|
|
3
|
+
id: conventions-evaluator-security
|
|
4
|
+
title: Conventions — uevaluator-usecurity
|
|
5
|
+
type: input
|
|
6
|
+
createdAt: 2026-05-08T00:00:00Z
|
|
7
|
+
updatedAt: 2026-05-08T00:00:00Z
|
|
8
|
+
source:
|
|
9
|
+
producer: user
|
|
10
|
+
skillId: harness-dispatcher
|
|
11
|
+
tags:
|
|
12
|
+
- conventions
|
|
13
|
+
- evaluator-security
|
|
14
|
+
---
|
|
15
|
+
|
|
16
|
+
# Conventions — uevaluator-usecurity
|
|
17
|
+
|
|
18
|
+
> **세션 시작 시 이 파일이 비어있더라도 루트 `CONVENTIONS.md` 는 반드시 먼저 읽으시오.**
|
|
19
|
+
> 여기는 uevaluator-usecurity 스코프의 긍정 규범만 누적되며, 프로젝트 전체 원칙은 루트에 있습니다.
|
|
20
|
+
>
|
|
21
|
+
> Dispatcher 가 긍정 가이드("~해야 해", "~이렇게 해줘") 를 감지해 여기에 `### [C-NNN]` 엔트리를 추가합니다.
|
|
22
|
+
> 사용자가 직접 편집해도 무방합니다. 항목 형식은 `conventions/README.md` 참고.
|
|
23
|
+
|
|
24
|
+
<!-- 항목이 추가되면 아래에 기록됩니다 -->
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
---
|
|
2
|
+
docmeta:
|
|
3
|
+
id: conventions-evaluator-visual
|
|
4
|
+
title: Conventions — evaluator-visual
|
|
5
|
+
type: input
|
|
6
|
+
createdAt: 2026-04-22T00:00:00Z
|
|
7
|
+
updatedAt: 2026-04-22T00:00:00Z
|
|
8
|
+
source:
|
|
9
|
+
producer: user
|
|
10
|
+
skillId: harness-dispatcher
|
|
11
|
+
tags:
|
|
12
|
+
- conventions
|
|
13
|
+
- evaluator-visual
|
|
14
|
+
---
|
|
15
|
+
|
|
16
|
+
# Conventions — evaluator-visual
|
|
17
|
+
|
|
18
|
+
> **세션 시작 시 이 파일이 비어있더라도 루트 `CONVENTIONS.md` 는 반드시 먼저 읽으시오.**
|
|
19
|
+
> 여기(`.harness/conventions/evaluator-visual.md`)는 역할 국한 규범만 누적되며, 프로젝트 전체 원칙은 루트에 있습니다.
|
|
20
|
+
>
|
|
21
|
+
> Dispatcher 가 긍정 가이드를 감지해 여기에 `### [C-NNN]` 엔트리를 추가합니다.
|
|
22
|
+
> 사용자가 직접 편집해도 무방합니다. 항목 형식은 `.harness/conventions/README.md` 참고.
|
|
23
|
+
|
|
24
|
+
<!-- 항목이 추가되면 아래에 기록됩니다 -->
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
---
|
|
2
|
+
docmeta:
|
|
3
|
+
id: conventions-generator-backend
|
|
4
|
+
title: Conventions — generator-backend
|
|
5
|
+
type: input
|
|
6
|
+
createdAt: 2026-04-22T00:00:00Z
|
|
7
|
+
updatedAt: 2026-04-22T00:00:00Z
|
|
8
|
+
source:
|
|
9
|
+
producer: user
|
|
10
|
+
skillId: harness-dispatcher
|
|
11
|
+
tags:
|
|
12
|
+
- conventions
|
|
13
|
+
- generator-backend
|
|
14
|
+
---
|
|
15
|
+
|
|
16
|
+
# Conventions — generator-backend
|
|
17
|
+
|
|
18
|
+
> **세션 시작 시 이 파일이 비어있더라도 루트 `CONVENTIONS.md` 는 반드시 먼저 읽으시오.**
|
|
19
|
+
> 여기(`.harness/conventions/generator-backend.md`)는 역할 국한 규범만 누적되며, 프로젝트 전체 원칙은 루트에 있습니다.
|
|
20
|
+
>
|
|
21
|
+
> Dispatcher 가 긍정 가이드를 감지해 여기에 `### [C-NNN]` 엔트리를 추가합니다.
|
|
22
|
+
> 사용자가 직접 편집해도 무방합니다. 항목 형식은 `.harness/conventions/README.md` 참고.
|
|
23
|
+
|
|
24
|
+
<!-- 항목이 추가되면 아래에 기록됩니다 -->
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
---
|
|
2
|
+
docmeta:
|
|
3
|
+
id: conventions-generator-designer
|
|
4
|
+
title: Conventions — ugenerator-udesigner
|
|
5
|
+
type: input
|
|
6
|
+
createdAt: 2026-05-08T00:00:00Z
|
|
7
|
+
updatedAt: 2026-05-08T00:00:00Z
|
|
8
|
+
source:
|
|
9
|
+
producer: user
|
|
10
|
+
skillId: harness-dispatcher
|
|
11
|
+
tags:
|
|
12
|
+
- conventions
|
|
13
|
+
- generator-designer
|
|
14
|
+
---
|
|
15
|
+
|
|
16
|
+
# Conventions — ugenerator-udesigner
|
|
17
|
+
|
|
18
|
+
> **세션 시작 시 이 파일이 비어있더라도 루트 `CONVENTIONS.md` 는 반드시 먼저 읽으시오.**
|
|
19
|
+
> 여기는 ugenerator-udesigner 스코프의 긍정 규범만 누적되며, 프로젝트 전체 원칙은 루트에 있습니다.
|
|
20
|
+
>
|
|
21
|
+
> Dispatcher 가 긍정 가이드("~해야 해", "~이렇게 해줘") 를 감지해 여기에 `### [C-NNN]` 엔트리를 추가합니다.
|
|
22
|
+
> 사용자가 직접 편집해도 무방합니다. 항목 형식은 `conventions/README.md` 참고.
|
|
23
|
+
|
|
24
|
+
<!-- 항목이 추가되면 아래에 기록됩니다 -->
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
---
|
|
2
|
+
docmeta:
|
|
3
|
+
id: conventions-generator-devops
|
|
4
|
+
title: Conventions — ugenerator-udevops
|
|
5
|
+
type: input
|
|
6
|
+
createdAt: 2026-05-08T00:00:00Z
|
|
7
|
+
updatedAt: 2026-05-08T00:00:00Z
|
|
8
|
+
source:
|
|
9
|
+
producer: user
|
|
10
|
+
skillId: harness-dispatcher
|
|
11
|
+
tags:
|
|
12
|
+
- conventions
|
|
13
|
+
- generator-devops
|
|
14
|
+
---
|
|
15
|
+
|
|
16
|
+
# Conventions — ugenerator-udevops
|
|
17
|
+
|
|
18
|
+
> **세션 시작 시 이 파일이 비어있더라도 루트 `CONVENTIONS.md` 는 반드시 먼저 읽으시오.**
|
|
19
|
+
> 여기는 ugenerator-udevops 스코프의 긍정 규범만 누적되며, 프로젝트 전체 원칙은 루트에 있습니다.
|
|
20
|
+
>
|
|
21
|
+
> Dispatcher 가 긍정 가이드("~해야 해", "~이렇게 해줘") 를 감지해 여기에 `### [C-NNN]` 엔트리를 추가합니다.
|
|
22
|
+
> 사용자가 직접 편집해도 무방합니다. 항목 형식은 `conventions/README.md` 참고.
|
|
23
|
+
|
|
24
|
+
<!-- 항목이 추가되면 아래에 기록됩니다 -->
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
---
|
|
2
|
+
docmeta:
|
|
3
|
+
id: conventions-generator-frontend
|
|
4
|
+
title: Conventions — generator-frontend
|
|
5
|
+
type: input
|
|
6
|
+
createdAt: 2026-04-22T00:00:00Z
|
|
7
|
+
updatedAt: 2026-04-22T00:00:00Z
|
|
8
|
+
source:
|
|
9
|
+
producer: user
|
|
10
|
+
skillId: harness-dispatcher
|
|
11
|
+
tags:
|
|
12
|
+
- conventions
|
|
13
|
+
- generator-frontend
|
|
14
|
+
---
|
|
15
|
+
|
|
16
|
+
# Conventions — generator-frontend
|
|
17
|
+
|
|
18
|
+
> **세션 시작 시 이 파일이 비어있더라도 루트 `CONVENTIONS.md` 는 반드시 먼저 읽으시오.**
|
|
19
|
+
> 여기(`.harness/conventions/generator-frontend.md`)는 역할 국한 규범만 누적되며, 프로젝트 전체 원칙은 루트에 있습니다.
|
|
20
|
+
>
|
|
21
|
+
> Dispatcher 가 긍정 가이드를 감지해 여기에 `### [C-NNN]` 엔트리를 추가합니다.
|
|
22
|
+
> 사용자가 직접 편집해도 무방합니다. 항목 형식은 `.harness/conventions/README.md` 참고.
|
|
23
|
+
|
|
24
|
+
<!-- 항목이 추가되면 아래에 기록됩니다 -->
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
---
|
|
2
|
+
docmeta:
|
|
3
|
+
id: conventions-meeting-manager
|
|
4
|
+
title: Conventions — umeeting-umanager
|
|
5
|
+
type: input
|
|
6
|
+
createdAt: 2026-05-08T00:00:00Z
|
|
7
|
+
updatedAt: 2026-05-08T00:00:00Z
|
|
8
|
+
source:
|
|
9
|
+
producer: user
|
|
10
|
+
skillId: harness-dispatcher
|
|
11
|
+
tags:
|
|
12
|
+
- conventions
|
|
13
|
+
- meeting-manager
|
|
14
|
+
---
|
|
15
|
+
|
|
16
|
+
# Conventions — umeeting-umanager
|
|
17
|
+
|
|
18
|
+
> **세션 시작 시 이 파일이 비어있더라도 루트 `CONVENTIONS.md` 는 반드시 먼저 읽으시오.**
|
|
19
|
+
> 여기는 umeeting-umanager 스코프의 긍정 규범만 누적되며, 프로젝트 전체 원칙은 루트에 있습니다.
|
|
20
|
+
>
|
|
21
|
+
> Dispatcher 가 긍정 가이드("~해야 해", "~이렇게 해줘") 를 감지해 여기에 `### [C-NNN]` 엔트리를 추가합니다.
|
|
22
|
+
> 사용자가 직접 편집해도 무방합니다. 항목 형식은 `conventions/README.md` 참고.
|
|
23
|
+
|
|
24
|
+
<!-- 항목이 추가되면 아래에 기록됩니다 -->
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
---
|
|
2
|
+
docmeta:
|
|
3
|
+
id: conventions-planner
|
|
4
|
+
title: Conventions — planner
|
|
5
|
+
type: input
|
|
6
|
+
createdAt: 2026-04-22T00:00:00Z
|
|
7
|
+
updatedAt: 2026-04-22T00:00:00Z
|
|
8
|
+
source:
|
|
9
|
+
producer: user
|
|
10
|
+
skillId: harness-dispatcher
|
|
11
|
+
tags:
|
|
12
|
+
- conventions
|
|
13
|
+
- planner
|
|
14
|
+
---
|
|
15
|
+
|
|
16
|
+
# Conventions — planner
|
|
17
|
+
|
|
18
|
+
> **세션 시작 시 이 파일이 비어있더라도 루트 `CONVENTIONS.md` 는 반드시 먼저 읽으시오.**
|
|
19
|
+
> 여기(`.harness/conventions/planner.md`)는 역할 국한 규범만 누적되며, 프로젝트 전체 원칙은 루트에 있습니다.
|
|
20
|
+
>
|
|
21
|
+
> Dispatcher 가 긍정 가이드를 감지해 여기에 `### [C-NNN]` 엔트리를 추가합니다.
|
|
22
|
+
> 사용자가 직접 편집해도 무방합니다. 항목 형식은 `.harness/conventions/README.md` 참고.
|
|
23
|
+
|
|
24
|
+
<!-- 항목이 추가되면 아래에 기록됩니다 -->
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
---
|
|
2
|
+
docmeta:
|
|
3
|
+
id: conventions-service-ops
|
|
4
|
+
title: Conventions — uservice-uops
|
|
5
|
+
type: input
|
|
6
|
+
createdAt: 2026-05-08T00:00:00Z
|
|
7
|
+
updatedAt: 2026-05-08T00:00:00Z
|
|
8
|
+
source:
|
|
9
|
+
producer: user
|
|
10
|
+
skillId: harness-dispatcher
|
|
11
|
+
tags:
|
|
12
|
+
- conventions
|
|
13
|
+
- service-ops
|
|
14
|
+
---
|
|
15
|
+
|
|
16
|
+
# Conventions — uservice-uops
|
|
17
|
+
|
|
18
|
+
> **세션 시작 시 이 파일이 비어있더라도 루트 `CONVENTIONS.md` 는 반드시 먼저 읽으시오.**
|
|
19
|
+
> 여기는 uservice-uops 스코프의 긍정 규범만 누적되며, 프로젝트 전체 원칙은 루트에 있습니다.
|
|
20
|
+
>
|
|
21
|
+
> Dispatcher 가 긍정 가이드("~해야 해", "~이렇게 해줘") 를 감지해 여기에 `### [C-NNN]` 엔트리를 추가합니다.
|
|
22
|
+
> 사용자가 직접 편집해도 무방합니다. 항목 형식은 `conventions/README.md` 참고.
|
|
23
|
+
|
|
24
|
+
<!-- 항목이 추가되면 아래에 기록됩니다 -->
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
---
|
|
2
|
+
docmeta:
|
|
3
|
+
id: conventions-shared
|
|
4
|
+
title: Conventions — shared
|
|
5
|
+
type: input
|
|
6
|
+
createdAt: 2026-04-22T00:00:00Z
|
|
7
|
+
updatedAt: 2026-04-22T00:00:00Z
|
|
8
|
+
source:
|
|
9
|
+
producer: user
|
|
10
|
+
skillId: harness-dispatcher
|
|
11
|
+
tags:
|
|
12
|
+
- conventions
|
|
13
|
+
- shared
|
|
14
|
+
---
|
|
15
|
+
|
|
16
|
+
# Conventions — shared
|
|
17
|
+
|
|
18
|
+
> **세션 시작 시 이 파일이 비어있더라도 루트 `CONVENTIONS.md` 는 반드시 먼저 읽으시오.**
|
|
19
|
+
> 여기(`.harness/conventions/shared.md`)는 역할 국한 규범만 누적되며, 프로젝트 전체 원칙은 루트에 있습니다.
|
|
20
|
+
>
|
|
21
|
+
> Dispatcher 가 긍정 가이드를 감지해 여기에 `### [C-NNN]` 엔트리를 추가합니다.
|
|
22
|
+
> 사용자가 직접 편집해도 무방합니다. 항목 형식은 `.harness/conventions/README.md` 참고.
|
|
23
|
+
|
|
24
|
+
<!-- 항목이 추가되면 아래에 기록됩니다 -->
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@walwal-harness/cli",
|
|
3
|
-
"version": "6.1.
|
|
3
|
+
"version": "6.1.4",
|
|
4
4
|
"description": "Production harness for AI agent engineering — NEXUS-adapted company metaphor (Dispatcher/CEO + Conductor + Meeting-Manager + COO/Planner + CTO + CQO + Service-Ops). Solo/Team mode, Brainstormer, Planner, Generator(BE/FE/Designer/DevOps), Evaluator chain (Code-Quality → Functional → Visual + Architecture/Security). Supports React, Next.js, and Flutter FE stacks.",
|
|
5
5
|
"bin": {
|
|
6
6
|
"walwal-harness": "bin/init.js"
|
|
@@ -53,6 +53,7 @@
|
|
|
53
53
|
"commands/",
|
|
54
54
|
"assets/",
|
|
55
55
|
"gotchas/",
|
|
56
|
+
"conventions/",
|
|
56
57
|
"CHANGELOG.md"
|
|
57
58
|
]
|
|
58
59
|
}
|