@kood/claude-code 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (78) hide show
  1. package/dist/index.d.ts +2 -0
  2. package/dist/index.js +297 -0
  3. package/package.json +47 -0
  4. package/templates/hono/CLAUDE.md +376 -0
  5. package/templates/hono/docs/deployment/cloudflare.md +328 -0
  6. package/templates/hono/docs/deployment/index.md +291 -0
  7. package/templates/hono/docs/git/index.md +180 -0
  8. package/templates/hono/docs/library/hono/error-handling.md +400 -0
  9. package/templates/hono/docs/library/hono/index.md +241 -0
  10. package/templates/hono/docs/library/hono/middleware.md +334 -0
  11. package/templates/hono/docs/library/hono/rpc.md +454 -0
  12. package/templates/hono/docs/library/hono/validation.md +328 -0
  13. package/templates/hono/docs/library/prisma/index.md +427 -0
  14. package/templates/hono/docs/library/zod/index.md +413 -0
  15. package/templates/hono/docs/mcp/context7.md +106 -0
  16. package/templates/hono/docs/mcp/index.md +94 -0
  17. package/templates/hono/docs/mcp/sequential-thinking.md +101 -0
  18. package/templates/hono/docs/mcp/sgrep.md +105 -0
  19. package/templates/hono/docs/skills/gemini-review/SKILL.md +220 -0
  20. package/templates/hono/docs/skills/gemini-review/references/checklists.md +136 -0
  21. package/templates/hono/docs/skills/gemini-review/references/prompt-templates.md +303 -0
  22. package/templates/tanstack-start/CLAUDE.md +279 -0
  23. package/templates/tanstack-start/docs/architecture/architecture.md +547 -0
  24. package/templates/tanstack-start/docs/deployment/cloudflare.md +346 -0
  25. package/templates/tanstack-start/docs/deployment/index.md +102 -0
  26. package/templates/tanstack-start/docs/deployment/nitro.md +211 -0
  27. package/templates/tanstack-start/docs/deployment/railway.md +364 -0
  28. package/templates/tanstack-start/docs/deployment/vercel.md +287 -0
  29. package/templates/tanstack-start/docs/design/accessibility.md +433 -0
  30. package/templates/tanstack-start/docs/design/color.md +235 -0
  31. package/templates/tanstack-start/docs/design/components.md +409 -0
  32. package/templates/tanstack-start/docs/design/index.md +107 -0
  33. package/templates/tanstack-start/docs/design/safe-area.md +317 -0
  34. package/templates/tanstack-start/docs/design/spacing.md +341 -0
  35. package/templates/tanstack-start/docs/design/tailwind-setup.md +470 -0
  36. package/templates/tanstack-start/docs/design/typography.md +324 -0
  37. package/templates/tanstack-start/docs/git/index.md +203 -0
  38. package/templates/tanstack-start/docs/guides/best-practices.md +753 -0
  39. package/templates/tanstack-start/docs/guides/getting-started.md +304 -0
  40. package/templates/tanstack-start/docs/guides/husky-lint-staged.md +303 -0
  41. package/templates/tanstack-start/docs/guides/prettier.md +189 -0
  42. package/templates/tanstack-start/docs/guides/project-templates.md +710 -0
  43. package/templates/tanstack-start/docs/library/better-auth/2fa.md +136 -0
  44. package/templates/tanstack-start/docs/library/better-auth/advanced.md +138 -0
  45. package/templates/tanstack-start/docs/library/better-auth/index.md +83 -0
  46. package/templates/tanstack-start/docs/library/better-auth/plugins.md +111 -0
  47. package/templates/tanstack-start/docs/library/better-auth/session.md +127 -0
  48. package/templates/tanstack-start/docs/library/better-auth/setup.md +123 -0
  49. package/templates/tanstack-start/docs/library/prisma/crud.md +218 -0
  50. package/templates/tanstack-start/docs/library/prisma/index.md +165 -0
  51. package/templates/tanstack-start/docs/library/prisma/relations.md +191 -0
  52. package/templates/tanstack-start/docs/library/prisma/schema.md +177 -0
  53. package/templates/tanstack-start/docs/library/prisma/setup.md +156 -0
  54. package/templates/tanstack-start/docs/library/prisma/transactions.md +140 -0
  55. package/templates/tanstack-start/docs/library/tanstack-query/index.md +146 -0
  56. package/templates/tanstack-start/docs/library/tanstack-query/invalidation.md +146 -0
  57. package/templates/tanstack-start/docs/library/tanstack-query/optimistic-updates.md +196 -0
  58. package/templates/tanstack-start/docs/library/tanstack-query/setup.md +110 -0
  59. package/templates/tanstack-start/docs/library/tanstack-query/use-mutation.md +170 -0
  60. package/templates/tanstack-start/docs/library/tanstack-query/use-query.md +173 -0
  61. package/templates/tanstack-start/docs/library/tanstack-start/auth-patterns.md +171 -0
  62. package/templates/tanstack-start/docs/library/tanstack-start/index.md +114 -0
  63. package/templates/tanstack-start/docs/library/tanstack-start/middleware.md +142 -0
  64. package/templates/tanstack-start/docs/library/tanstack-start/routing.md +163 -0
  65. package/templates/tanstack-start/docs/library/tanstack-start/server-functions.md +128 -0
  66. package/templates/tanstack-start/docs/library/tanstack-start/setup.md +85 -0
  67. package/templates/tanstack-start/docs/library/zod/basic-types.md +186 -0
  68. package/templates/tanstack-start/docs/library/zod/complex-types.md +204 -0
  69. package/templates/tanstack-start/docs/library/zod/index.md +186 -0
  70. package/templates/tanstack-start/docs/library/zod/transforms.md +174 -0
  71. package/templates/tanstack-start/docs/library/zod/validation.md +208 -0
  72. package/templates/tanstack-start/docs/mcp/context7.md +204 -0
  73. package/templates/tanstack-start/docs/mcp/index.md +116 -0
  74. package/templates/tanstack-start/docs/mcp/sequential-thinking.md +180 -0
  75. package/templates/tanstack-start/docs/mcp/sgrep.md +174 -0
  76. package/templates/tanstack-start/docs/skills/gemini-review/SKILL.md +220 -0
  77. package/templates/tanstack-start/docs/skills/gemini-review/references/checklists.md +150 -0
  78. package/templates/tanstack-start/docs/skills/gemini-review/references/prompt-templates.md +293 -0
@@ -0,0 +1,413 @@
1
+ # Zod v4 - Schema Validation
2
+
3
+ > TypeScript-first 스키마 선언 및 검증 라이브러리
4
+
5
+ ---
6
+
7
+ ## ⚠️ 버전 주의
8
+
9
+ 이 문서는 **Zod v4** 기준입니다. v3과 API가 다릅니다.
10
+
11
+ ```typescript
12
+ // ✅ v4 문법
13
+ z.email()
14
+ z.url()
15
+ z.uuid()
16
+
17
+ // ❌ v3 문법 (사용 금지)
18
+ z.string().email()
19
+ z.string().url()
20
+ z.string().uuid()
21
+ ```
22
+
23
+ ---
24
+
25
+ ## 설치
26
+
27
+ ```bash
28
+ npm install zod
29
+ ```
30
+
31
+ ---
32
+
33
+ ## 기본 타입
34
+
35
+ ### Primitives
36
+
37
+ ```typescript
38
+ import { z } from 'zod'
39
+
40
+ // 문자열
41
+ const stringSchema = z.string()
42
+
43
+ // 숫자
44
+ const numberSchema = z.number()
45
+
46
+ // 불리언
47
+ const booleanSchema = z.boolean()
48
+
49
+ // BigInt
50
+ const bigintSchema = z.bigint()
51
+
52
+ // Date
53
+ const dateSchema = z.date()
54
+
55
+ // Undefined / Null
56
+ const undefinedSchema = z.undefined()
57
+ const nullSchema = z.null()
58
+ ```
59
+
60
+ ### 문자열 검증 (v4)
61
+
62
+ ```typescript
63
+ // ✅ v4 전용 메서드
64
+ z.email() // 이메일
65
+ z.url() // URL
66
+ z.uuid() // UUID
67
+ z.cuid() // CUID
68
+ z.ulid() // ULID
69
+ z.ip() // IP 주소
70
+
71
+ // 문자열 + 체이닝
72
+ z.string().min(1) // 최소 길이
73
+ z.string().max(100) // 최대 길이
74
+ z.string().length(10) // 정확한 길이
75
+ z.string().trim() // 앞뒤 공백 제거
76
+ z.string().toLowerCase() // 소문자 변환
77
+ z.string().toUpperCase() // 대문자 변환
78
+ z.string().startsWith('a') // 접두사
79
+ z.string().endsWith('z') // 접미사
80
+ z.string().includes('test') // 포함
81
+ z.string().regex(/^[a-z]+$/) // 정규식
82
+ ```
83
+
84
+ ### 숫자 검증
85
+
86
+ ```typescript
87
+ z.number().int() // 정수
88
+ z.number().positive() // 양수
89
+ z.number().negative() // 음수
90
+ z.number().nonnegative() // 0 이상
91
+ z.number().nonpositive() // 0 이하
92
+ z.number().min(1) // 최소값
93
+ z.number().max(100) // 최대값
94
+ z.number().multipleOf(5) // 배수
95
+ z.number().finite() // 유한수
96
+ z.number().safe() // 안전한 정수 범위
97
+ ```
98
+
99
+ ---
100
+
101
+ ## 객체
102
+
103
+ ### 기본 객체
104
+
105
+ ```typescript
106
+ const userSchema = z.object({
107
+ id: z.string(),
108
+ email: z.email(),
109
+ name: z.string().min(1).trim(),
110
+ age: z.number().int().positive(),
111
+ })
112
+
113
+ type User = z.infer<typeof userSchema>
114
+ // { id: string; email: string; name: string; age: number }
115
+ ```
116
+
117
+ ### Optional / Nullable
118
+
119
+ ```typescript
120
+ const schema = z.object({
121
+ required: z.string(),
122
+ optional: z.string().optional(), // string | undefined
123
+ nullable: z.string().nullable(), // string | null
124
+ nullish: z.string().nullish(), // string | null | undefined
125
+ })
126
+ ```
127
+
128
+ ### 기본값
129
+
130
+ ```typescript
131
+ const schema = z.object({
132
+ name: z.string().default('Anonymous'),
133
+ role: z.enum(['user', 'admin']).default('user'),
134
+ active: z.boolean().default(true),
135
+ })
136
+ ```
137
+
138
+ ### Partial / Required
139
+
140
+ ```typescript
141
+ const userSchema = z.object({
142
+ name: z.string(),
143
+ email: z.email(),
144
+ })
145
+
146
+ // 모든 필드 optional
147
+ const partialSchema = userSchema.partial()
148
+ // { name?: string; email?: string }
149
+
150
+ // 모든 필드 required
151
+ const requiredSchema = partialSchema.required()
152
+ // { name: string; email: string }
153
+
154
+ // 특정 필드만 partial
155
+ const mixedSchema = userSchema.partial({ email: true })
156
+ // { name: string; email?: string }
157
+ ```
158
+
159
+ ### Pick / Omit
160
+
161
+ ```typescript
162
+ const userSchema = z.object({
163
+ id: z.string(),
164
+ name: z.string(),
165
+ email: z.email(),
166
+ password: z.string(),
167
+ })
168
+
169
+ // 특정 필드만 선택
170
+ const publicSchema = userSchema.pick({ id: true, name: true })
171
+ // { id: string; name: string }
172
+
173
+ // 특정 필드 제외
174
+ const createSchema = userSchema.omit({ id: true })
175
+ // { name: string; email: string; password: string }
176
+ ```
177
+
178
+ ### Extend / Merge
179
+
180
+ ```typescript
181
+ const baseSchema = z.object({
182
+ id: z.string(),
183
+ createdAt: z.date(),
184
+ })
185
+
186
+ // 확장
187
+ const userSchema = baseSchema.extend({
188
+ name: z.string(),
189
+ email: z.email(),
190
+ })
191
+
192
+ // 병합
193
+ const anotherSchema = z.object({
194
+ updatedAt: z.date(),
195
+ })
196
+ const mergedSchema = baseSchema.merge(anotherSchema)
197
+ ```
198
+
199
+ ---
200
+
201
+ ## 배열
202
+
203
+ ```typescript
204
+ // 기본 배열
205
+ z.array(z.string())
206
+
207
+ // 길이 제한
208
+ z.array(z.string()).min(1)
209
+ z.array(z.string()).max(10)
210
+ z.array(z.string()).length(5)
211
+ z.array(z.string()).nonempty()
212
+
213
+ // 중복 제거 (unique는 없음, transform 사용)
214
+ z.array(z.string()).transform((arr) => [...new Set(arr)])
215
+ ```
216
+
217
+ ---
218
+
219
+ ## Enum / Union
220
+
221
+ ### Enum
222
+
223
+ ```typescript
224
+ // Zod enum
225
+ const statusSchema = z.enum(['pending', 'active', 'completed'])
226
+ type Status = z.infer<typeof statusSchema>
227
+ // 'pending' | 'active' | 'completed'
228
+
229
+ // TypeScript enum 사용
230
+ enum Role {
231
+ User = 'user',
232
+ Admin = 'admin',
233
+ }
234
+ const roleSchema = z.nativeEnum(Role)
235
+ ```
236
+
237
+ ### Union
238
+
239
+ ```typescript
240
+ // 기본 union
241
+ const stringOrNumber = z.union([z.string(), z.number()])
242
+
243
+ // Discriminated union
244
+ const responseSchema = z.discriminatedUnion('type', [
245
+ z.object({ type: z.literal('success'), data: z.unknown() }),
246
+ z.object({ type: z.literal('error'), message: z.string() }),
247
+ ])
248
+ ```
249
+
250
+ ---
251
+
252
+ ## Coerce (타입 변환)
253
+
254
+ ```typescript
255
+ // Query parameter 등에서 유용
256
+ z.coerce.string() // any → string
257
+ z.coerce.number() // string → number
258
+ z.coerce.boolean() // 'true'/'false' → boolean
259
+ z.coerce.date() // string → Date
260
+ z.coerce.bigint() // string → bigint
261
+ ```
262
+
263
+ ---
264
+
265
+ ## Transform
266
+
267
+ ```typescript
268
+ // 값 변환
269
+ const schema = z.string().transform((val) => val.toUpperCase())
270
+
271
+ // 타입 변환
272
+ const numberToString = z.number().transform((n) => String(n))
273
+
274
+ // 복합 변환
275
+ const userSchema = z.object({
276
+ email: z.email().transform((e) => e.toLowerCase()),
277
+ name: z.string().transform((n) => n.trim()),
278
+ tags: z.string().transform((s) => s.split(',').map((t) => t.trim())),
279
+ })
280
+ ```
281
+
282
+ ---
283
+
284
+ ## Refine (커스텀 검증)
285
+
286
+ ### 단일 필드
287
+
288
+ ```typescript
289
+ const passwordSchema = z.string().refine(
290
+ (password) => password.length >= 8 && /[A-Z]/.test(password),
291
+ { message: '8자 이상, 대문자 포함 필요' }
292
+ )
293
+ ```
294
+
295
+ ### 객체 전체
296
+
297
+ ```typescript
298
+ const schema = z.object({
299
+ password: z.string().min(8),
300
+ confirmPassword: z.string(),
301
+ }).refine(
302
+ (data) => data.password === data.confirmPassword,
303
+ {
304
+ message: '비밀번호가 일치하지 않습니다',
305
+ path: ['confirmPassword'], // 에러 위치 지정
306
+ }
307
+ )
308
+ ```
309
+
310
+ ### SuperRefine (고급)
311
+
312
+ ```typescript
313
+ const schema = z.string().superRefine((val, ctx) => {
314
+ if (val.length < 8) {
315
+ ctx.addIssue({
316
+ code: z.ZodIssueCode.too_small,
317
+ minimum: 8,
318
+ type: 'string',
319
+ inclusive: true,
320
+ message: '8자 이상 입력하세요',
321
+ })
322
+ }
323
+ if (!/[A-Z]/.test(val)) {
324
+ ctx.addIssue({
325
+ code: z.ZodIssueCode.custom,
326
+ message: '대문자를 포함하세요',
327
+ })
328
+ }
329
+ })
330
+ ```
331
+
332
+ ---
333
+
334
+ ## 에러 처리
335
+
336
+ ### safeParse
337
+
338
+ ```typescript
339
+ const schema = z.object({
340
+ email: z.email(),
341
+ age: z.number().min(0),
342
+ })
343
+
344
+ const result = schema.safeParse(input)
345
+
346
+ if (result.success) {
347
+ console.log(result.data) // 검증된 데이터
348
+ } else {
349
+ console.log(result.error.flatten())
350
+ // {
351
+ // formErrors: [],
352
+ // fieldErrors: {
353
+ // email: ['Invalid email'],
354
+ // age: ['Number must be greater than or equal to 0']
355
+ // }
356
+ // }
357
+ }
358
+ ```
359
+
360
+ ### 커스텀 에러 메시지
361
+
362
+ ```typescript
363
+ const schema = z.object({
364
+ email: z.email({ message: '올바른 이메일을 입력하세요' }),
365
+ name: z.string().min(1, { message: '이름을 입력하세요' }),
366
+ age: z.number()
367
+ .min(0, { message: '나이는 0 이상이어야 합니다' })
368
+ .max(150, { message: '나이는 150 이하여야 합니다' }),
369
+ })
370
+ ```
371
+
372
+ ---
373
+
374
+ ## Hono와 함께 사용
375
+
376
+ ```typescript
377
+ import { Hono } from 'hono'
378
+ import { zValidator } from '@hono/zod-validator'
379
+ import { z } from 'zod'
380
+
381
+ const app = new Hono()
382
+
383
+ // ✅ v4 문법 사용
384
+ const createUserSchema = z.object({
385
+ email: z.email(),
386
+ name: z.string().min(1).trim(),
387
+ website: z.url().optional(),
388
+ })
389
+
390
+ app.post(
391
+ '/users',
392
+ zValidator('json', createUserSchema, (result, c) => {
393
+ if (!result.success) {
394
+ return c.json(
395
+ { errors: result.error.flatten().fieldErrors },
396
+ 400
397
+ )
398
+ }
399
+ }),
400
+ (c) => {
401
+ const data = c.req.valid('json')
402
+ return c.json({ user: data }, 201)
403
+ }
404
+ )
405
+ ```
406
+
407
+ ---
408
+
409
+ ## 관련 문서
410
+
411
+ - [Hono 검증](../hono/validation.md)
412
+ - [복잡한 타입](./complex-types.md)
413
+ - [Transform](./transforms.md)
@@ -0,0 +1,106 @@
1
+ # Context7
2
+
3
+ > 라이브러리 공식 문서 조회 도구
4
+
5
+ ---
6
+
7
+ ## 개요
8
+
9
+ Context7은 주요 라이브러리의 공식 문서를 조회하여 정확한 API 정보와 사용 패턴을 제공합니다.
10
+
11
+ ---
12
+
13
+ ## 사용 시점
14
+
15
+ ### ✅ 사용 권장
16
+ - **API 확인**: 라이브러리 함수/메서드 사용법
17
+ - **공식 패턴**: 권장되는 코드 패턴
18
+ - **버전별 차이**: 특정 버전의 API 확인
19
+ - **최신 정보**: 최신 릴리즈 기능 확인
20
+
21
+ ### ❌ 사용 불필요
22
+ - 이미 알고 있는 기본 API
23
+ - 프로젝트 내부 코드 관련 질문
24
+ - 일반적인 프로그래밍 개념
25
+
26
+ ---
27
+
28
+ ## 지원 라이브러리
29
+
30
+ ### 주요 지원
31
+ - **Hono**: 라우팅, 미들웨어, RPC
32
+ - **Zod**: 스키마 정의, 검증
33
+ - **Prisma**: ORM, 쿼리, 마이그레이션
34
+ - **TypeScript**: 타입 시스템
35
+
36
+ ### 기타 지원
37
+ - React, Vue, Angular
38
+ - Express, Fastify
39
+ - 기타 주요 npm 패키지
40
+
41
+ ---
42
+
43
+ ## 사용 예시
44
+
45
+ ### Hono 문서 조회
46
+ ```
47
+ "Hono의 zValidator 사용법 조회"
48
+ "Hono middleware 작성 패턴 조회"
49
+ "Hono RPC client 설정 방법 조회"
50
+ ```
51
+
52
+ ### Zod 문서 조회
53
+ ```
54
+ "Zod v4의 z.email() 사용법 조회"
55
+ "Zod transform 패턴 조회"
56
+ "Zod discriminatedUnion 사용법 조회"
57
+ ```
58
+
59
+ ### Prisma 문서 조회
60
+ ```
61
+ "Prisma v7 generator 설정 조회"
62
+ "Prisma transaction 패턴 조회"
63
+ "Prisma relation 쿼리 방법 조회"
64
+ ```
65
+
66
+ ---
67
+
68
+ ## 장점
69
+
70
+ ### 1. 정확한 정보
71
+ - 공식 문서 기반
72
+ - 검증된 코드 예시
73
+
74
+ ### 2. 최신 정보
75
+ - 최신 버전 반영
76
+ - 업데이트된 API
77
+
78
+ ### 3. 버전 특정
79
+ - 특정 버전 문서 조회
80
+ - 버전 간 차이 확인
81
+
82
+ ---
83
+
84
+ ## 워크플로우
85
+
86
+ ```
87
+ 1. 필요한 정보 파악
88
+ └─ 어떤 라이브러리의 어떤 기능?
89
+
90
+ 2. Context7 조회
91
+ └─ 해당 라이브러리 문서 검색
92
+
93
+ 3. 정보 확인
94
+ └─ API 시그니처, 사용 예시
95
+
96
+ 4. 코드 적용
97
+ └─ 프로젝트에 맞게 적용
98
+ ```
99
+
100
+ ---
101
+
102
+ ## 관련 문서
103
+
104
+ - [MCP 개요](./index.md)
105
+ - [sgrep](./sgrep.md)
106
+ - [Sequential Thinking](./sequential-thinking.md)
@@ -0,0 +1,94 @@
1
+ # MCP 도구 가이드
2
+
3
+ > Claude Code에서 사용하는 MCP (Model Context Protocol) 도구
4
+
5
+ ---
6
+
7
+ ## 📋 MCP 도구 개요
8
+
9
+ | 도구 | 용도 | 사용 시점 |
10
+ |------|------|----------|
11
+ | **sgrep** | 코드 검색 | 코드베이스 검색 시 (grep/rg 대신) |
12
+ | **Sequential Thinking** | 복잡한 분석 | 디버깅, 아키텍처 분석 |
13
+ | **Context7** | 라이브러리 문서 | 공식 문서 참조 필요 시 |
14
+
15
+ ---
16
+
17
+ ## sgrep - 코드 검색
18
+
19
+ > ⚠️ **필수**: 코드베이스 검색 시 grep/rg 대신 sgrep 사용
20
+
21
+ ### 사용 시점
22
+ - 코드베이스에서 패턴 검색
23
+ - 함수/클래스 사용처 찾기
24
+ - 특정 패턴의 코드 찾기
25
+
26
+ ### 장점
27
+ - AST 기반 시맨틱 검색
28
+ - 언어별 최적화된 패턴 매칭
29
+ - 정확한 코드 구조 인식
30
+
31
+ ---
32
+
33
+ ## Sequential Thinking - 분석 도구
34
+
35
+ > 복잡한 문제를 단계별로 분석
36
+
37
+ ### 사용 시점
38
+ - 복잡한 버그 디버깅
39
+ - 아키텍처 분석/설계
40
+ - 성능 병목 분석
41
+ - 리팩토링 계획 수립
42
+
43
+ ### 특징
44
+ - 단계별 사고 과정 기록
45
+ - 가설 설정 및 검증
46
+ - 체계적인 문제 해결
47
+
48
+ ---
49
+
50
+ ## Context7 - 라이브러리 문서
51
+
52
+ > 공식 라이브러리 문서 조회
53
+
54
+ ### 사용 시점
55
+ - 라이브러리 API 확인
56
+ - 공식 문서 패턴 참조
57
+ - 최신 버전 사용법 확인
58
+
59
+ ### 지원 라이브러리
60
+ - Hono
61
+ - Zod
62
+ - Prisma
63
+ - 기타 주요 라이브러리
64
+
65
+ ### 사용 예시
66
+ ```
67
+ Context7로 Hono middleware 문서 조회
68
+ Context7로 Zod v4 validation 문서 조회
69
+ Context7로 Prisma transaction 문서 조회
70
+ ```
71
+
72
+ ---
73
+
74
+ ## MCP 도구 선택 가이드
75
+
76
+ ```
77
+ 코드 검색이 필요한가?
78
+ ├─ Yes → sgrep 사용
79
+ └─ No
80
+ ├─ 복잡한 분석이 필요한가?
81
+ │ ├─ Yes → Sequential Thinking 사용
82
+ │ └─ No
83
+ │ └─ 라이브러리 문서가 필요한가?
84
+ │ ├─ Yes → Context7 사용
85
+ │ └─ No → 일반 도구 사용
86
+ ```
87
+
88
+ ---
89
+
90
+ ## 관련 문서
91
+
92
+ - [sgrep 상세](./sgrep.md)
93
+ - [Sequential Thinking 상세](./sequential-thinking.md)
94
+ - [Context7 상세](./context7.md)
@@ -0,0 +1,101 @@
1
+ # Sequential Thinking
2
+
3
+ > 복잡한 문제를 단계별로 분석하는 사고 도구
4
+
5
+ ---
6
+
7
+ ## 개요
8
+
9
+ Sequential Thinking은 복잡한 문제를 체계적으로 분석하고 해결하기 위한 MCP 도구입니다.
10
+
11
+ ---
12
+
13
+ ## 사용 시점
14
+
15
+ ### ✅ 사용 권장
16
+ - **복잡한 버그 디버깅**: 원인 파악이 어려운 버그
17
+ - **아키텍처 분석/설계**: 시스템 구조 이해 및 설계
18
+ - **성능 병목 분석**: 성능 문제 원인 파악
19
+ - **리팩토링 계획**: 대규모 코드 변경 계획
20
+ - **보안 취약점 분석**: 보안 이슈 탐지 및 해결
21
+
22
+ ### ❌ 사용 불필요
23
+ - 단순한 코드 작성
24
+ - 명확한 버그 수정
25
+ - 간단한 질문 응답
26
+
27
+ ---
28
+
29
+ ## 분석 프로세스
30
+
31
+ ```
32
+ 1. 문제 정의
33
+ └─ 무엇을 해결해야 하는가?
34
+
35
+ 2. 정보 수집
36
+ └─ 관련 코드, 로그, 에러 메시지
37
+
38
+ 3. 가설 설정
39
+ └─ 가능한 원인들 나열
40
+
41
+ 4. 가설 검증
42
+ └─ 각 가설을 코드/데이터로 검증
43
+
44
+ 5. 결론 도출
45
+ └─ 검증된 원인과 해결책
46
+
47
+ 6. 실행 계획
48
+ └─ 구체적인 수정 단계
49
+ ```
50
+
51
+ ---
52
+
53
+ ## 예시 상황
54
+
55
+ ### 복잡한 버그 디버깅
56
+ ```
57
+ 문제: "API 응답이 간헐적으로 느림"
58
+
59
+ Sequential Thinking 활용:
60
+ 1. 느린 요청의 패턴 분석
61
+ 2. 가능한 원인 나열 (DB, 네트워크, 코드)
62
+ 3. 각 원인별 증거 수집
63
+ 4. 병목 지점 확인
64
+ 5. 해결책 제시
65
+ ```
66
+
67
+ ### 아키텍처 분석
68
+ ```
69
+ 문제: "마이크로서비스 분리 계획"
70
+
71
+ Sequential Thinking 활용:
72
+ 1. 현재 모놀리스 구조 분석
73
+ 2. 도메인 경계 식별
74
+ 3. 의존성 그래프 작성
75
+ 4. 분리 우선순위 결정
76
+ 5. 마이그레이션 계획 수립
77
+ ```
78
+
79
+ ---
80
+
81
+ ## 장점
82
+
83
+ ### 1. 체계적 접근
84
+ - 단계별 사고 과정 기록
85
+ - 놓치는 부분 최소화
86
+
87
+ ### 2. 가설 기반 분석
88
+ - 추측이 아닌 검증 기반
89
+ - 명확한 근거 제시
90
+
91
+ ### 3. 재사용 가능
92
+ - 분석 과정 문서화
93
+ - 유사 문제에 적용 가능
94
+
95
+ ---
96
+
97
+ ## 관련 문서
98
+
99
+ - [MCP 개요](./index.md)
100
+ - [sgrep](./sgrep.md)
101
+ - [Context7](./context7.md)