@kood/claude-code 0.4.0 → 0.5.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/dist/index.js +53 -7
- package/package.json +2 -1
- package/templates/.claude/PARALLEL_AGENTS.md +737 -0
- package/templates/.claude/agents/analyst.md +416 -0
- package/templates/.claude/agents/architect.md +569 -0
- package/templates/.claude/agents/code-reviewer.md +132 -133
- package/templates/.claude/agents/dependency-manager.md +93 -94
- package/templates/.claude/agents/deployment-validator.md +64 -65
- package/templates/.claude/agents/designer.md +655 -0
- package/templates/.claude/agents/document-writer.md +500 -0
- package/templates/.claude/agents/explore.md +499 -0
- package/templates/.claude/agents/git-operator.md +74 -75
- package/templates/.claude/agents/implementation-executor.md +138 -109
- package/templates/.claude/agents/ko-to-en-translator.md +18 -22
- package/templates/.claude/agents/lint-fixer.md +250 -93
- package/templates/.claude/agents/planner.md +356 -0
- package/templates/.claude/agents/refactor-advisor.md +135 -136
- package/templates/.claude/commands/bug-fix.md +296 -207
- package/templates/.claude/commands/git-all.md +199 -46
- package/templates/.claude/commands/git-session.md +113 -57
- package/templates/.claude/commands/lint-fix.md +219 -153
- package/templates/.claude/commands/lint-init.md +113 -76
- package/templates/.claude/commands/pre-deploy.md +190 -124
- package/templates/.claude/commands/refactor.md +407 -162
- package/templates/.claude/commands/version-update.md +138 -37
- package/templates/.claude/instructions/context-engineering/ANTHROPIC_CONTEXT_ENGINEERING.md +178 -0
- package/templates/.claude/instructions/context-engineering/references/claude-4x.md +215 -0
- package/templates/.claude/instructions/context-engineering/references/core-principles.md +137 -0
- package/templates/.claude/instructions/context-engineering/references/examples.md +351 -0
- package/templates/.claude/instructions/context-engineering/references/techniques.md +162 -0
- package/templates/.claude/instructions/parallel-agent-execution.md +874 -0
- package/templates/.claude/skills/docs-creator/AGENTS.md +238 -0
- package/templates/.claude/{commands/docs-creator.md → skills/docs-creator/SKILL.md} +61 -75
- package/templates/.claude/skills/docs-refactor/AGENTS.md +270 -0
- package/templates/.claude/{commands/docs-refactor.md → skills/docs-refactor/SKILL.md} +30 -44
- package/templates/.claude/skills/execute/SKILL.md +451 -0
- package/templates/.claude/skills/figma-to-code/AGENTS.md +287 -0
- package/templates/.claude/skills/figma-to-code/SKILL.md +225 -225
- package/templates/.claude/skills/figma-to-code/references/design-tokens.md +75 -73
- package/templates/.claude/skills/figma-to-code/references/figma-mcp-tools.md +73 -73
- package/templates/.claude/skills/figma-to-code/references/layout-mapping.md +104 -104
- package/templates/.claude/skills/figma-to-code/references/responsive-design.md +99 -99
- package/templates/.claude/skills/figma-to-code/references/verification.md +91 -91
- package/templates/.claude/skills/global-uiux-design/AGENTS.md +317 -0
- package/templates/.claude/skills/global-uiux-design/SKILL.md +738 -0
- package/templates/.claude/skills/global-uiux-design/references/accessibility.md +401 -0
- package/templates/.claude/skills/global-uiux-design/references/color-system.md +275 -0
- package/templates/.claude/skills/global-uiux-design/references/design-philosophy.md +206 -0
- package/templates/.claude/skills/global-uiux-design/references/design-systems.md +446 -0
- package/templates/.claude/skills/korea-uiux-design/AGENTS.md +307 -0
- package/templates/.claude/skills/korea-uiux-design/SKILL.md +170 -0
- package/templates/.claude/skills/nextjs-react-best-practices/AGENTS.md +95 -116
- package/templates/.claude/skills/nextjs-react-best-practices/SKILL.md +134 -152
- package/templates/.claude/skills/nextjs-react-best-practices/rules/advanced-event-handler-refs.md +6 -6
- package/templates/.claude/skills/nextjs-react-best-practices/rules/advanced-use-latest.md +5 -5
- package/templates/.claude/skills/nextjs-react-best-practices/rules/async-api-routes.md +5 -5
- package/templates/.claude/skills/nextjs-react-best-practices/rules/async-defer-await.md +22 -22
- package/templates/.claude/skills/nextjs-react-best-practices/rules/async-dependencies.md +5 -5
- package/templates/.claude/skills/nextjs-react-best-practices/rules/async-parallel.md +4 -4
- package/templates/.claude/skills/nextjs-react-best-practices/rules/async-suspense-boundaries.md +21 -21
- package/templates/.claude/skills/nextjs-react-best-practices/rules/bundle-barrel-imports.md +18 -18
- package/templates/.claude/skills/nextjs-react-best-practices/rules/bundle-conditional.md +4 -4
- package/templates/.claude/skills/nextjs-react-best-practices/rules/bundle-defer-third-party.md +4 -4
- package/templates/.claude/skills/nextjs-react-best-practices/rules/bundle-dynamic-imports.md +4 -4
- package/templates/.claude/skills/nextjs-react-best-practices/rules/bundle-preload.md +5 -5
- package/templates/.claude/skills/nextjs-react-best-practices/rules/client-event-listeners.md +9 -9
- package/templates/.claude/skills/nextjs-react-best-practices/rules/client-swr-dedup.md +7 -7
- package/templates/.claude/skills/nextjs-react-best-practices/rules/js-batch-dom-css.md +13 -13
- package/templates/.claude/skills/nextjs-react-best-practices/rules/js-cache-function-results.md +14 -14
- package/templates/.claude/skills/nextjs-react-best-practices/rules/js-cache-property-access.md +4 -4
- package/templates/.claude/skills/nextjs-react-best-practices/rules/js-cache-storage.md +10 -10
- package/templates/.claude/skills/nextjs-react-best-practices/rules/js-combine-iterations.md +4 -4
- package/templates/.claude/skills/nextjs-react-best-practices/rules/js-early-exit.md +7 -7
- package/templates/.claude/skills/nextjs-react-best-practices/rules/js-hoist-regexp.md +6 -6
- package/templates/.claude/skills/nextjs-react-best-practices/rules/js-index-maps.md +6 -6
- package/templates/.claude/skills/nextjs-react-best-practices/rules/js-length-check-first.md +14 -14
- package/templates/.claude/skills/nextjs-react-best-practices/rules/js-min-max-loop.md +16 -16
- package/templates/.claude/skills/nextjs-react-best-practices/rules/js-set-map-lookups.md +4 -4
- package/templates/.claude/skills/nextjs-react-best-practices/rules/js-tosorted-immutable.md +17 -17
- package/templates/.claude/skills/nextjs-react-best-practices/rules/rendering-activity.md +4 -4
- package/templates/.claude/skills/nextjs-react-best-practices/rules/rendering-animate-svg-wrapper.md +11 -11
- package/templates/.claude/skills/nextjs-react-best-practices/rules/rendering-conditional-render.md +8 -8
- package/templates/.claude/skills/nextjs-react-best-practices/rules/rendering-content-visibility.md +4 -4
- package/templates/.claude/skills/nextjs-react-best-practices/rules/rendering-hoist-jsx.md +6 -6
- package/templates/.claude/skills/nextjs-react-best-practices/rules/rendering-hydration-no-flicker.md +14 -14
- package/templates/.claude/skills/nextjs-react-best-practices/rules/rendering-svg-precision.md +5 -5
- package/templates/.claude/skills/nextjs-react-best-practices/rules/rerender-defer-reads.md +4 -4
- package/templates/.claude/skills/nextjs-react-best-practices/rules/rerender-dependencies.md +7 -7
- package/templates/.claude/skills/nextjs-react-best-practices/rules/rerender-derived-state.md +5 -5
- package/templates/.claude/skills/nextjs-react-best-practices/rules/rerender-functional-setstate.md +34 -34
- package/templates/.claude/skills/nextjs-react-best-practices/rules/rerender-lazy-state-init.md +15 -15
- package/templates/.claude/skills/nextjs-react-best-practices/rules/rerender-memo.md +5 -5
- package/templates/.claude/skills/nextjs-react-best-practices/rules/rerender-transitions.md +4 -4
- package/templates/.claude/skills/nextjs-react-best-practices/rules/server-after-nonblocking.md +24 -24
- package/templates/.claude/skills/nextjs-react-best-practices/rules/server-cache-lru.md +10 -10
- package/templates/.claude/skills/nextjs-react-best-practices/rules/server-cache-react.md +4 -4
- package/templates/.claude/skills/nextjs-react-best-practices/rules/server-parallel-fetching.md +5 -5
- package/templates/.claude/skills/nextjs-react-best-practices/rules/server-serialization.md +6 -6
- package/templates/.claude/skills/plan/SKILL.md +594 -0
- package/templates/.claude/skills/prd/SKILL.md +496 -0
- package/templates/.claude/skills/ralph/AGENTS.md +393 -0
- package/templates/.claude/skills/ralph/SKILL.md +1035 -0
- package/templates/.claude/skills/tanstack-start-react-best-practices/AGENTS.md +100 -121
- package/templates/.claude/skills/tanstack-start-react-best-practices/SKILL.md +139 -157
- package/templates/.claude/skills/tanstack-start-react-best-practices/rules/async-defer-await.md +22 -22
- package/templates/.claude/skills/tanstack-start-react-best-practices/rules/async-dependencies.md +5 -5
- package/templates/.claude/skills/tanstack-start-react-best-practices/rules/async-loader.md +7 -7
- package/templates/.claude/skills/tanstack-start-react-best-practices/rules/async-parallel.md +4 -4
- package/templates/.claude/skills/tanstack-start-react-best-practices/rules/bundle-barrel-imports.md +18 -18
- package/templates/.claude/skills/tanstack-start-react-best-practices/rules/bundle-conditional.md +4 -4
- package/templates/.claude/skills/tanstack-start-react-best-practices/rules/bundle-defer-third-party.md +4 -4
- package/templates/.claude/skills/tanstack-start-react-best-practices/rules/bundle-lazy-routes.md +12 -12
- package/templates/.claude/skills/tanstack-start-react-best-practices/rules/bundle-preload.md +5 -5
- package/templates/.claude/skills/tanstack-start-react-best-practices/rules/client-event-listeners.md +9 -9
- package/templates/.claude/skills/tanstack-start-react-best-practices/rules/client-tanstack-query.md +12 -12
- package/templates/.claude/skills/tanstack-start-react-best-practices/rules/js-batch-dom-css.md +13 -13
- package/templates/.claude/skills/tanstack-start-react-best-practices/rules/js-cache-function-results.md +14 -14
- package/templates/.claude/skills/tanstack-start-react-best-practices/rules/js-cache-property-access.md +4 -4
- package/templates/.claude/skills/tanstack-start-react-best-practices/rules/js-cache-storage.md +10 -10
- package/templates/.claude/skills/tanstack-start-react-best-practices/rules/js-combine-iterations.md +4 -4
- package/templates/.claude/skills/tanstack-start-react-best-practices/rules/js-early-exit.md +7 -7
- package/templates/.claude/skills/tanstack-start-react-best-practices/rules/js-hoist-regexp.md +6 -6
- package/templates/.claude/skills/tanstack-start-react-best-practices/rules/js-index-maps.md +6 -6
- package/templates/.claude/skills/tanstack-start-react-best-practices/rules/js-length-check-first.md +14 -14
- package/templates/.claude/skills/tanstack-start-react-best-practices/rules/js-min-max-loop.md +16 -16
- package/templates/.claude/skills/tanstack-start-react-best-practices/rules/js-set-map-lookups.md +4 -4
- package/templates/.claude/skills/tanstack-start-react-best-practices/rules/js-tosorted-immutable.md +17 -17
- package/templates/.claude/skills/tanstack-start-react-best-practices/rules/rendering-animate-svg-wrapper.md +11 -11
- package/templates/.claude/skills/tanstack-start-react-best-practices/rules/rendering-conditional-render.md +8 -8
- package/templates/.claude/skills/tanstack-start-react-best-practices/rules/rendering-content-visibility.md +4 -4
- package/templates/.claude/skills/tanstack-start-react-best-practices/rules/rendering-hoist-jsx.md +6 -6
- package/templates/.claude/skills/tanstack-start-react-best-practices/rules/rendering-svg-precision.md +5 -5
- package/templates/.claude/skills/tanstack-start-react-best-practices/rules/rerender-defer-reads.md +4 -4
- package/templates/.claude/skills/tanstack-start-react-best-practices/rules/rerender-dependencies.md +7 -7
- package/templates/.claude/skills/tanstack-start-react-best-practices/rules/rerender-derived-state.md +5 -5
- package/templates/.claude/skills/tanstack-start-react-best-practices/rules/rerender-functional-setstate.md +34 -34
- package/templates/.claude/skills/tanstack-start-react-best-practices/rules/rerender-lazy-state-init.md +15 -15
- package/templates/.claude/skills/tanstack-start-react-best-practices/rules/rerender-memo.md +5 -5
- package/templates/.claude/skills/tanstack-start-react-best-practices/rules/rerender-transitions.md +4 -4
- package/templates/.claude/skills/tanstack-start-react-best-practices/rules/server-cache-lru.md +12 -12
- package/templates/.claude/skills/tanstack-start-react-best-practices/rules/server-deferred-data.md +14 -14
- package/templates/.claude/skills/tanstack-start-react-best-practices/rules/server-parallel-fetching.md +9 -9
- package/templates/.claude/skills/tanstack-start-react-best-practices/rules/server-serialization.md +6 -6
- package/templates/.claude/commands/agent-creator.md +0 -370
- package/templates/.claude/commands/command-creator.md +0 -524
- package/templates/.claude/commands/execute.md +0 -469
- package/templates/.claude/commands/git.md +0 -98
- package/templates/.claude/commands/plan.md +0 -531
- package/templates/.claude/commands/prd.md +0 -629
|
@@ -0,0 +1,137 @@
|
|
|
1
|
+
# Core Principles - 상세 가이드
|
|
2
|
+
|
|
3
|
+
## 1. Find the Right Altitude
|
|
4
|
+
|
|
5
|
+
적절한 추상화 수준 찾기.
|
|
6
|
+
|
|
7
|
+
### 수준별 비교
|
|
8
|
+
|
|
9
|
+
| ❌ Too Low | ✅ Right Altitude | ❌ Too High |
|
|
10
|
+
|-----------|------------------|-------------|
|
|
11
|
+
| 복잡한 조건문 | 명확한 원칙 + 예시 | 모호한 지시 |
|
|
12
|
+
| 모든 엣지 케이스 나열 | 핵심 패턴 제공 | 구체성 부족 |
|
|
13
|
+
| "If X then Y, unless Z..." | "Follow pattern: [코드]" | "잘 만들어줘" |
|
|
14
|
+
|
|
15
|
+
### 예시: API 에러 처리
|
|
16
|
+
|
|
17
|
+
```text
|
|
18
|
+
❌ Too Low:
|
|
19
|
+
"If status === 400, check error.code. If code === 'INVALID_INPUT',
|
|
20
|
+
show field-specific errors. If code === 'VALIDATION_ERROR',
|
|
21
|
+
check error.fields array. For each field..."
|
|
22
|
+
|
|
23
|
+
✅ Right Altitude:
|
|
24
|
+
"Handle API errors with appropriate user messages.
|
|
25
|
+
Example:
|
|
26
|
+
400 → Show field errors
|
|
27
|
+
401 → Redirect to login
|
|
28
|
+
500 → Show generic error"
|
|
29
|
+
|
|
30
|
+
❌ Too High:
|
|
31
|
+
"적절히 에러 처리해줘"
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
---
|
|
35
|
+
|
|
36
|
+
## 2. Context as Finite Resource
|
|
37
|
+
|
|
38
|
+
컨텍스트는 제한된 자원.
|
|
39
|
+
|
|
40
|
+
### Just-in-Time Loading
|
|
41
|
+
|
|
42
|
+
| 전략 | 방법 | 효과 |
|
|
43
|
+
|------|------|------|
|
|
44
|
+
| **@imports** | 필요한 시점에만 로드 | 90%+ 절약 |
|
|
45
|
+
| **references/** | 상세 문서 분리 | 메인 파일 간결 |
|
|
46
|
+
| **Subagent** | 조사 작업 위임 | 요약만 반환 |
|
|
47
|
+
|
|
48
|
+
### Minimal Start
|
|
49
|
+
|
|
50
|
+
```text
|
|
51
|
+
1차 시도: 최소 프롬프트
|
|
52
|
+
↓ 실패
|
|
53
|
+
2차 시도: 예시 1개 추가
|
|
54
|
+
↓ 실패
|
|
55
|
+
3차 시도: 제약사항 명시
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
**Bad:** 처음부터 모든 조건 나열
|
|
59
|
+
|
|
60
|
+
### Token Minimization
|
|
61
|
+
|
|
62
|
+
```text
|
|
63
|
+
❌ "Use TypeScript for type safety and better development experience"
|
|
64
|
+
✅ "TypeScript"
|
|
65
|
+
|
|
66
|
+
❌ "Create a new file called utils.ts and add helper functions"
|
|
67
|
+
✅ "utils.ts: helper functions"
|
|
68
|
+
|
|
69
|
+
❌ 중복 설명
|
|
70
|
+
✅ 표 형식 압축
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
---
|
|
74
|
+
|
|
75
|
+
## 3. Explicit > Implicit (Claude 4.x)
|
|
76
|
+
|
|
77
|
+
명시적 지시가 핵심.
|
|
78
|
+
|
|
79
|
+
### Claude 4.x 특징
|
|
80
|
+
|
|
81
|
+
| 상황 | Claude 3.x | Claude 4.x |
|
|
82
|
+
|------|-----------|-----------|
|
|
83
|
+
| "Create dashboard" | 추가 기능 자동 포함 | 최소한만 구현 |
|
|
84
|
+
| "Suggest changes" | 때때로 바로 구현 | 제안만 |
|
|
85
|
+
| "Fix bug" | 주변 코드도 개선 | 버그만 수정 |
|
|
86
|
+
|
|
87
|
+
### 명시적 지시 패턴
|
|
88
|
+
|
|
89
|
+
```text
|
|
90
|
+
❌ "Create dashboard"
|
|
91
|
+
✅ "Create dashboard. Include:
|
|
92
|
+
- User stats cards
|
|
93
|
+
- Activity timeline
|
|
94
|
+
- Quick actions
|
|
95
|
+
- Recent notifications
|
|
96
|
+
Go beyond basics to create fully-featured UI."
|
|
97
|
+
|
|
98
|
+
❌ "Optimize this"
|
|
99
|
+
✅ "Optimize this. Consider:
|
|
100
|
+
- Memoization for expensive calculations
|
|
101
|
+
- Lazy loading for off-screen content
|
|
102
|
+
- Code splitting for large bundles
|
|
103
|
+
Apply all applicable optimizations."
|
|
104
|
+
|
|
105
|
+
❌ "Add tests"
|
|
106
|
+
✅ "Add comprehensive tests:
|
|
107
|
+
- Unit tests for each function
|
|
108
|
+
- Integration tests for API calls
|
|
109
|
+
- Edge cases and error scenarios
|
|
110
|
+
Aim for 80%+ coverage."
|
|
111
|
+
```
|
|
112
|
+
|
|
113
|
+
### Behavior Control
|
|
114
|
+
|
|
115
|
+
```xml
|
|
116
|
+
<!-- 적극적 행동 -->
|
|
117
|
+
<default_to_action>
|
|
118
|
+
Implement changes directly rather than suggesting.
|
|
119
|
+
When you see an opportunity for improvement, apply it.
|
|
120
|
+
</default_to_action>
|
|
121
|
+
|
|
122
|
+
<!-- 보수적 행동 -->
|
|
123
|
+
<do_not_act_before_instructions>
|
|
124
|
+
Wait for explicit user instruction before taking action.
|
|
125
|
+
Only suggest, never implement without confirmation.
|
|
126
|
+
</do_not_act_before_instructions>
|
|
127
|
+
```
|
|
128
|
+
|
|
129
|
+
---
|
|
130
|
+
|
|
131
|
+
## 요약
|
|
132
|
+
|
|
133
|
+
| 원칙 | 핵심 |
|
|
134
|
+
|------|------|
|
|
135
|
+
| Right Altitude | 패턴 + 예시 (조건문 ❌) |
|
|
136
|
+
| Finite Resource | Just-in-Time, 최소화 |
|
|
137
|
+
| Explicit | "Create X with Y and Z" (모호함 ❌) |
|
|
@@ -0,0 +1,351 @@
|
|
|
1
|
+
# Examples - 실전 패턴
|
|
2
|
+
|
|
3
|
+
## Agentic Coding
|
|
4
|
+
|
|
5
|
+
```xml
|
|
6
|
+
<coding_guidelines>
|
|
7
|
+
|
|
8
|
+
<investigation>
|
|
9
|
+
ALWAYS read files before proposing edits.
|
|
10
|
+
Use Explore agent for codebase discovery.
|
|
11
|
+
Do not speculate about code structure.
|
|
12
|
+
</investigation>
|
|
13
|
+
|
|
14
|
+
<implementation>
|
|
15
|
+
Avoid over-engineering.
|
|
16
|
+
Only make directly requested changes.
|
|
17
|
+
Don't add features unless asked.
|
|
18
|
+
Keep solutions simple and focused.
|
|
19
|
+
</implementation>
|
|
20
|
+
|
|
21
|
+
<testing>
|
|
22
|
+
Run tests after changes.
|
|
23
|
+
Verify no regressions.
|
|
24
|
+
Add new tests for new features.
|
|
25
|
+
</testing>
|
|
26
|
+
|
|
27
|
+
</coding_guidelines>
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
---
|
|
31
|
+
|
|
32
|
+
## Frontend Design
|
|
33
|
+
|
|
34
|
+
```xml
|
|
35
|
+
<frontend_aesthetics>
|
|
36
|
+
|
|
37
|
+
Avoid generic "AI slop" aesthetic.
|
|
38
|
+
Make creative, distinctive frontends that stand out.
|
|
39
|
+
|
|
40
|
+
<focus>
|
|
41
|
+
|
|
42
|
+
**Typography**
|
|
43
|
+
- Unique font combinations
|
|
44
|
+
- Avoid overused fonts (Inter, Roboto)
|
|
45
|
+
- Consider: Geist, Cal Sans, Untitled Sans
|
|
46
|
+
|
|
47
|
+
**Color**
|
|
48
|
+
- Cohesive theme with sharp accents
|
|
49
|
+
- Use color psychology
|
|
50
|
+
- Dark mode by default (better aesthetics)
|
|
51
|
+
|
|
52
|
+
**Motion**
|
|
53
|
+
- High-impact animations (Framer Motion, GSAP)
|
|
54
|
+
- Smooth transitions
|
|
55
|
+
- Micro-interactions
|
|
56
|
+
|
|
57
|
+
**Backgrounds**
|
|
58
|
+
- Depth and atmosphere
|
|
59
|
+
- Gradients, meshes, noise
|
|
60
|
+
- Avoid flat single colors
|
|
61
|
+
|
|
62
|
+
</focus>
|
|
63
|
+
|
|
64
|
+
<frameworks>
|
|
65
|
+
- TailwindCSS for utility-first
|
|
66
|
+
- shadcn/ui for components
|
|
67
|
+
- Framer Motion for animations
|
|
68
|
+
</frameworks>
|
|
69
|
+
|
|
70
|
+
</frontend_aesthetics>
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
---
|
|
74
|
+
|
|
75
|
+
## API Design
|
|
76
|
+
|
|
77
|
+
```xml
|
|
78
|
+
<api_guidelines>
|
|
79
|
+
|
|
80
|
+
<rest_patterns>
|
|
81
|
+
|
|
82
|
+
**Naming**
|
|
83
|
+
- Resource-oriented: `/users/:id/posts`
|
|
84
|
+
- Kebab-case: `/user-profiles`
|
|
85
|
+
- Versioning: `/api/v1/...`
|
|
86
|
+
|
|
87
|
+
**Methods**
|
|
88
|
+
- GET: Read (safe, idempotent)
|
|
89
|
+
- POST: Create
|
|
90
|
+
- PUT: Full update (idempotent)
|
|
91
|
+
- PATCH: Partial update
|
|
92
|
+
- DELETE: Remove (idempotent)
|
|
93
|
+
|
|
94
|
+
**Responses**
|
|
95
|
+
200 OK: Success
|
|
96
|
+
201 Created: Resource created
|
|
97
|
+
400 Bad Request: Invalid input
|
|
98
|
+
401 Unauthorized: Auth required
|
|
99
|
+
404 Not Found: Resource missing
|
|
100
|
+
500 Internal Error: Server error
|
|
101
|
+
|
|
102
|
+
</rest_patterns>
|
|
103
|
+
|
|
104
|
+
<validation>
|
|
105
|
+
- Validate at boundary (input validators)
|
|
106
|
+
- Use Zod/Yup schemas
|
|
107
|
+
- Return detailed error messages
|
|
108
|
+
- Never trust client input
|
|
109
|
+
</validation>
|
|
110
|
+
|
|
111
|
+
</api_guidelines>
|
|
112
|
+
```
|
|
113
|
+
|
|
114
|
+
---
|
|
115
|
+
|
|
116
|
+
## Database Schema
|
|
117
|
+
|
|
118
|
+
```xml
|
|
119
|
+
<schema_design>
|
|
120
|
+
|
|
121
|
+
<naming>
|
|
122
|
+
- Tables: plural (`users`, `posts`)
|
|
123
|
+
- Columns: snake_case (`created_at`)
|
|
124
|
+
- Foreign keys: `{table}_id` (`user_id`)
|
|
125
|
+
- Indexes: `idx_{table}_{column}`
|
|
126
|
+
</naming>
|
|
127
|
+
|
|
128
|
+
<relationships>
|
|
129
|
+
- One-to-Many: Foreign key on "many" side
|
|
130
|
+
- Many-to-Many: Junction table
|
|
131
|
+
- Cascade deletes: Be explicit
|
|
132
|
+
</relationships>
|
|
133
|
+
|
|
134
|
+
<best_practices>
|
|
135
|
+
- Always use timestamps (`created_at`, `updated_at`)
|
|
136
|
+
- Soft deletes: `deleted_at` (optional)
|
|
137
|
+
- UUID vs Auto-increment: Consider scale
|
|
138
|
+
- Index frequently queried columns
|
|
139
|
+
</best_practices>
|
|
140
|
+
|
|
141
|
+
</schema_design>
|
|
142
|
+
```
|
|
143
|
+
|
|
144
|
+
---
|
|
145
|
+
|
|
146
|
+
## Error Handling
|
|
147
|
+
|
|
148
|
+
```xml
|
|
149
|
+
<error_patterns>
|
|
150
|
+
|
|
151
|
+
**Client-Side (React)**
|
|
152
|
+
```typescript
|
|
153
|
+
try {
|
|
154
|
+
const data = await api.fetch()
|
|
155
|
+
return data
|
|
156
|
+
} catch (error) {
|
|
157
|
+
if (error.status === 401) {
|
|
158
|
+
redirect('/login')
|
|
159
|
+
}
|
|
160
|
+
toast.error(error.message)
|
|
161
|
+
throw error // Re-throw for React Query
|
|
162
|
+
}
|
|
163
|
+
```
|
|
164
|
+
|
|
165
|
+
**Server-Side (API)**
|
|
166
|
+
```typescript
|
|
167
|
+
try {
|
|
168
|
+
const result = await db.query()
|
|
169
|
+
return result
|
|
170
|
+
} catch (error) {
|
|
171
|
+
logger.error(error)
|
|
172
|
+
if (error instanceof ValidationError) {
|
|
173
|
+
throw new HttpError(400, error.message)
|
|
174
|
+
}
|
|
175
|
+
throw new HttpError(500, 'Internal error')
|
|
176
|
+
}
|
|
177
|
+
```
|
|
178
|
+
|
|
179
|
+
**User-Facing Messages**
|
|
180
|
+
- Technical: "DatabaseConnectionError"
|
|
181
|
+
- User: "서비스 일시 중단. 잠시 후 다시 시도해주세요."
|
|
182
|
+
|
|
183
|
+
</error_patterns>
|
|
184
|
+
```
|
|
185
|
+
|
|
186
|
+
---
|
|
187
|
+
|
|
188
|
+
## Testing Patterns
|
|
189
|
+
|
|
190
|
+
```xml
|
|
191
|
+
<test_guidelines>
|
|
192
|
+
|
|
193
|
+
**Unit Tests**
|
|
194
|
+
```typescript
|
|
195
|
+
describe('calculateTotal', () => {
|
|
196
|
+
it('sums item prices', () => {
|
|
197
|
+
expect(calculateTotal([10, 20])).toBe(30)
|
|
198
|
+
})
|
|
199
|
+
|
|
200
|
+
it('handles empty array', () => {
|
|
201
|
+
expect(calculateTotal([])).toBe(0)
|
|
202
|
+
})
|
|
203
|
+
})
|
|
204
|
+
```
|
|
205
|
+
|
|
206
|
+
**Integration Tests**
|
|
207
|
+
```typescript
|
|
208
|
+
describe('POST /api/users', () => {
|
|
209
|
+
it('creates user', async () => {
|
|
210
|
+
const res = await request(app)
|
|
211
|
+
.post('/api/users')
|
|
212
|
+
.send({ name: 'John' })
|
|
213
|
+
|
|
214
|
+
expect(res.status).toBe(201)
|
|
215
|
+
expect(res.body.name).toBe('John')
|
|
216
|
+
})
|
|
217
|
+
})
|
|
218
|
+
```
|
|
219
|
+
|
|
220
|
+
**Component Tests**
|
|
221
|
+
```typescript
|
|
222
|
+
test('renders user profile', () => {
|
|
223
|
+
render(<Profile user={mockUser} />)
|
|
224
|
+
expect(screen.getByText('John')).toBeInTheDocument()
|
|
225
|
+
})
|
|
226
|
+
```
|
|
227
|
+
|
|
228
|
+
</test_guidelines>
|
|
229
|
+
```
|
|
230
|
+
|
|
231
|
+
---
|
|
232
|
+
|
|
233
|
+
## Git Commit Messages
|
|
234
|
+
|
|
235
|
+
```xml
|
|
236
|
+
<commit_style>
|
|
237
|
+
|
|
238
|
+
**Format**
|
|
239
|
+
```
|
|
240
|
+
<type>: <subject>
|
|
241
|
+
|
|
242
|
+
[optional body]
|
|
243
|
+
```
|
|
244
|
+
|
|
245
|
+
**Types**
|
|
246
|
+
- feat: New feature
|
|
247
|
+
- fix: Bug fix
|
|
248
|
+
- refactor: Code restructure
|
|
249
|
+
- style: Formatting
|
|
250
|
+
- docs: Documentation
|
|
251
|
+
- test: Tests
|
|
252
|
+
- chore: Maintenance
|
|
253
|
+
|
|
254
|
+
**Examples**
|
|
255
|
+
```
|
|
256
|
+
feat: add user authentication
|
|
257
|
+
fix: resolve login redirect loop
|
|
258
|
+
refactor: extract auth logic to hook
|
|
259
|
+
docs: update API documentation
|
|
260
|
+
```
|
|
261
|
+
|
|
262
|
+
**Rules**
|
|
263
|
+
- Subject: 50 chars max
|
|
264
|
+
- Imperative mood ("add" not "added")
|
|
265
|
+
- No period at end
|
|
266
|
+
- One logical change per commit
|
|
267
|
+
|
|
268
|
+
</commit_style>
|
|
269
|
+
```
|
|
270
|
+
|
|
271
|
+
---
|
|
272
|
+
|
|
273
|
+
## Security Patterns
|
|
274
|
+
|
|
275
|
+
```xml
|
|
276
|
+
<security>
|
|
277
|
+
|
|
278
|
+
**Input Validation**
|
|
279
|
+
- Sanitize all user input
|
|
280
|
+
- Use parameterized queries (prevent SQL injection)
|
|
281
|
+
- Validate file uploads (type, size)
|
|
282
|
+
- Escape HTML output (prevent XSS)
|
|
283
|
+
|
|
284
|
+
**Authentication**
|
|
285
|
+
- Hash passwords (bcrypt, argon2)
|
|
286
|
+
- Use secure session tokens
|
|
287
|
+
- Implement rate limiting
|
|
288
|
+
- Add CSRF protection
|
|
289
|
+
|
|
290
|
+
**API Security**
|
|
291
|
+
- API keys in env vars
|
|
292
|
+
- HTTPS only
|
|
293
|
+
- CORS configuration
|
|
294
|
+
- Input size limits
|
|
295
|
+
|
|
296
|
+
**Never**
|
|
297
|
+
- Store passwords in plain text
|
|
298
|
+
- Trust client-side validation
|
|
299
|
+
- Expose sensitive data in errors
|
|
300
|
+
- Use deprecated crypto
|
|
301
|
+
|
|
302
|
+
</security>
|
|
303
|
+
```
|
|
304
|
+
|
|
305
|
+
---
|
|
306
|
+
|
|
307
|
+
## Performance Optimization
|
|
308
|
+
|
|
309
|
+
```xml
|
|
310
|
+
<performance>
|
|
311
|
+
|
|
312
|
+
**React**
|
|
313
|
+
```typescript
|
|
314
|
+
// Memoization
|
|
315
|
+
const expensiveValue = useMemo(() =>
|
|
316
|
+
heavyCalculation(data), [data]
|
|
317
|
+
)
|
|
318
|
+
|
|
319
|
+
// Callback stability
|
|
320
|
+
const handleClick = useCallback(() => {
|
|
321
|
+
doSomething(id)
|
|
322
|
+
}, [id])
|
|
323
|
+
|
|
324
|
+
// Component memoization
|
|
325
|
+
export default React.memo(ExpensiveComponent)
|
|
326
|
+
```
|
|
327
|
+
|
|
328
|
+
**Code Splitting**
|
|
329
|
+
```typescript
|
|
330
|
+
const Heavy = lazy(() => import('./Heavy'))
|
|
331
|
+
|
|
332
|
+
<Suspense fallback={<Spinner />}>
|
|
333
|
+
<Heavy />
|
|
334
|
+
</Suspense>
|
|
335
|
+
```
|
|
336
|
+
|
|
337
|
+
**API**
|
|
338
|
+
- Pagination: Limit results
|
|
339
|
+
- Caching: Redis, CDN
|
|
340
|
+
- N+1 queries: Use JOIN or DataLoader
|
|
341
|
+
- Compression: gzip, brotli
|
|
342
|
+
|
|
343
|
+
</performance>
|
|
344
|
+
```
|
|
345
|
+
|
|
346
|
+
---
|
|
347
|
+
|
|
348
|
+
## 요약
|
|
349
|
+
|
|
350
|
+
모든 예시는 **복사 가능**하도록 작성.
|
|
351
|
+
패턴을 그대로 적용하고, 프로젝트에 맞게 조정.
|
|
@@ -0,0 +1,162 @@
|
|
|
1
|
+
# Techniques - Chain of Thought & Extended Thinking
|
|
2
|
+
|
|
3
|
+
## Chain of Thought (CoT)
|
|
4
|
+
|
|
5
|
+
단계별 사고 유도 → 정확성 향상.
|
|
6
|
+
|
|
7
|
+
### 3단계 수준
|
|
8
|
+
|
|
9
|
+
| Level | Method | When | Example |
|
|
10
|
+
|-------|--------|------|---------|
|
|
11
|
+
| **Basic** | "단계별로 생각하세요" | 간단한 작업 | 단순 계산 |
|
|
12
|
+
| **Guided** | 구체적 단계 제공 | 중간 복잡도 | 데이터 분석 |
|
|
13
|
+
| **Structured** | `<thinking>` 태그 | 복잡한 작업 | 아키텍처 설계 |
|
|
14
|
+
|
|
15
|
+
### Structured Pattern (권장)
|
|
16
|
+
|
|
17
|
+
```xml
|
|
18
|
+
<thinking>
|
|
19
|
+
1. 문제 분석
|
|
20
|
+
- 현재 상태 파악
|
|
21
|
+
- 요구사항 정리
|
|
22
|
+
|
|
23
|
+
2. 접근 방법
|
|
24
|
+
- 가능한 옵션들
|
|
25
|
+
- 장단점 비교
|
|
26
|
+
|
|
27
|
+
3. 단계별 추론
|
|
28
|
+
- 선택한 방법
|
|
29
|
+
- 구현 단계
|
|
30
|
+
|
|
31
|
+
4. 검증
|
|
32
|
+
- 예상 결과
|
|
33
|
+
- 잠재적 문제
|
|
34
|
+
</thinking>
|
|
35
|
+
|
|
36
|
+
<answer>
|
|
37
|
+
최종 답변
|
|
38
|
+
</answer>
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
### 언제 사용?
|
|
42
|
+
|
|
43
|
+
```text
|
|
44
|
+
✅ 사용하면 좋음
|
|
45
|
+
- 복잡한 수학 문제
|
|
46
|
+
- 다단계 분석
|
|
47
|
+
- 의사결정 (여러 옵션 비교)
|
|
48
|
+
- 디버깅 (원인 추적)
|
|
49
|
+
- 아키텍처 설계
|
|
50
|
+
|
|
51
|
+
❌ 사용 안 함
|
|
52
|
+
- 단순 검색
|
|
53
|
+
- 단순 변환 (JSON → CSV)
|
|
54
|
+
- 지연 시간 중요 (실시간)
|
|
55
|
+
- 사실 확인
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
### 예시: 디버깅
|
|
59
|
+
|
|
60
|
+
```xml
|
|
61
|
+
<thinking>
|
|
62
|
+
1. 문제 증상
|
|
63
|
+
- 로그인 후 리다이렉트 안 됨
|
|
64
|
+
- 콘솔 에러 없음
|
|
65
|
+
|
|
66
|
+
2. 가능한 원인
|
|
67
|
+
A. 라우터 설정 문제
|
|
68
|
+
B. 인증 상태 미반영
|
|
69
|
+
C. 비동기 타이밍 이슈
|
|
70
|
+
|
|
71
|
+
3. 검증
|
|
72
|
+
- A: 라우터 설정 정상 (routes.ts 확인)
|
|
73
|
+
- B: useAuth() 훅 체크 → 상태 업데이트 안 됨!
|
|
74
|
+
- C: 패스
|
|
75
|
+
|
|
76
|
+
4. 결론
|
|
77
|
+
- 로그인 성공 후 auth store 업데이트 누락
|
|
78
|
+
</thinking>
|
|
79
|
+
|
|
80
|
+
<answer>
|
|
81
|
+
`login.ts`의 `handleLogin` 함수에서
|
|
82
|
+
`authStore.setUser(user)` 호출 추가 필요.
|
|
83
|
+
</answer>
|
|
84
|
+
```
|
|
85
|
+
|
|
86
|
+
---
|
|
87
|
+
|
|
88
|
+
## Extended Thinking
|
|
89
|
+
|
|
90
|
+
긴 추론 시간으로 복잡한 문제 해결.
|
|
91
|
+
|
|
92
|
+
### 특징
|
|
93
|
+
|
|
94
|
+
- 최소 1024 토큰 사고 예산
|
|
95
|
+
- 모델이 스스로 탐색
|
|
96
|
+
- 고도로 복잡한 문제에 적합
|
|
97
|
+
|
|
98
|
+
### Best Practices
|
|
99
|
+
|
|
100
|
+
```text
|
|
101
|
+
❌ 단계별 지시 (제한적)
|
|
102
|
+
"1. 변수 식별
|
|
103
|
+
2. 방정식 세우기
|
|
104
|
+
3. 풀이
|
|
105
|
+
4. 검증"
|
|
106
|
+
|
|
107
|
+
✅ 일반적 지시 (자유로움)
|
|
108
|
+
"철저히 생각하세요.
|
|
109
|
+
여러 접근법을 고려하고,
|
|
110
|
+
각각의 장단점을 평가하세요."
|
|
111
|
+
|
|
112
|
+
⚠️ 최소 토큰: 1024
|
|
113
|
+
⚠️ 32K+ 예산: Batch Processing 권장
|
|
114
|
+
```
|
|
115
|
+
|
|
116
|
+
### 사용 시점
|
|
117
|
+
|
|
118
|
+
| Use Case | Example | 왜 Extended? |
|
|
119
|
+
|----------|---------|-------------|
|
|
120
|
+
| **복잡한 STEM** | 4D 시각화, 고급 물리 문제 | 다단계 추상화 |
|
|
121
|
+
| **제약 최적화** | 다중 제약 여행 계획 | 조합 탐색 |
|
|
122
|
+
| **사고 프레임워크** | Porter's 5 Forces + 시나리오 분석 | 구조적 사고 |
|
|
123
|
+
| **창의적 문제해결** | 새로운 알고리즘 설계 | 탐색적 사고 |
|
|
124
|
+
|
|
125
|
+
### 예시: 최적화 문제
|
|
126
|
+
|
|
127
|
+
```text
|
|
128
|
+
Prompt:
|
|
129
|
+
"3일 일정으로 유럽 5개 도시 방문 계획.
|
|
130
|
+
제약:
|
|
131
|
+
- 예산: $2000
|
|
132
|
+
- 비행 시간 최소화
|
|
133
|
+
- 주요 관광지 3곳씩
|
|
134
|
+
- 비자 불필요 국가
|
|
135
|
+
|
|
136
|
+
철저히 생각하세요. 여러 경로를 고려하고,
|
|
137
|
+
비용/시간/경험 측면에서 최적 조합을 찾으세요."
|
|
138
|
+
|
|
139
|
+
→ Extended Thinking이 여러 조합 탐색 후 최적안 제시
|
|
140
|
+
```
|
|
141
|
+
|
|
142
|
+
---
|
|
143
|
+
|
|
144
|
+
## CoT vs Extended
|
|
145
|
+
|
|
146
|
+
| 측면 | CoT | Extended |
|
|
147
|
+
|------|-----|----------|
|
|
148
|
+
| **복잡도** | 중간 (3-5 단계) | 매우 높음 (10+ 단계) |
|
|
149
|
+
| **토큰** | 100-500 | 1024+ |
|
|
150
|
+
| **제어** | 구조화된 단계 | 자유로운 탐색 |
|
|
151
|
+
| **속도** | 빠름 | 느림 |
|
|
152
|
+
| **사용** | 일반적 문제 | 극도로 복잡한 문제 |
|
|
153
|
+
|
|
154
|
+
---
|
|
155
|
+
|
|
156
|
+
## 요약
|
|
157
|
+
|
|
158
|
+
```text
|
|
159
|
+
간단 → 직접 답변
|
|
160
|
+
중간 → CoT (<thinking>)
|
|
161
|
+
복잡 → Extended Thinking (1024+)
|
|
162
|
+
```
|