@wooojin/forgen 0.1.0

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.
Files changed (268) hide show
  1. package/.claude-plugin/plugin.json +20 -0
  2. package/CHANGELOG.md +353 -0
  3. package/CONTRIBUTING.md +98 -0
  4. package/LICENSE +21 -0
  5. package/README.ja.md +469 -0
  6. package/README.ko.md +469 -0
  7. package/README.md +483 -0
  8. package/README.zh.md +469 -0
  9. package/agents/analyst.md +98 -0
  10. package/agents/architect.md +62 -0
  11. package/agents/code-reviewer.md +120 -0
  12. package/agents/code-simplifier.md +197 -0
  13. package/agents/critic.md +70 -0
  14. package/agents/debugger.md +117 -0
  15. package/agents/designer.md +131 -0
  16. package/agents/executor.md +54 -0
  17. package/agents/explore.md +145 -0
  18. package/agents/git-master.md +212 -0
  19. package/agents/performance-reviewer.md +172 -0
  20. package/agents/planner.md +29 -0
  21. package/agents/qa-tester.md +158 -0
  22. package/agents/refactoring-expert.md +168 -0
  23. package/agents/scientist.md +144 -0
  24. package/agents/security-reviewer.md +137 -0
  25. package/agents/test-engineer.md +153 -0
  26. package/agents/verifier.md +133 -0
  27. package/agents/writer.md +184 -0
  28. package/commands/api-design.md +268 -0
  29. package/commands/architecture-decision.md +314 -0
  30. package/commands/ci-cd.md +270 -0
  31. package/commands/code-review.md +233 -0
  32. package/commands/compound.md +117 -0
  33. package/commands/database.md +263 -0
  34. package/commands/debug-detective.md +99 -0
  35. package/commands/docker.md +274 -0
  36. package/commands/documentation.md +276 -0
  37. package/commands/ecomode.md +51 -0
  38. package/commands/frontend.md +271 -0
  39. package/commands/git-master.md +90 -0
  40. package/commands/incident-response.md +292 -0
  41. package/commands/migrate.md +101 -0
  42. package/commands/performance.md +288 -0
  43. package/commands/refactor.md +105 -0
  44. package/commands/security-review.md +288 -0
  45. package/commands/tdd.md +183 -0
  46. package/commands/testing-strategy.md +265 -0
  47. package/dist/cli.d.ts +2 -0
  48. package/dist/cli.js +295 -0
  49. package/dist/core/auto-compound-runner.d.ts +12 -0
  50. package/dist/core/auto-compound-runner.js +460 -0
  51. package/dist/core/config-hooks.d.ts +10 -0
  52. package/dist/core/config-hooks.js +112 -0
  53. package/dist/core/config-injector.d.ts +50 -0
  54. package/dist/core/config-injector.js +455 -0
  55. package/dist/core/doctor.d.ts +1 -0
  56. package/dist/core/doctor.js +163 -0
  57. package/dist/core/errors.d.ts +81 -0
  58. package/dist/core/errors.js +133 -0
  59. package/dist/core/global-config.d.ts +43 -0
  60. package/dist/core/global-config.js +25 -0
  61. package/dist/core/harness.d.ts +24 -0
  62. package/dist/core/harness.js +621 -0
  63. package/dist/core/init.d.ts +7 -0
  64. package/dist/core/init.js +37 -0
  65. package/dist/core/inspect-cli.d.ts +7 -0
  66. package/dist/core/inspect-cli.js +47 -0
  67. package/dist/core/legacy-detector.d.ts +33 -0
  68. package/dist/core/legacy-detector.js +66 -0
  69. package/dist/core/logger.d.ts +34 -0
  70. package/dist/core/logger.js +121 -0
  71. package/dist/core/mcp-config.d.ts +44 -0
  72. package/dist/core/mcp-config.js +177 -0
  73. package/dist/core/notepad.d.ts +31 -0
  74. package/dist/core/notepad.js +88 -0
  75. package/dist/core/paths.d.ts +85 -0
  76. package/dist/core/paths.js +101 -0
  77. package/dist/core/plugin-detector.d.ts +44 -0
  78. package/dist/core/plugin-detector.js +226 -0
  79. package/dist/core/runtime-detector.d.ts +8 -0
  80. package/dist/core/runtime-detector.js +49 -0
  81. package/dist/core/scope-resolver.d.ts +8 -0
  82. package/dist/core/scope-resolver.js +45 -0
  83. package/dist/core/session-logger.d.ts +6 -0
  84. package/dist/core/session-logger.js +111 -0
  85. package/dist/core/session-store.d.ts +28 -0
  86. package/dist/core/session-store.js +218 -0
  87. package/dist/core/settings-lock.d.ts +18 -0
  88. package/dist/core/settings-lock.js +125 -0
  89. package/dist/core/spawn.d.ts +3 -0
  90. package/dist/core/spawn.js +135 -0
  91. package/dist/core/types.d.ts +108 -0
  92. package/dist/core/types.js +1 -0
  93. package/dist/core/uninstall.d.ts +4 -0
  94. package/dist/core/uninstall.js +307 -0
  95. package/dist/core/v1-bootstrap.d.ts +26 -0
  96. package/dist/core/v1-bootstrap.js +155 -0
  97. package/dist/engine/compound-cli.d.ts +24 -0
  98. package/dist/engine/compound-cli.js +250 -0
  99. package/dist/engine/compound-extractor.d.ts +68 -0
  100. package/dist/engine/compound-extractor.js +860 -0
  101. package/dist/engine/compound-lifecycle.d.ts +32 -0
  102. package/dist/engine/compound-lifecycle.js +305 -0
  103. package/dist/engine/compound-loop.d.ts +32 -0
  104. package/dist/engine/compound-loop.js +511 -0
  105. package/dist/engine/match-eval-log.d.ts +139 -0
  106. package/dist/engine/match-eval-log.js +270 -0
  107. package/dist/engine/phrase-blocklist.d.ts +119 -0
  108. package/dist/engine/phrase-blocklist.js +208 -0
  109. package/dist/engine/skill-promoter.d.ts +20 -0
  110. package/dist/engine/skill-promoter.js +115 -0
  111. package/dist/engine/solution-format.d.ts +160 -0
  112. package/dist/engine/solution-format.js +432 -0
  113. package/dist/engine/solution-index.d.ts +13 -0
  114. package/dist/engine/solution-index.js +252 -0
  115. package/dist/engine/solution-matcher.d.ts +364 -0
  116. package/dist/engine/solution-matcher.js +656 -0
  117. package/dist/engine/solution-writer.d.ts +76 -0
  118. package/dist/engine/solution-writer.js +157 -0
  119. package/dist/engine/term-matcher.d.ts +81 -0
  120. package/dist/engine/term-matcher.js +268 -0
  121. package/dist/engine/term-normalizer.d.ts +116 -0
  122. package/dist/engine/term-normalizer.js +171 -0
  123. package/dist/fgx.d.ts +6 -0
  124. package/dist/fgx.js +42 -0
  125. package/dist/forge/cli.d.ts +11 -0
  126. package/dist/forge/cli.js +100 -0
  127. package/dist/forge/evidence-processor.d.ts +21 -0
  128. package/dist/forge/evidence-processor.js +87 -0
  129. package/dist/forge/mismatch-detector.d.ts +44 -0
  130. package/dist/forge/mismatch-detector.js +83 -0
  131. package/dist/forge/onboarding-cli.d.ts +6 -0
  132. package/dist/forge/onboarding-cli.js +89 -0
  133. package/dist/forge/onboarding.d.ts +25 -0
  134. package/dist/forge/onboarding.js +122 -0
  135. package/dist/hooks/compound-reflection.d.ts +45 -0
  136. package/dist/hooks/compound-reflection.js +82 -0
  137. package/dist/hooks/context-guard.d.ts +24 -0
  138. package/dist/hooks/context-guard.js +156 -0
  139. package/dist/hooks/dangerous-patterns.json +18 -0
  140. package/dist/hooks/db-guard.d.ts +17 -0
  141. package/dist/hooks/db-guard.js +105 -0
  142. package/dist/hooks/hook-config.d.ts +29 -0
  143. package/dist/hooks/hook-config.js +92 -0
  144. package/dist/hooks/hook-registry.d.ts +43 -0
  145. package/dist/hooks/hook-registry.js +31 -0
  146. package/dist/hooks/hooks-generator.d.ts +49 -0
  147. package/dist/hooks/hooks-generator.js +99 -0
  148. package/dist/hooks/intent-classifier.d.ts +12 -0
  149. package/dist/hooks/intent-classifier.js +62 -0
  150. package/dist/hooks/keyword-detector.d.ts +25 -0
  151. package/dist/hooks/keyword-detector.js +389 -0
  152. package/dist/hooks/notepad-injector.d.ts +18 -0
  153. package/dist/hooks/notepad-injector.js +51 -0
  154. package/dist/hooks/permission-handler.d.ts +14 -0
  155. package/dist/hooks/permission-handler.js +114 -0
  156. package/dist/hooks/post-tool-failure.d.ts +11 -0
  157. package/dist/hooks/post-tool-failure.js +118 -0
  158. package/dist/hooks/post-tool-handlers.d.ts +17 -0
  159. package/dist/hooks/post-tool-handlers.js +115 -0
  160. package/dist/hooks/post-tool-use.d.ts +29 -0
  161. package/dist/hooks/post-tool-use.js +151 -0
  162. package/dist/hooks/pre-compact.d.ts +10 -0
  163. package/dist/hooks/pre-compact.js +165 -0
  164. package/dist/hooks/pre-tool-use.d.ts +31 -0
  165. package/dist/hooks/pre-tool-use.js +325 -0
  166. package/dist/hooks/prompt-injection-filter.d.ts +56 -0
  167. package/dist/hooks/prompt-injection-filter.js +287 -0
  168. package/dist/hooks/rate-limiter.d.ts +21 -0
  169. package/dist/hooks/rate-limiter.js +86 -0
  170. package/dist/hooks/secret-filter.d.ts +14 -0
  171. package/dist/hooks/secret-filter.js +65 -0
  172. package/dist/hooks/session-recovery.d.ts +27 -0
  173. package/dist/hooks/session-recovery.js +406 -0
  174. package/dist/hooks/shared/atomic-write.d.ts +41 -0
  175. package/dist/hooks/shared/atomic-write.js +148 -0
  176. package/dist/hooks/shared/context-budget.d.ts +37 -0
  177. package/dist/hooks/shared/context-budget.js +45 -0
  178. package/dist/hooks/shared/file-lock.d.ts +56 -0
  179. package/dist/hooks/shared/file-lock.js +253 -0
  180. package/dist/hooks/shared/hook-response.d.ts +33 -0
  181. package/dist/hooks/shared/hook-response.js +62 -0
  182. package/dist/hooks/shared/injection-caps.d.ts +39 -0
  183. package/dist/hooks/shared/injection-caps.js +52 -0
  184. package/dist/hooks/shared/plugin-signal.d.ts +23 -0
  185. package/dist/hooks/shared/plugin-signal.js +104 -0
  186. package/dist/hooks/shared/read-stdin.d.ts +8 -0
  187. package/dist/hooks/shared/read-stdin.js +63 -0
  188. package/dist/hooks/shared/sanitize-id.d.ts +7 -0
  189. package/dist/hooks/shared/sanitize-id.js +9 -0
  190. package/dist/hooks/shared/sanitize.d.ts +7 -0
  191. package/dist/hooks/shared/sanitize.js +22 -0
  192. package/dist/hooks/skill-injector.d.ts +38 -0
  193. package/dist/hooks/skill-injector.js +285 -0
  194. package/dist/hooks/slop-detector.d.ts +18 -0
  195. package/dist/hooks/slop-detector.js +93 -0
  196. package/dist/hooks/solution-injector.d.ts +58 -0
  197. package/dist/hooks/solution-injector.js +436 -0
  198. package/dist/hooks/subagent-tracker.d.ts +10 -0
  199. package/dist/hooks/subagent-tracker.js +90 -0
  200. package/dist/i18n/index.d.ts +43 -0
  201. package/dist/i18n/index.js +224 -0
  202. package/dist/lib.d.ts +14 -0
  203. package/dist/lib.js +14 -0
  204. package/dist/mcp/server.d.ts +8 -0
  205. package/dist/mcp/server.js +40 -0
  206. package/dist/mcp/solution-reader.d.ts +90 -0
  207. package/dist/mcp/solution-reader.js +273 -0
  208. package/dist/mcp/tools.d.ts +16 -0
  209. package/dist/mcp/tools.js +302 -0
  210. package/dist/preset/facet-catalog.d.ts +17 -0
  211. package/dist/preset/facet-catalog.js +46 -0
  212. package/dist/preset/preset-manager.d.ts +31 -0
  213. package/dist/preset/preset-manager.js +111 -0
  214. package/dist/renderer/inspect-renderer.d.ts +11 -0
  215. package/dist/renderer/inspect-renderer.js +123 -0
  216. package/dist/renderer/rule-renderer.d.ts +18 -0
  217. package/dist/renderer/rule-renderer.js +159 -0
  218. package/dist/store/evidence-store.d.ts +23 -0
  219. package/dist/store/evidence-store.js +58 -0
  220. package/dist/store/profile-store.d.ts +12 -0
  221. package/dist/store/profile-store.js +53 -0
  222. package/dist/store/recommendation-store.d.ts +22 -0
  223. package/dist/store/recommendation-store.js +64 -0
  224. package/dist/store/rule-store.d.ts +22 -0
  225. package/dist/store/rule-store.js +62 -0
  226. package/dist/store/session-state-store.d.ts +11 -0
  227. package/dist/store/session-state-store.js +44 -0
  228. package/dist/store/types.d.ts +159 -0
  229. package/dist/store/types.js +7 -0
  230. package/hooks/hook-registry.json +21 -0
  231. package/hooks/hooks.json +185 -0
  232. package/package.json +89 -0
  233. package/plugin.json +20 -0
  234. package/scripts/postinstall.js +826 -0
  235. package/skills/api-design/SKILL.md +262 -0
  236. package/skills/architecture-decision/SKILL.md +309 -0
  237. package/skills/ci-cd/SKILL.md +264 -0
  238. package/skills/code-review/SKILL.md +228 -0
  239. package/skills/compound/SKILL.md +101 -0
  240. package/skills/database/SKILL.md +257 -0
  241. package/skills/debug-detective/SKILL.md +95 -0
  242. package/skills/docker/SKILL.md +268 -0
  243. package/skills/documentation/SKILL.md +270 -0
  244. package/skills/ecomode/SKILL.md +46 -0
  245. package/skills/frontend/SKILL.md +265 -0
  246. package/skills/git-master/SKILL.md +86 -0
  247. package/skills/incident-response/SKILL.md +286 -0
  248. package/skills/migrate/SKILL.md +96 -0
  249. package/skills/performance/SKILL.md +282 -0
  250. package/skills/refactor/SKILL.md +100 -0
  251. package/skills/security-review/SKILL.md +282 -0
  252. package/skills/tdd/SKILL.md +178 -0
  253. package/skills/testing-strategy/SKILL.md +260 -0
  254. package/starter-pack/solutions/starter-api-error-responses.md +37 -0
  255. package/starter-pack/solutions/starter-async-patterns.md +40 -0
  256. package/starter-pack/solutions/starter-caching-strategy.md +40 -0
  257. package/starter-pack/solutions/starter-code-review-checklist.md +39 -0
  258. package/starter-pack/solutions/starter-debugging-systematic.md +40 -0
  259. package/starter-pack/solutions/starter-dependency-injection.md +40 -0
  260. package/starter-pack/solutions/starter-error-handling-patterns.md +38 -0
  261. package/starter-pack/solutions/starter-git-atomic-commits.md +36 -0
  262. package/starter-pack/solutions/starter-input-validation.md +40 -0
  263. package/starter-pack/solutions/starter-n-plus-one-queries.md +37 -0
  264. package/starter-pack/solutions/starter-refactor-safely.md +38 -0
  265. package/starter-pack/solutions/starter-secret-management.md +37 -0
  266. package/starter-pack/solutions/starter-separation-of-concerns.md +36 -0
  267. package/starter-pack/solutions/starter-tdd-red-green-refactor.md +40 -0
  268. package/starter-pack/solutions/starter-typescript-strict-types.md +39 -0
@@ -0,0 +1,99 @@
1
+ ---
2
+ name: debug-detective
3
+ description: This skill should be used when the user asks to "debug-detective,디버그탐정,체계적디버깅". Systematic debugging with reproduce-isolate-fix-verify loop
4
+ triggers:
5
+ - "debug-detective"
6
+ - "디버그탐정"
7
+ - "체계적디버깅"
8
+ ---
9
+
10
+ <Purpose>
11
+ 재현→격리→수정→검증의 4단계 루프를 통해 버그를 체계적으로 추적합니다.
12
+ 에러 분류, git bisect, 최소 재현 사례 구성으로 근본 원인을 신속히 파악합니다.
13
+ </Purpose>
14
+
15
+ <Steps>
16
+ 1. **재현 (Reproduce)**
17
+ - 버그 재현 조건을 최대한 구체적으로 문서화
18
+ ```
19
+ 환경: Node 20.x, macOS 14.3
20
+ 입력값: { userId: null, action: "delete" }
21
+ 예상 동작: 422 Validation Error
22
+ 실제 동작: 500 Internal Server Error
23
+ 재현율: 100% / 간헐적 (~30%)
24
+ ```
25
+ - 간헐적 버그: 로그 레벨 높이고 반복 실행으로 패턴 포착
26
+ - 환경 차이 확인: 로컬 vs CI vs 프로덕션
27
+
28
+ 2. **격리 (Isolate)**
29
+ - **에러 분류**:
30
+ - **런타임 에러**: TypeError, ReferenceError → 스택 트레이스 추적
31
+ - **타입 에러**: TS 컴파일 에러 → 타입 정의 불일치 확인
32
+ - **논리 에러**: 잘못된 계산/조건 → 중간값 로깅
33
+ - **비동기 에러**: Promise rejection, race condition → async/await 추적
34
+ - **Bisect 전략**:
35
+ ```bash
36
+ # git bisect로 버그 도입 커밋 이진 탐색
37
+ git bisect start
38
+ git bisect bad # 현재 커밋은 버그 있음
39
+ git bisect good <마지막_정상_sha> # 정상 커밋 지정
40
+ # Git이 자동으로 중간 커밋 체크아웃
41
+ # 테스트 후 good/bad 판정 반복
42
+ git bisect run npm test # 자동화 가능
43
+ git bisect reset # 완료 후 원상복구
44
+ ```
45
+ - **최소 재현 사례 구성**: 관련 없는 코드를 제거해 가장 단순한 형태로 축소
46
+
47
+ 3. **로그 분석 패턴**
48
+ ```typescript
49
+ // 구조화 로그로 맥락 추가
50
+ logger.error('결제 처리 실패', {
51
+ userId, orderId, amount,
52
+ stack: err.stack,
53
+ timestamp: new Date().toISOString(),
54
+ });
55
+
56
+ // 조건부 디버그 로그 (프로덕션 영향 최소화)
57
+ if (process.env.DEBUG_PAYMENT) {
58
+ console.log('[DEBUG]', JSON.stringify({ state, payload }, null, 2));
59
+ }
60
+ ```
61
+ - 타임스탬프 정렬 → 이벤트 순서 파악
62
+ - 상관관계 ID(correlation ID)로 분산 로그 추적
63
+
64
+ 4. **수정 (Fix)**
65
+ - 근본 원인(root cause)을 먼저 명시
66
+ - 증상만 치료하는 패치 금지 → 원인 제거
67
+ - 수정 범위를 최소화 (side effect 방지)
68
+ - 수정 전후 코드 diff를 커밋 메시지에 설명
69
+
70
+ 5. **검증 (Verify)**
71
+ - 버그 재현 시나리오를 회귀 테스트로 추가
72
+ - 원래 문제가 해결됐는지 확인
73
+ - 관련 기능에 새 버그가 생기지 않았는지 확인
74
+ - 스테이징 → 프로덕션 순서로 검증
75
+ </Steps>
76
+
77
+ <Policy>
78
+ - 추측 기반 수정 금지 — 반드시 재현 먼저
79
+ - 로그 추가 시 민감 정보(비밀번호, 토큰) 절대 출력 금지
80
+ - 수정 후 해당 버그의 회귀 테스트 1개 이상 추가
81
+ - 간헐적 버그는 최소 10회 연속 통과 후 수정 완료 판정
82
+ </Policy>
83
+
84
+ <Arguments>
85
+ ## 사용법
86
+ `/forgen:debug-detective {버그 설명}`
87
+
88
+ ### 예시
89
+ - `/forgen:debug-detective 로그인 후 가끔 401 에러가 발생함 (재현율 20%)`
90
+ - `/forgen:debug-detective 최근 배포 후 결제 API 응답 시간이 3배 증가`
91
+ - `/forgen:debug-detective TypeScript 컴파일은 되는데 런타임에서 undefined 에러`
92
+
93
+ ### 인자
94
+ - 버그 증상과 재현 조건
95
+ - 발생 환경 (로컬/스테이징/프로덕션)
96
+ - 관련 에러 메시지나 스택 트레이스
97
+ </Arguments>
98
+
99
+ $ARGUMENTS
@@ -0,0 +1,274 @@
1
+ ---
2
+ name: docker
3
+ description: This skill should be used when the user asks to "docker,container,컨테이너,dockerfile,도커,docker-compose". Containerization with Docker, Dockerfile optimization, and compose configuration
4
+ triggers:
5
+ - "docker"
6
+ - "container"
7
+ - "컨테이너"
8
+ - "dockerfile"
9
+ - "도커"
10
+ - "docker-compose"
11
+ ---
12
+ <!-- forgen-managed -->
13
+
14
+ <Purpose>
15
+ Docker를 활용한 컨테이너화를 체계적으로 수행합니다.
16
+ 의존성 분석, Dockerfile 작성, 레이어 최적화,
17
+ Docker Compose 구성, 헬스 체크까지 컨테이너 라이프사이클 전체를 다룹니다.
18
+ </Purpose>
19
+
20
+ <Steps>
21
+ 1. **의존성 분석**: 애플리케이션의 런타임 요구사항을 파악합니다
22
+ - 런타임 환경 (Node.js, Python, Go 등)
23
+ - 시스템 의존성 (네이티브 바이너리, 라이브러리)
24
+ - 환경 변수 목록 및 기본값
25
+ - 포트 매핑 (애플리케이션 포트, 디버그 포트)
26
+ - 볼륨 마운트 필요 사항 (데이터 영속성, 설정 파일)
27
+ - 외부 서비스 의존성 (DB, Redis, 메시지 큐)
28
+
29
+ 2. **Dockerfile 작성**: 최적화된 Dockerfile을 구성합니다
30
+ - 베이스 이미지 선택 (alpine vs slim vs distroless)
31
+ - 멀티스테이지 빌드 적용 (빌드 스테이지 / 런타임 스테이지)
32
+ - 레이어 캐싱 최적화 (변경 빈도 낮은 것부터 순서)
33
+ * 시스템 의존성 설치
34
+ * package.json / lockfile 복사 + npm install
35
+ * 소스 코드 복사 + 빌드
36
+ - .dockerignore 설정 (node_modules, .git, 테스트 파일)
37
+ - 비루트 사용자 설정 (보안)
38
+ - 시그널 핸들링 (SIGTERM graceful shutdown)
39
+ - HEALTHCHECK 명령 설정
40
+
41
+ 3. **이미지 최적화**: 이미지 크기와 보안을 개선합니다
42
+ - 레이어 수 최소화 (RUN 명령 결합)
43
+ - 불필요한 파일 제거 (빌드 도구, 캐시, 문서)
44
+ - 프로덕션 의존성만 설치 (--omit=dev)
45
+ - 이미지 크기 측정 및 목표 설정
46
+ - 보안 스캔 (Trivy, Docker Scout)
47
+ - 이미지 태깅 전략 (semver, git SHA, latest)
48
+
49
+ 4. **Docker Compose 구성**: 멀티 컨테이너 환경을 정의합니다
50
+ - 서비스 정의 (app, db, cache, proxy)
51
+ - 네트워크 구성 (서비스 간 통신)
52
+ - 볼륨 정의 (데이터 영속성)
53
+ - 환경 변수 관리 (.env 파일, 인라인)
54
+ - 의존성 순서 (depends_on + healthcheck)
55
+ - 개발/프로덕션 오버라이드 분리
56
+ - 리소스 제한 설정 (CPU, 메모리)
57
+
58
+ 5. **헬스 체크 및 모니터링**: 컨테이너 상태를 관리합니다
59
+ - HEALTHCHECK 엔드포인트 구현 (/health, /ready)
60
+ - Liveness probe vs Readiness probe 구분
61
+ - 로그 수집 구성 (stdout/stderr → 로그 시스템)
62
+ - 메트릭 노출 (Prometheus 엔드포인트)
63
+ - Graceful shutdown 구현 (SIGTERM 처리)
64
+ - 재시작 정책 설정 (restart: unless-stopped)
65
+ </Steps>
66
+
67
+ ## 에이전트 위임
68
+
69
+ `executor` 에이전트(Sonnet 모델)에 위임하여 Docker 구성을 구현합니다:
70
+
71
+ ```
72
+ Agent(
73
+ subagent_type="executor",
74
+ model="sonnet",
75
+ prompt="DOCKER TASK
76
+
77
+ Docker 컨테이너화를 구현하세요.
78
+
79
+ Application: [애플리케이션 설명]
80
+ Runtime: [Node.js / Python / Go / etc.]
81
+ Services: [필요한 외부 서비스 목록]
82
+
83
+ Docker Checklist:
84
+ 1. Dockerfile 작성 (멀티스테이지, 최적화)
85
+ 2. .dockerignore 설정
86
+ 3. Docker Compose 구성 (개발/프로덕션)
87
+ 4. 헬스 체크 설정
88
+ 5. 보안 설정 (비루트 사용자, 이미지 스캔)
89
+ 6. 볼륨 및 네트워크 구성
90
+
91
+ Output: Docker 구성 파일 및 문서:
92
+ - Dockerfile
93
+ - .dockerignore
94
+ - docker-compose.yml (dev/prod)
95
+ - 이미지 크기 리포트
96
+ - 실행 명령 가이드"
97
+ )
98
+ ```
99
+
100
+ ## External Consultation (Optional)
101
+
102
+ executor 에이전트는 교차 검증을 위해 Claude Task 에이전트에 자문할 수 있습니다.
103
+
104
+ ### Protocol
105
+ 1. **자체 Docker 구성을 먼저 완료** -- 독립적으로 구현
106
+ 2. **검증을 위한 자문** -- Claude Task 에이전트를 통해 구성 교차 확인
107
+ 3. **비판적 평가** -- 외부 제안을 맹목적으로 수용하지 않음
108
+ 4. **우아한 폴백** -- 위임이 불가능할 경우 절대 차단하지 않음
109
+
110
+ ### 자문이 필요한 경우
111
+ - 복잡한 멀티스테이지 빌드
112
+ - 프로덕션 수준의 보안 강화
113
+ - 오케스트레이션 (Kubernetes 연동)
114
+ - 네이티브 의존성이 있는 이미지 최적화
115
+
116
+ ### 자문을 생략하는 경우
117
+ - 단순 Node.js/Python 컨테이너화
118
+ - 개발 환경용 Docker Compose
119
+ - 잘 알려진 이미지 패턴
120
+ - 기존 Dockerfile의 경미한 수정
121
+
122
+ ## Docker 체크리스트
123
+
124
+ ### Dockerfile (6개)
125
+ - [ ] 멀티스테이지 빌드 적용
126
+ - [ ] 베이스 이미지에 고정 태그 사용 (latest 금지)
127
+ - [ ] 비루트 사용자로 실행
128
+ - [ ] .dockerignore가 적절히 설정됨
129
+ - [ ] 레이어 캐싱이 최적화됨
130
+ - [ ] HEALTHCHECK가 설정됨
131
+
132
+ ### 보안 (4개)
133
+ - [ ] 이미지 취약점 스캔 완료
134
+ - [ ] 최소 권한 원칙 적용 (비루트, 읽기 전용 파일시스템)
135
+ - [ ] 시크릿이 이미지에 포함되지 않음
136
+ - [ ] 불필요한 도구/패키지가 제거됨
137
+
138
+ ### 운영 (4개)
139
+ - [ ] Graceful shutdown이 구현됨 (SIGTERM)
140
+ - [ ] 로그가 stdout/stderr로 출력됨
141
+ - [ ] 리소스 제한이 설정됨
142
+ - [ ] 재시작 정책이 설정됨
143
+
144
+ ### Compose (4개)
145
+ - [ ] 서비스 간 의존성이 healthcheck 기반으로 설정됨
146
+ - [ ] 개발/프로덕션 오버라이드가 분리됨
147
+ - [ ] 볼륨이 데이터 영속성에 적절히 사용됨
148
+ - [ ] 네트워크가 서비스별로 격리됨
149
+
150
+ ## 이미지 크기 기준
151
+
152
+ | 런타임 | 목표 크기 | 베이스 이미지 |
153
+ |--------|-----------|--------------|
154
+ | Node.js | < 150MB | node:20-alpine |
155
+ | Python | < 200MB | python:3.12-slim |
156
+ | Go | < 30MB | gcr.io/distroless/static |
157
+ | Rust | < 30MB | debian:bookworm-slim (빌드) + scratch (런타임) |
158
+
159
+ <Output>
160
+ ```
161
+ DOCKER CONFIGURATION / Docker 구성 문서
162
+ =========================================
163
+
164
+ Application: [애플리케이션명]
165
+ Runtime: [Node.js 20]
166
+ Image Size: [최종 이미지 크기]
167
+
168
+ DOCKERFILE / Dockerfile
169
+ -------------------------
170
+ # Build stage
171
+ FROM node:20-alpine AS builder
172
+ WORKDIR /app
173
+ COPY package*.json ./
174
+ RUN npm ci --omit=dev
175
+ COPY . .
176
+ RUN npm run build
177
+
178
+ # Runtime stage
179
+ FROM node:20-alpine AS runtime
180
+ RUN addgroup -g 1001 -S appgroup && \
181
+ adduser -S appuser -u 1001 -G appgroup
182
+ WORKDIR /app
183
+ COPY --from=builder --chown=appuser:appgroup /app/dist ./dist
184
+ COPY --from=builder --chown=appuser:appgroup /app/node_modules ./node_modules
185
+ USER appuser
186
+ EXPOSE 3000
187
+ HEALTHCHECK --interval=30s --timeout=3s \
188
+ CMD wget --no-verbose --tries=1 --spider http://localhost:3000/health || exit 1
189
+ CMD ["node", "dist/index.js"]
190
+
191
+ DOCKER COMPOSE / docker-compose.yml
192
+ --------------------------------------
193
+ services:
194
+ app:
195
+ build: .
196
+ ports: ["3000:3000"]
197
+ depends_on:
198
+ db: { condition: service_healthy }
199
+ environment:
200
+ DATABASE_URL: postgres://user:pass@db:5432/app
201
+ db:
202
+ image: postgres:16-alpine
203
+ volumes: ["pgdata:/var/lib/postgresql/data"]
204
+ healthcheck:
205
+ test: ["CMD-SHELL", "pg_isready"]
206
+
207
+ IMAGE ANALYSIS / 이미지 분석
208
+ ------------------------------
209
+ Total Size: 142MB
210
+ Layers: 8
211
+ Base Image: node:20-alpine (45MB)
212
+ Dependencies: 85MB
213
+ Application: 12MB
214
+
215
+ SECURITY SCAN / 보안 스캔
216
+ ---------------------------
217
+ Vulnerabilities: 0 CRITICAL, 0 HIGH, 2 MEDIUM
218
+ Recommendation: [조치 사항]
219
+ ```
220
+ </Output>
221
+
222
+ <Policy>
223
+ - 베이스 이미지에 항상 고정 태그를 사용합니다 (latest 금지)
224
+ - 프로덕션 이미지에서 반드시 비루트 사용자로 실행합니다
225
+ - 시크릿은 절대 이미지에 포함하지 않습니다 (빌드 시에도)
226
+ - 이미지 크기를 정기적으로 모니터링합니다
227
+ - 보안 스캔을 CI/CD에 통합하여 취약한 이미지 배포를 차단합니다
228
+ - Graceful shutdown을 반드시 구현하여 데이터 손실을 방지합니다
229
+ </Policy>
230
+
231
+ ## 다른 스킬과의 연동
232
+
233
+ **CI/CD 연동:**
234
+ ```
235
+ /forgen:ci-cd Docker 이미지 빌드 및 푸시 파이프라인
236
+ ```
237
+ CI에서 Docker 이미지 자동 빌드/배포
238
+
239
+ **보안 리뷰 연동:**
240
+ ```
241
+ /forgen:security-review Dockerfile 및 이미지
242
+ ```
243
+ Docker 구성의 보안 취약점 점검
244
+
245
+ **성능 연동:**
246
+ ```
247
+ /forgen:performance 컨테이너 리소스 사용량 분석
248
+ ```
249
+ 컨테이너의 리소스 최적화
250
+
251
+ ## Best Practices
252
+
253
+ - **작은 이미지** -- 불필요한 것을 빼서 크기를 줄임
254
+ - **멀티스테이지** -- 빌드 도구를 런타임에 포함하지 않음
255
+ - **캐시 활용** -- 레이어 순서를 변경 빈도 기준으로 정렬
256
+ - **보안 우선** -- 비루트, 최소 권한, 시크릿 분리
257
+ - **헬스 체크** -- 컨테이너 상태를 자동으로 모니터링
258
+
259
+ <Arguments>
260
+ ## 사용법
261
+ `/forgen:docker {컨테이너화 대상}`
262
+
263
+ ### 예시
264
+ - `/forgen:docker Node.js API 서버 컨테이너화`
265
+ - `/forgen:docker 기존 Dockerfile 최적화`
266
+ - `/forgen:docker 개발 환경 Docker Compose 구성`
267
+ - `/forgen:docker 프로덕션 배포용 이미지 보안 강화`
268
+
269
+ ### 인자
270
+ - 컨테이너화할 애플리케이션, 최적화 목표 등을 설명
271
+ - 인자 없으면 프로젝트를 분석하여 적절한 Docker 구성을 제안
272
+ </Arguments>
273
+
274
+ $ARGUMENTS
@@ -0,0 +1,276 @@
1
+ ---
2
+ name: documentation
3
+ description: This skill should be used when the user asks to "documentation,문서화,docs,기술 문서,readme,API docs". Technical documentation writing with audience analysis and structured content
4
+ triggers:
5
+ - "documentation"
6
+ - "문서화"
7
+ - "docs"
8
+ - "기술 문서"
9
+ - "readme"
10
+ - "API docs"
11
+ ---
12
+ <!-- forgen-managed -->
13
+
14
+ <Purpose>
15
+ 기술 문서를 체계적으로 작성합니다.
16
+ 대상 독자 분석, 정보 구조 설계, 초안 작성, 리뷰, 배포까지
17
+ 기술 문서의 전체 라이프사이클을 다룹니다.
18
+ </Purpose>
19
+
20
+ <Steps>
21
+ 1. **대상 독자 분석**: 문서를 읽을 사람을 파악합니다
22
+ - 독자의 기술 수준 (초급/중급/고급)
23
+ - 독자의 역할 (개발자, DevOps, PM, 최종 사용자)
24
+ - 독자가 달성하려는 목표 (설치, 통합, 트러블슈팅)
25
+ - 사전 지식 가정 (프로그래밍 언어, 프레임워크, 도메인)
26
+ - 문서 접근 맥락 (처음 사용 vs 참조 vs 문제 해결)
27
+
28
+ 2. **정보 구조 설계**: 문서의 뼈대를 구성합니다
29
+ - 문서 유형 결정:
30
+ * Tutorial (학습 지향) -- "이렇게 해보세요"
31
+ * How-to Guide (목표 지향) -- "이렇게 하면 됩니다"
32
+ * Reference (정보 지향) -- "이것은 이렇습니다"
33
+ * Explanation (이해 지향) -- "이것이 왜 이렇게 동작합니다"
34
+ - 목차(TOC) 초안 작성
35
+ - 섹션별 깊이와 범위 결정
36
+ - 네비게이션 구조 (선형 vs 비선형)
37
+ - 연관 문서 링크 맵
38
+
39
+ 3. **초안 작성**: 내용을 채워넣습니다
40
+ - 명확한 제목과 부제 (스캔 가능)
41
+ - 각 섹션 첫 문장에 핵심 내용 (역피라미드 구조)
42
+ - 코드 예시 (복사-붙여넣기 가능, 실행 가능)
43
+ - 단계별 절차 (번호 매기기, 검증 단계 포함)
44
+ - 시각적 보조 자료 (다이어그램, 스크린샷, 표)
45
+ - 주의 사항 표시 (Note, Warning, Caution, Tip)
46
+ - 용어 일관성 유지 (용어집 참조)
47
+ - 다국어 고려 (영어 + 한국어 병행 여부)
48
+
49
+ 4. **리뷰 및 검증**: 문서 품질을 확인합니다
50
+ - 기술적 정확성 -- 코드 예시 실행 확인
51
+ - 완전성 -- 누락된 단계나 정보 확인
52
+ - 명확성 -- 모호한 표현, 전문 용어 과다 사용 점검
53
+ - 일관성 -- 용어, 포맷, 스타일 통일
54
+ - 접근성 -- 스크린 리더 호환, 대체 텍스트
55
+ - 검색 가능성 -- 핵심 키워드가 적절히 포함
56
+
57
+ 5. **배포 및 유지보수**: 문서를 공개하고 관리합니다
58
+ - 배포 채널 결정 (GitHub Pages, Docusaurus, Notion)
59
+ - 버전 관리 (문서 버전 = 소프트웨어 버전)
60
+ - 피드백 수집 체계 (이슈, 코멘트, 분석)
61
+ - 정기 리뷰 일정 설정
62
+ - 폐기(deprecation) 절차
63
+ </Steps>
64
+
65
+ ## 에이전트 위임
66
+
67
+ `writer` 에이전트(Haiku 모델)에 위임하여 문서를 작성합니다:
68
+
69
+ ```
70
+ Agent(
71
+ subagent_type="writer",
72
+ model="haiku",
73
+ prompt="DOCUMENTATION TASK
74
+
75
+ 기술 문서를 작성하세요.
76
+
77
+ Subject: [문서화 대상]
78
+ Audience: [대상 독자]
79
+ Type: [Tutorial / How-to / Reference / Explanation]
80
+
81
+ Writing Checklist:
82
+ 1. 대상 독자 수준에 맞는 어조 사용
83
+ 2. 실행 가능한 코드 예시 포함
84
+ 3. 단계별 절차에 검증 단계 포함
85
+ 4. 시각적 보조 자료 활용 (표, 다이어그램)
86
+ 5. 용어 일관성 유지
87
+
88
+ Output: 완성된 기술 문서:
89
+ - 목차
90
+ - 섹션별 내용
91
+ - 코드 예시
92
+ - 주의 사항
93
+ - 관련 문서 링크"
94
+ )
95
+ ```
96
+
97
+ ## External Consultation (Optional)
98
+
99
+ writer 에이전트는 교차 검증을 위해 Claude Task 에이전트에 자문할 수 있습니다.
100
+
101
+ ### Protocol
102
+ 1. **자체 문서 초안을 먼저 완료** -- 독립적으로 작성
103
+ 2. **검증을 위한 자문** -- Claude Task 에이전트를 통해 기술 정확성 교차 확인
104
+ 3. **비판적 평가** -- 외부 제안을 맹목적으로 수용하지 않음
105
+ 4. **우아한 폴백** -- 위임이 불가능할 경우 절대 차단하지 않음
106
+
107
+ ### 자문이 필요한 경우
108
+ - 공개 API 문서 (외부 개발자 대상)
109
+ - 아키텍처 설명 문서
110
+ - 복잡한 통합 가이드
111
+ - 다국어 문서
112
+
113
+ ### 자문을 생략하는 경우
114
+ - 내부 README 업데이트
115
+ - 간단한 설치 가이드
116
+ - 인라인 코드 문서 (JSDoc, TSDoc)
117
+ - 변경 이력 (CHANGELOG)
118
+
119
+ ## 문서 유형 가이드
120
+
121
+ | 유형 | 목적 | 구조 | 예시 |
122
+ |------|------|------|------|
123
+ | **Tutorial** | 학습 | 단계별 진행 | "첫 번째 앱 만들기" |
124
+ | **How-to** | 문제 해결 | 목표 → 단계 → 결과 | "인증 추가하기" |
125
+ | **Reference** | 정보 조회 | 알파벳/카테고리 정렬 | "API 레퍼런스" |
126
+ | **Explanation** | 이해 | 배경 → 원인 → 결과 | "인증 구조 이해하기" |
127
+
128
+ ## 문서 품질 체크리스트
129
+
130
+ ### 내용 (5개)
131
+ - [ ] 기술적으로 정확함 (코드 예시 실행 확인)
132
+ - [ ] 대상 독자 수준에 적합
133
+ - [ ] 모든 필수 단계가 포함됨
134
+ - [ ] 사전 조건(prerequisites)이 명시됨
135
+ - [ ] 코드 예시가 복사-실행 가능
136
+
137
+ ### 구조 (4개)
138
+ - [ ] 목차가 논리적으로 구성됨
139
+ - [ ] 제목이 내용을 정확히 설명
140
+ - [ ] 스캔이 가능한 형식 (짧은 단락, 목록, 표)
141
+ - [ ] 관련 문서에 대한 링크 포함
142
+
143
+ ### 스타일 (4개)
144
+ - [ ] 일관된 용어 사용
145
+ - [ ] 능동태 사용 (수동태 최소화)
146
+ - [ ] 불필요한 전문 용어 없음 (있으면 설명 포함)
147
+ - [ ] Note/Warning/Tip이 적절히 사용됨
148
+
149
+ ### 접근성 (3개)
150
+ - [ ] 이미지에 대체 텍스트 제공
151
+ - [ ] 코드 블록에 언어 태그 명시
152
+ - [ ] 색상으로만 정보를 전달하지 않음
153
+
154
+ ## 작성 원칙
155
+
156
+ | 원칙 | 나쁜 예 | 좋은 예 |
157
+ |------|---------|---------|
158
+ | **구체적** | "설정을 변경합니다" | "`config.json`의 `port` 값을 `3000`으로 변경합니다" |
159
+ | **능동태** | "파일이 생성됩니다" | "이 명령이 파일을 생성합니다" |
160
+ | **검증 포함** | "실행합니다" | "실행합니다. `Started on port 3000` 메시지가 보이면 성공입니다" |
161
+ | **이유 설명** | "캐시를 비웁니다" | "이전 빌드 아티팩트가 간섭할 수 있으므로 캐시를 비웁니다" |
162
+
163
+ <Output>
164
+ ```
165
+ DOCUMENTATION PLAN / 문서화 계획
166
+ ==================================
167
+
168
+ Subject: [문서화 대상]
169
+ Type: [Tutorial / How-to / Reference / Explanation]
170
+ Audience: [대상 독자] ([기술 수준])
171
+
172
+ TABLE OF CONTENTS / 목차
173
+ --------------------------
174
+ 1. 개요
175
+ - 이 문서의 목적
176
+ - 사전 조건
177
+ 2. [핵심 섹션 1]
178
+ - [하위 항목]
179
+ 3. [핵심 섹션 2]
180
+ 4. 트러블슈팅
181
+ 5. 다음 단계
182
+ 6. 관련 문서
183
+
184
+ CONTENT / 내용
185
+ ---------------
186
+ ## 1. 개요
187
+
188
+ [간결한 설명 -- 이 문서를 읽으면 무엇을 할 수 있는지]
189
+
190
+ ### 사전 조건
191
+ - [필요한 도구/지식 1]
192
+ - [필요한 도구/지식 2]
193
+
194
+ ## 2. [핵심 섹션]
195
+
196
+ ### 단계 1: [동작]
197
+
198
+ [왜 이 단계가 필요한지 한 줄 설명]
199
+
200
+ ```bash
201
+ npm install @example/sdk
202
+ ```
203
+
204
+ > **Tip:** [유용한 추가 정보]
205
+
206
+ ### 검증
207
+ [성공 시 보이는 결과 설명]
208
+
209
+ ## 트러블슈팅
210
+
211
+ | 문제 | 원인 | 해결 |
212
+ |------|------|------|
213
+ | [에러 메시지] | [원인] | [해결 방법] |
214
+
215
+ REVIEW STATUS / 리뷰 상태
216
+ ----------------------------
217
+ - [ ] 기술 정확성 검증
218
+ - [ ] 코드 예시 실행 확인
219
+ - [ ] 용어 일관성 확인
220
+ - [ ] 접근성 검토
221
+ ```
222
+ </Output>
223
+
224
+ <Policy>
225
+ - 코드 예시는 반드시 실행 가능해야 합니다 (복사-붙여넣기로 동작)
226
+ - 모든 단계에 검증 방법을 포함합니다 ("이렇게 보이면 성공")
227
+ - 독자를 가정하지 않습니다 -- 사전 조건을 명시합니다
228
+ - 용어는 프로젝트 전체에서 일관되게 사용합니다
229
+ - 문서는 소프트웨어와 함께 버전 관리합니다
230
+ - 최소 1명의 기술 리뷰어를 거친 후 배포합니다
231
+ </Policy>
232
+
233
+ ## 다른 스킬과의 연동
234
+
235
+ **API 설계 연동:**
236
+ ```
237
+ /forgen:api-design OpenAPI 스키마 기반 문서
238
+ ```
239
+ API 설계 결과를 문서화
240
+
241
+ **아키텍처 결정 연동:**
242
+ ```
243
+ /forgen:architecture-decision ADR 문서화
244
+ ```
245
+ 아키텍처 결정 기록 문서화
246
+
247
+ **코드 리뷰 연동:**
248
+ ```
249
+ /forgen:code-review 문서 코드 예시
250
+ ```
251
+ 문서 내 코드 예시의 정확성 검증
252
+
253
+ ## Best Practices
254
+
255
+ - **독자 중심** -- 자신이 아닌 독자의 관점에서 작성
256
+ - **실행 가능** -- 모든 코드 예시는 실제로 동작해야 함
257
+ - **스캔 가능** -- 긴 텍스트보다 목록, 표, 코드 블록 활용
258
+ - **최신 유지** -- 코드 변경 시 문서도 함께 업데이트
259
+ - **피드백 수용** -- 독자 피드백을 적극적으로 반영
260
+
261
+ <Arguments>
262
+ ## 사용법
263
+ `/forgen:documentation {문서화 대상}`
264
+
265
+ ### 예시
266
+ - `/forgen:documentation 프로젝트 README 작성`
267
+ - `/forgen:documentation API 레퍼런스 문서`
268
+ - `/forgen:documentation 설치 가이드 (초보자용)`
269
+ - `/forgen:documentation 아키텍처 설명 문서`
270
+
271
+ ### 인자
272
+ - 문서화할 대상, 독자, 문서 유형 등을 설명
273
+ - 인자 없으면 프로젝트를 분석하여 필요한 문서를 제안
274
+ </Arguments>
275
+
276
+ $ARGUMENTS
@@ -0,0 +1,51 @@
1
+ ---
2
+ name: ecomode
3
+ description: This skill should be used when the user asks to "eco,ecomode,절약,비용절약". Token-saving eco mode with Haiku priority and minimal responses
4
+ triggers:
5
+ - "eco"
6
+ - "ecomode"
7
+ - "절약"
8
+ - "비용절약"
9
+ ---
10
+
11
+ <Purpose>
12
+ Compound Harness Ecomode — 토큰 절약 모드.
13
+ 비용을 최소화하면서 작업을 수행합니다. Haiku 모델을 우선 사용하고, 간결한 응답을 지향합니다.
14
+ </Purpose>
15
+
16
+ <Execution_Policy>
17
+ 1. 모든 탐색은 최소한으로 (Glob/Grep 우선, Agent 최소화)
18
+ 2. 응답은 간결하게 (불필요한 설명 생략)
19
+ 3. 코드 블록 위주로 답변, 부연 설명 최소화
20
+ 4. 한 번에 정확히 수정 (반복 수정 회피)
21
+ 5. 에이전트 스폰 시 전부 Haiku 모델 사용
22
+ </Execution_Policy>
23
+
24
+ <Model_Routing>
25
+ - 모든 작업: Haiku (강제)
26
+ - 에이전트 스폰: Haiku (강제)
27
+ - 복잡한 아키텍처 판단이 필요한 경우에만 Sonnet 허용
28
+ </Model_Routing>
29
+
30
+ <Constraints>
31
+ - Agent 도구 사용 최소화 (직접 Glob/Grep/Read로 해결)
32
+ - 불필요한 파일 탐색 금지 (목적이 명확한 탐색만)
33
+ - 코드 설명은 요청 시에만 제공
34
+ - 반복 수정 시 즉시 중단하고 전체 구조 파악 후 단일 수정
35
+ - 에이전트 스폰 시 model: "haiku" 파라미터 필수
36
+ </Constraints>
37
+
38
+ <Arguments>
39
+ ## 사용법
40
+ `/forgen:ecomode {작업 내용}`
41
+
42
+ ### 예시
43
+ - `/forgen:ecomode 버그 수정: login API 500 에러`
44
+ - `/forgen:ecomode 타입 정의 추가: UserProfile 인터페이스`
45
+ - `eco 이 함수 리팩토링해줘`
46
+
47
+ ### 인자
48
+ - 간단한 작업 설명을 전달하면 최소 비용으로 처리
49
+ </Arguments>
50
+
51
+ $ARGUMENTS