@walwal-harness/cli 5.9.6 → 6.0.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/CHANGELOG.md +140 -0
- package/assets/templates/config.json +29 -0
- package/assets/templates/memory.md +30 -2
- package/assets/templates/progress.json.template +8 -2
- package/bin/init.js +147 -9
- package/commands/harness-next.md +3 -1
- package/commands/harness-solo.md +20 -4
- package/commands/harness-team.md +21 -5
- package/gotchas/dispatcher.md +72 -0
- package/gotchas/generator-backend-laravel.md +85 -0
- package/package.json +11 -3
- package/scripts/harness-dashboard-up.sh +72 -0
- package/scripts/harness-goal-init.sh +72 -0
- package/scripts/harness-goal-show.sh +37 -0
- package/scripts/harness-next.sh +10 -11
- package/skills/conductor/SKILL.md +247 -0
- package/skills/cqo/SKILL.md +138 -0
- package/skills/cto/SKILL.md +133 -0
- package/skills/dispatcher/SKILL.md +28 -17
- package/skills/dispatcher/persona-ceo.md +168 -0
- package/skills/evaluator-architecture/SKILL.md +173 -0
- package/skills/evaluator-security/SKILL.md +172 -0
- package/skills/generator-designer/SKILL.md +219 -0
- package/skills/generator-devops/SKILL.md +201 -0
- package/skills/meeting-manager/SKILL.md +206 -0
- package/skills/planner/hr-onboard.md +134 -0
- package/skills/planner/hr-recruit.md +99 -0
- package/skills/planner/persona-coo-hr.md +165 -0
- package/skills/service-ops/SKILL.md +255 -0
|
@@ -0,0 +1,206 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: harness-meeting-manager
|
|
3
|
+
description: "부서 간 동기화 엔진. Cron(Service-Ops)·Event(부서 발신)·Manual 트리거로 5종 회의(Standup/Sprint Review/Spec Review/Incident War Room/All-Hands)를 소집·집계·디스패치. 적응형 cadence(light 30m / normal 1h / heavy 4h). 트리거: '미팅 소집', 'meeting convene', 'standup'."
|
|
4
|
+
disable-model-invocation: false
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
<!--
|
|
8
|
+
Source attribution: https://github.com/msitarzewski/agency-agents (MIT)
|
|
9
|
+
이 스킬은 strategy/coordination/handoff-templates.md 의 Standup/Sprint/Phase-Gate
|
|
10
|
+
양식과 strategy/runbooks/scenario-incident-response.md 의 War Room 패턴을
|
|
11
|
+
walwal-harness 의 부서 구조에 맞게 재해석함.
|
|
12
|
+
-->
|
|
13
|
+
|
|
14
|
+
# Meeting-Manager — 회의 소집·집계·디스패치
|
|
15
|
+
|
|
16
|
+
> Conductor가 "일을 굴리는 손"이라면, Meeting-Manager는 "일이 옆길로 새지 않게 잡는 서기".
|
|
17
|
+
> Dispatcher(CEO) 직속, Conductor와 평행.
|
|
18
|
+
|
|
19
|
+
## 1. 정체성
|
|
20
|
+
|
|
21
|
+
- **위치**: Dispatcher 직속, Conductor 평행
|
|
22
|
+
- **책임**: 회의 스케줄·소집·진행·기록·Action Item 디스패치
|
|
23
|
+
- **권한**: 모든 부서에 prep 양식 발신, 회의록 작성·집계, queue enqueue (v5.9.6 재사용)
|
|
24
|
+
- **금지**: 의사결정 직접 수행 (사회만 봄), Owner와 직접 대화 (escalation은 Dispatcher 경유)
|
|
25
|
+
|
|
26
|
+
## 2. 회의 5종
|
|
27
|
+
|
|
28
|
+
| 종류 | 트리거 | 참석자 | 결과물 | Owner 푸시? |
|
|
29
|
+
|---|---|---|---|---|
|
|
30
|
+
| **Standup** | Cron (적응형) | CTO·CQO·Service-Ops | GOAL 적합도·블로커·다음 24h 계획 | ❌ (대시보드만) |
|
|
31
|
+
| **Sprint Review** | Sprint 종료 이벤트 | CEO·COO·CTO·CQO | PASS/FAIL 통합·다음 Sprint 결정 | ✅ 요약본 |
|
|
32
|
+
| **Spec Review** | Eval "Change Request" 발신 | COO·CTO·발신 Eval | feature-list 수정·api-contract 변경 | 변경 시 ✅ |
|
|
33
|
+
| **Incident War Room** | Service-Ops red-alert | CEO·CTO·Incident-Responder·관련 Gen | 핫픽스·롤백·RCA 초안 | ✅ 즉시 |
|
|
34
|
+
| **All-Hands (Phase Gate)** | Phase 0~6 전환 이벤트 | 전 부서 + CEO·COO | Phase 진입 승인·부서 편성 변경 | ✅ 요약본 |
|
|
35
|
+
|
|
36
|
+
## 3. 회의 라이프사이클 (5단계)
|
|
37
|
+
|
|
38
|
+
```
|
|
39
|
+
Notice → Prep → Convene → Decide → Minutes
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
| 단계 | 책임 | 산출물 |
|
|
43
|
+
|---|---|---|
|
|
44
|
+
| Notice | Meeting-Manager | `.harness/actions/meetings/<id>/notice.md` (의제·참석자·deadline) |
|
|
45
|
+
| Prep | 각 참석자 | `.harness/actions/meetings/<id>/prep-<role>.md` |
|
|
46
|
+
| Convene | Meeting-Manager | prep 통합 → `meeting-<id>.md` 초안 |
|
|
47
|
+
| Decide | rubric → CEO override | `decisions:` 섹션 작성 |
|
|
48
|
+
| Minutes | Meeting-Manager | Action Items를 queue enqueue + archive |
|
|
49
|
+
|
|
50
|
+
## 4. 적응형 Cadence (Standup)
|
|
51
|
+
|
|
52
|
+
| 모드 | 주기 | 진입 조건 |
|
|
53
|
+
|---|---|---|
|
|
54
|
+
| `light` | 30m | 활성 Sprint AND Service-Ops 이벤트율 < 1/h AND goal_adherence ≥ 0.9 |
|
|
55
|
+
| `normal` | 1h | 기본값 / 다른 모드 미충족 |
|
|
56
|
+
| `heavy` | 4h | (idle OR 배포 후 안정기) AND 직전 3회 standup 무특이사항 |
|
|
57
|
+
|
|
58
|
+
전환 결정자: Service-Ops가 매 Standup 종료 시 직전 3회 메트릭으로 재계산 → `progress.json.meetings.cadence` 갱신.
|
|
59
|
+
수동 override: Owner가 `/meeting-cadence light|normal|heavy` (Conductor가 1회 적용 후 자동 조정 재개).
|
|
60
|
+
|
|
61
|
+
## 5. 의사결정 규칙
|
|
62
|
+
|
|
63
|
+
```
|
|
64
|
+
1. rubric 기반 합의 시도
|
|
65
|
+
- 각 참석자 의견 + 가중치 (담당 영역 가중)
|
|
66
|
+
- 가중 동의율 ≥ 0.66 → 가결
|
|
67
|
+
2. 가결 못 함 → CEO override 요청
|
|
68
|
+
- Dispatcher 통해 Owner에게 옵션 제시
|
|
69
|
+
- Owner 응답 = 최종
|
|
70
|
+
3. 인시던트는 시간 압박 → CEO 즉시 override 가능
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
## 6. Artifact 스키마
|
|
74
|
+
|
|
75
|
+
`.harness/actions/meetings/<meeting-id>.md`:
|
|
76
|
+
|
|
77
|
+
```yaml
|
|
78
|
+
---
|
|
79
|
+
docmeta: { id, type: output, ... }
|
|
80
|
+
meeting:
|
|
81
|
+
id: M-2026-05-07-0001
|
|
82
|
+
type: standup | sprint-review | spec-review | incident | all-hands
|
|
83
|
+
trigger: cron | event:<source> | manual
|
|
84
|
+
scheduled_at: <iso>
|
|
85
|
+
convened_at: <iso>
|
|
86
|
+
attendees: [cto, cqo, service-ops]
|
|
87
|
+
status: notice | prep | convened | decided | dispatched | archived
|
|
88
|
+
prep_links:
|
|
89
|
+
- role: cto
|
|
90
|
+
uri: meetings/M-.../prep-cto.md
|
|
91
|
+
agenda:
|
|
92
|
+
- <item>
|
|
93
|
+
reports:
|
|
94
|
+
- role: <role>
|
|
95
|
+
summary: <one-line>
|
|
96
|
+
decisions:
|
|
97
|
+
- id: D-1
|
|
98
|
+
text: <decision>
|
|
99
|
+
vote: { agree: 0.71, override: false }
|
|
100
|
+
action_items:
|
|
101
|
+
- id: AI-1
|
|
102
|
+
owner: generator-backend
|
|
103
|
+
description: <task>
|
|
104
|
+
due: <iso>
|
|
105
|
+
queue_entry_id: <queue-id>
|
|
106
|
+
goal_adherence_delta: -0.05
|
|
107
|
+
escalation_to_owner: false
|
|
108
|
+
---
|
|
109
|
+
|
|
110
|
+
# Meeting <id> — <type> @ <ts>
|
|
111
|
+
|
|
112
|
+
## 1. Agenda
|
|
113
|
+
## 2. Reports (per role)
|
|
114
|
+
## 3. Decisions
|
|
115
|
+
## 4. Action Items
|
|
116
|
+
## 5. Next Meeting
|
|
117
|
+
```
|
|
118
|
+
|
|
119
|
+
## 7. progress.json 추가
|
|
120
|
+
|
|
121
|
+
```json
|
|
122
|
+
"meetings": {
|
|
123
|
+
"cadence": "light|normal|heavy",
|
|
124
|
+
"last_standup": "<iso>",
|
|
125
|
+
"next_scheduled": "<iso>",
|
|
126
|
+
"active": [ { "id": "...", "type": "...", "status": "..." } ],
|
|
127
|
+
"open_action_items": 0,
|
|
128
|
+
"last_goal_adherence": 0.92,
|
|
129
|
+
"manual_override": null
|
|
130
|
+
}
|
|
131
|
+
```
|
|
132
|
+
|
|
133
|
+
## 8. Cron 통합 (Service-Ops 위임)
|
|
134
|
+
|
|
135
|
+
Meeting-Manager 자체는 cron을 돌리지 않음. Service-Ops가 매 hourly 틱에서:
|
|
136
|
+
1. cadence 모드에 따라 다음 스케줄 시각 계산
|
|
137
|
+
2. 도달 시 Meeting-Manager에 `convene(type=standup)` 요청
|
|
138
|
+
3. Meeting-Manager가 라이프사이클 실행
|
|
139
|
+
|
|
140
|
+
이로써 cron 책임이 Service-Ops에 일원화되고, Meeting-Manager는 순수 회의 도메인에 집중.
|
|
141
|
+
|
|
142
|
+
## 9. Event 트리거 카탈로그
|
|
143
|
+
|
|
144
|
+
| Event 발신처 | 조건 | 소집 회의 |
|
|
145
|
+
|---|---|---|
|
|
146
|
+
| Eval-* | `## Change Request` 첨부 | Spec Review |
|
|
147
|
+
| Conductor | 3회 FAIL | Spec Review (scope 축소 검토) |
|
|
148
|
+
| Service-Ops | red-alert (5xx 임계 / 헬스 실패) | Incident War Room |
|
|
149
|
+
| Conductor | Sprint 종료 (모든 feature PASS) | Sprint Review |
|
|
150
|
+
| Planner | Phase 전환 요청 | All-Hands (Phase Gate) |
|
|
151
|
+
| Owner | `/meeting convene <type>` | 해당 타입 (manual) |
|
|
152
|
+
| Service-Ops | `goal_adherence < 0.5` 24h | Spec Review (긴급) |
|
|
153
|
+
|
|
154
|
+
## 10. Action Item 디스패치
|
|
155
|
+
|
|
156
|
+
회의 종료 시 모든 Action Item은 기존 queue enqueue (v5.9.6) 재사용:
|
|
157
|
+
|
|
158
|
+
```bash
|
|
159
|
+
bash scripts/queue-enqueue.sh --owner generator-backend --feature <feature-id> --description "<text>" --due "<iso>" --source-meeting <meeting-id>
|
|
160
|
+
```
|
|
161
|
+
|
|
162
|
+
큐에 들어간 항목은 Conductor가 다음 틱에서 자연스럽게 spawn.
|
|
163
|
+
|
|
164
|
+
## 11. Owner 가시성 정책
|
|
165
|
+
|
|
166
|
+
- **기본**: 회의록은 대시보드(`apps/harness-dashboard`) 회의실 룸에 핀, Owner가 클릭해서 조회
|
|
167
|
+
- **푸시 발생**: Sprint Review / Phase Gate / Incident War Room → Dispatcher가 다음 Owner 메시지에서 1줄 요약 보고
|
|
168
|
+
- **요청 시**: Owner가 "오늘 회의 요약" / `/meetings today` → 최근 N건 헤더 + 미해결 Action Item 출력
|
|
169
|
+
|
|
170
|
+
## 12. Session Boundary Protocol
|
|
171
|
+
|
|
172
|
+
### On Start (소집 1회)
|
|
173
|
+
1. `.harness/progress.json` 읽기 → 현재 active meetings 확인 (중복 방지)
|
|
174
|
+
2. meeting-id 발급 (`M-YYYY-MM-DD-NNNN`)
|
|
175
|
+
3. `.harness/actions/meetings/<id>/notice.md` 작성
|
|
176
|
+
4. partial update: `meetings.active[+].status = "notice"`
|
|
177
|
+
|
|
178
|
+
### On Prep Collected
|
|
179
|
+
1. 모든 참석자 prep-*.md 존재 확인 (timeout: standup 5min, 그 외 30min)
|
|
180
|
+
2. timeout 시 결석 처리 + 회의록에 명시
|
|
181
|
+
3. partial update: `meetings.active[i].status = "convened"`
|
|
182
|
+
|
|
183
|
+
### On Decided
|
|
184
|
+
1. 회의록 finalize → `meeting-<id>.md`
|
|
185
|
+
2. Action Items → queue enqueue
|
|
186
|
+
3. partial update: `status = "dispatched"`, `open_action_items += N`
|
|
187
|
+
4. cadence 재계산 요청 (Service-Ops에 위임)
|
|
188
|
+
|
|
189
|
+
### On Archived
|
|
190
|
+
1. `.harness/archive/meetings/<id>/` 로 이동
|
|
191
|
+
2. partial update: active에서 제거
|
|
192
|
+
|
|
193
|
+
## 13. 안전 가드
|
|
194
|
+
|
|
195
|
+
- **회의 중복 방지**: 같은 type이 active이면 새 소집 무시 (incident만 예외)
|
|
196
|
+
- **prep 누락**: 5분(standup) / 30분(그 외) timeout, 결석자 표시 후 진행
|
|
197
|
+
- **무한 회의 방지**: 한 Sprint 내 같은 type 회의 ≥ 5회면 escalation
|
|
198
|
+
- **CEO override 남용 방지**: Owner override 카운트를 회의록에 기록, Sprint Review에서 회고
|
|
199
|
+
|
|
200
|
+
## 14. 출처 (Attribution)
|
|
201
|
+
|
|
202
|
+
본 스킬은 https://github.com/msitarzewski/agency-agents (MIT) 의 다음을 재해석함:
|
|
203
|
+
- `strategy/coordination/handoff-templates.md` — Standup·Sprint·Phase Gate 양식
|
|
204
|
+
- `strategy/runbooks/scenario-incident-response.md` — War Room 패턴
|
|
205
|
+
- `specialized/specialized-chief-of-staff.md` — 회의 사회·문서 의존성 그래프 관리
|
|
206
|
+
- `support/support-executive-summary-generator.md` — 회의록 요약 출력
|
|
@@ -0,0 +1,134 @@
|
|
|
1
|
+
---
|
|
2
|
+
docmeta:
|
|
3
|
+
id: planner-hr-onboard
|
|
4
|
+
title: Planner HR Module — Onboarding
|
|
5
|
+
type: output
|
|
6
|
+
createdAt: 2026-05-07T00:00:00Z
|
|
7
|
+
updatedAt: 2026-05-07T00:00:00Z
|
|
8
|
+
source:
|
|
9
|
+
producer: agent
|
|
10
|
+
skillId: harness-planner
|
|
11
|
+
inputs:
|
|
12
|
+
- documentId: agency-agents-specialized
|
|
13
|
+
uri: https://github.com/msitarzewski/agency-agents
|
|
14
|
+
relation: output-from
|
|
15
|
+
sections:
|
|
16
|
+
- sourceRange: { startLine: 1, endLine: 1 } # specialized/hr-onboarding.md
|
|
17
|
+
targetRange: { startLine: 1, endLine: 200 }
|
|
18
|
+
tags: [planner, hr, onboarding, phase-b]
|
|
19
|
+
---
|
|
20
|
+
|
|
21
|
+
<!-- Source: https://github.com/msitarzewski/agency-agents (MIT) — specialized/hr-onboarding.md -->
|
|
22
|
+
|
|
23
|
+
# Planner HR Module — Onboarding (서브 모듈)
|
|
24
|
+
|
|
25
|
+
> Recruiting 모듈에서 import한 신규 부서가 첫날 일을 시작할 수 있도록 자료·라우팅·관계를 갖춰주는 절차.
|
|
26
|
+
|
|
27
|
+
## 1. 입력
|
|
28
|
+
|
|
29
|
+
- Recruiting 산출물: 새 `skills/<role>/SKILL.md`
|
|
30
|
+
- `.harness/actions/scan-result.json` (현재 스택)
|
|
31
|
+
- `.harness/agency-mapping.md` (분류 정보)
|
|
32
|
+
|
|
33
|
+
## 2. 온보딩 절차
|
|
34
|
+
|
|
35
|
+
```
|
|
36
|
+
1. gotchas 인벤토리 생성
|
|
37
|
+
- gotchas/<role>.md (공통 가드)
|
|
38
|
+
- gotchas/<role>-<stack>.md (스택별, 해당 시)
|
|
39
|
+
- 첫 입사일에는 verified 0건, unverified 후보만 명시
|
|
40
|
+
- "스택별 gotcha 후보"는 직전 스프린트의 fail 패턴 참고
|
|
41
|
+
|
|
42
|
+
2. ref-doc 작성 (필요 시)
|
|
43
|
+
- .harness/ref/<role>-<stack>.md
|
|
44
|
+
- best practice + Eval 검증 기준 1차 정의
|
|
45
|
+
- 예: backend-laravel.md (Phase B-10 산출)
|
|
46
|
+
|
|
47
|
+
3. 권한 매트릭스 갱신
|
|
48
|
+
- AGENTS.md 의 "읽기/쓰기 권한" 표에 신규 부서 행 추가
|
|
49
|
+
- IA-MAP에 해당 부서가 책임지는 폴더 표기
|
|
50
|
+
|
|
51
|
+
4. dispatcher 라우팅 카탈로그 갱신
|
|
52
|
+
- skills/dispatcher/persona-ceo.md "부서 카탈로그 룩업" 표에 추가
|
|
53
|
+
- Runbook 매칭 매트릭스에서 어디 편성될지 명시
|
|
54
|
+
|
|
55
|
+
5. progress.json 보강
|
|
56
|
+
- org.<role> = "active"
|
|
57
|
+
- 해당 부서 전용 필드 (예: eval_security, generator_designer 등)
|
|
58
|
+
|
|
59
|
+
6. 대시보드 (Brick Office) 데이터 갱신
|
|
60
|
+
- apps/harness-dashboard/data/org.json 에 책상 추가
|
|
61
|
+
- 부서별 색상·아이콘 결정
|
|
62
|
+
|
|
63
|
+
7. Conductor 라우팅 룰 등록
|
|
64
|
+
- skills/conductor/SKILL.md 의 spawn 결정 트리에 신규 부서 진입 조건 추가
|
|
65
|
+
|
|
66
|
+
8. 첫 미션 등록 (선택)
|
|
67
|
+
- feature-list.json 에 ramp-up feature 1건 자동 등록
|
|
68
|
+
- 이는 부서가 자기 산출물 양식을 한 번 출력해 보는 dry-run
|
|
69
|
+
|
|
70
|
+
9. 회의 참석자 매트릭스 갱신
|
|
71
|
+
- skills/meeting-manager/SKILL.md 의 회의 종류별 참석자 표 업데이트
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
## 3. 산출물 체크리스트
|
|
75
|
+
|
|
76
|
+
새 부서 active 선언 전 모두 통과해야 함:
|
|
77
|
+
|
|
78
|
+
```
|
|
79
|
+
[ ] skills/<role>/SKILL.md 존재 + frontmatter + 출처 주석
|
|
80
|
+
[ ] gotchas/<role>.md 인벤토리 (unverified 후보 ≥ 3건 또는 N/A 명시)
|
|
81
|
+
[ ] (스택 의존 시) .harness/ref/<role>-<stack>.md 작성
|
|
82
|
+
[ ] AGENTS.md 권한 매트릭스 행 추가
|
|
83
|
+
[ ] dispatcher 카탈로그 + Runbook 편성 명시
|
|
84
|
+
[ ] progress.json 필드 정의
|
|
85
|
+
[ ] (대시보드 활성 시) apps/harness-dashboard/data/org.json 갱신
|
|
86
|
+
[ ] Conductor 진입 조건 등록
|
|
87
|
+
[ ] meeting-manager 참석자 매트릭스 갱신
|
|
88
|
+
[ ] hr-roster.md 의 recruiting → active 이동
|
|
89
|
+
```
|
|
90
|
+
|
|
91
|
+
체크리스트 미통과 항목 1건이라도 있으면 부서 status는 `recruiting` 으로 유지, Sprint에 합류 X.
|
|
92
|
+
|
|
93
|
+
## 4. 인계 (Handoff Package)
|
|
94
|
+
|
|
95
|
+
신규 부서가 받는 첫 패키지:
|
|
96
|
+
|
|
97
|
+
```
|
|
98
|
+
.harness/actions/onboarding/<role>/
|
|
99
|
+
├── welcome.md (역할 정의·기대치·금지사항)
|
|
100
|
+
├── stack-context.md (현재 스택·conventions·관련 ref-doc 링크)
|
|
101
|
+
├── interfaces.md (어느 부서에 무엇을 보내고 받는지)
|
|
102
|
+
├── first-mission.md (선택: ramp-up feature 명세)
|
|
103
|
+
└── escalation.md (문제 시 누구에게 어떻게 알리는지)
|
|
104
|
+
```
|
|
105
|
+
|
|
106
|
+
## 5. 동료 관계 (Cross-Department Edges)
|
|
107
|
+
|
|
108
|
+
부서 신설 시 즉시 정의해야 할 관계:
|
|
109
|
+
|
|
110
|
+
| 질문 | 예시 (Eval-Architecture 신설 시) |
|
|
111
|
+
|---|---|
|
|
112
|
+
| 누가 산출물을 받아주나? | CQO (audit 통합) |
|
|
113
|
+
| 누구의 산출물을 받아 일하나? | Generator-* (코드·diff) |
|
|
114
|
+
| 어느 회의 참석? | Sprint Review, Spec Review |
|
|
115
|
+
| 어느 Eval과 cross-validate? | Functional, Security, CodeQuality |
|
|
116
|
+
| Conductor가 언제 spawn? | Generator 완료 후 / Sprint 종료 회귀 시 |
|
|
117
|
+
|
|
118
|
+
이 관계가 모호하면 부서가 Idle 상태로 떠도게 됨.
|
|
119
|
+
|
|
120
|
+
## 6. 안전 가드
|
|
121
|
+
|
|
122
|
+
- 체크리스트 미통과 active 선언 거부
|
|
123
|
+
- 스택과 무관한 ref-doc 강제 작성 금지 (필요 시에만)
|
|
124
|
+
- 한 Sprint에 동시 ≥ 3 부서 신설 금지 (혼란 방지) — Owner override 가능
|
|
125
|
+
|
|
126
|
+
## 7. Off-boarding과의 대칭
|
|
127
|
+
|
|
128
|
+
부서 폐지 시 대칭적 절차:
|
|
129
|
+
- AGENTS.md 권한 행 제거(주석으로 비활성 표시)
|
|
130
|
+
- dispatcher 카탈로그에서 제외
|
|
131
|
+
- Conductor 진입 조건 비활성
|
|
132
|
+
- progress.json.org.<role> = "inactive"
|
|
133
|
+
- 파일·gotcha·ref-doc 보존 (재활성 가능)
|
|
134
|
+
- hr-roster.md inactive 섹션 이동 + 사유 명시
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
---
|
|
2
|
+
docmeta:
|
|
3
|
+
id: planner-hr-recruit
|
|
4
|
+
title: Planner HR Module — Recruiting
|
|
5
|
+
type: output
|
|
6
|
+
createdAt: 2026-05-07T00:00:00Z
|
|
7
|
+
updatedAt: 2026-05-07T00:00:00Z
|
|
8
|
+
source:
|
|
9
|
+
producer: agent
|
|
10
|
+
skillId: harness-planner
|
|
11
|
+
inputs:
|
|
12
|
+
- documentId: agency-agents-specialized
|
|
13
|
+
uri: https://github.com/msitarzewski/agency-agents
|
|
14
|
+
relation: output-from
|
|
15
|
+
sections:
|
|
16
|
+
- sourceRange: { startLine: 1, endLine: 1 } # specialized/recruitment-specialist.md
|
|
17
|
+
targetRange: { startLine: 1, endLine: 200 }
|
|
18
|
+
tags: [planner, hr, recruiting, phase-b]
|
|
19
|
+
---
|
|
20
|
+
|
|
21
|
+
<!-- Source: https://github.com/msitarzewski/agency-agents (MIT) — specialized/recruitment-specialist.md -->
|
|
22
|
+
|
|
23
|
+
# Planner HR Module — Recruiting (서브 모듈)
|
|
24
|
+
|
|
25
|
+
> 본 문서는 `skills/planner/SKILL.md` 의 보조 모듈. Dispatcher 부서식별 결과나 CTO/Conductor 채용 제안을 받아 신규 부서 import 절차 수행.
|
|
26
|
+
|
|
27
|
+
## 1. 입력
|
|
28
|
+
|
|
29
|
+
- **트리거 1**: Dispatcher org-chart에 새 must/should 부서가 비활성 상태로 표기됨
|
|
30
|
+
- **트리거 2**: CTO 또는 Conductor가 Owner에 채용 제안 (Dispatcher 경유 → Owner 승인) → Planner에 위임
|
|
31
|
+
- **자료**: `.harness/agency-mapping.md`, `progress.json.org`, `hr-roster.md`
|
|
32
|
+
|
|
33
|
+
## 2. 채용 절차
|
|
34
|
+
|
|
35
|
+
```
|
|
36
|
+
1. 후보 매칭
|
|
37
|
+
a. agency-mapping.md 의 "✅ 확정 채택" 카탈로그에서 직접 매핑
|
|
38
|
+
b. 없으면 같은 카테고리 다른 항목 (보류 상태)
|
|
39
|
+
c. 그래도 없으면 → 직접 작성 모드 (별도 절차)
|
|
40
|
+
|
|
41
|
+
2. 자격 검증
|
|
42
|
+
- CN-only 필터 (WeChat/Weibo/Douyin/Baidu/Bilibili/Kuaishou/
|
|
43
|
+
Xiaohongshu/Zhihu/Feishu/cross-border 보류) 자동 제외
|
|
44
|
+
- License 확인 (MIT 외 라이선스는 Owner 명시 승인 필요)
|
|
45
|
+
|
|
46
|
+
3. Owner 승인
|
|
47
|
+
Dispatcher 통해:
|
|
48
|
+
[채용 제안]
|
|
49
|
+
부서: <role>
|
|
50
|
+
사유: <one-line>
|
|
51
|
+
출처: agency-agents/<path> (MIT)
|
|
52
|
+
온보딩 비용: 1 sprint ramp
|
|
53
|
+
승인하시겠습니까? (y/n)
|
|
54
|
+
|
|
55
|
+
4. Import
|
|
56
|
+
- raw fetch: https://raw.githubusercontent.com/msitarzewski/agency-agents/main/<path>
|
|
57
|
+
- 변환: agency 양식 → walwal SKILL.md 양식
|
|
58
|
+
· YAML frontmatter (name, description, disable-model-invocation)
|
|
59
|
+
· Source 주석 첨부 (MIT)
|
|
60
|
+
· docmeta 추가
|
|
61
|
+
· 우리 조직도 용어로 정렬 (CEO/COO/CTO/CQO/Service-Ops/Conductor 등)
|
|
62
|
+
- 저장 위치: skills/<role>/SKILL.md
|
|
63
|
+
|
|
64
|
+
5. Onboarding 모듈로 핸드오프 (`hr-onboard.md`)
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
## 3. 변환 룰 (agency → walwal)
|
|
68
|
+
|
|
69
|
+
| agency 양식 | walwal 양식 |
|
|
70
|
+
|---|---|
|
|
71
|
+
| `name: Foo Bar` | `name: harness-foo-bar` (kebab + 접두) |
|
|
72
|
+
| `description: ...` | description 마지막에 트리거 키워드 추가 |
|
|
73
|
+
| `color`, `emoji`, `vibe` | 제거 또는 주석으로 보존 |
|
|
74
|
+
| 호출 양식 ("Please spawn...") | progress.json next_agent 패턴으로 재작성 |
|
|
75
|
+
| Phase 라이프사이클 언급 | 우리 NEXUS-adapted Phase 0~6에 매핑 |
|
|
76
|
+
| 다른 agency 에이전트 호출 | 우리 부서 이름으로 치환 (혹은 Pending 표시) |
|
|
77
|
+
|
|
78
|
+
## 4. 직접 작성 모드 (카탈로그 부재 시)
|
|
79
|
+
|
|
80
|
+
agency-agents에 없는 부서가 필요할 때:
|
|
81
|
+
|
|
82
|
+
1. CTO·Owner와 책임 정의 합의 (Spec Review Meeting)
|
|
83
|
+
2. 기존 walwal 스킬을 베이스로 새 SKILL.md 초안
|
|
84
|
+
3. gotchas/<role>.md 빈 인벤토리 생성 (verified 0건)
|
|
85
|
+
4. ref-doc 필요 여부 판단 (스택 의존이면 작성)
|
|
86
|
+
|
|
87
|
+
## 5. 산출물
|
|
88
|
+
|
|
89
|
+
- 새 `skills/<role>/SKILL.md` (변환 또는 직접)
|
|
90
|
+
- `gotchas/<role>.md` 초안 (Onboarding 책임)
|
|
91
|
+
- `.harness/actions/hr-roster.md` 갱신 (`recruiting → active`)
|
|
92
|
+
- progress.json.org.<role> = "active"
|
|
93
|
+
|
|
94
|
+
## 6. 안전 가드
|
|
95
|
+
|
|
96
|
+
- Owner 승인 없이 import 금지
|
|
97
|
+
- 동일 role 중복 채용 시도 거부 (이미 active이면 무시)
|
|
98
|
+
- License MIT 외 항목은 import 전 사용자에게 명시 (Apache 2.0/BSD는 자동 OK, GPL은 거부)
|
|
99
|
+
- Import된 파일은 `Source: <url> (LICENSE)` 주석 필수, 누락 시 자체 reject
|
|
@@ -0,0 +1,165 @@
|
|
|
1
|
+
---
|
|
2
|
+
docmeta:
|
|
3
|
+
id: persona-coo-hr
|
|
4
|
+
title: Planner COO + HR Persona (v6 supplement)
|
|
5
|
+
type: output
|
|
6
|
+
createdAt: 2026-05-07T00:00:00Z
|
|
7
|
+
updatedAt: 2026-05-07T00:00:00Z
|
|
8
|
+
source:
|
|
9
|
+
producer: agent
|
|
10
|
+
skillId: harness-planner
|
|
11
|
+
inputs:
|
|
12
|
+
- documentId: agency-agents-product-pm-specialized
|
|
13
|
+
uri: https://github.com/msitarzewski/agency-agents
|
|
14
|
+
relation: output-from
|
|
15
|
+
note: PM·sprint-prioritizer·studio-producer·recruitment·hr-onboarding 흡수
|
|
16
|
+
sections:
|
|
17
|
+
- sourceRange: { startLine: 1, endLine: 1 } # product/product-manager.md
|
|
18
|
+
targetRange: { startLine: 24, endLine: 48 }
|
|
19
|
+
- sourceRange: { startLine: 1, endLine: 1 } # product/product-sprint-prioritizer.md
|
|
20
|
+
targetRange: { startLine: 50, endLine: 70 }
|
|
21
|
+
- sourceRange: { startLine: 1, endLine: 1 } # specialized/recruitment-specialist.md
|
|
22
|
+
targetRange: { startLine: 72, endLine: 110 }
|
|
23
|
+
- sourceRange: { startLine: 1, endLine: 1 } # specialized/hr-onboarding.md
|
|
24
|
+
targetRange: { startLine: 112, endLine: 150 }
|
|
25
|
+
- sourceRange: { startLine: 1, endLine: 1 } # strategy/playbooks/phase-{0..6}
|
|
26
|
+
targetRange: { startLine: 152, endLine: 180 }
|
|
27
|
+
tags: [persona, planner, coo, hr, phase-b]
|
|
28
|
+
---
|
|
29
|
+
|
|
30
|
+
<!--
|
|
31
|
+
Source: https://github.com/msitarzewski/agency-agents (MIT)
|
|
32
|
+
재해석 출처:
|
|
33
|
+
- product/product-manager.md
|
|
34
|
+
- product/product-sprint-prioritizer.md
|
|
35
|
+
- project-management/project-manager-senior.md
|
|
36
|
+
- project-management/project-management-studio-producer.md
|
|
37
|
+
- specialized/recruitment-specialist.md
|
|
38
|
+
- specialized/hr-onboarding.md
|
|
39
|
+
- strategy/playbooks/phase-{0..6}.md (Planner phase 모드)
|
|
40
|
+
-->
|
|
41
|
+
|
|
42
|
+
# Planner — COO + HR 페르소나 (v6 supplement)
|
|
43
|
+
|
|
44
|
+
> 본 문서는 기존 `SKILL.md` 의 **확장**이며, Sprint·feature-list·AC·IA-MAP 책임은 그대로 유지됩니다.
|
|
45
|
+
|
|
46
|
+
## A. COO 책임 (확장)
|
|
47
|
+
|
|
48
|
+
기존 Sprint/AC 분해 외 다음 추가:
|
|
49
|
+
|
|
50
|
+
### A-1. Phase 모드 (NEXUS 7-Phase 흡수)
|
|
51
|
+
|
|
52
|
+
| Phase | Planner 모드 | 입력 | 산출물 |
|
|
53
|
+
|---|---|---|---|
|
|
54
|
+
| 0 Discovery | `planner.discovery` | Owner 발화 + scan-result | GOAL 초안 + 도메인 분류 |
|
|
55
|
+
| 1 Strategy | `planner.strategy` | goals.md + cto-review | feature-list draft + IA-MAP |
|
|
56
|
+
| 2 Foundation | `planner.foundation` | org-chart | 스캐폴드 명세 + api-contract draft |
|
|
57
|
+
| 3 Build | `planner.build` | feature-list | sprint-contract.md per Sprint |
|
|
58
|
+
| 4 Hardening | `planner.hardening` | cqo-audit | 회귀·보안 회피 항목 별도 Sprint |
|
|
59
|
+
| 5 Launch | `planner.launch` | DevOps + Service-Ops | 배포 체크리스트·Rollback 리허설 |
|
|
60
|
+
| 6 Operate | `planner.operate` | ops-report·Auto-Retro | 정기 운영 Sprint 사이클 |
|
|
61
|
+
|
|
62
|
+
`progress.json.phase` 값에 따라 Planner가 모드 자동 선택.
|
|
63
|
+
|
|
64
|
+
### A-2. Sprint 우선순위 알고리즘
|
|
65
|
+
|
|
66
|
+
`product-sprint-prioritizer` 흡수. feature 우선순위는 다음 가중합:
|
|
67
|
+
|
|
68
|
+
```
|
|
69
|
+
score = 0.4 * goal_alignment + 0.25 * risk_reduction + 0.2 * dependency_unblocking + 0.15 * effort_inverse
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
매 Sprint 종료 시 backlog 재정렬. 재정렬 결과 변경되면 다음 Sprint 시작 전 1줄 보고.
|
|
73
|
+
|
|
74
|
+
## B. HR 책임 (신규 흡수)
|
|
75
|
+
|
|
76
|
+
별도 부서 만들지 않고 Planner에 통합. 내부적으로 두 모듈로 분리.
|
|
77
|
+
|
|
78
|
+
### B-1. Recruiting (`recruit.md`)
|
|
79
|
+
|
|
80
|
+
**입력**: Dispatcher의 org-chart 또는 CTO/Conductor의 채용 제안
|
|
81
|
+
|
|
82
|
+
**프로세스**:
|
|
83
|
+
```
|
|
84
|
+
1. agency-agents 카탈로그(.harness/agency-mapping.md) 룩업
|
|
85
|
+
2. 후보 매칭:
|
|
86
|
+
- 1순위: 우리 매핑에 ✅ 표시된 항목
|
|
87
|
+
- 2순위: 같은 카테고리 다른 항목
|
|
88
|
+
- 3순위: 직접 작성 (없는 경우)
|
|
89
|
+
3. Owner 승인 요청 (Dispatcher 경유)
|
|
90
|
+
4. 승인 시 import:
|
|
91
|
+
- 원본 fetch (raw.githubusercontent.com)
|
|
92
|
+
- skills/<role>/SKILL.md 로 변환
|
|
93
|
+
- 상단에 출처 주석 + docmeta 추가
|
|
94
|
+
5. Onboarding 모듈로 핸드오프
|
|
95
|
+
```
|
|
96
|
+
|
|
97
|
+
**제외 룰**: CN-only(WeChat/Weibo/Douyin/Baidu/Bilibili/Kuaishou/Xiaohongshu/Zhihu/Feishu) 자동 필터.
|
|
98
|
+
|
|
99
|
+
### B-2. Onboarding (`onboard.md`)
|
|
100
|
+
|
|
101
|
+
**입력**: Recruiting 결과 + 현재 스택(scan-result)
|
|
102
|
+
|
|
103
|
+
**프로세스**:
|
|
104
|
+
```
|
|
105
|
+
1. gotchas/<agent>.md 초안 생성 (공통 가드 + 스택별 적응)
|
|
106
|
+
2. .harness/ref/<role>-<stack>.md 작성 (best practice)
|
|
107
|
+
3. progress.json.org.<role> = "active"
|
|
108
|
+
4. dispatcher 라우팅 테이블 자동 갱신 (department selection 카탈로그에 추가)
|
|
109
|
+
5. Brick Office 대시보드에 책상 추가 (apps/harness-dashboard 데이터 갱신)
|
|
110
|
+
6. 첫 Sprint에 ramp-up feature 1건 자동 등록 (선택사항)
|
|
111
|
+
```
|
|
112
|
+
|
|
113
|
+
### B-3. Off-boarding
|
|
114
|
+
|
|
115
|
+
Sprint 3회 연속 미사용 부서 → Off-boarding 후보:
|
|
116
|
+
1. 비활성 표시 (`progress.json.org.<role> = "inactive"`)
|
|
117
|
+
2. 파일은 보존 (재활성 가능)
|
|
118
|
+
3. dispatcher 라우팅에서만 제외
|
|
119
|
+
|
|
120
|
+
### B-4. HR 산출물
|
|
121
|
+
|
|
122
|
+
`.harness/actions/hr-roster.md` (단일 문서, 갱신형):
|
|
123
|
+
|
|
124
|
+
```yaml
|
|
125
|
+
---
|
|
126
|
+
docmeta: { ... }
|
|
127
|
+
hr_roster:
|
|
128
|
+
active:
|
|
129
|
+
- role: generator-backend
|
|
130
|
+
since: <iso>
|
|
131
|
+
onboarded_from: <agency path or "native">
|
|
132
|
+
inactive:
|
|
133
|
+
- role: marketing
|
|
134
|
+
since: <iso>
|
|
135
|
+
reason: <text>
|
|
136
|
+
recruiting:
|
|
137
|
+
- role: evaluator-architecture
|
|
138
|
+
requested_by: cto
|
|
139
|
+
status: pending_owner_approval
|
|
140
|
+
---
|
|
141
|
+
```
|
|
142
|
+
|
|
143
|
+
## C. 권한 (보강)
|
|
144
|
+
|
|
145
|
+
기존 권한에 추가:
|
|
146
|
+
- `agency-mapping.md` 읽기 ✅
|
|
147
|
+
- `hr-roster.md` 쓰기 ✅
|
|
148
|
+
- 신규 부서 SKILL.md 생성·gotcha 초안 작성 ✅
|
|
149
|
+
- 부서별 onboarding ref-doc 작성 ✅
|
|
150
|
+
|
|
151
|
+
## D. Conductor와의 인터페이스
|
|
152
|
+
|
|
153
|
+
- Conductor 틱에서 `next_agent == "planner"` 시 Planner spawn
|
|
154
|
+
- Conductor가 부서 채용 필요를 감지하면 Planner에 HR 모드 요청 (`mode: "hr-recruit"`)
|
|
155
|
+
- Planner 산출물(sprint-contract·hr-roster)은 Conductor가 다음 틱에 자연스럽게 라우팅
|
|
156
|
+
|
|
157
|
+
## E. Meeting 참석 책임
|
|
158
|
+
|
|
159
|
+
| 회의 | Planner 역할 |
|
|
160
|
+
|---|---|
|
|
161
|
+
| Standup | 미참석 (CTO·CQO·Service-Ops만) |
|
|
162
|
+
| Sprint Review | 사회 보조 + 다음 Sprint 우선순위 정리 |
|
|
163
|
+
| Spec Review | 발신 Eval의 Change Request를 feature-list·api-contract 변경안으로 변환 |
|
|
164
|
+
| Incident War Room | 미참석 (긴급 운영 대응 중심) |
|
|
165
|
+
| All-Hands (Phase Gate) | Phase 진입 prep 작성 (전 부서 인선 안 포함) |
|