@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,271 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: frontend
|
|
3
|
+
description: This skill should be used when the user asks to "frontend,프론트엔드,component,접근성,accessibility,컴포넌트 설계". Frontend component design, accessibility audit, and responsive implementation
|
|
4
|
+
triggers:
|
|
5
|
+
- "frontend"
|
|
6
|
+
- "프론트엔드"
|
|
7
|
+
- "component"
|
|
8
|
+
- "접근성"
|
|
9
|
+
- "accessibility"
|
|
10
|
+
- "컴포넌트 설계"
|
|
11
|
+
---
|
|
12
|
+
<!-- forgen-managed -->
|
|
13
|
+
|
|
14
|
+
<Purpose>
|
|
15
|
+
프론트엔드 컴포넌트를 체계적으로 설계하고 구현합니다.
|
|
16
|
+
컴포넌트 계층 구조 설계, Props 인터페이스 정의, 접근성 감사,
|
|
17
|
+
반응형 레이아웃, 성능 최적화를 포함한 프론트엔드 개발 전체를 다룹니다.
|
|
18
|
+
</Purpose>
|
|
19
|
+
|
|
20
|
+
<Steps>
|
|
21
|
+
1. **컴포넌트 계층 구조 설계**: 컴포넌트 트리를 설계합니다
|
|
22
|
+
- 페이지/기능 요구사항 분석
|
|
23
|
+
- Atomic Design 원칙 적용 (Atoms → Molecules → Organisms → Templates → Pages)
|
|
24
|
+
- 컴포넌트 책임 분리 (UI vs 로직)
|
|
25
|
+
- 공유 컴포넌트 vs 도메인 컴포넌트 구분
|
|
26
|
+
- 컴포넌트 트리 다이어그램 작성
|
|
27
|
+
- 상태 관리 위치 결정 (로컬 vs 전역 vs 서버)
|
|
28
|
+
- 데이터 흐름 방향 정의 (단방향 데이터 흐름)
|
|
29
|
+
|
|
30
|
+
2. **Props 인터페이스 설계**: 컴포넌트 API를 정의합니다
|
|
31
|
+
- TypeScript 인터페이스 정의
|
|
32
|
+
- 필수/선택 Props 구분
|
|
33
|
+
- 기본값 설정 (defaultProps 또는 default parameter)
|
|
34
|
+
- 콜백 Props 네이밍 컨벤션 (onXxx, handleXxx)
|
|
35
|
+
- children 패턴 활용 (합성 패턴)
|
|
36
|
+
- Render Props 또는 Compound Component 패턴 고려
|
|
37
|
+
- Props 과도 확산(prop drilling) 방지 전략
|
|
38
|
+
- Discriminated Union 타입으로 변형(variant) 관리
|
|
39
|
+
|
|
40
|
+
3. **접근성 감사**: WCAG 2.1 AA 기준으로 접근성을 검증합니다
|
|
41
|
+
- 시맨틱 HTML 사용 (button, nav, main, section, article)
|
|
42
|
+
- ARIA 속성 적절 사용 (aria-label, aria-describedby, role)
|
|
43
|
+
- 키보드 내비게이션 (Tab, Enter, Escape, Arrow keys)
|
|
44
|
+
- 포커스 관리 (포커스 트랩, 포커스 복원)
|
|
45
|
+
- 색상 대비 (최소 4.5:1 for text, 3:1 for large text)
|
|
46
|
+
- 스크린 리더 호환성 (라이브 리전, 상태 알림)
|
|
47
|
+
- 모션 감소 대응 (prefers-reduced-motion)
|
|
48
|
+
- 터치 타겟 크기 (최소 44x44px)
|
|
49
|
+
- 대체 텍스트 (이미지 alt, 아이콘 aria-label)
|
|
50
|
+
- 폼 접근성 (label 연결, 에러 메시지 연결)
|
|
51
|
+
|
|
52
|
+
4. **반응형 구현**: 다양한 화면 크기를 지원합니다
|
|
53
|
+
- 브레이크포인트 정의 (mobile: 320px, tablet: 768px, desktop: 1024px+)
|
|
54
|
+
- Mobile-first 접근법 적용
|
|
55
|
+
- 유동적 레이아웃 (Flexbox, Grid)
|
|
56
|
+
- 반응형 타이포그래피 (clamp, fluid type)
|
|
57
|
+
- 이미지 반응형 처리 (srcset, picture, next/image)
|
|
58
|
+
- 터치/마우스 인터랙션 차이 대응
|
|
59
|
+
- 가로/세로 모드 대응
|
|
60
|
+
|
|
61
|
+
5. **성능 최적화**: 렌더링 성능을 최적화합니다
|
|
62
|
+
- React.memo로 불필요한 리렌더링 방지
|
|
63
|
+
- useMemo/useCallback 적절 사용 (남용 방지)
|
|
64
|
+
- 코드 스플리팅 (React.lazy + Suspense)
|
|
65
|
+
- 가상 스크롤 (대량 리스트, react-window)
|
|
66
|
+
- 이미지 지연 로딩 (loading="lazy", Intersection Observer)
|
|
67
|
+
- Web Vitals 모니터링 (LCP, FID, CLS)
|
|
68
|
+
- 번들 분석 (webpack-bundle-analyzer)
|
|
69
|
+
</Steps>
|
|
70
|
+
|
|
71
|
+
## 에이전트 위임
|
|
72
|
+
|
|
73
|
+
`designer` 에이전트(Sonnet 모델)에 위임하여 컴포넌트를 설계합니다:
|
|
74
|
+
|
|
75
|
+
```
|
|
76
|
+
Agent(
|
|
77
|
+
subagent_type="designer",
|
|
78
|
+
model="sonnet",
|
|
79
|
+
prompt="FRONTEND COMPONENT TASK
|
|
80
|
+
|
|
81
|
+
프론트엔드 컴포넌트를 설계하고 구현하세요.
|
|
82
|
+
|
|
83
|
+
Feature: [기능/페이지 설명]
|
|
84
|
+
Framework: [React / Vue / Svelte / etc.]
|
|
85
|
+
Styling: [Tailwind / CSS Modules / styled-components]
|
|
86
|
+
|
|
87
|
+
Design Checklist:
|
|
88
|
+
1. 컴포넌트 계층 구조 설계
|
|
89
|
+
2. Props 인터페이스 (TypeScript)
|
|
90
|
+
3. 접근성 감사 (WCAG 2.1 AA)
|
|
91
|
+
4. 반응형 레이아웃 (Mobile-first)
|
|
92
|
+
5. 성능 최적화 (리렌더링, 코드 스플리팅)
|
|
93
|
+
|
|
94
|
+
Output: 컴포넌트 설계 문서:
|
|
95
|
+
- 컴포넌트 트리
|
|
96
|
+
- Props 인터페이스
|
|
97
|
+
- 접근성 체크리스트 결과
|
|
98
|
+
- 반응형 브레이크포인트
|
|
99
|
+
- 성능 최적화 포인트"
|
|
100
|
+
)
|
|
101
|
+
```
|
|
102
|
+
|
|
103
|
+
## External Consultation (Optional)
|
|
104
|
+
|
|
105
|
+
designer 에이전트는 교차 검증을 위해 Claude Task 에이전트에 자문할 수 있습니다.
|
|
106
|
+
|
|
107
|
+
### Protocol
|
|
108
|
+
1. **자체 설계를 먼저 완료** -- 독립적으로 컴포넌트 설계
|
|
109
|
+
2. **검증을 위한 자문** -- Claude Task 에이전트를 통해 접근성/UX 교차 확인
|
|
110
|
+
3. **비판적 평가** -- 외부 제안을 맹목적으로 수용하지 않음
|
|
111
|
+
4. **우아한 폴백** -- 위임이 불가능할 경우 절대 차단하지 않음
|
|
112
|
+
|
|
113
|
+
### 자문이 필요한 경우
|
|
114
|
+
- 복잡한 인터랙션 패턴 (드래그앤드롭, 가상 스크롤)
|
|
115
|
+
- 접근성이 중요한 공개 웹사이트
|
|
116
|
+
- 대규모 상태 관리 아키텍처
|
|
117
|
+
- 디자인 시스템 구축
|
|
118
|
+
|
|
119
|
+
### 자문을 생략하는 경우
|
|
120
|
+
- 단순 폼 컴포넌트
|
|
121
|
+
- 잘 알려진 UI 패턴
|
|
122
|
+
- 내부 어드민 도구
|
|
123
|
+
- 프로토타입 수준의 UI
|
|
124
|
+
|
|
125
|
+
## 접근성 체크리스트 (WCAG 2.1 AA)
|
|
126
|
+
|
|
127
|
+
### 인지 가능 (Perceivable) (5개)
|
|
128
|
+
- [ ] 모든 이미지에 대체 텍스트 (alt) 제공
|
|
129
|
+
- [ ] 색상 대비 4.5:1 이상 (텍스트), 3:1 이상 (대형 텍스트)
|
|
130
|
+
- [ ] 색상만으로 정보를 전달하지 않음 (아이콘/텍스트 병행)
|
|
131
|
+
- [ ] 텍스트 크기 200%까지 확대 가능 (레이아웃 깨짐 없이)
|
|
132
|
+
- [ ] 자동 재생 미디어에 정지 버튼 제공
|
|
133
|
+
|
|
134
|
+
### 조작 가능 (Operable) (5개)
|
|
135
|
+
- [ ] 모든 기능이 키보드로 접근 가능
|
|
136
|
+
- [ ] 포커스 순서가 논리적
|
|
137
|
+
- [ ] 포커스 표시가 명확 (outline 제거 금지)
|
|
138
|
+
- [ ] 터치 타겟 최소 44x44px
|
|
139
|
+
- [ ] 시간 제한이 있는 기능에 연장 옵션 제공
|
|
140
|
+
|
|
141
|
+
### 이해 가능 (Understandable) (4개)
|
|
142
|
+
- [ ] 폼 필드에 label이 연결됨
|
|
143
|
+
- [ ] 에러 메시지가 해당 필드 근처에 표시됨
|
|
144
|
+
- [ ] 링크 텍스트가 목적지를 설명 ("여기를 클릭" 금지)
|
|
145
|
+
- [ ] 언어 속성 (lang)이 설정됨
|
|
146
|
+
|
|
147
|
+
### 견고함 (Robust) (4개)
|
|
148
|
+
- [ ] 시맨틱 HTML 요소 사용 (div 남용 금지)
|
|
149
|
+
- [ ] ARIA 속성이 올바르게 사용됨
|
|
150
|
+
- [ ] 동적 콘텐츠에 aria-live 적용
|
|
151
|
+
- [ ] 커스텀 위젯에 적절한 role 설정
|
|
152
|
+
|
|
153
|
+
## 컴포넌트 복잡도 가이드
|
|
154
|
+
|
|
155
|
+
| 복잡도 | Props 수 | 상태 | 패턴 |
|
|
156
|
+
|--------|---------|------|------|
|
|
157
|
+
| **단순** | 0~3 | Stateless | 함수 컴포넌트 |
|
|
158
|
+
| **보통** | 4~8 | 로컬 상태 | useState/useReducer |
|
|
159
|
+
| **복잡** | 9+ | 전역 + 로컬 | Compound Component, Context |
|
|
160
|
+
|
|
161
|
+
<Output>
|
|
162
|
+
```
|
|
163
|
+
FRONTEND COMPONENT DESIGN / 프론트엔드 컴포넌트 설계
|
|
164
|
+
=====================================================
|
|
165
|
+
|
|
166
|
+
Feature: [기능명]
|
|
167
|
+
Framework: [React 18 + TypeScript]
|
|
168
|
+
Styling: [Tailwind CSS]
|
|
169
|
+
|
|
170
|
+
COMPONENT TREE / 컴포넌트 트리
|
|
171
|
+
---------------------------------
|
|
172
|
+
<ProductPage>
|
|
173
|
+
├── <ProductHeader>
|
|
174
|
+
│ ├── <Breadcrumb />
|
|
175
|
+
│ └── <ProductTitle />
|
|
176
|
+
├── <ProductGallery>
|
|
177
|
+
│ ├── <ImageCarousel />
|
|
178
|
+
│ └── <ThumbnailStrip />
|
|
179
|
+
├── <ProductInfo>
|
|
180
|
+
│ ├── <PriceDisplay />
|
|
181
|
+
│ ├── <VariantSelector />
|
|
182
|
+
│ └── <AddToCartButton />
|
|
183
|
+
└── <ProductReviews>
|
|
184
|
+
├── <ReviewSummary />
|
|
185
|
+
└── <ReviewList />
|
|
186
|
+
|
|
187
|
+
PROPS INTERFACES / Props 인터페이스
|
|
188
|
+
--------------------------------------
|
|
189
|
+
interface ProductInfoProps {
|
|
190
|
+
product: Product;
|
|
191
|
+
selectedVariant: Variant | null;
|
|
192
|
+
onVariantSelect: (variant: Variant) => void;
|
|
193
|
+
onAddToCart: (quantity: number) => void;
|
|
194
|
+
isLoading?: boolean;
|
|
195
|
+
}
|
|
196
|
+
|
|
197
|
+
ACCESSIBILITY AUDIT / 접근성 감사
|
|
198
|
+
-----------------------------------
|
|
199
|
+
Perceivable: [5/5 PASS]
|
|
200
|
+
Operable: [4/5 - 터치 타겟 크기 수정 필요]
|
|
201
|
+
Understandable: [4/4 PASS]
|
|
202
|
+
Robust: [4/4 PASS]
|
|
203
|
+
|
|
204
|
+
RESPONSIVE BREAKPOINTS / 반응형 브레이크포인트
|
|
205
|
+
-------------------------------------------------
|
|
206
|
+
Mobile (< 768px): 단일 컬럼, 갤러리 스와이프
|
|
207
|
+
Tablet (768~1024px): 2컬럼 (갤러리 + 정보)
|
|
208
|
+
Desktop (> 1024px): 3컬럼 (갤러리 + 정보 + 리뷰)
|
|
209
|
+
|
|
210
|
+
PERFORMANCE / 성능
|
|
211
|
+
-------------------
|
|
212
|
+
- ImageCarousel: React.lazy로 지연 로딩
|
|
213
|
+
- ReviewList: 가상 스크롤 (react-window)
|
|
214
|
+
- 이미지: next/image with srcset
|
|
215
|
+
- 번들 기여: ~25KB (gzip)
|
|
216
|
+
```
|
|
217
|
+
</Output>
|
|
218
|
+
|
|
219
|
+
<Policy>
|
|
220
|
+
- 접근성은 선택이 아닌 기본입니다 -- WCAG 2.1 AA를 항상 충족
|
|
221
|
+
- 컴포넌트는 단일 책임 원칙을 따릅니다
|
|
222
|
+
- Props 인터페이스는 TypeScript로 명시합니다
|
|
223
|
+
- Mobile-first로 설계하고 데스크톱으로 확장합니다
|
|
224
|
+
- 성능 최적화는 측정 후 필요한 곳에만 적용합니다 (사전 최적화 금지)
|
|
225
|
+
- 디자인 시스템/토큰이 있으면 반드시 활용합니다
|
|
226
|
+
</Policy>
|
|
227
|
+
|
|
228
|
+
## 다른 스킬과의 연동
|
|
229
|
+
|
|
230
|
+
**성능 연동:**
|
|
231
|
+
```
|
|
232
|
+
/forgen:performance 프론트엔드 번들 분석
|
|
233
|
+
```
|
|
234
|
+
번들 크기와 렌더링 성능 최적화
|
|
235
|
+
|
|
236
|
+
**TDD 연동:**
|
|
237
|
+
```
|
|
238
|
+
/forgen:tdd 컴포넌트 유닛 테스트
|
|
239
|
+
```
|
|
240
|
+
컴포넌트별 테스트 작성
|
|
241
|
+
|
|
242
|
+
**코드 리뷰 연동:**
|
|
243
|
+
```
|
|
244
|
+
/forgen:code-review src/components/
|
|
245
|
+
```
|
|
246
|
+
컴포넌트 코드 품질 검증
|
|
247
|
+
|
|
248
|
+
## Best Practices
|
|
249
|
+
|
|
250
|
+
- **합성 우선** -- 상속보다 합성(composition) 패턴 사용
|
|
251
|
+
- **접근성 내장** -- 나중에 추가하지 않고 처음부터 포함
|
|
252
|
+
- **타입 안전** -- Props에 TypeScript 타입을 명시
|
|
253
|
+
- **측정 후 최적화** -- React Profiler로 확인 후 최적화
|
|
254
|
+
- **일관된 패턴** -- 프로젝트 전체에서 동일한 패턴 유지
|
|
255
|
+
|
|
256
|
+
<Arguments>
|
|
257
|
+
## 사용법
|
|
258
|
+
`/forgen:frontend {설계 대상}`
|
|
259
|
+
|
|
260
|
+
### 예시
|
|
261
|
+
- `/forgen:frontend 상품 상세 페이지 컴포넌트 설계`
|
|
262
|
+
- `/forgen:frontend 기존 폼 컴포넌트 접근성 개선`
|
|
263
|
+
- `/forgen:frontend 대시보드 레이아웃 반응형 구현`
|
|
264
|
+
- `/forgen:frontend 디자인 시스템 기본 컴포넌트 설계`
|
|
265
|
+
|
|
266
|
+
### 인자
|
|
267
|
+
- 설계할 페이지/기능, 프레임워크, 접근성 요구사항 등을 설명
|
|
268
|
+
- 인자 없으면 프로젝트의 프론트엔드 구조를 분석하여 개선점 제시
|
|
269
|
+
</Arguments>
|
|
270
|
+
|
|
271
|
+
$ARGUMENTS
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: git-master
|
|
3
|
+
description: This skill should be used when the user asks to "git-master,깃마스터,atomic commit". Atomic commits, smart rebasing, and history management
|
|
4
|
+
triggers:
|
|
5
|
+
- "git-master"
|
|
6
|
+
- "깃마스터"
|
|
7
|
+
- "atomic commit"
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
<Purpose>
|
|
11
|
+
원자적 커밋 전략과 체계적인 Git 히스토리 관리를 실행합니다.
|
|
12
|
+
Conventional Commits 컨벤션, 인터랙티브 리베이스, 브랜치 전략을 통해
|
|
13
|
+
읽기 쉽고 유지보수 가능한 커밋 히스토리를 구축합니다.
|
|
14
|
+
</Purpose>
|
|
15
|
+
|
|
16
|
+
<Steps>
|
|
17
|
+
1. **원자적 커밋 전략**
|
|
18
|
+
- 하나의 커밋 = 하나의 논리적 변경 단위
|
|
19
|
+
- 빌드 가능하고 테스트 통과 상태로 유지
|
|
20
|
+
- `git add <specific-files>`로 변경사항을 파일 단위로 선택적 스테이징
|
|
21
|
+
> **Note:** `git add -p`(인터랙티브 패치 모드)와 `git add -i`는 Claude Code에서 지원되지 않습니다. `git add <specific-files>`를 사용하세요.
|
|
22
|
+
|
|
23
|
+
2. **Conventional Commits 메시지 컨벤션**
|
|
24
|
+
```
|
|
25
|
+
<type>(<scope>): <subject>
|
|
26
|
+
|
|
27
|
+
<body>
|
|
28
|
+
|
|
29
|
+
<footer>
|
|
30
|
+
```
|
|
31
|
+
- **type**: feat, fix, docs, style, refactor, test, chore, perf
|
|
32
|
+
- **scope**: 변경된 모듈/컴포넌트 (선택)
|
|
33
|
+
- **subject**: 현재형 동사로 시작, 50자 이내
|
|
34
|
+
- **Breaking Change**: footer에 `BREAKING CHANGE:` 명시
|
|
35
|
+
|
|
36
|
+
3. **인터랙티브 리베이스**
|
|
37
|
+
> **Note:** `git rebase -i`는 Claude Code에서 지원되지 않습니다 (인터랙티브 입력 불가). 대신 `git rebase` with explicit commit range 또는 `git commit --fixup` + `git rebase --autosquash`를 사용하세요.
|
|
38
|
+
```bash
|
|
39
|
+
git rebase -i HEAD~N # N개 커밋 재정리 (Claude Code 외부에서 실행)
|
|
40
|
+
```
|
|
41
|
+
- `pick`: 그대로 유지
|
|
42
|
+
- `squash`/`fixup`: 이전 커밋과 합치기
|
|
43
|
+
- `reword`: 메시지만 수정
|
|
44
|
+
- `edit`: 커밋 내용 수정
|
|
45
|
+
- `drop`: 커밋 삭제
|
|
46
|
+
- ⚠ 공유 브랜치에서 리베이스 금지
|
|
47
|
+
|
|
48
|
+
4. **브랜치 전략**
|
|
49
|
+
- `main/master`: 항상 배포 가능 상태
|
|
50
|
+
- `develop`: 통합 브랜치 (Git Flow)
|
|
51
|
+
- `feature/<ticket>-<short-desc>`: 기능 개발
|
|
52
|
+
- `fix/<ticket>-<short-desc>`: 버그 수정
|
|
53
|
+
- `hotfix/<ticket>`: 긴급 수정
|
|
54
|
+
- 브랜치명에 티켓 번호 포함 권장
|
|
55
|
+
|
|
56
|
+
5. **Squash & Fixup 워크플로우**
|
|
57
|
+
```bash
|
|
58
|
+
git commit --fixup <sha> # 특정 커밋에 fixup 생성
|
|
59
|
+
git rebase -i --autosquash main # fixup 자동 정렬
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
6. **Conflict 해결 전략**
|
|
63
|
+
- `git mergetool` 또는 IDE 통합 도구 사용
|
|
64
|
+
- 복잡한 충돌: `git checkout --ours/--theirs <file>` 선택
|
|
65
|
+
- 충돌 해결 후 반드시 테스트 실행
|
|
66
|
+
- `git log --merge`: 충돌에 기여한 커밋 확인
|
|
67
|
+
</Steps>
|
|
68
|
+
|
|
69
|
+
<Policy>
|
|
70
|
+
- 공유 브랜치(main, develop)에서 force push 금지
|
|
71
|
+
- 커밋 전 `git diff --staged`로 변경사항 최종 확인
|
|
72
|
+
- WIP 커밋은 push 전 squash 처리
|
|
73
|
+
- 커밋 메시지에 '수정', 'fix', 'update'만 쓰지 않고 구체적 맥락 포함
|
|
74
|
+
</Policy>
|
|
75
|
+
|
|
76
|
+
<Arguments>
|
|
77
|
+
## 사용법
|
|
78
|
+
`/forgen:git-master {작업 내용}`
|
|
79
|
+
|
|
80
|
+
### 예시
|
|
81
|
+
- `/forgen:git-master 3개의 WIP 커밋을 원자적 커밋으로 재정리`
|
|
82
|
+
- `/forgen:git-master feature 브랜치를 main에 리베이스하며 충돌 해결`
|
|
83
|
+
- `/forgen:git-master 커밋 히스토리 클린업 후 PR 준비`
|
|
84
|
+
|
|
85
|
+
### 인자
|
|
86
|
+
- 현재 Git 상태 또는 수행할 작업을 설명
|
|
87
|
+
- 브랜치명, 커밋 범위, 목표 브랜치 등 구체적 정보 포함 권장
|
|
88
|
+
</Arguments>
|
|
89
|
+
|
|
90
|
+
$ARGUMENTS
|
|
@@ -0,0 +1,292 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: incident-response
|
|
3
|
+
description: This skill should be used when the user asks to "incident,장애 대응,postmortem,장애 분석,사후 분석,outage". Incident response workflow with triage, mitigation, root cause analysis, and postmortem
|
|
4
|
+
triggers:
|
|
5
|
+
- "incident"
|
|
6
|
+
- "장애 대응"
|
|
7
|
+
- "postmortem"
|
|
8
|
+
- "장애 분석"
|
|
9
|
+
- "사후 분석"
|
|
10
|
+
- "outage"
|
|
11
|
+
---
|
|
12
|
+
<!-- forgen-managed -->
|
|
13
|
+
|
|
14
|
+
<Purpose>
|
|
15
|
+
장애 대응과 사후 분석(포스트모텀)을 체계적으로 수행합니다.
|
|
16
|
+
트리아지, 긴급 완화, 근본 원인 분석, 수정, 사후 분석 보고서 작성,
|
|
17
|
+
재발 방지 액션 아이템까지 인시던트 대응의 전체 라이프사이클을 다룹니다.
|
|
18
|
+
</Purpose>
|
|
19
|
+
|
|
20
|
+
<Steps>
|
|
21
|
+
1. **트리아지**: 장애 심각도와 영향 범위를 신속히 판단합니다
|
|
22
|
+
- 장애 증상 수집 (에러 로그, 모니터링 알림, 사용자 보고)
|
|
23
|
+
- 심각도 분류:
|
|
24
|
+
* **SEV-1** (Critical): 서비스 전체 중단, 데이터 손실
|
|
25
|
+
* **SEV-2** (Major): 핵심 기능 장애, 일부 사용자 영향
|
|
26
|
+
* **SEV-3** (Minor): 비핵심 기능 장애, 우회 가능
|
|
27
|
+
* **SEV-4** (Low): 성능 저하, 미미한 영향
|
|
28
|
+
- 영향 범위 파악 (사용자 수, 기능, 지역)
|
|
29
|
+
- 타임라인 시작 (발생 시각 기록)
|
|
30
|
+
- 커뮤니케이션 채널 설정 (Slack 채널, 상태 페이지)
|
|
31
|
+
- 담당자 지정 (Incident Commander, Communication Lead)
|
|
32
|
+
|
|
33
|
+
2. **긴급 완화**: 즉각적인 피해를 줄입니다
|
|
34
|
+
- 최근 배포 확인 (배포가 원인인가?)
|
|
35
|
+
- 롤백 가능 여부 판단 및 실행
|
|
36
|
+
- 장애 서비스 격리 (트래픽 차단, 서킷 브레이커)
|
|
37
|
+
- 임시 조치 적용 (캐시 비우기, 서비스 재시작, 스케일 아웃)
|
|
38
|
+
- 상태 페이지 업데이트 (사용자 공지)
|
|
39
|
+
- 완화 효과 확인 (모니터링 지표 정상화 여부)
|
|
40
|
+
|
|
41
|
+
3. **근본 원인 분석**: 장애의 진짜 원인을 찾습니다
|
|
42
|
+
- 타임라인 재구성 (분 단위)
|
|
43
|
+
- 로그 분석 (에러 로그, 액세스 로그, 감사 로그)
|
|
44
|
+
- 메트릭 분석 (CPU, 메모리, 네트워크, 요청/에러율)
|
|
45
|
+
- 배포 이력 확인 (코드 변경, 설정 변경, 인프라 변경)
|
|
46
|
+
- 5 Whys 기법 적용:
|
|
47
|
+
* Why 1: 직접 원인은?
|
|
48
|
+
* Why 2: 왜 그 원인이 발생했는가?
|
|
49
|
+
* Why 3: 왜 감지하지 못했는가?
|
|
50
|
+
* Why 4: 왜 방지하지 못했는가?
|
|
51
|
+
* Why 5: 근본적으로 무엇이 부족했는가?
|
|
52
|
+
- 기여 요인 식별 (코드, 인프라, 프로세스, 인적 요소)
|
|
53
|
+
|
|
54
|
+
4. **수정 적용**: 근본 원인을 해결합니다
|
|
55
|
+
- 코드 수정 작성
|
|
56
|
+
- 코드 리뷰 (간소화된 긴급 리뷰)
|
|
57
|
+
- 테스트 작성 (장애 재현 테스트)
|
|
58
|
+
- 스테이징 검증
|
|
59
|
+
- 프로덕션 배포
|
|
60
|
+
- 모니터링 강화 (해당 지표 임계값 조정)
|
|
61
|
+
- 수정 효과 확인 (장애 증상 완전 해소)
|
|
62
|
+
|
|
63
|
+
5. **포스트모텀 작성**: 사후 분석 보고서를 작성합니다
|
|
64
|
+
- 비난 없는 분석 (blameless postmortem)
|
|
65
|
+
- 타임라인 정리 (발생 → 감지 → 완화 → 해결)
|
|
66
|
+
- 근본 원인 요약
|
|
67
|
+
- 잘된 점 (What went well)
|
|
68
|
+
- 개선할 점 (What could be improved)
|
|
69
|
+
- 행운이었던 점 (Where we got lucky)
|
|
70
|
+
|
|
71
|
+
6. **액션 아이템 도출**: 재발 방지 대책을 수립합니다
|
|
72
|
+
- 단기 조치 (1주 이내): 즉각적인 보호 장치
|
|
73
|
+
- 중기 조치 (1개월 이내): 시스템 개선
|
|
74
|
+
- 장기 조치 (분기 내): 아키텍처/프로세스 개선
|
|
75
|
+
- 각 액션 아이템에 담당자와 기한 지정
|
|
76
|
+
- 액션 아이템 추적 체계 설정 (이슈 트래커)
|
|
77
|
+
</Steps>
|
|
78
|
+
|
|
79
|
+
## 에이전트 위임
|
|
80
|
+
|
|
81
|
+
`debugger` 에이전트(Opus 모델)에 위임하여 근본 원인 분석을 수행합니다:
|
|
82
|
+
|
|
83
|
+
```
|
|
84
|
+
Agent(
|
|
85
|
+
subagent_type="debugger",
|
|
86
|
+
model="opus",
|
|
87
|
+
prompt="INCIDENT RESPONSE TASK
|
|
88
|
+
|
|
89
|
+
장애 대응 및 근본 원인 분석을 수행하세요.
|
|
90
|
+
|
|
91
|
+
Incident: [장애 설명]
|
|
92
|
+
Severity: [SEV-1 / SEV-2 / SEV-3 / SEV-4]
|
|
93
|
+
Symptoms: [관찰된 증상]
|
|
94
|
+
|
|
95
|
+
Response Checklist:
|
|
96
|
+
1. 트리아지 (심각도, 영향 범위)
|
|
97
|
+
2. 긴급 완화 (롤백, 격리, 임시 조치)
|
|
98
|
+
3. 근본 원인 분석 (로그, 메트릭, 5 Whys)
|
|
99
|
+
4. 수정 적용 (코드 수정, 테스트, 배포)
|
|
100
|
+
5. 포스트모텀 초안
|
|
101
|
+
6. 액션 아이템 도출
|
|
102
|
+
|
|
103
|
+
Output: 인시던트 대응 리포트:
|
|
104
|
+
- 타임라인
|
|
105
|
+
- 근본 원인
|
|
106
|
+
- 완화/수정 조치
|
|
107
|
+
- 포스트모텀 요약
|
|
108
|
+
- 액션 아이템 목록"
|
|
109
|
+
)
|
|
110
|
+
```
|
|
111
|
+
|
|
112
|
+
## External Consultation (Optional)
|
|
113
|
+
|
|
114
|
+
debugger 에이전트는 교차 검증을 위해 Claude Task 에이전트에 자문할 수 있습니다.
|
|
115
|
+
|
|
116
|
+
### Protocol
|
|
117
|
+
1. **자체 분석을 먼저 완료** -- 독립적으로 근본 원인 조사
|
|
118
|
+
2. **검증을 위한 자문** -- Claude Task 에이전트를 통해 분석 교차 확인
|
|
119
|
+
3. **비판적 평가** -- 외부 제안을 맹목적으로 수용하지 않음
|
|
120
|
+
4. **우아한 폴백** -- 위임이 불가능할 경우 절대 차단하지 않음
|
|
121
|
+
|
|
122
|
+
### 자문이 필요한 경우
|
|
123
|
+
- 데이터 손실이 발생한 SEV-1 장애
|
|
124
|
+
- 보안 침해 의심
|
|
125
|
+
- 재현이 어려운 간헐적 장애
|
|
126
|
+
- 인프라 레벨의 복합 장애
|
|
127
|
+
|
|
128
|
+
### 자문을 생략하는 경우
|
|
129
|
+
- 명확한 배포 실패 (롤백으로 해결)
|
|
130
|
+
- 단순 설정 오류
|
|
131
|
+
- 알려진 패턴의 장애
|
|
132
|
+
- SEV-3/SEV-4 수준의 경미한 이슈
|
|
133
|
+
|
|
134
|
+
## 인시던트 대응 체크리스트
|
|
135
|
+
|
|
136
|
+
### 즉시 대응 (5개)
|
|
137
|
+
- [ ] 장애 심각도가 분류됨
|
|
138
|
+
- [ ] 영향 범위가 파악됨
|
|
139
|
+
- [ ] 커뮤니케이션 채널이 설정됨
|
|
140
|
+
- [ ] 담당자가 지정됨
|
|
141
|
+
- [ ] 타임라인 기록이 시작됨
|
|
142
|
+
|
|
143
|
+
### 완화 (4개)
|
|
144
|
+
- [ ] 최근 배포 확인 및 롤백 여부 판단됨
|
|
145
|
+
- [ ] 임시 조치가 적용됨
|
|
146
|
+
- [ ] 사용자에게 상태가 공지됨
|
|
147
|
+
- [ ] 완화 효과가 확인됨
|
|
148
|
+
|
|
149
|
+
### 근본 원인 (4개)
|
|
150
|
+
- [ ] 로그 및 메트릭이 분석됨
|
|
151
|
+
- [ ] 5 Whys가 적용됨
|
|
152
|
+
- [ ] 기여 요인이 식별됨
|
|
153
|
+
- [ ] 근본 원인이 확정됨
|
|
154
|
+
|
|
155
|
+
### 사후 조치 (5개)
|
|
156
|
+
- [ ] 수정이 코드 리뷰됨
|
|
157
|
+
- [ ] 재현 테스트가 작성됨
|
|
158
|
+
- [ ] 포스트모텀이 작성됨
|
|
159
|
+
- [ ] 액션 아이템에 담당자/기한이 지정됨
|
|
160
|
+
- [ ] 액션 아이템이 이슈 트래커에 등록됨
|
|
161
|
+
|
|
162
|
+
## 대응 시간 기준
|
|
163
|
+
|
|
164
|
+
| 심각도 | 감지 | 대응 시작 | 완화 | 해결 |
|
|
165
|
+
|--------|------|-----------|------|------|
|
|
166
|
+
| **SEV-1** | < 5분 | < 15분 | < 1시간 | < 4시간 |
|
|
167
|
+
| **SEV-2** | < 15분 | < 30분 | < 4시간 | < 24시간 |
|
|
168
|
+
| **SEV-3** | < 1시간 | < 4시간 | < 24시간 | < 1주 |
|
|
169
|
+
| **SEV-4** | < 24시간 | 다음 스프린트 | -- | 백로그 |
|
|
170
|
+
|
|
171
|
+
<Output>
|
|
172
|
+
```
|
|
173
|
+
INCIDENT REPORT / 인시던트 리포트
|
|
174
|
+
===================================
|
|
175
|
+
|
|
176
|
+
Incident ID: INC-YYYY-NNN
|
|
177
|
+
Severity: [SEV-1 / SEV-2 / SEV-3 / SEV-4]
|
|
178
|
+
Status: [INVESTIGATING / MITIGATING / RESOLVED / POSTMORTEM]
|
|
179
|
+
Duration: [발생 → 해결 총 시간]
|
|
180
|
+
|
|
181
|
+
TIMELINE / 타임라인
|
|
182
|
+
---------------------
|
|
183
|
+
HH:MM - [이벤트 설명]
|
|
184
|
+
HH:MM - 장애 감지 (모니터링 알림)
|
|
185
|
+
HH:MM - 트리아지 완료, SEV-N 선언
|
|
186
|
+
HH:MM - 긴급 완화 적용 (롤백/격리)
|
|
187
|
+
HH:MM - 서비스 정상화 확인
|
|
188
|
+
HH:MM - 근본 원인 확정
|
|
189
|
+
HH:MM - 영구 수정 배포
|
|
190
|
+
|
|
191
|
+
IMPACT / 영향
|
|
192
|
+
--------------
|
|
193
|
+
- 영향 받은 사용자: ~N명
|
|
194
|
+
- 영향 받은 기능: [기능 목록]
|
|
195
|
+
- 데이터 손실: [있음/없음]
|
|
196
|
+
- 수익 영향: [추정치]
|
|
197
|
+
|
|
198
|
+
ROOT CAUSE / 근본 원인
|
|
199
|
+
------------------------
|
|
200
|
+
[근본 원인 설명]
|
|
201
|
+
|
|
202
|
+
5 Whys:
|
|
203
|
+
1. Why: [직접 원인]
|
|
204
|
+
2. Why: [이유]
|
|
205
|
+
3. Why: [이유]
|
|
206
|
+
4. Why: [이유]
|
|
207
|
+
5. Why: [근본 원인]
|
|
208
|
+
|
|
209
|
+
Contributing Factors:
|
|
210
|
+
- [기여 요인 1]
|
|
211
|
+
- [기여 요인 2]
|
|
212
|
+
|
|
213
|
+
POSTMORTEM / 사후 분석
|
|
214
|
+
-----------------------
|
|
215
|
+
What went well:
|
|
216
|
+
- [잘된 점 1]
|
|
217
|
+
- [잘된 점 2]
|
|
218
|
+
|
|
219
|
+
What could be improved:
|
|
220
|
+
- [개선할 점 1]
|
|
221
|
+
- [개선할 점 2]
|
|
222
|
+
|
|
223
|
+
Where we got lucky:
|
|
224
|
+
- [행운이었던 점]
|
|
225
|
+
|
|
226
|
+
ACTION ITEMS / 액션 아이템
|
|
227
|
+
----------------------------
|
|
228
|
+
[단기 - 1주 이내]
|
|
229
|
+
- [ ] [조치 1] @담당자 (기한: YYYY-MM-DD)
|
|
230
|
+
- [ ] [조치 2] @담당자 (기한: YYYY-MM-DD)
|
|
231
|
+
|
|
232
|
+
[중기 - 1개월 이내]
|
|
233
|
+
- [ ] [조치 3] @담당자 (기한: YYYY-MM-DD)
|
|
234
|
+
|
|
235
|
+
[장기 - 분기 내]
|
|
236
|
+
- [ ] [조치 4] @담당자 (기한: YYYY-MM-DD)
|
|
237
|
+
```
|
|
238
|
+
</Output>
|
|
239
|
+
|
|
240
|
+
<Policy>
|
|
241
|
+
- 비난 없는 문화를 유지합니다 -- 사람이 아닌 시스템과 프로세스에 집중
|
|
242
|
+
- 완화가 분석보다 우선입니다 -- 먼저 불을 끄고 원인을 찾습니다
|
|
243
|
+
- 타임라인은 정확하고 상세하게 기록합니다
|
|
244
|
+
- 포스트모텀은 장애 후 48시간 이내에 작성합니다
|
|
245
|
+
- 액션 아이템은 반드시 담당자와 기한을 지정합니다
|
|
246
|
+
- 동일한 장애가 두 번 발생하는 것은 허용되지 않습니다
|
|
247
|
+
</Policy>
|
|
248
|
+
|
|
249
|
+
## 다른 스킬과의 연동
|
|
250
|
+
|
|
251
|
+
**디버그 탐정 연동:**
|
|
252
|
+
```
|
|
253
|
+
/forgen:debug-detective 간헐적 장애 원인 분석
|
|
254
|
+
```
|
|
255
|
+
체계적 디버깅으로 근본 원인 추적
|
|
256
|
+
|
|
257
|
+
**보안 리뷰 연동:**
|
|
258
|
+
```
|
|
259
|
+
/forgen:security-review 장애 원인이 보안 취약점인 경우
|
|
260
|
+
```
|
|
261
|
+
보안 관련 장애의 취약점 분석
|
|
262
|
+
|
|
263
|
+
**테스트 전략 연동:**
|
|
264
|
+
```
|
|
265
|
+
/forgen:testing-strategy 장애 재발 방지 테스트
|
|
266
|
+
```
|
|
267
|
+
장애 재현 테스트 및 회귀 테스트 설계
|
|
268
|
+
|
|
269
|
+
## Best Practices
|
|
270
|
+
|
|
271
|
+
- **즉시 대응** -- 장애 감지 후 최대한 빨리 대응 시작
|
|
272
|
+
- **커뮤니케이션** -- 이해관계자에게 정기적으로 상태 업데이트
|
|
273
|
+
- **비난 금지** -- 시스템과 프로세스를 개선하는 데 집중
|
|
274
|
+
- **기록 유지** -- 모든 조치와 판단의 근거를 기록
|
|
275
|
+
- **후속 추적** -- 액션 아이템이 실제로 완료되었는지 추적
|
|
276
|
+
|
|
277
|
+
<Arguments>
|
|
278
|
+
## 사용법
|
|
279
|
+
`/forgen:incident-response {장애 상황}`
|
|
280
|
+
|
|
281
|
+
### 예시
|
|
282
|
+
- `/forgen:incident-response API 500 에러 급증`
|
|
283
|
+
- `/forgen:incident-response 데이터베이스 연결 타임아웃`
|
|
284
|
+
- `/forgen:incident-response 어제 배포 후 로그인 실패 보고`
|
|
285
|
+
- `/forgen:incident-response INC-2026-042 포스트모텀 작성`
|
|
286
|
+
|
|
287
|
+
### 인자
|
|
288
|
+
- 장애 증상, 에러 메시지, 영향 범위 등을 설명
|
|
289
|
+
- 인자 없으면 현재 시스템 상태를 점검
|
|
290
|
+
</Arguments>
|
|
291
|
+
|
|
292
|
+
$ARGUMENTS
|