@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.
- package/.claude-plugin/plugin.json +20 -0
- package/CHANGELOG.md +353 -0
- package/CONTRIBUTING.md +98 -0
- package/LICENSE +21 -0
- package/README.ja.md +469 -0
- package/README.ko.md +469 -0
- package/README.md +483 -0
- package/README.zh.md +469 -0
- package/agents/analyst.md +98 -0
- package/agents/architect.md +62 -0
- package/agents/code-reviewer.md +120 -0
- package/agents/code-simplifier.md +197 -0
- package/agents/critic.md +70 -0
- package/agents/debugger.md +117 -0
- package/agents/designer.md +131 -0
- package/agents/executor.md +54 -0
- package/agents/explore.md +145 -0
- package/agents/git-master.md +212 -0
- package/agents/performance-reviewer.md +172 -0
- package/agents/planner.md +29 -0
- package/agents/qa-tester.md +158 -0
- package/agents/refactoring-expert.md +168 -0
- package/agents/scientist.md +144 -0
- package/agents/security-reviewer.md +137 -0
- package/agents/test-engineer.md +153 -0
- package/agents/verifier.md +133 -0
- package/agents/writer.md +184 -0
- package/commands/api-design.md +268 -0
- package/commands/architecture-decision.md +314 -0
- package/commands/ci-cd.md +270 -0
- package/commands/code-review.md +233 -0
- package/commands/compound.md +117 -0
- package/commands/database.md +263 -0
- package/commands/debug-detective.md +99 -0
- package/commands/docker.md +274 -0
- package/commands/documentation.md +276 -0
- package/commands/ecomode.md +51 -0
- package/commands/frontend.md +271 -0
- package/commands/git-master.md +90 -0
- package/commands/incident-response.md +292 -0
- package/commands/migrate.md +101 -0
- package/commands/performance.md +288 -0
- package/commands/refactor.md +105 -0
- package/commands/security-review.md +288 -0
- package/commands/tdd.md +183 -0
- package/commands/testing-strategy.md +265 -0
- package/dist/cli.d.ts +2 -0
- package/dist/cli.js +295 -0
- package/dist/core/auto-compound-runner.d.ts +12 -0
- package/dist/core/auto-compound-runner.js +460 -0
- package/dist/core/config-hooks.d.ts +10 -0
- package/dist/core/config-hooks.js +112 -0
- package/dist/core/config-injector.d.ts +50 -0
- package/dist/core/config-injector.js +455 -0
- package/dist/core/doctor.d.ts +1 -0
- package/dist/core/doctor.js +163 -0
- package/dist/core/errors.d.ts +81 -0
- package/dist/core/errors.js +133 -0
- package/dist/core/global-config.d.ts +43 -0
- package/dist/core/global-config.js +25 -0
- package/dist/core/harness.d.ts +24 -0
- package/dist/core/harness.js +621 -0
- package/dist/core/init.d.ts +7 -0
- package/dist/core/init.js +37 -0
- package/dist/core/inspect-cli.d.ts +7 -0
- package/dist/core/inspect-cli.js +47 -0
- package/dist/core/legacy-detector.d.ts +33 -0
- package/dist/core/legacy-detector.js +66 -0
- package/dist/core/logger.d.ts +34 -0
- package/dist/core/logger.js +121 -0
- package/dist/core/mcp-config.d.ts +44 -0
- package/dist/core/mcp-config.js +177 -0
- package/dist/core/notepad.d.ts +31 -0
- package/dist/core/notepad.js +88 -0
- package/dist/core/paths.d.ts +85 -0
- package/dist/core/paths.js +101 -0
- package/dist/core/plugin-detector.d.ts +44 -0
- package/dist/core/plugin-detector.js +226 -0
- package/dist/core/runtime-detector.d.ts +8 -0
- package/dist/core/runtime-detector.js +49 -0
- package/dist/core/scope-resolver.d.ts +8 -0
- package/dist/core/scope-resolver.js +45 -0
- package/dist/core/session-logger.d.ts +6 -0
- package/dist/core/session-logger.js +111 -0
- package/dist/core/session-store.d.ts +28 -0
- package/dist/core/session-store.js +218 -0
- package/dist/core/settings-lock.d.ts +18 -0
- package/dist/core/settings-lock.js +125 -0
- package/dist/core/spawn.d.ts +3 -0
- package/dist/core/spawn.js +135 -0
- package/dist/core/types.d.ts +108 -0
- package/dist/core/types.js +1 -0
- package/dist/core/uninstall.d.ts +4 -0
- package/dist/core/uninstall.js +307 -0
- package/dist/core/v1-bootstrap.d.ts +26 -0
- package/dist/core/v1-bootstrap.js +155 -0
- package/dist/engine/compound-cli.d.ts +24 -0
- package/dist/engine/compound-cli.js +250 -0
- package/dist/engine/compound-extractor.d.ts +68 -0
- package/dist/engine/compound-extractor.js +860 -0
- package/dist/engine/compound-lifecycle.d.ts +32 -0
- package/dist/engine/compound-lifecycle.js +305 -0
- package/dist/engine/compound-loop.d.ts +32 -0
- package/dist/engine/compound-loop.js +511 -0
- package/dist/engine/match-eval-log.d.ts +139 -0
- package/dist/engine/match-eval-log.js +270 -0
- package/dist/engine/phrase-blocklist.d.ts +119 -0
- package/dist/engine/phrase-blocklist.js +208 -0
- package/dist/engine/skill-promoter.d.ts +20 -0
- package/dist/engine/skill-promoter.js +115 -0
- package/dist/engine/solution-format.d.ts +160 -0
- package/dist/engine/solution-format.js +432 -0
- package/dist/engine/solution-index.d.ts +13 -0
- package/dist/engine/solution-index.js +252 -0
- package/dist/engine/solution-matcher.d.ts +364 -0
- package/dist/engine/solution-matcher.js +656 -0
- package/dist/engine/solution-writer.d.ts +76 -0
- package/dist/engine/solution-writer.js +157 -0
- package/dist/engine/term-matcher.d.ts +81 -0
- package/dist/engine/term-matcher.js +268 -0
- package/dist/engine/term-normalizer.d.ts +116 -0
- package/dist/engine/term-normalizer.js +171 -0
- package/dist/fgx.d.ts +6 -0
- package/dist/fgx.js +42 -0
- package/dist/forge/cli.d.ts +11 -0
- package/dist/forge/cli.js +100 -0
- package/dist/forge/evidence-processor.d.ts +21 -0
- package/dist/forge/evidence-processor.js +87 -0
- package/dist/forge/mismatch-detector.d.ts +44 -0
- package/dist/forge/mismatch-detector.js +83 -0
- package/dist/forge/onboarding-cli.d.ts +6 -0
- package/dist/forge/onboarding-cli.js +89 -0
- package/dist/forge/onboarding.d.ts +25 -0
- package/dist/forge/onboarding.js +122 -0
- package/dist/hooks/compound-reflection.d.ts +45 -0
- package/dist/hooks/compound-reflection.js +82 -0
- package/dist/hooks/context-guard.d.ts +24 -0
- package/dist/hooks/context-guard.js +156 -0
- package/dist/hooks/dangerous-patterns.json +18 -0
- package/dist/hooks/db-guard.d.ts +17 -0
- package/dist/hooks/db-guard.js +105 -0
- package/dist/hooks/hook-config.d.ts +29 -0
- package/dist/hooks/hook-config.js +92 -0
- package/dist/hooks/hook-registry.d.ts +43 -0
- package/dist/hooks/hook-registry.js +31 -0
- package/dist/hooks/hooks-generator.d.ts +49 -0
- package/dist/hooks/hooks-generator.js +99 -0
- package/dist/hooks/intent-classifier.d.ts +12 -0
- package/dist/hooks/intent-classifier.js +62 -0
- package/dist/hooks/keyword-detector.d.ts +25 -0
- package/dist/hooks/keyword-detector.js +389 -0
- package/dist/hooks/notepad-injector.d.ts +18 -0
- package/dist/hooks/notepad-injector.js +51 -0
- package/dist/hooks/permission-handler.d.ts +14 -0
- package/dist/hooks/permission-handler.js +114 -0
- package/dist/hooks/post-tool-failure.d.ts +11 -0
- package/dist/hooks/post-tool-failure.js +118 -0
- package/dist/hooks/post-tool-handlers.d.ts +17 -0
- package/dist/hooks/post-tool-handlers.js +115 -0
- package/dist/hooks/post-tool-use.d.ts +29 -0
- package/dist/hooks/post-tool-use.js +151 -0
- package/dist/hooks/pre-compact.d.ts +10 -0
- package/dist/hooks/pre-compact.js +165 -0
- package/dist/hooks/pre-tool-use.d.ts +31 -0
- package/dist/hooks/pre-tool-use.js +325 -0
- package/dist/hooks/prompt-injection-filter.d.ts +56 -0
- package/dist/hooks/prompt-injection-filter.js +287 -0
- package/dist/hooks/rate-limiter.d.ts +21 -0
- package/dist/hooks/rate-limiter.js +86 -0
- package/dist/hooks/secret-filter.d.ts +14 -0
- package/dist/hooks/secret-filter.js +65 -0
- package/dist/hooks/session-recovery.d.ts +27 -0
- package/dist/hooks/session-recovery.js +406 -0
- package/dist/hooks/shared/atomic-write.d.ts +41 -0
- package/dist/hooks/shared/atomic-write.js +148 -0
- package/dist/hooks/shared/context-budget.d.ts +37 -0
- package/dist/hooks/shared/context-budget.js +45 -0
- package/dist/hooks/shared/file-lock.d.ts +56 -0
- package/dist/hooks/shared/file-lock.js +253 -0
- package/dist/hooks/shared/hook-response.d.ts +33 -0
- package/dist/hooks/shared/hook-response.js +62 -0
- package/dist/hooks/shared/injection-caps.d.ts +39 -0
- package/dist/hooks/shared/injection-caps.js +52 -0
- package/dist/hooks/shared/plugin-signal.d.ts +23 -0
- package/dist/hooks/shared/plugin-signal.js +104 -0
- package/dist/hooks/shared/read-stdin.d.ts +8 -0
- package/dist/hooks/shared/read-stdin.js +63 -0
- package/dist/hooks/shared/sanitize-id.d.ts +7 -0
- package/dist/hooks/shared/sanitize-id.js +9 -0
- package/dist/hooks/shared/sanitize.d.ts +7 -0
- package/dist/hooks/shared/sanitize.js +22 -0
- package/dist/hooks/skill-injector.d.ts +38 -0
- package/dist/hooks/skill-injector.js +285 -0
- package/dist/hooks/slop-detector.d.ts +18 -0
- package/dist/hooks/slop-detector.js +93 -0
- package/dist/hooks/solution-injector.d.ts +58 -0
- package/dist/hooks/solution-injector.js +436 -0
- package/dist/hooks/subagent-tracker.d.ts +10 -0
- package/dist/hooks/subagent-tracker.js +90 -0
- package/dist/i18n/index.d.ts +43 -0
- package/dist/i18n/index.js +224 -0
- package/dist/lib.d.ts +14 -0
- package/dist/lib.js +14 -0
- package/dist/mcp/server.d.ts +8 -0
- package/dist/mcp/server.js +40 -0
- package/dist/mcp/solution-reader.d.ts +90 -0
- package/dist/mcp/solution-reader.js +273 -0
- package/dist/mcp/tools.d.ts +16 -0
- package/dist/mcp/tools.js +302 -0
- package/dist/preset/facet-catalog.d.ts +17 -0
- package/dist/preset/facet-catalog.js +46 -0
- package/dist/preset/preset-manager.d.ts +31 -0
- package/dist/preset/preset-manager.js +111 -0
- package/dist/renderer/inspect-renderer.d.ts +11 -0
- package/dist/renderer/inspect-renderer.js +123 -0
- package/dist/renderer/rule-renderer.d.ts +18 -0
- package/dist/renderer/rule-renderer.js +159 -0
- package/dist/store/evidence-store.d.ts +23 -0
- package/dist/store/evidence-store.js +58 -0
- package/dist/store/profile-store.d.ts +12 -0
- package/dist/store/profile-store.js +53 -0
- package/dist/store/recommendation-store.d.ts +22 -0
- package/dist/store/recommendation-store.js +64 -0
- package/dist/store/rule-store.d.ts +22 -0
- package/dist/store/rule-store.js +62 -0
- package/dist/store/session-state-store.d.ts +11 -0
- package/dist/store/session-state-store.js +44 -0
- package/dist/store/types.d.ts +159 -0
- package/dist/store/types.js +7 -0
- package/hooks/hook-registry.json +21 -0
- package/hooks/hooks.json +185 -0
- package/package.json +89 -0
- package/plugin.json +20 -0
- package/scripts/postinstall.js +826 -0
- package/skills/api-design/SKILL.md +262 -0
- package/skills/architecture-decision/SKILL.md +309 -0
- package/skills/ci-cd/SKILL.md +264 -0
- package/skills/code-review/SKILL.md +228 -0
- package/skills/compound/SKILL.md +101 -0
- package/skills/database/SKILL.md +257 -0
- package/skills/debug-detective/SKILL.md +95 -0
- package/skills/docker/SKILL.md +268 -0
- package/skills/documentation/SKILL.md +270 -0
- package/skills/ecomode/SKILL.md +46 -0
- package/skills/frontend/SKILL.md +265 -0
- package/skills/git-master/SKILL.md +86 -0
- package/skills/incident-response/SKILL.md +286 -0
- package/skills/migrate/SKILL.md +96 -0
- package/skills/performance/SKILL.md +282 -0
- package/skills/refactor/SKILL.md +100 -0
- package/skills/security-review/SKILL.md +282 -0
- package/skills/tdd/SKILL.md +178 -0
- package/skills/testing-strategy/SKILL.md +260 -0
- package/starter-pack/solutions/starter-api-error-responses.md +37 -0
- package/starter-pack/solutions/starter-async-patterns.md +40 -0
- package/starter-pack/solutions/starter-caching-strategy.md +40 -0
- package/starter-pack/solutions/starter-code-review-checklist.md +39 -0
- package/starter-pack/solutions/starter-debugging-systematic.md +40 -0
- package/starter-pack/solutions/starter-dependency-injection.md +40 -0
- package/starter-pack/solutions/starter-error-handling-patterns.md +38 -0
- package/starter-pack/solutions/starter-git-atomic-commits.md +36 -0
- package/starter-pack/solutions/starter-input-validation.md +40 -0
- package/starter-pack/solutions/starter-n-plus-one-queries.md +37 -0
- package/starter-pack/solutions/starter-refactor-safely.md +38 -0
- package/starter-pack/solutions/starter-secret-management.md +37 -0
- package/starter-pack/solutions/starter-separation-of-concerns.md +36 -0
- package/starter-pack/solutions/starter-tdd-red-green-refactor.md +40 -0
- package/starter-pack/solutions/starter-typescript-strict-types.md +39 -0
|
@@ -0,0 +1,314 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: architecture-decision
|
|
3
|
+
description: This skill should be used when the user asks to "adr,architecture decision,아키텍처 결정,설계 결정,기술 결정". Architecture Decision Record (ADR) creation with alternatives evaluation and consequence analysis
|
|
4
|
+
triggers:
|
|
5
|
+
- "adr"
|
|
6
|
+
- "architecture decision"
|
|
7
|
+
- "아키텍처 결정"
|
|
8
|
+
- "설계 결정"
|
|
9
|
+
- "기술 결정"
|
|
10
|
+
---
|
|
11
|
+
<!-- forgen-managed -->
|
|
12
|
+
|
|
13
|
+
<Purpose>
|
|
14
|
+
아키텍처 결정 기록(ADR)을 체계적으로 작성합니다.
|
|
15
|
+
의사결정의 컨텍스트, 대안 평가, 결정, 결과를 구조화하여 기록하고
|
|
16
|
+
미래의 개발자가 "왜 이렇게 결정했는가"를 이해할 수 있도록 합니다.
|
|
17
|
+
</Purpose>
|
|
18
|
+
|
|
19
|
+
<Steps>
|
|
20
|
+
1. **컨텍스트 수집**: 결정이 필요한 배경을 정리합니다
|
|
21
|
+
- 해결하려는 문제/요구사항 정의
|
|
22
|
+
- 현재 시스템 상태 및 제약 조건
|
|
23
|
+
- 비즈니스 요구사항과 기술 요구사항 구분
|
|
24
|
+
- 이해관계자 식별 (누가 영향을 받는가)
|
|
25
|
+
- 결정의 긴급도와 중요도
|
|
26
|
+
- 관련 기존 ADR 참조
|
|
27
|
+
- 비기능 요구사항 (성능, 보안, 확장성, 비용)
|
|
28
|
+
|
|
29
|
+
2. **대안 탐색**: 가능한 선택지를 열거합니다
|
|
30
|
+
- 최소 3개 이상의 대안 도출
|
|
31
|
+
- 각 대안에 대한 간략한 설명
|
|
32
|
+
- "아무것도 하지 않기" 옵션 포함 (현상 유지)
|
|
33
|
+
- 업계 사례 및 벤치마크 조사
|
|
34
|
+
- 기존 기술 스택과의 호환성 확인
|
|
35
|
+
- 팀 역량 및 학습 곡선 고려
|
|
36
|
+
- 라이선스/비용 확인
|
|
37
|
+
|
|
38
|
+
3. **대안 평가**: 정량적/정성적 기준으로 비교합니다
|
|
39
|
+
- 평가 기준 정의:
|
|
40
|
+
* 기술 적합성 (요구사항 충족도)
|
|
41
|
+
* 복잡도 (구현 난이도, 운영 부담)
|
|
42
|
+
* 성능 (응답 시간, 처리량, 리소스)
|
|
43
|
+
* 확장성 (수평/수직 확장 가능성)
|
|
44
|
+
* 보안 (취약점, 인증/인가)
|
|
45
|
+
* 비용 (초기 비용, 운영 비용, 기회 비용)
|
|
46
|
+
* 생태계 (커뮤니티, 문서, 도구)
|
|
47
|
+
* 팀 역량 (경험, 학습 곡선)
|
|
48
|
+
- 가중치 부여 (프로젝트별 우선순위에 따라)
|
|
49
|
+
- 각 대안의 장단점 분석
|
|
50
|
+
- PoC(Proof of Concept) 필요 여부 결정
|
|
51
|
+
|
|
52
|
+
4. **결정**: 최종 선택과 근거를 명시합니다
|
|
53
|
+
- 선택된 대안과 핵심 이유
|
|
54
|
+
- 결정을 뒤집을 수 있는 조건 (reversibility)
|
|
55
|
+
- 수용한 트레이드오프 명시
|
|
56
|
+
- 거부된 대안과 거부 이유
|
|
57
|
+
- 결정에 대한 팀 합의 수준
|
|
58
|
+
|
|
59
|
+
5. **결과 분석**: 결정의 예상 영향을 기록합니다
|
|
60
|
+
- 긍정적 결과 (해결되는 문제)
|
|
61
|
+
- 부정적 결과 (새로 발생하는 제약/부담)
|
|
62
|
+
- 리스크 (무엇이 잘못될 수 있는가)
|
|
63
|
+
- 리스크 완화 전략
|
|
64
|
+
- 후속 결정이 필요한 사항
|
|
65
|
+
- 모니터링 포인트 (결정의 효과를 어떻게 측정할 것인가)
|
|
66
|
+
|
|
67
|
+
6. **기록 및 공유**: ADR을 작성하고 공유합니다
|
|
68
|
+
- ADR 번호 및 제목 부여 (ADR-NNN: [제목])
|
|
69
|
+
- 상태 설정 (Proposed → Accepted → Deprecated → Superseded)
|
|
70
|
+
- ADR 저장소에 등록 (docs/adr/ 또는 .adr/)
|
|
71
|
+
- 이해관계자에게 공유 및 피드백 수집
|
|
72
|
+
- 관련 코드에 ADR 참조 주석 추가
|
|
73
|
+
</Steps>
|
|
74
|
+
|
|
75
|
+
## 에이전트 위임
|
|
76
|
+
|
|
77
|
+
`architect` 에이전트(Opus 모델)에 위임하여 아키텍처 분석을 수행합니다:
|
|
78
|
+
|
|
79
|
+
```
|
|
80
|
+
Agent(
|
|
81
|
+
subagent_type="architect",
|
|
82
|
+
model="opus",
|
|
83
|
+
prompt="ARCHITECTURE DECISION TASK
|
|
84
|
+
|
|
85
|
+
아키텍처 결정 기록(ADR)을 작성하세요.
|
|
86
|
+
|
|
87
|
+
Decision: [결정 주제]
|
|
88
|
+
Context: [배경 및 제약 조건]
|
|
89
|
+
|
|
90
|
+
ADR Checklist:
|
|
91
|
+
1. 컨텍스트 정리 (문제, 제약, 요구사항)
|
|
92
|
+
2. 대안 탐색 (최소 3개 + 현상 유지)
|
|
93
|
+
3. 대안 평가 (기준별 비교표)
|
|
94
|
+
4. 결정 및 근거 (선택 이유, 트레이드오프)
|
|
95
|
+
5. 결과 분석 (긍정/부정, 리스크)
|
|
96
|
+
6. ADR 문서 작성
|
|
97
|
+
|
|
98
|
+
Output: ADR 문서:
|
|
99
|
+
- 번호 및 제목
|
|
100
|
+
- 상태 (Proposed/Accepted)
|
|
101
|
+
- 컨텍스트
|
|
102
|
+
- 대안 비교표
|
|
103
|
+
- 결정 및 근거
|
|
104
|
+
- 결과 및 리스크"
|
|
105
|
+
)
|
|
106
|
+
```
|
|
107
|
+
|
|
108
|
+
## External Consultation (Optional)
|
|
109
|
+
|
|
110
|
+
architect 에이전트는 교차 검증을 위해 Claude Task 에이전트에 자문할 수 있습니다.
|
|
111
|
+
|
|
112
|
+
### Protocol
|
|
113
|
+
1. **자체 분석을 먼저 완료** -- 독립적으로 대안 평가
|
|
114
|
+
2. **검증을 위한 자문** -- Claude Task 에이전트를 통해 분석 교차 확인
|
|
115
|
+
3. **비판적 평가** -- 외부 제안을 맹목적으로 수용하지 않음
|
|
116
|
+
4. **우아한 폴백** -- 위임이 불가능할 경우 절대 차단하지 않음
|
|
117
|
+
|
|
118
|
+
### 자문이 필요한 경우
|
|
119
|
+
- 되돌리기 어려운 결정 (데이터베이스 선택, 프레임워크 변경)
|
|
120
|
+
- 조직 전체에 영향을 미치는 결정
|
|
121
|
+
- 비용이 큰 기술 투자 결정
|
|
122
|
+
- 팀 내 의견이 분분한 결정
|
|
123
|
+
|
|
124
|
+
### 자문을 생략하는 경우
|
|
125
|
+
- 단순 라이브러리 선택 (유사한 기능, 낮은 영향)
|
|
126
|
+
- 내부 구현 세부 사항
|
|
127
|
+
- 잘 알려진 패턴 적용
|
|
128
|
+
- 쉽게 되돌릴 수 있는 결정
|
|
129
|
+
|
|
130
|
+
## ADR 체크리스트
|
|
131
|
+
|
|
132
|
+
### 완전성 (5개)
|
|
133
|
+
- [ ] 문제/요구사항이 명확히 정의됨
|
|
134
|
+
- [ ] 최소 3개 대안이 탐색됨
|
|
135
|
+
- [ ] 평가 기준이 명시됨
|
|
136
|
+
- [ ] 선택 근거가 구체적으로 설명됨
|
|
137
|
+
- [ ] 트레이드오프가 명시적으로 기록됨
|
|
138
|
+
|
|
139
|
+
### 품질 (4개)
|
|
140
|
+
- [ ] 비기능 요구사항 (성능, 보안, 비용)이 고려됨
|
|
141
|
+
- [ ] 리스크와 완화 전략이 포함됨
|
|
142
|
+
- [ ] 결정을 뒤집을 수 있는 조건이 명시됨
|
|
143
|
+
- [ ] 후속 결정 사항이 식별됨
|
|
144
|
+
|
|
145
|
+
### 프로세스 (3개)
|
|
146
|
+
- [ ] 이해관계자와 공유됨
|
|
147
|
+
- [ ] 피드백이 수집되고 반영됨
|
|
148
|
+
- [ ] 관련 코드에 ADR 참조가 추가됨
|
|
149
|
+
|
|
150
|
+
## ADR 상태 흐름
|
|
151
|
+
|
|
152
|
+
```
|
|
153
|
+
[Proposed] → [Accepted] → [Deprecated] (더 이상 관련 없음)
|
|
154
|
+
→ [Superseded by ADR-NNN] (새 결정으로 대체)
|
|
155
|
+
```
|
|
156
|
+
|
|
157
|
+
## 결정 되돌림 가능성 분류
|
|
158
|
+
|
|
159
|
+
| 분류 | 설명 | 예시 | 투자 수준 |
|
|
160
|
+
|------|------|------|-----------|
|
|
161
|
+
| **Type 1** (비가역) | 되돌리기 매우 어렵거나 불가능 | DB 엔진, 프로그래밍 언어 | 심층 분석 필요 |
|
|
162
|
+
| **Type 2** (가역) | 비교적 쉽게 되돌릴 수 있음 | 라이브러리, 내부 패턴 | 신속한 결정 가능 |
|
|
163
|
+
|
|
164
|
+
## 평가 매트릭스 템플릿
|
|
165
|
+
|
|
166
|
+
| 기준 (가중치) | 대안 A | 대안 B | 대안 C | 현상 유지 |
|
|
167
|
+
|---------------|--------|--------|--------|-----------|
|
|
168
|
+
| 기술 적합성 (30%) | 9 | 7 | 8 | 3 |
|
|
169
|
+
| 복잡도 (20%) | 6 | 8 | 5 | 10 |
|
|
170
|
+
| 성능 (15%) | 8 | 7 | 9 | 5 |
|
|
171
|
+
| 확장성 (15%) | 9 | 6 | 8 | 4 |
|
|
172
|
+
| 비용 (10%) | 5 | 8 | 6 | 10 |
|
|
173
|
+
| 팀 역량 (10%) | 7 | 9 | 5 | 10 |
|
|
174
|
+
| **가중 합계** | **7.6** | **7.3** | **7.0** | **5.8** |
|
|
175
|
+
|
|
176
|
+
<Output>
|
|
177
|
+
```
|
|
178
|
+
ARCHITECTURE DECISION RECORD / 아키텍처 결정 기록
|
|
179
|
+
===================================================
|
|
180
|
+
|
|
181
|
+
ADR-NNN: [결정 제목]
|
|
182
|
+
Status: [Proposed / Accepted / Deprecated / Superseded by ADR-NNN]
|
|
183
|
+
Date: YYYY-MM-DD
|
|
184
|
+
Deciders: [결정 참여자]
|
|
185
|
+
|
|
186
|
+
CONTEXT / 컨텍스트
|
|
187
|
+
--------------------
|
|
188
|
+
[해결하려는 문제와 배경 설명]
|
|
189
|
+
|
|
190
|
+
Requirements:
|
|
191
|
+
- [기능 요구사항 1]
|
|
192
|
+
- [비기능 요구사항 (성능, 보안, 비용)]
|
|
193
|
+
|
|
194
|
+
Constraints:
|
|
195
|
+
- [제약 조건 1]
|
|
196
|
+
- [제약 조건 2]
|
|
197
|
+
|
|
198
|
+
ALTERNATIVES / 대안
|
|
199
|
+
---------------------
|
|
200
|
+
### 대안 A: [이름]
|
|
201
|
+
[설명]
|
|
202
|
+
- Pros: [장점]
|
|
203
|
+
- Cons: [단점]
|
|
204
|
+
|
|
205
|
+
### 대안 B: [이름]
|
|
206
|
+
[설명]
|
|
207
|
+
- Pros: [장점]
|
|
208
|
+
- Cons: [단점]
|
|
209
|
+
|
|
210
|
+
### 대안 C: [이름] (현상 유지)
|
|
211
|
+
[설명]
|
|
212
|
+
- Pros: [장점]
|
|
213
|
+
- Cons: [단점]
|
|
214
|
+
|
|
215
|
+
EVALUATION / 평가
|
|
216
|
+
-------------------
|
|
217
|
+
| 기준 (가중치) | 대안 A | 대안 B | 대안 C |
|
|
218
|
+
|---------------|--------|--------|--------|
|
|
219
|
+
| [기준 1] (N%) | N/10 | N/10 | N/10 |
|
|
220
|
+
| [기준 2] (N%) | N/10 | N/10 | N/10 |
|
|
221
|
+
| **합계** | **N** | **N** | **N** |
|
|
222
|
+
|
|
223
|
+
DECISION / 결정
|
|
224
|
+
-----------------
|
|
225
|
+
**대안 A를 선택합니다.**
|
|
226
|
+
|
|
227
|
+
Rationale: [핵심 선택 이유]
|
|
228
|
+
|
|
229
|
+
Trade-offs accepted:
|
|
230
|
+
- [수용한 트레이드오프 1]
|
|
231
|
+
- [수용한 트레이드오프 2]
|
|
232
|
+
|
|
233
|
+
Reversibility: [Type 1 (비가역) / Type 2 (가역)]
|
|
234
|
+
Reversal condition: [이 결정을 뒤집어야 하는 조건]
|
|
235
|
+
|
|
236
|
+
CONSEQUENCES / 결과
|
|
237
|
+
---------------------
|
|
238
|
+
Positive:
|
|
239
|
+
- [긍정적 결과 1]
|
|
240
|
+
- [긍정적 결과 2]
|
|
241
|
+
|
|
242
|
+
Negative:
|
|
243
|
+
- [부정적 결과 1]
|
|
244
|
+
- [부정적 결과 2]
|
|
245
|
+
|
|
246
|
+
Risks:
|
|
247
|
+
- [리스크 1] → 완화: [완화 전략]
|
|
248
|
+
- [리스크 2] → 완화: [완화 전략]
|
|
249
|
+
|
|
250
|
+
Follow-up decisions needed:
|
|
251
|
+
- [후속 결정 1]
|
|
252
|
+
- [후속 결정 2]
|
|
253
|
+
|
|
254
|
+
MONITORING / 모니터링
|
|
255
|
+
-----------------------
|
|
256
|
+
- [효과 측정 지표 1]
|
|
257
|
+
- [효과 측정 지표 2]
|
|
258
|
+
- Review date: YYYY-MM-DD (3개월 후 재검토)
|
|
259
|
+
```
|
|
260
|
+
</Output>
|
|
261
|
+
|
|
262
|
+
<Policy>
|
|
263
|
+
- 최소 3개 대안을 비교합니다 ("현상 유지" 포함)
|
|
264
|
+
- 정량적 평가 기준을 사용합니다 (직관이 아닌 데이터 기반)
|
|
265
|
+
- 트레이드오프를 명시적으로 기록합니다 -- 모든 결정에는 대가가 있음
|
|
266
|
+
- 결정을 뒤집을 수 있는 조건을 미리 정의합니다
|
|
267
|
+
- ADR은 코드와 함께 버전 관리합니다 (docs/adr/)
|
|
268
|
+
- 폐기된 ADR도 삭제하지 않습니다 -- 역사적 맥락을 보존
|
|
269
|
+
</Policy>
|
|
270
|
+
|
|
271
|
+
## 다른 스킬과의 연동
|
|
272
|
+
|
|
273
|
+
**코드 리뷰 연동:**
|
|
274
|
+
```
|
|
275
|
+
/forgen:code-review ADR에 따른 구현 검증
|
|
276
|
+
```
|
|
277
|
+
아키텍처 결정이 구현에 올바르게 반영되었는지 검증
|
|
278
|
+
|
|
279
|
+
**문서화 연동:**
|
|
280
|
+
```
|
|
281
|
+
/forgen:documentation ADR 기반 아키텍처 문서
|
|
282
|
+
```
|
|
283
|
+
ADR을 바탕으로 아키텍처 설명 문서 작성
|
|
284
|
+
|
|
285
|
+
**보안 리뷰 연동:**
|
|
286
|
+
```
|
|
287
|
+
/forgen:security-review ADR의 보안 영향 분석
|
|
288
|
+
```
|
|
289
|
+
아키텍처 결정의 보안 관점 검토
|
|
290
|
+
|
|
291
|
+
## Best Practices
|
|
292
|
+
|
|
293
|
+
- **결정 기록** -- 구두 합의보다 문서화된 ADR
|
|
294
|
+
- **미래의 나를 위해** -- 6개월 후 맥락을 잊은 자신을 독자로 상정
|
|
295
|
+
- **간결하게** -- ADR은 1~2페이지가 적당
|
|
296
|
+
- **적시에** -- 결정 시점에 작성, 나중에 "기억해서" 쓰지 않음
|
|
297
|
+
- **갱신** -- 상황 변화 시 ADR 상태를 업데이트
|
|
298
|
+
|
|
299
|
+
<Arguments>
|
|
300
|
+
## 사용법
|
|
301
|
+
`/forgen:architecture-decision {결정 주제}`
|
|
302
|
+
|
|
303
|
+
### 예시
|
|
304
|
+
- `/forgen:architecture-decision 상태 관리 라이브러리 선택`
|
|
305
|
+
- `/forgen:architecture-decision 모놀리스 → 마이크로서비스 전환`
|
|
306
|
+
- `/forgen:architecture-decision 인증 방식 결정 (JWT vs Session)`
|
|
307
|
+
- `/forgen:architecture-decision 데이터베이스 선택 (PostgreSQL vs MongoDB)`
|
|
308
|
+
|
|
309
|
+
### 인자
|
|
310
|
+
- 결정이 필요한 주제, 배경, 제약 조건 등을 설명
|
|
311
|
+
- 인자 없으면 현재 프로젝트에서 문서화가 필요한 아키텍처 결정을 식별
|
|
312
|
+
</Arguments>
|
|
313
|
+
|
|
314
|
+
$ARGUMENTS
|
|
@@ -0,0 +1,270 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: ci-cd
|
|
3
|
+
description: This skill should be used when the user asks to "ci cd,ci/cd,파이프라인,github actions,배포 자동화,pipeline design". CI/CD pipeline design, implementation, and optimization
|
|
4
|
+
triggers:
|
|
5
|
+
- "ci cd"
|
|
6
|
+
- "ci/cd"
|
|
7
|
+
- "파이프라인"
|
|
8
|
+
- "github actions"
|
|
9
|
+
- "배포 자동화"
|
|
10
|
+
- "pipeline design"
|
|
11
|
+
---
|
|
12
|
+
<!-- forgen-managed -->
|
|
13
|
+
|
|
14
|
+
<Purpose>
|
|
15
|
+
CI/CD 파이프라인을 설계하고 구현합니다.
|
|
16
|
+
빌드, 테스트, 린트, 보안 스캔, 배포까지의 자동화 파이프라인을 구축하고
|
|
17
|
+
안정적이고 빠른 배포 사이클을 확립합니다.
|
|
18
|
+
</Purpose>
|
|
19
|
+
|
|
20
|
+
<Steps>
|
|
21
|
+
1. **요구사항 분석**: 프로젝트의 CI/CD 요구사항을 파악합니다
|
|
22
|
+
- 현재 배포 프로세스 파악 (수동/자동)
|
|
23
|
+
- 배포 대상 환경 (staging, production, preview)
|
|
24
|
+
- 브랜치 전략 확인 (gitflow, trunk-based, GitHub flow)
|
|
25
|
+
- 필요한 품질 게이트 식별
|
|
26
|
+
- 배포 빈도 목표
|
|
27
|
+
- 롤백 요구사항
|
|
28
|
+
- 시크릿 관리 방식
|
|
29
|
+
- 알림/모니터링 연동 대상
|
|
30
|
+
|
|
31
|
+
2. **파이프라인 스테이지 설계**: 단계별 작업을 정의합니다
|
|
32
|
+
- **Install**: 의존성 설치 (캐시 활용)
|
|
33
|
+
- **Lint**: 코드 스타일 검사 (ESLint, Prettier)
|
|
34
|
+
- **Type Check**: 타입 검사 (TypeScript)
|
|
35
|
+
- **Unit Test**: 유닛 테스트 실행 + 커버리지
|
|
36
|
+
- **Integration Test**: 통합 테스트 (DB, 외부 서비스)
|
|
37
|
+
- **Build**: 프로덕션 빌드
|
|
38
|
+
- **Security Scan**: 의존성 취약점 검사 (npm audit, Snyk)
|
|
39
|
+
- **E2E Test**: End-to-End 테스트 (Playwright, Cypress)
|
|
40
|
+
- **Deploy**: 배포 (환경별 차등)
|
|
41
|
+
- **Smoke Test**: 배포 후 기본 동작 확인
|
|
42
|
+
- **Notify**: 결과 알림 (Slack, Discord)
|
|
43
|
+
|
|
44
|
+
3. **구현**: 파이프라인 설정 파일을 작성합니다
|
|
45
|
+
- CI 플랫폼 선택 (GitHub Actions, GitLab CI, CircleCI)
|
|
46
|
+
- 워크플로우 파일 작성
|
|
47
|
+
- 병렬 실행 가능한 작업 식별 및 설정
|
|
48
|
+
- 캐싱 전략 (node_modules, 빌드 아티팩트)
|
|
49
|
+
- 매트릭스 빌드 (여러 Node 버전, OS)
|
|
50
|
+
- 환경별 배포 조건 설정
|
|
51
|
+
- 시크릿 설정 (환경 변수, 시크릿 스토어)
|
|
52
|
+
- 재사용 가능한 워크플로우 분리
|
|
53
|
+
|
|
54
|
+
4. **품질 게이트 설정**: 머지/배포 차단 조건을 설정합니다
|
|
55
|
+
- 테스트 커버리지 임계값 (85%+)
|
|
56
|
+
- 린트 에러 제로
|
|
57
|
+
- 타입 에러 제로
|
|
58
|
+
- 보안 취약점 제로 (CRITICAL/HIGH)
|
|
59
|
+
- 빌드 성공 필수
|
|
60
|
+
- PR 리뷰 승인 필수
|
|
61
|
+
- 커밋 메시지 컨벤션 검사
|
|
62
|
+
|
|
63
|
+
5. **모니터링 및 최적화**: 파이프라인 성능을 관리합니다
|
|
64
|
+
- 파이프라인 실행 시간 추적
|
|
65
|
+
- 실패율 모니터링
|
|
66
|
+
- Flaky 테스트 추적 및 제거
|
|
67
|
+
- 캐시 히트율 최적화
|
|
68
|
+
- 불필요한 재실행 방지 (경로 필터링)
|
|
69
|
+
- 비용 최적화 (러너 크기, 병렬화)
|
|
70
|
+
</Steps>
|
|
71
|
+
|
|
72
|
+
## 에이전트 위임
|
|
73
|
+
|
|
74
|
+
`executor` 에이전트(Sonnet 모델)에 위임하여 파이프라인을 구현합니다:
|
|
75
|
+
|
|
76
|
+
```
|
|
77
|
+
Agent(
|
|
78
|
+
subagent_type="executor",
|
|
79
|
+
model="sonnet",
|
|
80
|
+
prompt="CI/CD PIPELINE TASK
|
|
81
|
+
|
|
82
|
+
CI/CD 파이프라인을 설계하고 구현하세요.
|
|
83
|
+
|
|
84
|
+
Project: [프로젝트 설명]
|
|
85
|
+
Platform: [GitHub Actions / GitLab CI / etc.]
|
|
86
|
+
Branch Strategy: [gitflow / trunk-based / GitHub flow]
|
|
87
|
+
|
|
88
|
+
Pipeline Checklist:
|
|
89
|
+
1. 스테이지 설계 (lint, test, build, deploy)
|
|
90
|
+
2. 워크플로우 파일 작성
|
|
91
|
+
3. 캐싱 및 병렬화 최적화
|
|
92
|
+
4. 품질 게이트 설정
|
|
93
|
+
5. 시크릿 및 환경 변수 관리
|
|
94
|
+
6. 배포 전략 (환경별)
|
|
95
|
+
|
|
96
|
+
Output: CI/CD 구성 파일 및 문서:
|
|
97
|
+
- 워크플로우 파일(들)
|
|
98
|
+
- 환경별 배포 설정
|
|
99
|
+
- 품질 게이트 목록
|
|
100
|
+
- 파이프라인 다이어그램"
|
|
101
|
+
)
|
|
102
|
+
```
|
|
103
|
+
|
|
104
|
+
## External Consultation (Optional)
|
|
105
|
+
|
|
106
|
+
executor 에이전트는 교차 검증을 위해 Claude Task 에이전트에 자문할 수 있습니다.
|
|
107
|
+
|
|
108
|
+
### Protocol
|
|
109
|
+
1. **자체 파이프라인 설계를 먼저 완료** -- 독립적으로 구현
|
|
110
|
+
2. **검증을 위한 자문** -- Claude Task 에이전트를 통해 설계 교차 확인
|
|
111
|
+
3. **비판적 평가** -- 외부 제안을 맹목적으로 수용하지 않음
|
|
112
|
+
4. **우아한 폴백** -- 위임이 불가능할 경우 절대 차단하지 않음
|
|
113
|
+
|
|
114
|
+
### 자문이 필요한 경우
|
|
115
|
+
- 멀티 환경 배포 전략 (dev/staging/prod)
|
|
116
|
+
- Blue-Green 또는 Canary 배포 설정
|
|
117
|
+
- 모노레포 CI 최적화
|
|
118
|
+
- 보안이 중요한 배포 파이프라인
|
|
119
|
+
|
|
120
|
+
### 자문을 생략하는 경우
|
|
121
|
+
- 단순 린트/테스트 파이프라인
|
|
122
|
+
- 단일 환경 배포
|
|
123
|
+
- 잘 알려진 CI 템플릿 적용
|
|
124
|
+
- 기존 파이프라인의 경미한 수정
|
|
125
|
+
|
|
126
|
+
## 파이프라인 체크리스트
|
|
127
|
+
|
|
128
|
+
### CI (Continuous Integration) (6개)
|
|
129
|
+
- [ ] 의존성 설치에 캐시 적용
|
|
130
|
+
- [ ] 린트가 모든 PR에서 실행됨
|
|
131
|
+
- [ ] 타입 체크가 모든 PR에서 실행됨
|
|
132
|
+
- [ ] 테스트가 커버리지와 함께 실행됨
|
|
133
|
+
- [ ] 보안 스캔이 포함됨
|
|
134
|
+
- [ ] 빌드가 성공해야 머지 가능
|
|
135
|
+
|
|
136
|
+
### CD (Continuous Deployment) (5개)
|
|
137
|
+
- [ ] staging 환경에 자동 배포
|
|
138
|
+
- [ ] production 배포에 수동 승인 또는 자동 게이트
|
|
139
|
+
- [ ] 배포 후 스모크 테스트 실행
|
|
140
|
+
- [ ] 롤백 절차가 문서화/자동화됨
|
|
141
|
+
- [ ] 배포 알림이 설정됨
|
|
142
|
+
|
|
143
|
+
### 보안 (4개)
|
|
144
|
+
- [ ] 시크릿이 CI 플랫폼의 시크릿 스토어에 저장됨
|
|
145
|
+
- [ ] 워크플로우 파일에 하드코딩된 시크릿 없음
|
|
146
|
+
- [ ] 의존성 취약점 스캔 포함
|
|
147
|
+
- [ ] 최소 권한 원칙으로 배포 토큰 설정
|
|
148
|
+
|
|
149
|
+
### 성능 (3개)
|
|
150
|
+
- [ ] 병렬 실행으로 총 실행 시간 최소화
|
|
151
|
+
- [ ] 경로 필터로 불필요한 실행 방지
|
|
152
|
+
- [ ] 캐시 히트율이 80% 이상
|
|
153
|
+
|
|
154
|
+
## 배포 전략 비교
|
|
155
|
+
|
|
156
|
+
| 전략 | 다운타임 | 롤백 속도 | 복잡도 | 적합한 경우 |
|
|
157
|
+
|------|----------|-----------|--------|-------------|
|
|
158
|
+
| **Rolling** | 없음 | 느림 | 낮음 | 일반 웹 서비스 |
|
|
159
|
+
| **Blue-Green** | 없음 | 즉시 | 중간 | 빠른 롤백 필요 |
|
|
160
|
+
| **Canary** | 없음 | 빠름 | 높음 | 대규모 트래픽 |
|
|
161
|
+
| **Recreate** | 있음 | 느림 | 낮음 | 비프로덕션 환경 |
|
|
162
|
+
|
|
163
|
+
<Output>
|
|
164
|
+
```
|
|
165
|
+
CI/CD PIPELINE DOCUMENT / CI/CD 파이프라인 문서
|
|
166
|
+
================================================
|
|
167
|
+
|
|
168
|
+
Project: [프로젝트명]
|
|
169
|
+
Platform: [GitHub Actions / GitLab CI]
|
|
170
|
+
Branch Strategy: [gitflow / trunk-based]
|
|
171
|
+
|
|
172
|
+
PIPELINE DIAGRAM / 파이프라인 다이어그램
|
|
173
|
+
-----------------------------------------
|
|
174
|
+
PR → [Install] → [Lint + Type Check + Unit Test] → [Build] → [Security Scan]
|
|
175
|
+
(parallel)
|
|
176
|
+
main → [Install] → [Full Test] → [Build] → [Deploy Staging] → [Smoke Test]
|
|
177
|
+
↓ (manual approve)
|
|
178
|
+
[Deploy Production] → [Smoke Test]
|
|
179
|
+
|
|
180
|
+
STAGES / 스테이지
|
|
181
|
+
------------------
|
|
182
|
+
| Stage | Trigger | Duration | Parallel |
|
|
183
|
+
|---------------|-------------|----------|----------|
|
|
184
|
+
| Install | PR, push | ~30s | - |
|
|
185
|
+
| Lint | PR, push | ~15s | Yes |
|
|
186
|
+
| Type Check | PR, push | ~20s | Yes |
|
|
187
|
+
| Unit Test | PR, push | ~45s | Yes |
|
|
188
|
+
| Build | PR, push | ~60s | - |
|
|
189
|
+
| Security Scan | PR, push | ~30s | Yes |
|
|
190
|
+
| Deploy Staging| main push | ~120s | - |
|
|
191
|
+
| Smoke Test | after deploy| ~30s | - |
|
|
192
|
+
| Deploy Prod | manual | ~120s | - |
|
|
193
|
+
|
|
194
|
+
QUALITY GATES / 품질 게이트
|
|
195
|
+
-----------------------------
|
|
196
|
+
- Test Coverage: >= 85%
|
|
197
|
+
- Lint Errors: 0
|
|
198
|
+
- Type Errors: 0
|
|
199
|
+
- Security Vulnerabilities (CRITICAL/HIGH): 0
|
|
200
|
+
- Build: Success
|
|
201
|
+
- PR Review: >= 1 approval
|
|
202
|
+
|
|
203
|
+
WORKFLOW FILES / 워크플로우 파일
|
|
204
|
+
---------------------------------
|
|
205
|
+
.github/workflows/
|
|
206
|
+
ci.yml -- PR 검증 (lint, test, build)
|
|
207
|
+
cd-staging.yml -- staging 자동 배포
|
|
208
|
+
cd-prod.yml -- production 수동 배포
|
|
209
|
+
security.yml -- 주간 보안 스캔
|
|
210
|
+
|
|
211
|
+
ESTIMATED TOTAL RUNTIME / 예상 총 실행 시간
|
|
212
|
+
---------------------------------------------
|
|
213
|
+
PR Pipeline: ~2m30s
|
|
214
|
+
Deploy Pipeline: ~5m
|
|
215
|
+
```
|
|
216
|
+
</Output>
|
|
217
|
+
|
|
218
|
+
<Policy>
|
|
219
|
+
- 파이프라인은 10분 이내에 완료되어야 합니다 (PR 기준 5분 목표)
|
|
220
|
+
- 시크릿은 절대 워크플로우 파일에 하드코딩하지 않습니다
|
|
221
|
+
- 프로덕션 배포에는 반드시 승인 프로세스를 포함합니다
|
|
222
|
+
- 롤백 절차를 반드시 문서화하고 테스트합니다
|
|
223
|
+
- Flaky 테스트는 파이프라인 신뢰성을 해치므로 즉시 수정합니다
|
|
224
|
+
- 비용 효율성을 고려하여 불필요한 실행을 방지합니다
|
|
225
|
+
</Policy>
|
|
226
|
+
|
|
227
|
+
## 다른 스킬과의 연동
|
|
228
|
+
|
|
229
|
+
**테스트 전략 연동:**
|
|
230
|
+
```
|
|
231
|
+
/forgen:testing-strategy CI에서 실행할 테스트 구성
|
|
232
|
+
```
|
|
233
|
+
테스트 전략에 맞는 CI 테스트 단계 구성
|
|
234
|
+
|
|
235
|
+
**보안 리뷰 연동:**
|
|
236
|
+
```
|
|
237
|
+
/forgen:security-review .github/workflows/
|
|
238
|
+
```
|
|
239
|
+
워크플로우 파일의 보안 점검
|
|
240
|
+
|
|
241
|
+
**Docker 연동:**
|
|
242
|
+
```
|
|
243
|
+
/forgen:docker CI에서 컨테이너 빌드
|
|
244
|
+
```
|
|
245
|
+
CI 파이프라인에 Docker 이미지 빌드 통합
|
|
246
|
+
|
|
247
|
+
## Best Practices
|
|
248
|
+
|
|
249
|
+
- **빠르게 실패** -- 가장 빠른 검사를 먼저 실행 (lint > type > test > build)
|
|
250
|
+
- **병렬화** -- 독립적인 작업은 동시에 실행
|
|
251
|
+
- **캐시 활용** -- 의존성과 빌드 아티팩트를 캐싱
|
|
252
|
+
- **경로 필터링** -- 관련 파일 변경 시에만 실행
|
|
253
|
+
- **알림 최적화** -- 실패 시에만 알림 (성공 알림은 노이즈)
|
|
254
|
+
|
|
255
|
+
<Arguments>
|
|
256
|
+
## 사용법
|
|
257
|
+
`/forgen:ci-cd {파이프라인 대상}`
|
|
258
|
+
|
|
259
|
+
### 예시
|
|
260
|
+
- `/forgen:ci-cd GitHub Actions 파이프라인 설계`
|
|
261
|
+
- `/forgen:ci-cd staging 자동 배포 설정`
|
|
262
|
+
- `/forgen:ci-cd 기존 파이프라인 실행 시간 최적화`
|
|
263
|
+
- `/forgen:ci-cd Vercel 배포 + Preview 환경 구성`
|
|
264
|
+
|
|
265
|
+
### 인자
|
|
266
|
+
- CI 플랫폼, 배포 대상, 최적화 목표 등을 설명
|
|
267
|
+
- 인자 없으면 프로젝트에 적합한 CI/CD 파이프라인을 설계
|
|
268
|
+
</Arguments>
|
|
269
|
+
|
|
270
|
+
$ARGUMENTS
|