@kood/claude-code 0.6.6 → 0.7.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 (170) hide show
  1. package/dist/index.js +7 -1
  2. package/package.json +1 -1
  3. package/templates/.claude/agents/analyst.md +5 -0
  4. package/templates/.claude/agents/architect.md +5 -0
  5. package/templates/.claude/agents/build-fixer.md +1 -0
  6. package/templates/.claude/agents/code-reviewer.md +1 -0
  7. package/templates/.claude/agents/critic.md +4 -0
  8. package/templates/.claude/agents/deep-executor.md +1 -0
  9. package/templates/.claude/agents/dependency-manager.md +2 -0
  10. package/templates/.claude/agents/deployment-validator.md +2 -0
  11. package/templates/.claude/agents/designer.md +2 -0
  12. package/templates/.claude/agents/document-writer.md +3 -0
  13. package/templates/.claude/agents/explore.md +1 -0
  14. package/templates/.claude/agents/git-operator.md +2 -0
  15. package/templates/.claude/agents/implementation-executor.md +2 -0
  16. package/templates/.claude/agents/ko-to-en-translator.md +3 -0
  17. package/templates/.claude/agents/lint-fixer.md +2 -0
  18. package/templates/.claude/agents/planner.md +3 -0
  19. package/templates/.claude/agents/pm.md +349 -0
  20. package/templates/.claude/agents/qa-tester.md +1 -0
  21. package/templates/.claude/agents/refactor-advisor.md +4 -0
  22. package/templates/.claude/agents/researcher.md +9 -1
  23. package/templates/.claude/agents/scientist.md +1 -0
  24. package/templates/.claude/agents/security-reviewer.md +1 -0
  25. package/templates/.claude/agents/tdd-guide.md +1 -0
  26. package/templates/.claude/agents/vision.md +1 -0
  27. package/templates/.claude/instructions/agent-patterns/agent-teams-usage.md +376 -0
  28. package/templates/.claude/instructions/sourcing/reliable-search.md +49 -2
  29. package/templates/.claude/scripts/agent-teams/check-availability.sh +238 -0
  30. package/templates/.claude/scripts/agent-teams/setup-tmux.sh +125 -0
  31. package/templates/.claude/skills/agent-teams-setup/SKILL.md +460 -0
  32. package/templates/.claude/skills/brainstorm/SKILL.md +1 -0
  33. package/templates/.claude/skills/bug-fix/SKILL.md +1 -0
  34. package/templates/.claude/skills/crawler/SKILL.md +2 -0
  35. package/templates/.claude/skills/docs-creator/SKILL.md +1 -0
  36. package/templates/.claude/skills/docs-fetch/SKILL.md +6 -4
  37. package/templates/.claude/skills/docs-refactor/SKILL.md +1 -0
  38. package/templates/.claude/skills/elon-musk/SKILL.md +1 -0
  39. package/templates/.claude/skills/execute/SKILL.md +1 -0
  40. package/templates/.claude/skills/feedback/SKILL.md +1 -0
  41. package/templates/.claude/skills/figma-to-code/SKILL.md +1 -0
  42. package/templates/.claude/skills/genius-thinking/SKILL.md +1 -0
  43. package/templates/.claude/skills/global-uiux-design/SKILL.md +1 -0
  44. package/templates/.claude/skills/korea-uiux-design/SKILL.md +1 -0
  45. package/templates/.claude/skills/nextjs-react-best-practices/SKILL.md +1 -0
  46. package/templates/.claude/skills/plan/SKILL.md +1 -0
  47. package/templates/.claude/skills/prd/SKILL.md +1 -0
  48. package/templates/.claude/skills/project-optimizer/AGENTS.md +275 -0
  49. package/templates/.claude/skills/project-optimizer/SKILL.md +375 -0
  50. package/templates/.claude/skills/project-optimizer/rules/arch-config-centralize.md +66 -0
  51. package/templates/.claude/skills/project-optimizer/rules/arch-hot-path.md +35 -0
  52. package/templates/.claude/skills/project-optimizer/rules/arch-interface-segregation.md +51 -0
  53. package/templates/.claude/skills/project-optimizer/rules/arch-module-boundary.md +42 -0
  54. package/templates/.claude/skills/project-optimizer/rules/build-cache.md +57 -0
  55. package/templates/.claude/skills/project-optimizer/rules/build-code-split.md +56 -0
  56. package/templates/.claude/skills/project-optimizer/rules/build-incremental.md +65 -0
  57. package/templates/.claude/skills/project-optimizer/rules/build-minify.md +61 -0
  58. package/templates/.claude/skills/project-optimizer/rules/build-tree-shake.md +60 -0
  59. package/templates/.claude/skills/project-optimizer/rules/code-complexity.md +65 -0
  60. package/templates/.claude/skills/project-optimizer/rules/code-dead-elimination.md +32 -0
  61. package/templates/.claude/skills/project-optimizer/rules/code-duplication.md +54 -0
  62. package/templates/.claude/skills/project-optimizer/rules/code-error-handling.md +75 -0
  63. package/templates/.claude/skills/project-optimizer/rules/code-naming.md +52 -0
  64. package/templates/.claude/skills/project-optimizer/rules/concurrency-defer-await.md +54 -0
  65. package/templates/.claude/skills/project-optimizer/rules/concurrency-parallel.md +90 -0
  66. package/templates/.claude/skills/project-optimizer/rules/concurrency-pipeline.md +68 -0
  67. package/templates/.claude/skills/project-optimizer/rules/concurrency-pool.md +68 -0
  68. package/templates/.claude/skills/project-optimizer/rules/deps-lightweight-alt.md +37 -0
  69. package/templates/.claude/skills/project-optimizer/rules/deps-peer-align.md +44 -0
  70. package/templates/.claude/skills/project-optimizer/rules/deps-security-audit.md +45 -0
  71. package/templates/.claude/skills/project-optimizer/rules/deps-unused-removal.md +25 -0
  72. package/templates/.claude/skills/project-optimizer/rules/deps-version-pin.md +40 -0
  73. package/templates/.claude/skills/project-optimizer/rules/dx-ci-speed.md +47 -0
  74. package/templates/.claude/skills/project-optimizer/rules/dx-dev-server.md +35 -0
  75. package/templates/.claude/skills/project-optimizer/rules/dx-lint-config.md +36 -0
  76. package/templates/.claude/skills/project-optimizer/rules/dx-test-coverage.md +34 -0
  77. package/templates/.claude/skills/project-optimizer/rules/dx-type-safety.md +49 -0
  78. package/templates/.claude/skills/project-optimizer/rules/io-batch-queries.md +67 -0
  79. package/templates/.claude/skills/project-optimizer/rules/io-cache-layer.md +67 -0
  80. package/templates/.claude/skills/project-optimizer/rules/io-connection-reuse.md +67 -0
  81. package/templates/.claude/skills/project-optimizer/rules/io-serialize-minimal.md +61 -0
  82. package/templates/.claude/skills/project-optimizer/rules/io-stream.md +75 -0
  83. package/templates/.claude/skills/project-optimizer/rules/memory-bounded-cache.md +65 -0
  84. package/templates/.claude/skills/project-optimizer/rules/memory-large-data.md +64 -0
  85. package/templates/.claude/skills/project-optimizer/rules/memory-lazy-init.md +78 -0
  86. package/templates/.claude/skills/project-optimizer/rules/memory-leak-prevention.md +79 -0
  87. package/templates/.claude/skills/project-optimizer/rules/memory-pool-reuse.md +70 -0
  88. package/templates/.claude/skills/ralph/SKILL.md +1 -0
  89. package/templates/.claude/skills/refactor/SKILL.md +1 -0
  90. package/templates/.claude/skills/research/SKILL.md +1 -0
  91. package/templates/.claude/skills/sql-optimizer/SKILL.md +438 -0
  92. package/templates/.claude/skills/sql-optimizer/orm-patterns.md +218 -0
  93. package/templates/.claude/skills/startup-validator/SKILL.md +1 -0
  94. package/templates/.claude/skills/tanstack-start-react-best-practices/AGENTS.md +53 -14
  95. package/templates/.claude/skills/tanstack-start-react-best-practices/SKILL.md +94 -27
  96. package/templates/.claude/skills/tanstack-start-react-best-practices/rules/bundle-defer-third-party.md +42 -19
  97. package/templates/.claude/skills/tanstack-start-react-best-practices/rules/client-optimistic-updates.md +109 -0
  98. package/templates/.claude/skills/tanstack-start-react-best-practices/rules/client-suspense-query.md +74 -0
  99. package/templates/.claude/skills/tanstack-start-react-best-practices/rules/client-use-hook.md +81 -0
  100. package/templates/.claude/skills/tanstack-start-react-best-practices/rules/rerender-react-compiler.md +81 -0
  101. package/templates/.claude/skills/tanstack-start-react-best-practices/rules/routing-beforeload-auth.md +121 -0
  102. package/templates/.claude/skills/tanstack-start-react-best-practices/rules/routing-file-conventions.md +104 -0
  103. package/templates/.claude/skills/tanstack-start-react-best-practices/rules/routing-link-navigation.md +119 -0
  104. package/templates/.claude/skills/tanstack-start-react-best-practices/rules/routing-nested-layouts.md +155 -0
  105. package/templates/.claude/skills/tanstack-start-react-best-practices/rules/routing-path-params.md +89 -0
  106. package/templates/.claude/skills/tanstack-start-react-best-practices/rules/routing-pending-component.md +110 -0
  107. package/templates/.claude/skills/tanstack-start-react-best-practices/rules/routing-preload-strategy.md +91 -0
  108. package/templates/.claude/skills/tanstack-start-react-best-practices/rules/routing-router-context.md +120 -0
  109. package/templates/.claude/skills/tanstack-start-react-best-practices/rules/routing-search-params.md +114 -0
  110. package/templates/.claude/skills/tanstack-start-react-best-practices/rules/server-deferred-data.md +1 -1
  111. package/templates/.claude/skills/tanstack-start-react-best-practices/rules/server-error-boundaries.md +79 -0
  112. package/templates/.claude/skills/tanstack-start-react-best-practices/rules/server-middleware.md +85 -0
  113. package/templates/.claude/skills/tanstack-start-react-best-practices/rules/server-serialization.md +56 -21
  114. package/templates/.claude/skills/tanstack-start-react-best-practices/rules/server-streaming.md +84 -0
  115. package/templates/.claude/skills/tanstack-start-react-best-practices/rules/server-validator.md +71 -0
  116. package/templates/.claude/skills/tauri-react-best-practices/AGENTS.md +527 -0
  117. package/templates/.claude/skills/tauri-react-best-practices/SKILL.md +571 -0
  118. package/templates/.claude/skills/tauri-react-best-practices/rules/bundle-barrel-imports.md +140 -0
  119. package/templates/.claude/skills/tauri-react-best-practices/rules/bundle-cargo-profile.md +96 -0
  120. package/templates/.claude/skills/tauri-react-best-practices/rules/bundle-frontend-treeshake.md +242 -0
  121. package/templates/.claude/skills/tauri-react-best-practices/rules/bundle-lazy-components.md +255 -0
  122. package/templates/.claude/skills/tauri-react-best-practices/rules/bundle-remove-unused-commands.md +160 -0
  123. package/templates/.claude/skills/tauri-react-best-practices/rules/deploy-ci-pipeline.md +269 -0
  124. package/templates/.claude/skills/tauri-react-best-practices/rules/deploy-signing.md +207 -0
  125. package/templates/.claude/skills/tauri-react-best-practices/rules/deploy-updater.md +226 -0
  126. package/templates/.claude/skills/tauri-react-best-practices/rules/ipc-async-commands.md +172 -0
  127. package/templates/.claude/skills/tauri-react-best-practices/rules/ipc-batch-commands.md +133 -0
  128. package/templates/.claude/skills/tauri-react-best-practices/rules/ipc-binary-response.md +198 -0
  129. package/templates/.claude/skills/tauri-react-best-practices/rules/ipc-channel-streaming.md +186 -0
  130. package/templates/.claude/skills/tauri-react-best-practices/rules/ipc-error-handling.md +250 -0
  131. package/templates/.claude/skills/tauri-react-best-practices/rules/ipc-type-safe.md +227 -0
  132. package/templates/.claude/skills/tauri-react-best-practices/rules/perf-derived-state.md +231 -0
  133. package/templates/.claude/skills/tauri-react-best-practices/rules/perf-functional-setstate.md +191 -0
  134. package/templates/.claude/skills/tauri-react-best-practices/rules/perf-index-maps.md +276 -0
  135. package/templates/.claude/skills/tauri-react-best-practices/rules/perf-lazy-state-init.md +196 -0
  136. package/templates/.claude/skills/tauri-react-best-practices/rules/plugin-lifecycle.md +265 -0
  137. package/templates/.claude/skills/tauri-react-best-practices/rules/plugin-mobile-compat.md +199 -0
  138. package/templates/.claude/skills/tauri-react-best-practices/rules/plugin-permission-scope.md +193 -0
  139. package/templates/.claude/skills/tauri-react-best-practices/rules/react-error-boundary.md +239 -0
  140. package/templates/.claude/skills/tauri-react-best-practices/rules/react-event-listener.md +151 -0
  141. package/templates/.claude/skills/tauri-react-best-practices/rules/react-file-src.md +155 -0
  142. package/templates/.claude/skills/tauri-react-best-practices/rules/react-invoke-hook.md +139 -0
  143. package/templates/.claude/skills/tauri-react-best-practices/rules/react-optimistic-update.md +211 -0
  144. package/templates/.claude/skills/tauri-react-best-practices/rules/security-capability-split.md +205 -0
  145. package/templates/.claude/skills/tauri-react-best-practices/rules/security-csp.md +207 -0
  146. package/templates/.claude/skills/tauri-react-best-practices/rules/security-least-privilege.md +106 -0
  147. package/templates/.claude/skills/tauri-react-best-practices/rules/security-no-wildcard.md +253 -0
  148. package/templates/.claude/skills/tauri-react-best-practices/rules/security-scope-paths.md +160 -0
  149. package/templates/.claude/skills/tauri-react-best-practices/rules/state-async-mutex.md +270 -0
  150. package/templates/.claude/skills/tauri-react-best-practices/rules/state-mutex-pattern.md +265 -0
  151. package/templates/.claude/skills/tauri-react-best-practices/rules/state-react-sync.md +375 -0
  152. package/templates/.claude/skills/tauri-react-best-practices/rules/state-single-container.md +275 -0
  153. package/templates/tanstack-start/docs/architecture.md +238 -167
  154. package/templates/tanstack-start/docs/library/tanstack-router/error-handling.md +777 -38
  155. package/templates/tanstack-start/docs/library/tanstack-router/hooks.md +549 -37
  156. package/templates/tanstack-start/docs/library/tanstack-router/index.md +895 -111
  157. package/templates/tanstack-start/docs/library/tanstack-router/navigation.md +641 -43
  158. package/templates/tanstack-start/docs/library/tanstack-router/route-context.md +889 -38
  159. package/templates/tanstack-start/docs/library/tanstack-router/search-params.md +891 -29
  160. package/templates/tanstack-start/docs/library/tanstack-start/auth-patterns.md +972 -36
  161. package/templates/tanstack-start/docs/library/tanstack-start/index.md +1525 -881
  162. package/templates/tanstack-start/docs/library/tanstack-start/middleware.md +1099 -20
  163. package/templates/tanstack-start/docs/library/tanstack-start/routing.md +796 -30
  164. package/templates/tanstack-start/docs/library/tanstack-start/server-functions.md +953 -35
  165. package/templates/tanstack-start/docs/library/tanstack-start/setup.md +371 -15
  166. package/templates/tauri/CLAUDE.md +189 -0
  167. package/templates/tauri/docs/guides/distribution.md +261 -0
  168. package/templates/tauri/docs/guides/getting-started.md +302 -0
  169. package/templates/tauri/docs/guides/mobile.md +288 -0
  170. package/templates/tauri/docs/library/tauri/index.md +510 -0
@@ -0,0 +1,61 @@
1
+ ---
2
+ title: Serialize Only Required Fields
3
+ impact: MEDIUM
4
+ impactDescription: 30-70% payload reduction, faster serialization
5
+ tags: io, serialization, payload, network, select
6
+ languages: all
7
+ related: [io-batch-queries, memory-large-data]
8
+ ---
9
+
10
+ ## 필요한 필드만 직렬화/전송
11
+
12
+ 전체 객체 대신 실제 사용하는 필드만 선택하여 직렬화 비용과 네트워크 전송량을 줄입니다.
13
+
14
+ **❌ 잘못된 예시 (전체 객체 반환):**
15
+
16
+ ```python
17
+ # 50개 필드 전부 전송, 클라이언트는 3개만 사용
18
+ @app.get("/users")
19
+ def list_users():
20
+ return db.query(User).all() # password_hash 포함 위험
21
+ ```
22
+
23
+ ```typescript
24
+ // 전체 객체 반환
25
+ return await prisma.user.findMany() // 50개 필드
26
+ ```
27
+
28
+ **✅ 올바른 예시 (필요 필드만):**
29
+
30
+ ```python
31
+ # DTO/스키마로 필드 제한
32
+ @app.get("/users")
33
+ def list_users():
34
+ users = db.query(User.id, User.name, User.email).all()
35
+ return [UserResponse(id=u.id, name=u.name, email=u.email) for u in users]
36
+ ```
37
+
38
+ ```typescript
39
+ // Prisma select
40
+ const users = await prisma.user.findMany({
41
+ select: { id: true, name: true, email: true }
42
+ })
43
+ ```
44
+
45
+ ```sql
46
+ -- SQL
47
+ SELECT id, name, email FROM users; -- ✅
48
+ SELECT * FROM users; -- ❌
49
+ ```
50
+
51
+ ```go
52
+ // Go - json 태그로 제어
53
+ type UserResponse struct {
54
+ ID string `json:"id"`
55
+ Name string `json:"name"`
56
+ Email string `json:"email"`
57
+ // PasswordHash 필드 없음 → 자동 제외
58
+ }
59
+ ```
60
+
61
+ **적용 범위:** API 응답, SSR 데이터, 캐시 저장, 메시지 큐 페이로드.
@@ -0,0 +1,75 @@
1
+ ---
2
+ title: Stream Large Data Instead of Loading All
3
+ impact: HIGH
4
+ impactDescription: Constant memory usage, no OOM on large datasets
5
+ tags: io, streaming, iterator, generator, memory
6
+ languages: all
7
+ related: [memory-large-data, concurrency-pipeline]
8
+ ---
9
+
10
+ ## 대용량 데이터 스트리밍 처리
11
+
12
+ 전체 데이터를 메모리에 적재하지 않고 스트림/이터레이터/제너레이터로 청크 단위 처리합니다.
13
+
14
+ **❌ 잘못된 예시 (전체 로드):**
15
+
16
+ ```python
17
+ # 100만 행 전체 메모리 적재
18
+ rows = db.execute("SELECT * FROM big_table").fetchall()
19
+ for row in rows:
20
+ process(row)
21
+ ```
22
+
23
+ **✅ 올바른 예시 (스트리밍):**
24
+
25
+ ```python
26
+ # Python - 서버 사이드 커서
27
+ cursor = db.execute("SELECT * FROM big_table")
28
+ while batch := cursor.fetchmany(1000):
29
+ for row in batch:
30
+ process(row)
31
+
32
+ # 파일 스트리밍
33
+ with open("huge.csv") as f:
34
+ for line in f: # 한 줄씩 (메모리 일정)
35
+ process(line)
36
+ ```
37
+
38
+ ```typescript
39
+ // Node.js - 스트림
40
+ import { createReadStream } from 'fs'
41
+ import { pipeline } from 'stream/promises'
42
+
43
+ await pipeline(
44
+ createReadStream('huge.csv'),
45
+ new Transform({ transform(chunk, enc, cb) { /* 청크 처리 */ cb() } }),
46
+ createWriteStream('output.csv')
47
+ )
48
+ ```
49
+
50
+ ```go
51
+ // Go - Scanner (파일), rows.Next() (DB)
52
+ scanner := bufio.NewScanner(file)
53
+ for scanner.Scan() {
54
+ process(scanner.Text())
55
+ }
56
+
57
+ rows, _ := db.Query("SELECT * FROM big_table")
58
+ defer rows.Close()
59
+ for rows.Next() {
60
+ var item Item
61
+ rows.Scan(&item.ID, &item.Name)
62
+ process(item)
63
+ }
64
+ ```
65
+
66
+ ```rust
67
+ // Rust - Iterator (lazy)
68
+ use std::io::{BufRead, BufReader};
69
+ let reader = BufReader::new(file);
70
+ for line in reader.lines() {
71
+ process(line?);
72
+ }
73
+ ```
74
+
75
+ **적용 기준:** 10MB+ 파일, 10K+ DB 행, API 페이지네이션.
@@ -0,0 +1,65 @@
1
+ ---
2
+ title: Bound Cache Size with LRU/TTL
3
+ impact: MEDIUM
4
+ impactDescription: Prevents unbounded memory growth
5
+ tags: memory, cache, lru, ttl, bounded
6
+ languages: all
7
+ related: [io-cache-layer, concurrency-pool]
8
+ ---
9
+
10
+ ## 캐시에 크기 제한 설정
11
+
12
+ 무제한 캐시는 시간이 지남에 따라 메모리를 소진합니다. LRU(최소 최근 사용) + TTL(유효 시간)로 제한합니다.
13
+
14
+ **❌ 잘못된 예시 (무제한 캐시):**
15
+
16
+ ```python
17
+ cache = {} # 무제한 성장
18
+ def get_user(id):
19
+ if id not in cache:
20
+ cache[id] = db.get_user(id)
21
+ return cache[id]
22
+ # 100만 유저 → 100만 항목, OOM
23
+ ```
24
+
25
+ **✅ 올바른 예시 (제한된 캐시):**
26
+
27
+ ```python
28
+ # Python
29
+ from cachetools import TTLCache, LRUCache
30
+ cache = TTLCache(maxsize=10000, ttl=300) # 최대 1만, 5분 TTL
31
+
32
+ # functools (크기만 제한)
33
+ @lru_cache(maxsize=1000)
34
+ def get_config(key): ...
35
+ ```
36
+
37
+ ```typescript
38
+ // Node.js
39
+ import { LRUCache } from 'lru-cache'
40
+ const cache = new LRUCache<string, User>({
41
+ max: 10000, // 최대 항목 수
42
+ ttl: 5 * 60 * 1000, // 5분
43
+ maxSize: 50 * 1024 * 1024, // 50MB (선택)
44
+ sizeCalculation: (v) => JSON.stringify(v).length,
45
+ })
46
+ ```
47
+
48
+ ```go
49
+ // Go (ristretto)
50
+ cache, _ := ristretto.NewCache(&ristretto.Config{
51
+ NumCounters: 1e5, // 키 추적 수
52
+ MaxCost: 1 << 26, // 64MB
53
+ BufferItems: 64,
54
+ })
55
+ ```
56
+
57
+ ```rust
58
+ // Rust (moka)
59
+ let cache: Cache<String, User> = Cache::builder()
60
+ .max_capacity(10_000)
61
+ .time_to_live(Duration::from_secs(300))
62
+ .build();
63
+ ```
64
+
65
+ **원칙:** 캐시 = max 크기 + 만료 정책. 둘 다 없으면 메모리 릭과 같음.
@@ -0,0 +1,64 @@
1
+ ---
2
+ title: Paginate or Stream Large Datasets
3
+ impact: MEDIUM
4
+ impactDescription: Constant memory usage regardless of data size
5
+ tags: memory, pagination, streaming, large-data
6
+ languages: all
7
+ related: [io-stream, concurrency-pipeline]
8
+ ---
9
+
10
+ ## 대용량 데이터 페이지네이션/스트리밍
11
+
12
+ 전체 데이터를 한번에 메모리에 적재하지 않고 페이지 단위 또는 스트림으로 처리합니다.
13
+
14
+ **❌ 잘못된 예시:**
15
+
16
+ ```python
17
+ all_users = db.query("SELECT * FROM users").fetchall() # 100만 행 = OOM
18
+ response = jsonify(all_users)
19
+ ```
20
+
21
+ **✅ 올바른 예시:**
22
+
23
+ ```python
24
+ # 커서 기반 페이지네이션
25
+ @app.get("/users")
26
+ def list_users(cursor: str = None, limit: int = 50):
27
+ query = db.query(User).order_by(User.id)
28
+ if cursor:
29
+ query = query.filter(User.id > cursor)
30
+ users = query.limit(limit).all()
31
+ next_cursor = users[-1].id if users else None
32
+ return {"data": users, "next_cursor": next_cursor}
33
+ ```
34
+
35
+ ```typescript
36
+ // 커서 기반 (Prisma)
37
+ const users = await prisma.user.findMany({
38
+ take: 50,
39
+ skip: cursor ? 1 : 0,
40
+ cursor: cursor ? { id: cursor } : undefined,
41
+ orderBy: { id: 'asc' },
42
+ })
43
+ ```
44
+
45
+ ```go
46
+ // Go - 청크 처리
47
+ const batchSize = 1000
48
+ var lastID int64
49
+ for {
50
+ var batch []User
51
+ db.Where("id > ?", lastID).Order("id").Limit(batchSize).Find(&batch)
52
+ if len(batch) == 0 { break }
53
+ processBatch(batch)
54
+ lastID = batch[len(batch)-1].ID
55
+ }
56
+ ```
57
+
58
+ **페이지네이션 유형:**
59
+
60
+ | 유형 | 장점 | 단점 |
61
+ |------|------|------|
62
+ | **Offset** | 간단 구현 | 대량 데이터 시 느림, 중복/누락 |
63
+ | **Cursor** | 일관성, 빠름 | 임의 페이지 접근 불가 |
64
+ | **Keyset** | 가장 빠름 | 정렬 키 필요 |
@@ -0,0 +1,78 @@
1
+ ---
2
+ title: Lazy Initialize Expensive Resources
3
+ impact: MEDIUM
4
+ impactDescription: Faster startup, lower baseline memory
5
+ tags: memory, lazy, initialization, startup
6
+ languages: all
7
+ related: [concurrency-defer-await, build-code-split]
8
+ ---
9
+
10
+ ## 비싼 초기화 지연 실행
11
+
12
+ 애플리케이션 시작 시 모든 리소스를 초기화하지 않고, 실제 사용 시점에 지연 초기화합니다.
13
+
14
+ **❌ 잘못된 예시 (즉시 초기화):**
15
+
16
+ ```python
17
+ # 모듈 import 시 즉시 무거운 ML 모델 로드
18
+ import tensorflow as tf
19
+ model = tf.keras.models.load_model("huge_model.h5") # 5초, 2GB RAM
20
+ ```
21
+
22
+ ```typescript
23
+ // 모듈 로드 시 즉시 초기화
24
+ const heavyConfig = JSON.parse(fs.readFileSync('config.json', 'utf8'))
25
+ const searchIndex = buildSearchIndex(allDocuments) // 3초
26
+ ```
27
+
28
+ **✅ 올바른 예시 (지연 초기화):**
29
+
30
+ ```python
31
+ # Python - 필요 시점에 로드
32
+ _model = None
33
+ def get_model():
34
+ global _model
35
+ if _model is None:
36
+ import tensorflow as tf
37
+ _model = tf.keras.models.load_model("huge_model.h5")
38
+ return _model
39
+
40
+ # Python 3.8+ functools.cached_property
41
+ class Service:
42
+ @cached_property
43
+ def model(self):
44
+ return load_heavy_model()
45
+ ```
46
+
47
+ ```typescript
48
+ // JS/TS - getter 또는 lazy 패턴
49
+ let _searchIndex: SearchIndex | null = null
50
+ function getSearchIndex(): SearchIndex {
51
+ if (!_searchIndex) {
52
+ _searchIndex = buildSearchIndex(allDocuments)
53
+ }
54
+ return _searchIndex
55
+ }
56
+ ```
57
+
58
+ ```rust
59
+ // Rust - LazyLock (std) 또는 once_cell
60
+ use std::sync::LazyLock;
61
+ static CONFIG: LazyLock<Config> = LazyLock::new(|| {
62
+ load_config().expect("config load failed")
63
+ });
64
+ ```
65
+
66
+ ```go
67
+ // Go - sync.Once
68
+ var (
69
+ instance *Service
70
+ once sync.Once
71
+ )
72
+ func GetService() *Service {
73
+ once.Do(func() { instance = newService() })
74
+ return instance
75
+ }
76
+ ```
77
+
78
+ **적용 대상:** ML 모델, 검색 인덱스, 대용량 설정, 외부 서비스 커넥션.
@@ -0,0 +1,79 @@
1
+ ---
2
+ title: Guarantee Resource Cleanup
3
+ impact: HIGH
4
+ impactDescription: Prevents memory leaks, file handle exhaustion, connection leaks
5
+ tags: memory, resource, leak, cleanup, dispose
6
+ languages: all
7
+ related: [memory-pool-reuse, io-connection-reuse]
8
+ ---
9
+
10
+ ## 리소스 해제 보장
11
+
12
+ 파일, DB 커넥션, 소켓, 락 등 시스템 리소스는 예외 발생 시에도 반드시 해제합니다.
13
+
14
+ **❌ 잘못된 예시:**
15
+
16
+ ```python
17
+ f = open("data.csv")
18
+ data = f.read() # 예외 시 f.close() 호출 안 됨
19
+
20
+ conn = db.connect()
21
+ result = conn.execute(query) # 예외 시 커넥션 누수
22
+ ```
23
+
24
+ **✅ 올바른 예시:**
25
+
26
+ ```python
27
+ # Python - context manager
28
+ with open("data.csv") as f:
29
+ data = f.read()
30
+
31
+ async with pool.acquire() as conn:
32
+ result = await conn.execute(query)
33
+ ```
34
+
35
+ ```go
36
+ // Go - defer
37
+ resp, err := http.Get(url)
38
+ if err != nil { return err }
39
+ defer resp.Body.Close()
40
+
41
+ f, err := os.Open("data.csv")
42
+ if err != nil { return err }
43
+ defer f.Close()
44
+ ```
45
+
46
+ ```typescript
47
+ // JS/TS - try/finally
48
+ const conn = await pool.acquire()
49
+ try {
50
+ return await conn.query(sql)
51
+ } finally {
52
+ conn.release()
53
+ }
54
+
55
+ // TC39 Explicit Resource Management (using)
56
+ await using conn = await pool.acquire()
57
+ return await conn.query(sql)
58
+ ```
59
+
60
+ ```rust
61
+ // Rust - RAII (자동)
62
+ let file = File::open("data.csv")?; // Drop trait으로 스코프 끝에서 자동 해제
63
+ let data = read_to_string(&file)?;
64
+ // file 자동 해제
65
+ ```
66
+
67
+ ```java
68
+ // Java - try-with-resources
69
+ try (var conn = dataSource.getConnection();
70
+ var stmt = conn.prepareStatement(sql)) {
71
+ return stmt.executeQuery();
72
+ }
73
+ ```
74
+
75
+ ```csharp
76
+ // C# - using
77
+ await using var conn = await pool.GetConnectionAsync();
78
+ return await conn.QueryAsync(sql);
79
+ ```
@@ -0,0 +1,70 @@
1
+ ---
2
+ title: Pool and Reuse Expensive Objects
3
+ impact: MEDIUM
4
+ impactDescription: Reduces GC pressure, allocation overhead
5
+ tags: memory, pool, reuse, allocation, gc
6
+ languages: all
7
+ related: [memory-leak-prevention, concurrency-pool, io-connection-reuse]
8
+ ---
9
+
10
+ ## 비싼 객체 풀링/재사용
11
+
12
+ 반복 생성-소멸되는 비싼 객체(버퍼, 커넥션, HTTP 클라이언트)를 풀에서 재사용합니다.
13
+
14
+ **❌ 잘못된 예시:**
15
+
16
+ ```go
17
+ // 매 요청마다 새 버퍼 할당
18
+ func handler(w http.ResponseWriter, r *http.Request) {
19
+ buf := make([]byte, 32*1024) // 32KB 매번 할당 + GC
20
+ io.CopyBuffer(w, r.Body, buf)
21
+ }
22
+ ```
23
+
24
+ ```python
25
+ # 매번 새 HTTP 세션
26
+ def fetch(url):
27
+ return requests.get(url) # 매번 새 커넥션
28
+ ```
29
+
30
+ **✅ 올바른 예시:**
31
+
32
+ ```go
33
+ // Go - sync.Pool
34
+ var bufPool = sync.Pool{
35
+ New: func() any { return make([]byte, 32*1024) },
36
+ }
37
+
38
+ func handler(w http.ResponseWriter, r *http.Request) {
39
+ buf := bufPool.Get().([]byte)
40
+ defer bufPool.Put(buf)
41
+ io.CopyBuffer(w, r.Body, buf)
42
+ }
43
+ ```
44
+
45
+ ```python
46
+ # Python - 세션 재사용
47
+ session = requests.Session() # 모듈 레벨에서 한 번 생성
48
+
49
+ def fetch(url):
50
+ return session.get(url) # 커넥션 재사용, Keep-Alive
51
+ ```
52
+
53
+ ```typescript
54
+ // Node.js - HTTP Agent 재사용
55
+ import { Agent } from 'undici'
56
+ const agent = new Agent({ connections: 10, keepAliveTimeout: 30_000 })
57
+
58
+ // 또는 전역 fetch에서 agent 사용
59
+ ```
60
+
61
+ ```rust
62
+ // Rust - 정적 클라이언트
63
+ use reqwest::Client;
64
+ use std::sync::LazyLock;
65
+ static CLIENT: LazyLock<Client> = LazyLock::new(|| {
66
+ Client::builder().pool_max_idle_per_host(10).build().unwrap()
67
+ });
68
+ ```
69
+
70
+ **적용 대상:** HTTP 클라이언트, DB 커넥션, 버퍼, 정규식 컴파일 결과, 시리얼라이저 인스턴스.
@@ -8,6 +8,7 @@ user-invocable: true
8
8
  @../../instructions/workflow-patterns/phase-based-workflow.md
9
9
  @../../instructions/agent-patterns/parallel-execution.md
10
10
  @../../instructions/agent-patterns/model-routing.md
11
+ @../../instructions/agent-patterns/agent-teams-usage.md
11
12
  @../../instructions/context-optimization/phase-based-execution.md
12
13
  @../../instructions/context-optimization/sub-agent-distribution.md
13
14
  @../../instructions/validation/scope-completeness.md
@@ -7,6 +7,7 @@ user-invocable: true
7
7
  @../../instructions/workflow-patterns/sequential-thinking.md
8
8
  @../../instructions/agent-patterns/parallel-execution.md
9
9
  @../../instructions/agent-patterns/model-routing.md
10
+ @../../instructions/agent-patterns/agent-teams-usage.md
10
11
  @../../instructions/context-optimization/phase-based-execution.md
11
12
  @../../instructions/context-optimization/sub-agent-distribution.md
12
13
  @../../instructions/validation/scope-completeness.md
@@ -7,6 +7,7 @@ user-invocable: true
7
7
  @../../instructions/workflow-patterns/sequential-thinking.md
8
8
  @../../instructions/agent-patterns/parallel-execution.md
9
9
  @../../instructions/agent-patterns/model-routing.md
10
+ @../../instructions/agent-patterns/agent-teams-usage.md
10
11
  @../../instructions/sourcing/reliable-search.md
11
12
  @../../instructions/context-optimization/redundant-exploration-prevention.md
12
13
  @../../instructions/validation/forbidden-patterns.md