@dusky-bluehour/agent-service 0.6.2
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/LICENSE +21 -0
- package/README.md +205 -0
- package/antigravity/README.md +37 -0
- package/antigravity/agents/agent-catalog.json +72 -0
- package/antigravity/artifacts/artifact-catalog.json +184 -0
- package/antigravity/commands/command-catalog.json +942 -0
- package/antigravity/skills/code-review-and-improvement/SKILL.md +15 -0
- package/antigravity/skills/frontend-repetition-pack/SKILL.md +15 -0
- package/antigravity/skills/incident-response/SKILL.md +15 -0
- package/antigravity/skills/prd-to-production-pipeline/SKILL.md +16 -0
- package/antigravity/skills/release-and-operations/SKILL.md +15 -0
- package/antigravity/skills/security-hardening/SKILL.md +15 -0
- package/antigravity/skills/service-lifecycle-orchestration/SKILL.md +16 -0
- package/antigravity/workflows/workflow-catalog.json +362 -0
- package/catalog/tool-catalog.ko.json +296 -0
- package/claude-code/README.md +47 -0
- package/claude-code/agent-teams/team-catalog.json +69 -0
- package/claude-code/commands/command-catalog.json +942 -0
- package/claude-code/skills/code-review-and-improvement/SKILL.md +16 -0
- package/claude-code/skills/frontend-repetition-pack/SKILL.md +16 -0
- package/claude-code/skills/incident-response/SKILL.md +16 -0
- package/claude-code/skills/prd-to-production-pipeline/SKILL.md +17 -0
- package/claude-code/skills/release-and-operations/SKILL.md +16 -0
- package/claude-code/skills/security-hardening/SKILL.md +15 -0
- package/claude-code/skills/service-lifecycle-orchestration/SKILL.md +17 -0
- package/claude-code/subagents/backend-engineer.md +20 -0
- package/claude-code/subagents/code-reviewer.md +19 -0
- package/claude-code/subagents/frontend-engineer.md +20 -0
- package/claude-code/subagents/hook-refactor-engineer.md +19 -0
- package/claude-code/subagents/incident-commander.md +19 -0
- package/claude-code/subagents/lead-orchestrator.md +18 -0
- package/claude-code/subagents/operations-owner.md +20 -0
- package/claude-code/subagents/performance-engineer.md +19 -0
- package/claude-code/subagents/prd-writer.md +20 -0
- package/claude-code/subagents/product-planner.md +19 -0
- package/claude-code/subagents/qa-engineer.md +19 -0
- package/claude-code/subagents/security-engineer.md +20 -0
- package/claude-code/subagents/solution-architect.md +19 -0
- package/claude-code/subagents/sre-release-engineer.md +20 -0
- package/claude-code/subagents/ui-component-engineer.md +19 -0
- package/claude-code/workflows/workflow-catalog.json +680 -0
- package/codex/README.md +38 -0
- package/codex/automations/automation-recipes.toml +30 -0
- package/codex/commands/command-catalog.json +942 -0
- package/codex/instructions/AGENTS.override.template.md +21 -0
- package/codex/instructions/AGENTS.template.md +31 -0
- package/codex/skills/code-review-and-improvement/SKILL.md +16 -0
- package/codex/skills/code-review-and-improvement/agents/openai.yaml +4 -0
- package/codex/skills/frontend-repetition-pack/SKILL.md +15 -0
- package/codex/skills/frontend-repetition-pack/agents/openai.yaml +4 -0
- package/codex/skills/incident-response/SKILL.md +16 -0
- package/codex/skills/incident-response/agents/openai.yaml +4 -0
- package/codex/skills/prd-to-production-pipeline/SKILL.md +16 -0
- package/codex/skills/prd-to-production-pipeline/agents/openai.yaml +4 -0
- package/codex/skills/release-and-operations/SKILL.md +15 -0
- package/codex/skills/release-and-operations/agents/openai.yaml +4 -0
- package/codex/skills/security-hardening/SKILL.md +15 -0
- package/codex/skills/security-hardening/agents/openai.yaml +4 -0
- package/codex/skills/service-lifecycle-orchestration/SKILL.md +17 -0
- package/codex/skills/service-lifecycle-orchestration/agents/openai.yaml +4 -0
- package/codex/workflows/workflow-catalog.json +444 -0
- package/package.json +44 -0
- package/scripts/init.mjs +993 -0
- package/scripts/validate.mjs +591 -0
|
@@ -0,0 +1,296 @@
|
|
|
1
|
+
{
|
|
2
|
+
"schema_version": "1.0.0",
|
|
3
|
+
"package": {
|
|
4
|
+
"name": "tri-agent-manager",
|
|
5
|
+
"description_ko": "Claude Code, Antigravity, Codex용 서비스 운영 스킬/워크플로우 운영팩"
|
|
6
|
+
},
|
|
7
|
+
"tools": [
|
|
8
|
+
{
|
|
9
|
+
"id": "claude-code",
|
|
10
|
+
"title": "Claude Code",
|
|
11
|
+
"description": "서브에이전트/에이전트팀 중심으로 역할 분리를 강하게 적용하는 운영 구조",
|
|
12
|
+
"root": "claude-code",
|
|
13
|
+
"readme": "README.md",
|
|
14
|
+
"components": [
|
|
15
|
+
{
|
|
16
|
+
"id": "skills",
|
|
17
|
+
"path": "skills",
|
|
18
|
+
"title": "스킬",
|
|
19
|
+
"description": "수명주기, 리뷰, 보안, 릴리즈 등의 실행 규칙"
|
|
20
|
+
},
|
|
21
|
+
{
|
|
22
|
+
"id": "subagents",
|
|
23
|
+
"path": "subagents",
|
|
24
|
+
"title": "서브에이전트",
|
|
25
|
+
"description": "역할별 프롬프트 템플릿(리드, 백엔드, 보안, SRE 등)"
|
|
26
|
+
},
|
|
27
|
+
{
|
|
28
|
+
"id": "agent-teams",
|
|
29
|
+
"path": "agent-teams",
|
|
30
|
+
"title": "서브에이전트 팀",
|
|
31
|
+
"description": "리드+전문가 협업 팀 구성과 기본 워크플로우 매핑"
|
|
32
|
+
},
|
|
33
|
+
{
|
|
34
|
+
"id": "workflows",
|
|
35
|
+
"path": "workflows",
|
|
36
|
+
"title": "워크플로우",
|
|
37
|
+
"description": "기획-개발-검증-배포-운영 단계형 시나리오"
|
|
38
|
+
},
|
|
39
|
+
{
|
|
40
|
+
"id": "commands",
|
|
41
|
+
"path": "commands",
|
|
42
|
+
"title": "명령 카탈로그",
|
|
43
|
+
"description": "입력/실행/품질게이트/산출물 계약이 고정된 명령 집합"
|
|
44
|
+
}
|
|
45
|
+
]
|
|
46
|
+
},
|
|
47
|
+
{
|
|
48
|
+
"id": "antigravity",
|
|
49
|
+
"title": "Antigravity",
|
|
50
|
+
"description": "Manager-Agent-Artifact 기반 오케스트레이션 구조",
|
|
51
|
+
"root": "antigravity",
|
|
52
|
+
"readme": "README.md",
|
|
53
|
+
"components": [
|
|
54
|
+
{
|
|
55
|
+
"id": "skills",
|
|
56
|
+
"path": "skills",
|
|
57
|
+
"title": "스킬",
|
|
58
|
+
"description": "Plan-Implement-Test-Review-Release 실행 규칙"
|
|
59
|
+
},
|
|
60
|
+
{
|
|
61
|
+
"id": "agents",
|
|
62
|
+
"path": "agents",
|
|
63
|
+
"title": "에이전트 카탈로그",
|
|
64
|
+
"description": "Manager/Implementation/Review 등 역할 라우팅 정의"
|
|
65
|
+
},
|
|
66
|
+
{
|
|
67
|
+
"id": "artifacts",
|
|
68
|
+
"path": "artifacts",
|
|
69
|
+
"title": "아티팩트 계약",
|
|
70
|
+
"description": "단계 입출력 스키마와 검증 필수 필드"
|
|
71
|
+
},
|
|
72
|
+
{
|
|
73
|
+
"id": "workflows",
|
|
74
|
+
"path": "workflows",
|
|
75
|
+
"title": "워크플로우",
|
|
76
|
+
"description": "에이전트 체인과 단계 게이트 정의"
|
|
77
|
+
},
|
|
78
|
+
{
|
|
79
|
+
"id": "commands",
|
|
80
|
+
"path": "commands",
|
|
81
|
+
"title": "명령 카탈로그",
|
|
82
|
+
"description": "공통 명령 계약"
|
|
83
|
+
}
|
|
84
|
+
]
|
|
85
|
+
},
|
|
86
|
+
{
|
|
87
|
+
"id": "codex",
|
|
88
|
+
"title": "Codex",
|
|
89
|
+
"description": "Skills + AGENTS + Automations를 결합한 운영 구조",
|
|
90
|
+
"root": "codex",
|
|
91
|
+
"readme": "README.md",
|
|
92
|
+
"components": [
|
|
93
|
+
{
|
|
94
|
+
"id": "skills",
|
|
95
|
+
"path": "skills",
|
|
96
|
+
"title": "스킬",
|
|
97
|
+
"description": "작업 유형별 실행 스킬"
|
|
98
|
+
},
|
|
99
|
+
{
|
|
100
|
+
"id": "instructions",
|
|
101
|
+
"path": "instructions",
|
|
102
|
+
"title": "AGENTS 템플릿",
|
|
103
|
+
"description": "프로젝트별 AGENTS 규칙 기본/오버라이드 템플릿"
|
|
104
|
+
},
|
|
105
|
+
{
|
|
106
|
+
"id": "automations",
|
|
107
|
+
"path": "automations",
|
|
108
|
+
"title": "자동화 레시피",
|
|
109
|
+
"description": "주기 점검/리뷰/보안 배치 프리셋"
|
|
110
|
+
},
|
|
111
|
+
{
|
|
112
|
+
"id": "workflows",
|
|
113
|
+
"path": "workflows",
|
|
114
|
+
"title": "워크플로우",
|
|
115
|
+
"description": "Codex 실행 명령(/plan,/review) 연계 단계 정의"
|
|
116
|
+
},
|
|
117
|
+
{
|
|
118
|
+
"id": "commands",
|
|
119
|
+
"path": "commands",
|
|
120
|
+
"title": "명령 카탈로그",
|
|
121
|
+
"description": "공통 명령 계약"
|
|
122
|
+
}
|
|
123
|
+
]
|
|
124
|
+
}
|
|
125
|
+
],
|
|
126
|
+
"ux_defaults": {
|
|
127
|
+
"recommended_tools": [
|
|
128
|
+
"codex",
|
|
129
|
+
"claude-code"
|
|
130
|
+
],
|
|
131
|
+
"recommended_components": {
|
|
132
|
+
"claude-code": [
|
|
133
|
+
"skills",
|
|
134
|
+
"subagents",
|
|
135
|
+
"workflows",
|
|
136
|
+
"commands"
|
|
137
|
+
],
|
|
138
|
+
"antigravity": [
|
|
139
|
+
"skills",
|
|
140
|
+
"agents",
|
|
141
|
+
"artifacts",
|
|
142
|
+
"workflows",
|
|
143
|
+
"commands"
|
|
144
|
+
],
|
|
145
|
+
"codex": [
|
|
146
|
+
"skills",
|
|
147
|
+
"instructions",
|
|
148
|
+
"workflows",
|
|
149
|
+
"commands"
|
|
150
|
+
]
|
|
151
|
+
}
|
|
152
|
+
},
|
|
153
|
+
"presets": [
|
|
154
|
+
{
|
|
155
|
+
"id": "balanced-core",
|
|
156
|
+
"title": "기본 운영팩 (추천)",
|
|
157
|
+
"description": "Codex + Claude Code 중심으로 빠르게 시작하는 기본 구성이며, 운영 핵심 파일을 포함한다.",
|
|
158
|
+
"tools": [
|
|
159
|
+
"codex",
|
|
160
|
+
"claude-code"
|
|
161
|
+
],
|
|
162
|
+
"components": {
|
|
163
|
+
"codex": [
|
|
164
|
+
"skills",
|
|
165
|
+
"instructions",
|
|
166
|
+
"workflows",
|
|
167
|
+
"commands"
|
|
168
|
+
],
|
|
169
|
+
"claude-code": [
|
|
170
|
+
"skills",
|
|
171
|
+
"subagents",
|
|
172
|
+
"workflows",
|
|
173
|
+
"commands"
|
|
174
|
+
]
|
|
175
|
+
}
|
|
176
|
+
},
|
|
177
|
+
{
|
|
178
|
+
"id": "full-suite",
|
|
179
|
+
"title": "전체 설치",
|
|
180
|
+
"description": "세 도구의 모든 구성요소를 설치한다.",
|
|
181
|
+
"tools": [
|
|
182
|
+
"claude-code",
|
|
183
|
+
"antigravity",
|
|
184
|
+
"codex"
|
|
185
|
+
],
|
|
186
|
+
"components": {
|
|
187
|
+
"claude-code": [
|
|
188
|
+
"skills",
|
|
189
|
+
"subagents",
|
|
190
|
+
"agent-teams",
|
|
191
|
+
"workflows",
|
|
192
|
+
"commands"
|
|
193
|
+
],
|
|
194
|
+
"antigravity": [
|
|
195
|
+
"skills",
|
|
196
|
+
"agents",
|
|
197
|
+
"artifacts",
|
|
198
|
+
"workflows",
|
|
199
|
+
"commands"
|
|
200
|
+
],
|
|
201
|
+
"codex": [
|
|
202
|
+
"skills",
|
|
203
|
+
"instructions",
|
|
204
|
+
"automations",
|
|
205
|
+
"workflows",
|
|
206
|
+
"commands"
|
|
207
|
+
]
|
|
208
|
+
}
|
|
209
|
+
},
|
|
210
|
+
{
|
|
211
|
+
"id": "security-first",
|
|
212
|
+
"title": "보안 우선",
|
|
213
|
+
"description": "보안 점검/하드닝/배포 게이트를 중심으로 필요한 구성만 설치한다.",
|
|
214
|
+
"tools": [
|
|
215
|
+
"claude-code",
|
|
216
|
+
"antigravity",
|
|
217
|
+
"codex"
|
|
218
|
+
],
|
|
219
|
+
"components": {
|
|
220
|
+
"claude-code": [
|
|
221
|
+
"skills",
|
|
222
|
+
"subagents",
|
|
223
|
+
"workflows",
|
|
224
|
+
"commands"
|
|
225
|
+
],
|
|
226
|
+
"antigravity": [
|
|
227
|
+
"skills",
|
|
228
|
+
"agents",
|
|
229
|
+
"artifacts",
|
|
230
|
+
"workflows",
|
|
231
|
+
"commands"
|
|
232
|
+
],
|
|
233
|
+
"codex": [
|
|
234
|
+
"skills",
|
|
235
|
+
"workflows",
|
|
236
|
+
"commands"
|
|
237
|
+
]
|
|
238
|
+
}
|
|
239
|
+
},
|
|
240
|
+
{
|
|
241
|
+
"id": "frontend-refactor",
|
|
242
|
+
"title": "프론트 반복개선",
|
|
243
|
+
"description": "UI 컴포넌트화, Hook 분리, 성능 최적화 작업에 맞춘 구성이다.",
|
|
244
|
+
"tools": [
|
|
245
|
+
"claude-code",
|
|
246
|
+
"codex"
|
|
247
|
+
],
|
|
248
|
+
"components": {
|
|
249
|
+
"claude-code": [
|
|
250
|
+
"skills",
|
|
251
|
+
"subagents",
|
|
252
|
+
"workflows",
|
|
253
|
+
"commands"
|
|
254
|
+
],
|
|
255
|
+
"codex": [
|
|
256
|
+
"skills",
|
|
257
|
+
"instructions",
|
|
258
|
+
"workflows",
|
|
259
|
+
"commands"
|
|
260
|
+
]
|
|
261
|
+
}
|
|
262
|
+
},
|
|
263
|
+
{
|
|
264
|
+
"id": "prd-to-production",
|
|
265
|
+
"title": "PRD→구현 자동 파이프라인",
|
|
266
|
+
"description": "PRD 대화형 작성 후 순차 자동 구현 워크플로우(WF-PRD-IMPLEMENT-E2E)를 사용하는 구성",
|
|
267
|
+
"tools": [
|
|
268
|
+
"claude-code",
|
|
269
|
+
"antigravity",
|
|
270
|
+
"codex"
|
|
271
|
+
],
|
|
272
|
+
"components": {
|
|
273
|
+
"claude-code": [
|
|
274
|
+
"skills",
|
|
275
|
+
"subagents",
|
|
276
|
+
"agent-teams",
|
|
277
|
+
"workflows",
|
|
278
|
+
"commands"
|
|
279
|
+
],
|
|
280
|
+
"antigravity": [
|
|
281
|
+
"skills",
|
|
282
|
+
"agents",
|
|
283
|
+
"artifacts",
|
|
284
|
+
"workflows",
|
|
285
|
+
"commands"
|
|
286
|
+
],
|
|
287
|
+
"codex": [
|
|
288
|
+
"skills",
|
|
289
|
+
"instructions",
|
|
290
|
+
"workflows",
|
|
291
|
+
"commands"
|
|
292
|
+
]
|
|
293
|
+
}
|
|
294
|
+
}
|
|
295
|
+
]
|
|
296
|
+
}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
# Claude Code 운영팩
|
|
2
|
+
|
|
3
|
+
이 폴더는 Claude Code에서 서비스 운영 전체(기획-개발-배포-운영-보안-개선)를 실행하실 수 있도록 스킬, 서브에이전트, 팀, 워크플로우 정의를 담고 있습니다.
|
|
4
|
+
|
|
5
|
+
## 폴더 구성
|
|
6
|
+
|
|
7
|
+
- `skills/`: Claude Skills (`SKILL.md` 기반)
|
|
8
|
+
- `subagents/`: 역할별 서브에이전트 프롬프트
|
|
9
|
+
- `agent-teams/team-catalog.json`: 팀 구성과 기본 워크플로우 매핑
|
|
10
|
+
- `workflows/workflow-catalog.json`: 단계형 실행 정의
|
|
11
|
+
- `commands/command-catalog.json`: 공통 명령 계약
|
|
12
|
+
|
|
13
|
+
## 빠른 시작
|
|
14
|
+
|
|
15
|
+
1. 워크플로우를 선택해 주세요: `WF-SVC-001`(E2E), `WF-SVC-003`(리뷰 루프), `WF-SVC-004`(보안), `WF-SVC-007`(장애 대응), `WF-PRD-IMPLEMENT-E2E`(PRD→구현)
|
|
16
|
+
2. 단계별 명령을 실행해 주세요: 각 stage의 `commands` ID 순서대로 실행
|
|
17
|
+
3. 품질 검증을 확인해 주세요: stage `exit_criteria`를 모두 충족해야 다음 단계로 이동
|
|
18
|
+
|
|
19
|
+
## 역할 분리 기준
|
|
20
|
+
|
|
21
|
+
- 반복 작업은 전문 역할로 분리합니다.
|
|
22
|
+
- UI 컴포넌트화: `ui-component-engineer`
|
|
23
|
+
- Hook 분리: `hook-refactor-engineer`
|
|
24
|
+
- 최적화: `performance-engineer`
|
|
25
|
+
- PRD 작성: `prd-writer`
|
|
26
|
+
|
|
27
|
+
## 서브에이전트 팀 운영 기준
|
|
28
|
+
|
|
29
|
+
- 리드: `lead-orchestrator`
|
|
30
|
+
- 병렬 협업: `TEAM-SVC-DELIVERY`
|
|
31
|
+
- 보안 배치: `TEAM-SEC-HARDENING`
|
|
32
|
+
- 장애 워룸: `TEAM-INCIDENT`
|
|
33
|
+
|
|
34
|
+
2026-02-17 기준으로 Agent Teams를 사용하시면 리드가 전문 에이전트에게 작업을 분배하는 구조를 안정적으로 구성하실 수 있습니다. 구현 시에는 `agent-teams/team-catalog.json`을 단일 진입점으로 사용해 주세요.
|
|
35
|
+
|
|
36
|
+
## 실제 위치로 옮기실 때
|
|
37
|
+
|
|
38
|
+
- Claude 사용자 전역: `~/.claude/agents/`, `~/.claude/skills/`
|
|
39
|
+
- 프로젝트 로컬: `<repo>/.claude/agents/`, `<repo>/.claude/skills/`
|
|
40
|
+
|
|
41
|
+
이 폴더의 하위 파일을 위 경로로 복사하신 뒤, 프로젝트의 팀 규칙에 맞게 도구 권한과 모델을 조정해 주세요.
|
|
42
|
+
|
|
43
|
+
## 참고 문서 (검증일: 2026-02-17)
|
|
44
|
+
|
|
45
|
+
- [Claude Code Subagents](https://docs.anthropic.com/en/docs/claude-code/sub-agents)
|
|
46
|
+
- [Claude Code Agent Teams](https://docs.anthropic.com/en/docs/claude-code/agent-teams)
|
|
47
|
+
- [Claude Code Skills](https://docs.anthropic.com/en/docs/claude-code/skills)
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
{
|
|
2
|
+
"schema_version": "1.0.0",
|
|
3
|
+
"note": "2026-02-17 기준 공식 Agent Teams 기능을 기준으로 작성. 팀 리드가 전문 에이전트와 병렬 협업한다.",
|
|
4
|
+
"teams": [
|
|
5
|
+
{
|
|
6
|
+
"id": "TEAM-SVC-DELIVERY",
|
|
7
|
+
"name": "서비스 딜리버리 팀",
|
|
8
|
+
"lead": "lead-orchestrator",
|
|
9
|
+
"members": [
|
|
10
|
+
"prd-writer",
|
|
11
|
+
"product-planner",
|
|
12
|
+
"solution-architect",
|
|
13
|
+
"backend-engineer",
|
|
14
|
+
"frontend-engineer",
|
|
15
|
+
"ui-component-engineer",
|
|
16
|
+
"hook-refactor-engineer",
|
|
17
|
+
"performance-engineer",
|
|
18
|
+
"qa-engineer",
|
|
19
|
+
"code-reviewer",
|
|
20
|
+
"security-engineer",
|
|
21
|
+
"sre-release-engineer",
|
|
22
|
+
"operations-owner"
|
|
23
|
+
],
|
|
24
|
+
"default_workflows": [
|
|
25
|
+
"WF-SVC-001",
|
|
26
|
+
"WF-SVC-002",
|
|
27
|
+
"WF-SVC-005",
|
|
28
|
+
"WF-SVC-006",
|
|
29
|
+
"WF-PRD-IMPLEMENT-E2E"
|
|
30
|
+
]
|
|
31
|
+
},
|
|
32
|
+
{
|
|
33
|
+
"id": "TEAM-SEC-HARDENING",
|
|
34
|
+
"name": "보안 하드닝 팀",
|
|
35
|
+
"lead": "lead-orchestrator",
|
|
36
|
+
"members": [
|
|
37
|
+
"security-engineer",
|
|
38
|
+
"backend-engineer",
|
|
39
|
+
"qa-engineer",
|
|
40
|
+
"code-reviewer",
|
|
41
|
+
"sre-release-engineer"
|
|
42
|
+
],
|
|
43
|
+
"default_workflows": [
|
|
44
|
+
"WF-SVC-004"
|
|
45
|
+
]
|
|
46
|
+
},
|
|
47
|
+
{
|
|
48
|
+
"id": "TEAM-INCIDENT",
|
|
49
|
+
"name": "장애 대응 팀",
|
|
50
|
+
"lead": "lead-orchestrator",
|
|
51
|
+
"members": [
|
|
52
|
+
"operations-owner",
|
|
53
|
+
"sre-release-engineer",
|
|
54
|
+
"incident-commander",
|
|
55
|
+
"backend-engineer",
|
|
56
|
+
"security-engineer",
|
|
57
|
+
"code-reviewer"
|
|
58
|
+
],
|
|
59
|
+
"default_workflows": [
|
|
60
|
+
"WF-SVC-007"
|
|
61
|
+
]
|
|
62
|
+
}
|
|
63
|
+
],
|
|
64
|
+
"collaboration_rules": [
|
|
65
|
+
"리드는 목표와 완료 기준만 전달하고 구현 방식은 역할 에이전트에 위임한다.",
|
|
66
|
+
"모든 하위 작업은 command-catalog의 ID를 참조해야 한다.",
|
|
67
|
+
"결과물은 단계 종료 시 workflow-catalog의 exit_criteria로 검증한다."
|
|
68
|
+
]
|
|
69
|
+
}
|