@kood/claude-code 0.6.6 → 0.6.7

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 (124) hide show
  1. package/dist/index.js +7 -1
  2. package/package.json +1 -1
  3. package/templates/.claude/agents/researcher.md +8 -1
  4. package/templates/.claude/instructions/sourcing/reliable-search.md +49 -2
  5. package/templates/.claude/skills/docs-fetch/SKILL.md +5 -4
  6. package/templates/.claude/skills/project-optimizer/AGENTS.md +275 -0
  7. package/templates/.claude/skills/project-optimizer/SKILL.md +374 -0
  8. package/templates/.claude/skills/project-optimizer/rules/arch-config-centralize.md +66 -0
  9. package/templates/.claude/skills/project-optimizer/rules/arch-hot-path.md +35 -0
  10. package/templates/.claude/skills/project-optimizer/rules/arch-interface-segregation.md +51 -0
  11. package/templates/.claude/skills/project-optimizer/rules/arch-module-boundary.md +42 -0
  12. package/templates/.claude/skills/project-optimizer/rules/build-cache.md +57 -0
  13. package/templates/.claude/skills/project-optimizer/rules/build-code-split.md +56 -0
  14. package/templates/.claude/skills/project-optimizer/rules/build-incremental.md +65 -0
  15. package/templates/.claude/skills/project-optimizer/rules/build-minify.md +61 -0
  16. package/templates/.claude/skills/project-optimizer/rules/build-tree-shake.md +60 -0
  17. package/templates/.claude/skills/project-optimizer/rules/code-complexity.md +65 -0
  18. package/templates/.claude/skills/project-optimizer/rules/code-dead-elimination.md +32 -0
  19. package/templates/.claude/skills/project-optimizer/rules/code-duplication.md +54 -0
  20. package/templates/.claude/skills/project-optimizer/rules/code-error-handling.md +75 -0
  21. package/templates/.claude/skills/project-optimizer/rules/code-naming.md +52 -0
  22. package/templates/.claude/skills/project-optimizer/rules/concurrency-defer-await.md +54 -0
  23. package/templates/.claude/skills/project-optimizer/rules/concurrency-parallel.md +90 -0
  24. package/templates/.claude/skills/project-optimizer/rules/concurrency-pipeline.md +68 -0
  25. package/templates/.claude/skills/project-optimizer/rules/concurrency-pool.md +68 -0
  26. package/templates/.claude/skills/project-optimizer/rules/deps-lightweight-alt.md +37 -0
  27. package/templates/.claude/skills/project-optimizer/rules/deps-peer-align.md +44 -0
  28. package/templates/.claude/skills/project-optimizer/rules/deps-security-audit.md +45 -0
  29. package/templates/.claude/skills/project-optimizer/rules/deps-unused-removal.md +25 -0
  30. package/templates/.claude/skills/project-optimizer/rules/deps-version-pin.md +40 -0
  31. package/templates/.claude/skills/project-optimizer/rules/dx-ci-speed.md +47 -0
  32. package/templates/.claude/skills/project-optimizer/rules/dx-dev-server.md +35 -0
  33. package/templates/.claude/skills/project-optimizer/rules/dx-lint-config.md +36 -0
  34. package/templates/.claude/skills/project-optimizer/rules/dx-test-coverage.md +34 -0
  35. package/templates/.claude/skills/project-optimizer/rules/dx-type-safety.md +49 -0
  36. package/templates/.claude/skills/project-optimizer/rules/io-batch-queries.md +67 -0
  37. package/templates/.claude/skills/project-optimizer/rules/io-cache-layer.md +67 -0
  38. package/templates/.claude/skills/project-optimizer/rules/io-connection-reuse.md +67 -0
  39. package/templates/.claude/skills/project-optimizer/rules/io-serialize-minimal.md +61 -0
  40. package/templates/.claude/skills/project-optimizer/rules/io-stream.md +75 -0
  41. package/templates/.claude/skills/project-optimizer/rules/memory-bounded-cache.md +65 -0
  42. package/templates/.claude/skills/project-optimizer/rules/memory-large-data.md +64 -0
  43. package/templates/.claude/skills/project-optimizer/rules/memory-lazy-init.md +78 -0
  44. package/templates/.claude/skills/project-optimizer/rules/memory-leak-prevention.md +79 -0
  45. package/templates/.claude/skills/project-optimizer/rules/memory-pool-reuse.md +70 -0
  46. package/templates/.claude/skills/sql-optimizer/SKILL.md +437 -0
  47. package/templates/.claude/skills/sql-optimizer/orm-patterns.md +218 -0
  48. package/templates/.claude/skills/tanstack-start-react-best-practices/AGENTS.md +53 -14
  49. package/templates/.claude/skills/tanstack-start-react-best-practices/SKILL.md +93 -27
  50. package/templates/.claude/skills/tanstack-start-react-best-practices/rules/bundle-defer-third-party.md +42 -19
  51. package/templates/.claude/skills/tanstack-start-react-best-practices/rules/client-optimistic-updates.md +109 -0
  52. package/templates/.claude/skills/tanstack-start-react-best-practices/rules/client-suspense-query.md +74 -0
  53. package/templates/.claude/skills/tanstack-start-react-best-practices/rules/client-use-hook.md +81 -0
  54. package/templates/.claude/skills/tanstack-start-react-best-practices/rules/rerender-react-compiler.md +81 -0
  55. package/templates/.claude/skills/tanstack-start-react-best-practices/rules/routing-beforeload-auth.md +121 -0
  56. package/templates/.claude/skills/tanstack-start-react-best-practices/rules/routing-file-conventions.md +104 -0
  57. package/templates/.claude/skills/tanstack-start-react-best-practices/rules/routing-link-navigation.md +119 -0
  58. package/templates/.claude/skills/tanstack-start-react-best-practices/rules/routing-nested-layouts.md +155 -0
  59. package/templates/.claude/skills/tanstack-start-react-best-practices/rules/routing-path-params.md +89 -0
  60. package/templates/.claude/skills/tanstack-start-react-best-practices/rules/routing-pending-component.md +110 -0
  61. package/templates/.claude/skills/tanstack-start-react-best-practices/rules/routing-preload-strategy.md +91 -0
  62. package/templates/.claude/skills/tanstack-start-react-best-practices/rules/routing-router-context.md +120 -0
  63. package/templates/.claude/skills/tanstack-start-react-best-practices/rules/routing-search-params.md +114 -0
  64. package/templates/.claude/skills/tanstack-start-react-best-practices/rules/server-deferred-data.md +1 -1
  65. package/templates/.claude/skills/tanstack-start-react-best-practices/rules/server-error-boundaries.md +79 -0
  66. package/templates/.claude/skills/tanstack-start-react-best-practices/rules/server-middleware.md +85 -0
  67. package/templates/.claude/skills/tanstack-start-react-best-practices/rules/server-serialization.md +56 -21
  68. package/templates/.claude/skills/tanstack-start-react-best-practices/rules/server-streaming.md +84 -0
  69. package/templates/.claude/skills/tanstack-start-react-best-practices/rules/server-validator.md +71 -0
  70. package/templates/.claude/skills/tauri-react-best-practices/AGENTS.md +527 -0
  71. package/templates/.claude/skills/tauri-react-best-practices/SKILL.md +570 -0
  72. package/templates/.claude/skills/tauri-react-best-practices/rules/bundle-barrel-imports.md +140 -0
  73. package/templates/.claude/skills/tauri-react-best-practices/rules/bundle-cargo-profile.md +96 -0
  74. package/templates/.claude/skills/tauri-react-best-practices/rules/bundle-frontend-treeshake.md +242 -0
  75. package/templates/.claude/skills/tauri-react-best-practices/rules/bundle-lazy-components.md +255 -0
  76. package/templates/.claude/skills/tauri-react-best-practices/rules/bundle-remove-unused-commands.md +160 -0
  77. package/templates/.claude/skills/tauri-react-best-practices/rules/deploy-ci-pipeline.md +269 -0
  78. package/templates/.claude/skills/tauri-react-best-practices/rules/deploy-signing.md +207 -0
  79. package/templates/.claude/skills/tauri-react-best-practices/rules/deploy-updater.md +226 -0
  80. package/templates/.claude/skills/tauri-react-best-practices/rules/ipc-async-commands.md +172 -0
  81. package/templates/.claude/skills/tauri-react-best-practices/rules/ipc-batch-commands.md +133 -0
  82. package/templates/.claude/skills/tauri-react-best-practices/rules/ipc-binary-response.md +198 -0
  83. package/templates/.claude/skills/tauri-react-best-practices/rules/ipc-channel-streaming.md +186 -0
  84. package/templates/.claude/skills/tauri-react-best-practices/rules/ipc-error-handling.md +250 -0
  85. package/templates/.claude/skills/tauri-react-best-practices/rules/ipc-type-safe.md +227 -0
  86. package/templates/.claude/skills/tauri-react-best-practices/rules/perf-derived-state.md +231 -0
  87. package/templates/.claude/skills/tauri-react-best-practices/rules/perf-functional-setstate.md +191 -0
  88. package/templates/.claude/skills/tauri-react-best-practices/rules/perf-index-maps.md +276 -0
  89. package/templates/.claude/skills/tauri-react-best-practices/rules/perf-lazy-state-init.md +196 -0
  90. package/templates/.claude/skills/tauri-react-best-practices/rules/plugin-lifecycle.md +265 -0
  91. package/templates/.claude/skills/tauri-react-best-practices/rules/plugin-mobile-compat.md +199 -0
  92. package/templates/.claude/skills/tauri-react-best-practices/rules/plugin-permission-scope.md +193 -0
  93. package/templates/.claude/skills/tauri-react-best-practices/rules/react-error-boundary.md +239 -0
  94. package/templates/.claude/skills/tauri-react-best-practices/rules/react-event-listener.md +151 -0
  95. package/templates/.claude/skills/tauri-react-best-practices/rules/react-file-src.md +155 -0
  96. package/templates/.claude/skills/tauri-react-best-practices/rules/react-invoke-hook.md +139 -0
  97. package/templates/.claude/skills/tauri-react-best-practices/rules/react-optimistic-update.md +211 -0
  98. package/templates/.claude/skills/tauri-react-best-practices/rules/security-capability-split.md +205 -0
  99. package/templates/.claude/skills/tauri-react-best-practices/rules/security-csp.md +207 -0
  100. package/templates/.claude/skills/tauri-react-best-practices/rules/security-least-privilege.md +106 -0
  101. package/templates/.claude/skills/tauri-react-best-practices/rules/security-no-wildcard.md +253 -0
  102. package/templates/.claude/skills/tauri-react-best-practices/rules/security-scope-paths.md +160 -0
  103. package/templates/.claude/skills/tauri-react-best-practices/rules/state-async-mutex.md +270 -0
  104. package/templates/.claude/skills/tauri-react-best-practices/rules/state-mutex-pattern.md +265 -0
  105. package/templates/.claude/skills/tauri-react-best-practices/rules/state-react-sync.md +375 -0
  106. package/templates/.claude/skills/tauri-react-best-practices/rules/state-single-container.md +275 -0
  107. package/templates/tanstack-start/docs/architecture.md +238 -167
  108. package/templates/tanstack-start/docs/library/tanstack-router/error-handling.md +777 -38
  109. package/templates/tanstack-start/docs/library/tanstack-router/hooks.md +549 -37
  110. package/templates/tanstack-start/docs/library/tanstack-router/index.md +895 -111
  111. package/templates/tanstack-start/docs/library/tanstack-router/navigation.md +641 -43
  112. package/templates/tanstack-start/docs/library/tanstack-router/route-context.md +889 -38
  113. package/templates/tanstack-start/docs/library/tanstack-router/search-params.md +891 -29
  114. package/templates/tanstack-start/docs/library/tanstack-start/auth-patterns.md +972 -36
  115. package/templates/tanstack-start/docs/library/tanstack-start/index.md +1525 -881
  116. package/templates/tanstack-start/docs/library/tanstack-start/middleware.md +1099 -20
  117. package/templates/tanstack-start/docs/library/tanstack-start/routing.md +796 -30
  118. package/templates/tanstack-start/docs/library/tanstack-start/server-functions.md +953 -35
  119. package/templates/tanstack-start/docs/library/tanstack-start/setup.md +371 -15
  120. package/templates/tauri/CLAUDE.md +189 -0
  121. package/templates/tauri/docs/guides/distribution.md +261 -0
  122. package/templates/tauri/docs/guides/getting-started.md +302 -0
  123. package/templates/tauri/docs/guides/mobile.md +288 -0
  124. package/templates/tauri/docs/library/tauri/index.md +510 -0
package/dist/index.js CHANGED
@@ -118,6 +118,11 @@ var templateMetadata = {
118
118
  name: "NPX CLI",
119
119
  description: "NPX\uB85C \uC2E4\uD589 \uAC00\uB2A5\uD55C CLI \uB3C4\uAD6C \uD504\uB85C\uC81D\uD2B8",
120
120
  stack: "Node.js, TypeScript, Commander.js"
121
+ },
122
+ tauri: {
123
+ name: "Tauri",
124
+ description: "Cross-platform Desktop & Mobile \uC571 \uD504\uB85C\uC81D\uD2B8",
125
+ stack: "Rust, React, TypeScript, Vite"
121
126
  }
122
127
  };
123
128
  var generateIndexClaudeMd = (templates) => {
@@ -754,7 +759,8 @@ async function updateGitignore(targetDir) {
754
759
  var TEMPLATE_DESCRIPTIONS = {
755
760
  "tanstack-start": "TanStack Start + React \uD480\uC2A4\uD0DD \uD504\uB85C\uC81D\uD2B8",
756
761
  hono: "Hono \uC11C\uBC84 \uD504\uB808\uC784\uC6CC\uD06C \uD504\uB85C\uC81D\uD2B8",
757
- npx: "NPX CLI \uB3C4\uAD6C \uD504\uB85C\uC81D\uD2B8"
762
+ npx: "NPX CLI \uB3C4\uAD6C \uD504\uB85C\uC81D\uD2B8",
763
+ tauri: "Tauri \uB370\uC2A4\uD06C\uD1B1/\uBAA8\uBC14\uC77C \uD06C\uB85C\uC2A4\uD50C\uB7AB\uD3FC \uC571"
758
764
  };
759
765
  async function validateTargetDirectory(targetDir) {
760
766
  try {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@kood/claude-code",
3
- "version": "0.6.6",
3
+ "version": "0.6.7",
4
4
  "description": "Claude Code documentation installer for projects",
5
5
  "type": "module",
6
6
  "bin": "./dist/index.js",
@@ -61,7 +61,7 @@ permissionMode: default
61
61
  |------|------|------|
62
62
  | **1. 분석** | 질문 분해, 키워드 추출, 버전 확인 | - |
63
63
  | **2. 검색** | 공식 문서 → GitHub → Stack Overflow | WebSearch |
64
- | **3. 수집** | 관련 페이지 내용 읽기 | WebFetch |
64
+ | **3. 수집** | 관련 페이지 내용 읽기 (JS 렌더링 필요 시 `r.jina.ai` 폴백) | WebFetch |
65
65
  | **4. 검증** | 버전 일치 확인, 교차 검증 | - |
66
66
  | **5. 종합** | 핵심 요약 + 상세 내용 + 출처 | - |
67
67
 
@@ -78,6 +78,13 @@ permissionMode: default
78
78
  "[라이브러리명] migration guide v[버전]"
79
79
  ```
80
80
 
81
+ ## Jina Reader (JS 렌더링 / WebFetch 실패 시 폴백)
82
+ ```
83
+ WebFetch('https://r.jina.ai/{공식문서URL}', '{추출할 내용}')
84
+ → JS 렌더링 지원, 광고/네비 제거, 클린 마크다운 변환
85
+ → WebFetch로 빈 결과 시 Jina Reader 시도
86
+ ```
87
+
81
88
  ## GitHub
82
89
  ```
83
90
  "site:github.com [org]/[repo] [키워드]"
@@ -298,6 +298,7 @@ WebSearch({ query: "AI agent frameworks comparison" })
298
298
  | **WebSearch** | 연도 포함, 영어+한국어 병렬 |
299
299
  | **SearXNG** | `time_range=year` + 연도 키워드 |
300
300
  | **Firecrawl** | 공식 문서 URL 직접 지정 |
301
+ | **Jina Reader** | `WebFetch('https://r.jina.ai/{URL}')` — JS 렌더링 클린 MD 변환 |
301
302
  | **GitHub** | `created:>YYYY-01-01` 필터, stars 정렬 |
302
303
 
303
304
  ---
@@ -314,6 +315,7 @@ Tier 1 (MCP, ToolSearch로 감지):
314
315
  Tier 2 (내장, 항상 가용):
315
316
  WebSearch → 웹 검색 (연도 키워드 필수)
316
317
  WebFetch → 페이지 직접 읽기
318
+ Jina Reader → WebFetch('https://r.jina.ai/{URL}') 클린 마크다운 변환
317
319
  gh CLI → GitHub API (Bash via explore)
318
320
 
319
321
  Tier 3: Playwright → SPA/JS 렌더링 필요 시 (crawler skill)
@@ -323,10 +325,10 @@ Tier 3: Playwright → SPA/JS 렌더링 필요 시 (crawler skill)
323
325
 
324
326
  | MCP 도구 | 용도 | 미설치 시 폴백 |
325
327
  |----------|------|--------------|
326
- | `firecrawl_map/scrape/crawl` | 사이트 구조/페이지 수집 | WebFetch (페이지별) |
328
+ | `firecrawl_map/scrape/crawl` | 사이트 구조/페이지 수집 | Jina Reader → WebFetch (페이지별) |
327
329
  | SearXNG `web_search` | 246+ 엔진 메타검색 | WebSearch (내장) |
328
330
  | `search_repositories/code/issues` | GitHub 리포/코드/이슈 | `gh search` (Bash) |
329
- | `resolve-library-id` + `query-docs` | 라이브러리 문서 조회 | WebFetch (직접) |
331
+ | `resolve-library-id` + `query-docs` | 라이브러리 문서 조회 | Jina Reader → WebFetch (직접) |
330
332
 
331
333
  ### MCP 감지 (Phase 0 공통)
332
334
 
@@ -339,6 +341,51 @@ ToolSearch("context7") → Context7 활성화
339
341
 
340
342
  ---
341
343
 
344
+ ## Jina Reader (`r.jina.ai`)
345
+
346
+ **용도:** URL → 클린 마크다운 변환 (JS 렌더링 지원, 광고/네비 제거)
347
+
348
+ | 특성 | 설명 |
349
+ |------|------|
350
+ | **엔드포인트** | `https://r.jina.ai/{URL}` |
351
+ | **호출 방법** | `WebFetch('https://r.jina.ai/{URL}', '{프롬프트}')` |
352
+ | **장점** | JS 렌더링, 클린 MD, 광고/네비 자동 제거, 무료 |
353
+ | **한계** | 검색 기능 없음 (URL 필수), 대량 크롤링 비적합 |
354
+
355
+ ### 활용 시나리오
356
+
357
+ | 시나리오 | 사용 |
358
+ |----------|------|
359
+ | **WebFetch 실패** | JS 렌더링 필요 페이지 → Jina Reader 폴백 |
360
+ | **Firecrawl 미설치** | 개별 페이지 클린 MD 변환 |
361
+ | **공식 문서 읽기** | SPA 기반 문서 사이트 (React, Vue 등) |
362
+ | **블로그/미디어** | 광고 제거된 본문만 추출 |
363
+
364
+ ### 사용 패턴
365
+
366
+ ```typescript
367
+ // ✅ 기본: URL을 클린 마크다운으로 변환
368
+ WebFetch('https://r.jina.ai/https://react.dev/reference/react/use', '핵심 API 사용법 추출')
369
+
370
+ // ✅ WebFetch 실패 시 Jina 폴백
371
+ WebFetch('https://docs.example.com/guide') // → 빈 결과 (JS 렌더링 필요)
372
+ WebFetch('https://r.jina.ai/https://docs.example.com/guide', '가이드 내용 추출') // → 클린 MD
373
+
374
+ // ✅ Firecrawl 미설치 시 개별 페이지 대안
375
+ WebFetch('https://r.jina.ai/https://prisma.io/docs/orm/prisma-schema', 'Prisma 스키마 문법 추출')
376
+
377
+ // ❌ 검색 용도로 사용 (검색은 WebSearch/SearXNG 사용)
378
+ WebFetch('https://r.jina.ai/react hooks tutorial') // 잘못된 사용
379
+ ```
380
+
381
+ ### 폴백 체인 (페이지 읽기)
382
+
383
+ ```
384
+ Firecrawl scrape → Jina Reader → WebFetch (직접) → Playwright (최후 수단)
385
+ ```
386
+
387
+ ---
388
+
342
389
  ## 수집 후 검증
343
390
 
344
391
  | 단계 | 검증 |
@@ -74,8 +74,9 @@ ARGUMENT 있음 → 다음 단계 진행
74
74
  | **2** | GitHub MCP + gh CLI | README, docs/, CHANGELOG 직접 접근 |
75
75
  | **3** | Firecrawl `/map`→`/crawl` + SearXNG 검색 | 문서 일괄 수집 + breaking changes 보충 (동시 실행) |
76
76
  | **4** | Context7 MCP | 라이브러리 문서 즉시 조회, 업데이트 지연 가능성 있음 |
77
- | **5** | WebFetch | 개별 페이지 직접 읽기 |
78
- | **6** | WebSearch | 최후 보충 검색 |
77
+ | **5** | Jina Reader | `WebFetch('https://r.jina.ai/{URL}')` JS 렌더링 클린 MD (WebFetch 실패 시) |
78
+ | **6** | WebFetch | 개별 페이지 직접 읽기 |
79
+ | **7** | WebSearch | 최후 보충 검색 |
79
80
 
80
81
  **Smart Tier Fallback 및 MCP 통합 전략**: @../../instructions/sourcing/reliable-search.md 참조
81
82
 
@@ -174,7 +175,7 @@ Task(subagent_type="researcher", model="haiku",
174
175
  | Tier | 경로 | 실행 |
175
176
  |------|------|------|
176
177
  | **1 (MCP)** | Firecrawl + SearXNG | `firecrawl_map` → `firecrawl_crawl` (최대 50p) + `searxng_search` 병렬 |
177
- | **2 (내장)** | WebFetch | llms.txt 링크 우선, 없으면 GitHub docs/ + 공식 문서 10-15p (5개씩 병렬) |
178
+ | **2 (내장)** | Jina Reader + WebFetch | llms.txt 링크 우선, SPA 문서는 `r.jina.ai` 경유, 없으면 GitHub docs/ + 공식 문서 10-15p (5개씩 병렬) |
178
179
 
179
180
  ### 공통: Breaking Changes 추출
180
181
 
@@ -386,7 +387,7 @@ researcher(검색) ──┘
386
387
  | **Context7** | `resolve-library-id`, `get-library-docs` | 라이브러리 문서 즉시 조회 (업데이트 지연 가능) |
387
388
  | **GitHub** | `get_file_contents`, `get_latest_release` | README, docs/, CHANGELOG |
388
389
 
389
- **MCP 미설치** → WebFetch (페이지별) + WebSearch (내장) + `gh api` (CLI) 폴백
390
+ **MCP 미설치** → Jina Reader (`r.jina.ai`) → WebFetch (페이지별) WebSearch (내장) `gh api` (CLI) 폴백
390
391
 
391
392
  </mcp_integration>
392
393
 
@@ -0,0 +1,275 @@
1
+ # Project Optimizer
2
+
3
+ **Version 1.0.0**
4
+ 범용 프로젝트 최적화 가이드 (언어/프레임워크 무관)
5
+ February 2026
6
+
7
+ > **참고:**
8
+ > 이 문서는 주로 에이전트와 LLM이 프로젝트 코드베이스를 분석, 최적화, 리팩토링할 때 따르기 위한 것입니다. 어떤 언어/프레임워크든 적용 가능한 보편적 최적화 원칙 기반.
9
+
10
+ ---
11
+
12
+ ## 요약
13
+
14
+ AI 에이전트를 위한 범용 프로젝트 최적화 가이드. 8개 카테고리에 걸쳐 38개 규칙을 포함하며, 영향도별로 우선순위 매김 (critical: 동시성, 빌드 최적화 → incremental: 아키텍처). 언어/프레임워크를 자동 감지하여 해당 언어의 관용적 패턴으로 규칙 적용. 프레임워크 특화 스킬(nextjs, tanstack-start, tauri)과 자동 체이닝 지원.
15
+
16
+ ---
17
+
18
+ <instructions>
19
+
20
+ ## 문서 사용 지침
21
+
22
+ @rules/concurrency-parallel.md
23
+ @rules/concurrency-defer-await.md
24
+ @rules/concurrency-pipeline.md
25
+ @rules/concurrency-pool.md
26
+ @rules/build-incremental.md
27
+ @rules/build-tree-shake.md
28
+ @rules/build-code-split.md
29
+ @rules/build-minify.md
30
+ @rules/build-cache.md
31
+ @rules/io-batch-queries.md
32
+ @rules/io-cache-layer.md
33
+ @rules/io-stream.md
34
+ @rules/io-connection-reuse.md
35
+ @rules/io-serialize-minimal.md
36
+ @rules/memory-leak-prevention.md
37
+ @rules/memory-pool-reuse.md
38
+ @rules/memory-lazy-init.md
39
+ @rules/memory-bounded-cache.md
40
+ @rules/memory-large-data.md
41
+ @rules/code-dead-elimination.md
42
+ @rules/code-duplication.md
43
+ @rules/code-complexity.md
44
+ @rules/code-naming.md
45
+ @rules/code-error-handling.md
46
+ @rules/deps-unused-removal.md
47
+ @rules/deps-security-audit.md
48
+ @rules/deps-version-pin.md
49
+ @rules/deps-lightweight-alt.md
50
+ @rules/deps-peer-align.md
51
+ @rules/dx-type-safety.md
52
+ @rules/dx-lint-config.md
53
+ @rules/dx-test-coverage.md
54
+ @rules/dx-ci-speed.md
55
+ @rules/dx-dev-server.md
56
+ @rules/arch-module-boundary.md
57
+ @rules/arch-interface-segregation.md
58
+ @rules/arch-config-centralize.md
59
+ @rules/arch-hot-path.md
60
+
61
+ </instructions>
62
+
63
+ ---
64
+
65
+ <categories>
66
+
67
+ ## 카테고리별 우선순위
68
+
69
+ | 우선순위 | 카테고리 | 영향도 | 설명 |
70
+ |---------|---------|--------|------|
71
+ | 1 | 동시성/병렬화 | **CRITICAL** | 순차 I/O를 병렬로 전환. 가장 큰 성능 향상 |
72
+ | 2 | 빌드/번들 최적화 | **CRITICAL** | 빌드 시간, 출력 크기 감소 |
73
+ | 3 | I/O 성능 | **HIGH** | DB/네트워크/파일 I/O 효율화 |
74
+ | 4 | 메모리/리소스 관리 | HIGH | 메모리 누수 방지, 리소스 효율 |
75
+ | 5 | 코드 품질 | MEDIUM-HIGH | 유지보수성, 가독성, 정확성 |
76
+ | 6 | 의존성 관리 | MEDIUM | 보안, 크기, 호환성 |
77
+ | 7 | DX (개발자 경험) | MEDIUM | 타입 안전성, 린팅, 테스트, CI |
78
+ | 8 | 아키텍처 | LOW-MEDIUM | 모듈 경계, 인터페이스, 설정 관리 |
79
+
80
+ </categories>
81
+
82
+ ---
83
+
84
+ <critical_patterns>
85
+
86
+ ## 1. 동시성/병렬화 (CRITICAL)
87
+
88
+ 순차 I/O는 가장 큰 성능 저해 요소. 독립 작업은 항상 동시 실행.
89
+
90
+ ### 병렬 실행 (다국어)
91
+
92
+ | 언어 | 순차 (❌) | 병렬 (✅) |
93
+ |------|----------|----------|
94
+ | **JS/TS** | `await a(); await b()` | `await Promise.all([a(), b()])` |
95
+ | **Python** | `await a(); await b()` | `await asyncio.gather(a(), b())` |
96
+ | **Go** | `a(); b()` | `errgroup.Go(a); errgroup.Go(b)` |
97
+ | **Rust** | `a.await; b.await` | `tokio::try_join!(a, b)` |
98
+ | **Java** | `a.get(); b.get()` | `CompletableFuture.allOf(a, b)` |
99
+ | **C#** | `await A(); await B()` | `await Task.WhenAll(A(), B())` |
100
+ | **Elixir** | sequential calls | `Task.async` + `Task.await_many` |
101
+ | **Ruby** | sequential calls | `Async { [task1, task2].map(&:wait) }` |
102
+
103
+ ### 커넥션 풀링
104
+
105
+ | 언어 | 라이브러리 | 설정 |
106
+ |------|-----------|------|
107
+ | **JS/TS** | `generic-pool`, Prisma | `pool: { min: 2, max: 10 }` |
108
+ | **Python** | `sqlalchemy`, `asyncpg` | `pool_size=10, max_overflow=20` |
109
+ | **Go** | `database/sql` | `SetMaxOpenConns(25)` |
110
+ | **Rust** | `deadpool`, `bb8` | `Pool::builder().max_size(16)` |
111
+ | **Java** | HikariCP | `maximumPoolSize=10` |
112
+
113
+ </critical_patterns>
114
+
115
+ ---
116
+
117
+ <build_optimization>
118
+
119
+ ## 2. 빌드/번들 최적화 (CRITICAL)
120
+
121
+ ### 증분 빌드 설정
122
+
123
+ | 도구 | 설정 |
124
+ |------|------|
125
+ | **TypeScript** | `"incremental": true` in tsconfig.json |
126
+ | **Rust** | `incremental = true` in Cargo.toml `[profile.dev]` |
127
+ | **Go** | 기본 활성화 (`go build` 캐시) |
128
+ | **Python** | Ruff `cache-dir`, mypy `incremental` |
129
+ | **Gradle** | `org.gradle.caching=true` |
130
+ | **CMake** | ccache / sccache 연동 |
131
+
132
+ ### CI 캐시 전략
133
+
134
+ | 패키지 매니저 | 캐시 대상 |
135
+ |-------------|----------|
136
+ | npm/yarn/pnpm | `node_modules`, `.yarn/cache` |
137
+ | pip | `~/.cache/pip` |
138
+ | cargo | `~/.cargo/registry`, `target/` |
139
+ | go | `~/go/pkg/mod`, `~/.cache/go-build` |
140
+ | gradle | `~/.gradle/caches` |
141
+
142
+ </build_optimization>
143
+
144
+ ---
145
+
146
+ <io_performance>
147
+
148
+ ## 3. I/O 성능 (HIGH)
149
+
150
+ ### N+1 쿼리 패턴 제거
151
+
152
+ ```
153
+ ❌ N+1: 목록 1쿼리 + 각 항목 N쿼리 = N+1 쿼리
154
+ ✅ 배치: 목록 1쿼리 + IN절 1쿼리 = 2쿼리
155
+ ✅ 조인: 1쿼리로 전체 해결
156
+ ```
157
+
158
+ | ORM | N+1 해결 방법 |
159
+ |-----|-------------|
160
+ | **Prisma** | `include: { relation: true }` |
161
+ | **SQLAlchemy** | `joinedload()`, `selectinload()` |
162
+ | **GORM** | `Preload("Relation")` |
163
+ | **ActiveRecord** | `includes(:relation)` |
164
+ | **Hibernate** | `@EntityGraph`, `JOIN FETCH` |
165
+ | **Diesel** | `belonging_to().load()` |
166
+
167
+ ### 캐시 레이어
168
+
169
+ ```
170
+ 요청 → L1 (인메모리, <1ms) → L2 (Redis, <5ms) → L3 (DB, ~50ms)
171
+ ↑ 캐시 히트 ↑ 캐시 히트 ↑ 캐시 미스
172
+ ```
173
+
174
+ </io_performance>
175
+
176
+ ---
177
+
178
+ <memory_management>
179
+
180
+ ## 4. 메모리/리소스 관리 (HIGH)
181
+
182
+ ### 리소스 해제 패턴
183
+
184
+ | 언어 | 패턴 |
185
+ |------|------|
186
+ | **Python** | `with` (context manager) |
187
+ | **Go** | `defer resource.Close()` |
188
+ | **Rust** | RAII (Drop trait, 자동 해제) |
189
+ | **Java** | try-with-resources |
190
+ | **C#** | `using` statement |
191
+ | **JS/TS** | `try/finally`, `using` (TC39 Stage 3) |
192
+ | **C++** | RAII, `std::unique_ptr` |
193
+
194
+ ### 대용량 데이터 처리
195
+
196
+ ```
197
+ ❌ 전체 로드: loadAll() → 메모리 폭발
198
+ ✅ 스트리밍: stream/iterator/generator → 일정 메모리
199
+ ✅ 페이지네이션: page(offset, limit) → 제한된 메모리
200
+ ```
201
+
202
+ </memory_management>
203
+
204
+ ---
205
+
206
+ <code_quality>
207
+
208
+ ## 5. 코드 품질 (MEDIUM-HIGH)
209
+
210
+ ### 복잡도 감소 패턴
211
+
212
+ | 패턴 | 효과 |
213
+ |------|------|
214
+ | **Early return** | 중첩 깊이 -2~3단계 |
215
+ | **Guard clause** | 예외 조건 상단 배치 |
216
+ | **Extract method** | 단일 책임 분리 |
217
+ | **Replace conditional with polymorphism** | if-else 체인 제거 |
218
+ | **Table-driven** | switch/case → 맵/딕셔너리 |
219
+
220
+ ### 에러 처리 일관성
221
+
222
+ | 언어 | 권장 패턴 |
223
+ |------|----------|
224
+ | **Go** | `(value, error)` 튜플, sentinel errors |
225
+ | **Rust** | `Result<T, E>`, `?` 연산자 |
226
+ | **Python** | 커스텀 Exception 계층, `raise from` |
227
+ | **JS/TS** | 커스텀 Error 클래스, Result 패턴 |
228
+ | **Java** | checked exception 최소화, unchecked 선호 |
229
+
230
+ </code_quality>
231
+
232
+ ---
233
+
234
+ <dependency_management>
235
+
236
+ ## 6. 의존성 관리 (MEDIUM)
237
+
238
+ ### 미사용 의존성 감지 도구
239
+
240
+ | 언어 | 도구 |
241
+ |------|------|
242
+ | **JS/TS** | `depcheck`, `knip` |
243
+ | **Python** | `pip-autoremove`, `deptry` |
244
+ | **Go** | `go mod tidy` (내장) |
245
+ | **Rust** | `cargo-udeps` |
246
+ | **Java** | `gradle-dependency-analysis` |
247
+
248
+ ### 보안 취약점 스캔
249
+
250
+ | 언어 | 도구 |
251
+ |------|------|
252
+ | **JS/TS** | `npm audit`, `yarn audit`, `snyk` |
253
+ | **Python** | `pip-audit`, `safety` |
254
+ | **Go** | `govulncheck` |
255
+ | **Rust** | `cargo-audit` |
256
+ | **범용** | `trivy`, `grype`, Dependabot |
257
+
258
+ </dependency_management>
259
+
260
+ ---
261
+
262
+ <references>
263
+
264
+ ## 참고 자료
265
+
266
+ ### 범용
267
+ 1. [Google Engineering Practices](https://google.github.io/eng-practices/)
268
+ 2. [The Twelve-Factor App](https://12factor.net/)
269
+
270
+ ### 언어별
271
+ 3. [Effective Go](https://go.dev/doc/effective_go)
272
+ 4. [Rust Performance Book](https://nnethercote.github.io/perf-book/)
273
+ 5. [Node.js Best Practices](https://github.com/goldbergyoni/nodebestpractices)
274
+
275
+ </references>