timsquad 2.1.0 → 3.4.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 (438) hide show
  1. package/README.ko.md +288 -0
  2. package/README.md +170 -763
  3. package/dist/commands/compile.d.ts +3 -0
  4. package/dist/commands/compile.d.ts.map +1 -0
  5. package/dist/commands/compile.js +170 -0
  6. package/dist/commands/compile.js.map +1 -0
  7. package/dist/commands/daemon.d.ts +7 -0
  8. package/dist/commands/daemon.d.ts.map +1 -0
  9. package/dist/commands/daemon.js +229 -0
  10. package/dist/commands/daemon.js.map +1 -0
  11. package/dist/commands/feedback.d.ts +9 -0
  12. package/dist/commands/feedback.d.ts.map +1 -1
  13. package/dist/commands/feedback.js +235 -14
  14. package/dist/commands/feedback.js.map +1 -1
  15. package/dist/commands/full.js +2 -2
  16. package/dist/commands/full.js.map +1 -1
  17. package/dist/commands/init.d.ts.map +1 -1
  18. package/dist/commands/init.js +118 -22
  19. package/dist/commands/init.js.map +1 -1
  20. package/dist/commands/knowledge.d.ts +3 -0
  21. package/dist/commands/knowledge.d.ts.map +1 -0
  22. package/dist/commands/knowledge.js +316 -0
  23. package/dist/commands/knowledge.js.map +1 -0
  24. package/dist/commands/log.d.ts +27 -0
  25. package/dist/commands/log.d.ts.map +1 -1
  26. package/dist/commands/log.js +965 -0
  27. package/dist/commands/log.js.map +1 -1
  28. package/dist/commands/meta-index.d.ts +3 -0
  29. package/dist/commands/meta-index.d.ts.map +1 -0
  30. package/dist/commands/meta-index.js +401 -0
  31. package/dist/commands/meta-index.js.map +1 -0
  32. package/dist/commands/metrics.d.ts.map +1 -1
  33. package/dist/commands/metrics.js +239 -4
  34. package/dist/commands/metrics.js.map +1 -1
  35. package/dist/commands/retro.js +154 -6
  36. package/dist/commands/retro.js.map +1 -1
  37. package/dist/commands/skills.d.ts +12 -0
  38. package/dist/commands/skills.d.ts.map +1 -0
  39. package/dist/commands/skills.js +231 -0
  40. package/dist/commands/skills.js.map +1 -0
  41. package/dist/commands/upgrade.d.ts +8 -0
  42. package/dist/commands/upgrade.d.ts.map +1 -0
  43. package/dist/commands/upgrade.js +292 -0
  44. package/dist/commands/upgrade.js.map +1 -0
  45. package/dist/commands/workflow.d.ts +3 -0
  46. package/dist/commands/workflow.d.ts.map +1 -0
  47. package/dist/commands/workflow.js +607 -0
  48. package/dist/commands/workflow.js.map +1 -0
  49. package/dist/daemon/context-writer.d.ts +16 -0
  50. package/dist/daemon/context-writer.d.ts.map +1 -0
  51. package/dist/daemon/context-writer.js +35 -0
  52. package/dist/daemon/context-writer.js.map +1 -0
  53. package/dist/daemon/entry.d.ts +7 -0
  54. package/dist/daemon/entry.d.ts.map +1 -0
  55. package/dist/daemon/entry.js +17 -0
  56. package/dist/daemon/entry.js.map +1 -0
  57. package/dist/daemon/event-queue.d.ts +52 -0
  58. package/dist/daemon/event-queue.d.ts.map +1 -0
  59. package/dist/daemon/event-queue.js +255 -0
  60. package/dist/daemon/event-queue.js.map +1 -0
  61. package/dist/daemon/file-watcher.d.ts +19 -0
  62. package/dist/daemon/file-watcher.d.ts.map +1 -0
  63. package/dist/daemon/file-watcher.js +87 -0
  64. package/dist/daemon/file-watcher.js.map +1 -0
  65. package/dist/daemon/index.d.ts +29 -0
  66. package/dist/daemon/index.d.ts.map +1 -0
  67. package/dist/daemon/index.js +296 -0
  68. package/dist/daemon/index.js.map +1 -0
  69. package/dist/daemon/jsonl-watcher.d.ts +49 -0
  70. package/dist/daemon/jsonl-watcher.d.ts.map +1 -0
  71. package/dist/daemon/jsonl-watcher.js +258 -0
  72. package/dist/daemon/jsonl-watcher.js.map +1 -0
  73. package/dist/daemon/meta-cache.d.ts +63 -0
  74. package/dist/daemon/meta-cache.d.ts.map +1 -0
  75. package/dist/daemon/meta-cache.js +249 -0
  76. package/dist/daemon/meta-cache.js.map +1 -0
  77. package/dist/daemon/session-state.d.ts +19 -0
  78. package/dist/daemon/session-state.d.ts.map +1 -0
  79. package/dist/daemon/session-state.js +132 -0
  80. package/dist/daemon/session-state.js.map +1 -0
  81. package/dist/daemon/shutdown.d.ts +21 -0
  82. package/dist/daemon/shutdown.d.ts.map +1 -0
  83. package/dist/daemon/shutdown.js +164 -0
  84. package/dist/daemon/shutdown.js.map +1 -0
  85. package/dist/index.js +24 -3
  86. package/dist/index.js.map +1 -1
  87. package/dist/lib/agent-composer.d.ts +38 -0
  88. package/dist/lib/agent-composer.d.ts.map +1 -0
  89. package/dist/lib/agent-composer.js +128 -0
  90. package/dist/lib/agent-composer.js.map +1 -0
  91. package/dist/lib/agent-generator.d.ts +22 -0
  92. package/dist/lib/agent-generator.d.ts.map +1 -0
  93. package/dist/lib/agent-generator.js +150 -0
  94. package/dist/lib/agent-generator.js.map +1 -0
  95. package/dist/lib/ast-parser.d.ts +11 -0
  96. package/dist/lib/ast-parser.d.ts.map +1 -0
  97. package/dist/lib/ast-parser.js +282 -0
  98. package/dist/lib/ast-parser.js.map +1 -0
  99. package/dist/lib/compile-rules.d.ts +66 -0
  100. package/dist/lib/compile-rules.d.ts.map +1 -0
  101. package/dist/lib/compile-rules.js +114 -0
  102. package/dist/lib/compile-rules.js.map +1 -0
  103. package/dist/lib/compiler.d.ts +105 -0
  104. package/dist/lib/compiler.d.ts.map +1 -0
  105. package/dist/lib/compiler.js +368 -0
  106. package/dist/lib/compiler.js.map +1 -0
  107. package/dist/lib/config.d.ts +7 -2
  108. package/dist/lib/config.d.ts.map +1 -1
  109. package/dist/lib/config.js +34 -3
  110. package/dist/lib/config.js.map +1 -1
  111. package/dist/lib/meta-index.d.ts +19 -0
  112. package/dist/lib/meta-index.d.ts.map +1 -0
  113. package/dist/lib/meta-index.js +573 -0
  114. package/dist/lib/meta-index.js.map +1 -0
  115. package/dist/lib/project.js +1 -1
  116. package/dist/lib/project.js.map +1 -1
  117. package/dist/lib/skill-generator.d.ts +32 -0
  118. package/dist/lib/skill-generator.d.ts.map +1 -0
  119. package/dist/lib/skill-generator.js +187 -0
  120. package/dist/lib/skill-generator.js.map +1 -0
  121. package/dist/lib/template.d.ts +16 -2
  122. package/dist/lib/template.d.ts.map +1 -1
  123. package/dist/lib/template.js +115 -20
  124. package/dist/lib/template.js.map +1 -1
  125. package/dist/lib/ui-index.d.ts +12 -0
  126. package/dist/lib/ui-index.d.ts.map +1 -0
  127. package/dist/lib/ui-index.js +239 -0
  128. package/dist/lib/ui-index.js.map +1 -0
  129. package/dist/lib/ui-parser.d.ts +12 -0
  130. package/dist/lib/ui-parser.d.ts.map +1 -0
  131. package/dist/lib/ui-parser.js +472 -0
  132. package/dist/lib/ui-parser.js.map +1 -0
  133. package/dist/lib/update-check.d.ts +6 -0
  134. package/dist/lib/update-check.d.ts.map +1 -0
  135. package/dist/lib/update-check.js +121 -0
  136. package/dist/lib/update-check.js.map +1 -0
  137. package/dist/lib/upgrade-backup.d.ts +33 -0
  138. package/dist/lib/upgrade-backup.d.ts.map +1 -0
  139. package/dist/lib/upgrade-backup.js +101 -0
  140. package/dist/lib/upgrade-backup.js.map +1 -0
  141. package/dist/lib/version.d.ts +19 -0
  142. package/dist/lib/version.d.ts.map +1 -0
  143. package/dist/lib/version.js +35 -0
  144. package/dist/lib/version.js.map +1 -0
  145. package/dist/lib/workflow-state.d.ts +48 -0
  146. package/dist/lib/workflow-state.d.ts.map +1 -0
  147. package/dist/lib/workflow-state.js +67 -0
  148. package/dist/lib/workflow-state.js.map +1 -0
  149. package/dist/types/config.d.ts +103 -2
  150. package/dist/types/config.d.ts.map +1 -1
  151. package/dist/types/config.js +184 -9
  152. package/dist/types/config.js.map +1 -1
  153. package/dist/types/feedback.d.ts +7 -0
  154. package/dist/types/feedback.d.ts.map +1 -1
  155. package/dist/types/feedback.js +1 -1
  156. package/dist/types/feedback.js.map +1 -1
  157. package/dist/types/index.d.ts +3 -0
  158. package/dist/types/index.d.ts.map +1 -1
  159. package/dist/types/index.js +3 -0
  160. package/dist/types/index.js.map +1 -1
  161. package/dist/types/meta-index.d.ts +146 -0
  162. package/dist/types/meta-index.d.ts.map +1 -0
  163. package/dist/types/meta-index.js +7 -0
  164. package/dist/types/meta-index.js.map +1 -0
  165. package/dist/types/project.d.ts +19 -3
  166. package/dist/types/project.d.ts.map +1 -1
  167. package/dist/types/project.js +23 -0
  168. package/dist/types/project.js.map +1 -1
  169. package/dist/types/task-log.d.ts +208 -0
  170. package/dist/types/task-log.d.ts.map +1 -0
  171. package/dist/types/task-log.js +6 -0
  172. package/dist/types/task-log.js.map +1 -0
  173. package/dist/types/ui-meta.d.ts +118 -0
  174. package/dist/types/ui-meta.d.ts.map +1 -0
  175. package/dist/types/ui-meta.js +7 -0
  176. package/dist/types/ui-meta.js.map +1 -0
  177. package/package.json +12 -4
  178. package/templates/base/agents/base/tsq-architect.md +68 -0
  179. package/templates/base/agents/base/tsq-dba.md +56 -0
  180. package/templates/base/agents/base/tsq-designer.md +72 -0
  181. package/templates/base/agents/base/tsq-developer.md +67 -0
  182. package/templates/base/agents/base/tsq-qa.md +55 -0
  183. package/templates/base/agents/base/tsq-security.md +65 -0
  184. package/templates/base/agents/overlays/domain/general-web/_common.md +11 -0
  185. package/templates/base/agents/overlays/domain/mobile/_common.md +13 -0
  186. package/templates/base/agents/overlays/platform/claude-code.md +12 -0
  187. package/templates/base/config.template.yaml +213 -0
  188. package/templates/base/knowledge/checklists/accessibility.md +37 -0
  189. package/templates/base/knowledge/checklists/architecture-review.md +28 -0
  190. package/templates/base/knowledge/checklists/database-standards.md +84 -0
  191. package/templates/base/knowledge/checklists/design-reference.md +97 -0
  192. package/templates/base/knowledge/checklists/security.md +50 -0
  193. package/templates/base/knowledge/checklists/ssot-validation.md +19 -0
  194. package/templates/base/knowledge/domains/_template.md +16 -0
  195. package/templates/base/knowledge/platforms/_template.md +16 -0
  196. package/templates/base/knowledge/templates/sequence-report.md +44 -0
  197. package/templates/base/knowledge/templates/task-result.md +105 -0
  198. package/templates/base/skills/_template/SKILL.md +59 -0
  199. package/templates/base/skills/_template/references/_template.md +35 -0
  200. package/templates/base/skills/_template/rules/_sections.md +34 -0
  201. package/templates/base/skills/_template/rules/_template.md +32 -0
  202. package/templates/base/skills/_template/scripts/_template.sh +31 -0
  203. package/templates/base/skills/architecture/SKILL.md +54 -0
  204. package/templates/base/skills/architecture/references/adr-template.md +50 -0
  205. package/templates/base/skills/architecture/references/api-design.md +64 -0
  206. package/templates/base/skills/backend/node/SKILL.md +81 -0
  207. package/templates/base/skills/backend/node/rules/async-patterns.md +81 -0
  208. package/templates/base/skills/backend/node/rules/deployment.md +33 -0
  209. package/templates/base/skills/backend/node/rules/env-config.md +41 -0
  210. package/templates/base/skills/backend/node/rules/error-handling.md +83 -0
  211. package/templates/base/skills/backend/node/rules/hono-app-setup.md +98 -0
  212. package/templates/base/skills/backend/node/rules/jwt-auth.md +76 -0
  213. package/templates/base/skills/backend/node/rules/middleware.md +56 -0
  214. package/templates/base/skills/backend/node/rules/testing.md +82 -0
  215. package/templates/base/skills/coding/SKILL.md +47 -0
  216. package/templates/base/skills/coding/rules/patterns.md +81 -0
  217. package/templates/base/skills/controller/SKILL.md +111 -0
  218. package/templates/base/skills/controller/references/README.md +35 -0
  219. package/templates/base/skills/controller/rules/README.md +18 -0
  220. package/templates/base/skills/database/SKILL.md +98 -0
  221. package/templates/base/skills/database/prisma/SKILL.md +57 -0
  222. package/templates/base/skills/database/prisma/rules/queries.md +133 -0
  223. package/templates/base/skills/database/prisma/rules/schema-design.md +80 -0
  224. package/templates/base/skills/frontend/nextjs/SKILL.md +59 -0
  225. package/templates/base/skills/frontend/nextjs/rules/app-router.md +138 -0
  226. package/templates/base/skills/frontend/react/SKILL.md +86 -0
  227. package/templates/base/skills/frontend/react/rules/_sections.md +88 -0
  228. package/templates/base/skills/frontend/react/rules/anti-patterns.md +67 -0
  229. package/templates/base/skills/frontend/react/rules/async-api-routes.md +38 -0
  230. package/templates/base/skills/frontend/react/rules/async-defer-await.md +80 -0
  231. package/templates/base/skills/frontend/react/rules/async-dependencies.md +36 -0
  232. package/templates/base/skills/frontend/react/rules/async-parallel.md +28 -0
  233. package/templates/base/skills/frontend/react/rules/async-suspense-boundaries.md +99 -0
  234. package/templates/base/skills/frontend/react/rules/bundle-barrel-imports.md +59 -0
  235. package/templates/base/skills/frontend/react/rules/bundle-defer-third-party.md +49 -0
  236. package/templates/base/skills/frontend/react/rules/bundle-dynamic-imports.md +35 -0
  237. package/templates/base/skills/frontend/react/rules/component-conventions.md +74 -0
  238. package/templates/base/skills/frontend/react/rules/js-combine-iterations.md +32 -0
  239. package/templates/base/skills/frontend/react/rules/js-early-exit.md +50 -0
  240. package/templates/base/skills/frontend/react/rules/js-index-maps.md +37 -0
  241. package/templates/base/skills/frontend/react/rules/js-set-map-lookups.md +24 -0
  242. package/templates/base/skills/frontend/react/rules/rendering-conditional-render.md +40 -0
  243. package/templates/base/skills/frontend/react/rules/rendering-content-visibility.md +38 -0
  244. package/templates/base/skills/frontend/react/rules/rendering-hoist-jsx.md +46 -0
  245. package/templates/base/skills/frontend/react/rules/rerender-defer-reads.md +39 -0
  246. package/templates/base/skills/frontend/react/rules/rerender-derived-state.md +29 -0
  247. package/templates/base/skills/frontend/react/rules/rerender-memo.md +44 -0
  248. package/templates/base/skills/frontend/react/rules/rerender-transitions.md +40 -0
  249. package/templates/base/skills/frontend/react/rules/server-after-nonblocking.md +73 -0
  250. package/templates/base/skills/frontend/react/rules/server-cache-react.md +26 -0
  251. package/templates/base/skills/frontend/react/rules/server-parallel-fetching.md +79 -0
  252. package/templates/base/skills/frontend/react/rules/state-location.md +55 -0
  253. package/templates/base/skills/methodology/bdd/SKILL.md +69 -0
  254. package/templates/base/skills/methodology/bdd/rules/gherkin-patterns.md +113 -0
  255. package/templates/base/skills/methodology/ddd/SKILL.md +74 -0
  256. package/templates/base/skills/methodology/ddd/rules/strategic-patterns.md +98 -0
  257. package/templates/base/skills/methodology/debugging/SKILL.md +60 -0
  258. package/templates/base/skills/methodology/debugging/references/root-cause-tracing.md +84 -0
  259. package/templates/base/skills/methodology/tdd/SKILL.md +66 -0
  260. package/templates/base/skills/methodology/tdd/rules/real-world-example.md +88 -0
  261. package/templates/base/skills/methodology/tdd/rules/techniques.md +185 -0
  262. package/templates/base/skills/mobile/dart/SKILL.md +69 -0
  263. package/templates/base/skills/mobile/dart/rules/async-patterns.md +112 -0
  264. package/templates/base/skills/mobile/dart/rules/code-style.md +96 -0
  265. package/templates/base/skills/mobile/dart/rules/null-safety.md +84 -0
  266. package/templates/base/skills/mobile/dart/rules/type-system.md +111 -0
  267. package/templates/base/skills/mobile/flutter/SKILL.md +89 -0
  268. package/templates/base/skills/mobile/flutter/ci-cd/SKILL.md +82 -0
  269. package/templates/base/skills/mobile/flutter/ci-cd/references/ci-cd-pipeline.md +314 -0
  270. package/templates/base/skills/mobile/flutter/ci-cd/rules/code-signing.md +106 -0
  271. package/templates/base/skills/mobile/flutter/ci-cd/rules/codemagic-setup.md +116 -0
  272. package/templates/base/skills/mobile/flutter/ci-cd/rules/fastlane-setup.md +105 -0
  273. package/templates/base/skills/mobile/flutter/ci-cd/rules/github-actions.md +112 -0
  274. package/templates/base/skills/mobile/flutter/ci-cd/rules/store-deployment.md +106 -0
  275. package/templates/base/skills/mobile/flutter/ci-cd/rules/versioning.md +107 -0
  276. package/templates/base/skills/mobile/flutter/i18n/SKILL.md +78 -0
  277. package/templates/base/skills/mobile/flutter/i18n/references/i18n-architecture.md +225 -0
  278. package/templates/base/skills/mobile/flutter/i18n/rules/arb-files.md +182 -0
  279. package/templates/base/skills/mobile/flutter/i18n/rules/locale-switching.md +226 -0
  280. package/templates/base/skills/mobile/flutter/i18n/rules/localization-setup.md +137 -0
  281. package/templates/base/skills/mobile/flutter/i18n/rules/plural-gender.md +159 -0
  282. package/templates/base/skills/mobile/flutter/i18n/rules/text-direction.md +199 -0
  283. package/templates/base/skills/mobile/flutter/monitoring/SKILL.md +81 -0
  284. package/templates/base/skills/mobile/flutter/monitoring/references/monitoring-architecture.md +269 -0
  285. package/templates/base/skills/mobile/flutter/monitoring/rules/analytics.md +227 -0
  286. package/templates/base/skills/mobile/flutter/monitoring/rules/crashlytics-setup.md +195 -0
  287. package/templates/base/skills/mobile/flutter/monitoring/rules/logging.md +258 -0
  288. package/templates/base/skills/mobile/flutter/monitoring/rules/performance-monitoring.md +248 -0
  289. package/templates/base/skills/mobile/flutter/monitoring/rules/sentry-integration.md +249 -0
  290. package/templates/base/skills/mobile/flutter/networking/SKILL.md +88 -0
  291. package/templates/base/skills/mobile/flutter/networking/references/api-client-architecture.md +305 -0
  292. package/templates/base/skills/mobile/flutter/networking/rules/caching.md +212 -0
  293. package/templates/base/skills/mobile/flutter/networking/rules/connectivity.md +213 -0
  294. package/templates/base/skills/mobile/flutter/networking/rules/dio-setup.md +159 -0
  295. package/templates/base/skills/mobile/flutter/networking/rules/error-handling.md +209 -0
  296. package/templates/base/skills/mobile/flutter/networking/rules/interceptors.md +205 -0
  297. package/templates/base/skills/mobile/flutter/networking/rules/retrofit-patterns.md +194 -0
  298. package/templates/base/skills/mobile/flutter/push-notifications/SKILL.md +87 -0
  299. package/templates/base/skills/mobile/flutter/push-notifications/references/notification-architecture.md +340 -0
  300. package/templates/base/skills/mobile/flutter/push-notifications/references/platform-setup.md +286 -0
  301. package/templates/base/skills/mobile/flutter/push-notifications/rules/background-processing.md +308 -0
  302. package/templates/base/skills/mobile/flutter/push-notifications/rules/deep-linking.md +217 -0
  303. package/templates/base/skills/mobile/flutter/push-notifications/rules/fcm-setup.md +164 -0
  304. package/templates/base/skills/mobile/flutter/push-notifications/rules/local-notifications.md +262 -0
  305. package/templates/base/skills/mobile/flutter/push-notifications/rules/notification-handling.md +210 -0
  306. package/templates/base/skills/mobile/flutter/push-notifications/rules/notification-permissions.md +246 -0
  307. package/templates/base/skills/mobile/flutter/push-notifications/rules/rich-notifications.md +320 -0
  308. package/templates/base/skills/mobile/flutter/references/freezed-patterns.md +162 -0
  309. package/templates/base/skills/mobile/flutter/references/project-structure.md +170 -0
  310. package/templates/base/skills/mobile/flutter/rules/animations.md +112 -0
  311. package/templates/base/skills/mobile/flutter/rules/architecture.md +121 -0
  312. package/templates/base/skills/mobile/flutter/rules/navigation-routing.md +117 -0
  313. package/templates/base/skills/mobile/flutter/rules/performance.md +112 -0
  314. package/templates/base/skills/mobile/flutter/rules/platform-adaptive.md +126 -0
  315. package/templates/base/skills/mobile/flutter/rules/state-management.md +110 -0
  316. package/templates/base/skills/mobile/flutter/rules/testing.md +131 -0
  317. package/templates/base/skills/mobile/flutter/rules/widget-conventions.md +122 -0
  318. package/templates/base/skills/mobile/flutter/security/SKILL.md +86 -0
  319. package/templates/base/skills/mobile/flutter/security/references/mobile-security-checklist.md +168 -0
  320. package/templates/base/skills/mobile/flutter/security/rules/api-key-protection.md +206 -0
  321. package/templates/base/skills/mobile/flutter/security/rules/authentication.md +248 -0
  322. package/templates/base/skills/mobile/flutter/security/rules/data-protection.md +271 -0
  323. package/templates/base/skills/mobile/flutter/security/rules/obfuscation.md +213 -0
  324. package/templates/base/skills/mobile/flutter/security/rules/secure-storage.md +171 -0
  325. package/templates/base/skills/mobile/flutter/security/rules/ssl-pinning.md +197 -0
  326. package/templates/base/skills/planning/SKILL.md +58 -0
  327. package/templates/base/skills/planning/references/prd-guide.md +47 -0
  328. package/templates/base/skills/planning/references/requirements-guide.md +46 -0
  329. package/templates/base/skills/prompt-engineering/SKILL.md +103 -0
  330. package/templates/base/skills/retrospective/SKILL.md +102 -0
  331. package/templates/base/skills/security/SKILL.md +55 -0
  332. package/templates/base/skills/security/rules/owasp-examples.md +119 -0
  333. package/templates/base/skills/security/scripts/check-secrets.sh +55 -0
  334. package/templates/base/skills/testing/SKILL.md +63 -0
  335. package/templates/base/skills/testing/references/testing-patterns.md +103 -0
  336. package/templates/base/skills/tsq-protocol/SKILL.md +51 -0
  337. package/templates/base/skills/typescript/SKILL.md +67 -0
  338. package/templates/base/skills/typescript/rules/type-patterns.md +135 -0
  339. package/templates/base/skills/typescript/rules/utility-types.md +76 -0
  340. package/templates/base/skills/ui-design/SKILL.md +70 -0
  341. package/templates/{common → base}/timsquad/feedback/routing-rules.yaml +1 -1
  342. package/templates/{common → base}/timsquad/retrospective/metrics/metrics-schema.json +46 -1
  343. package/templates/platforms/claude-code/CLAUDE.md.template +89 -0
  344. package/templates/platforms/claude-code/rules/adr-rules.md +32 -0
  345. package/templates/platforms/claude-code/rules/feedback-routing.md +18 -0
  346. package/templates/platforms/claude-code/rules/phase-management.md +23 -0
  347. package/templates/platforms/claude-code/rules/reporting-format.md +26 -0
  348. package/templates/platforms/claude-code/rules/sequence-management.md +72 -0
  349. package/templates/platforms/claude-code/rules/workspace-sync.md +33 -0
  350. package/templates/platforms/claude-code/scripts/completion-guard.sh +57 -0
  351. package/templates/platforms/claude-code/scripts/phase-guard.sh +79 -0
  352. package/templates/platforms/claude-code/settings.json +98 -0
  353. package/templates/project-types/api-backend/config.yaml +227 -0
  354. package/templates/project-types/api-backend/process/workflow.xml +214 -0
  355. package/templates/project-types/fintech/config.yaml +151 -0
  356. package/templates/project-types/fintech/process/workflow.xml +316 -0
  357. package/templates/project-types/infra/config.yaml +327 -0
  358. package/templates/project-types/infra/process/workflow.xml +296 -0
  359. package/templates/project-types/mobile-app/config.yaml +123 -0
  360. package/templates/project-types/mobile-app/process/workflow.xml +191 -0
  361. package/templates/project-types/platform/config.yaml +254 -0
  362. package/templates/project-types/platform/process/workflow.xml +254 -0
  363. package/templates/project-types/web-app/config.yaml +198 -0
  364. package/templates/project-types/web-app/process/workflow.xml +210 -0
  365. package/templates/project-types/web-service/config.yaml +136 -0
  366. package/templates/project-types/web-service/process/workflow.xml +184 -0
  367. package/templates/common/CLAUDE.md.template +0 -254
  368. package/templates/common/claude/agents/tsq-dba.md +0 -311
  369. package/templates/common/claude/agents/tsq-designer.md +0 -323
  370. package/templates/common/claude/agents/tsq-developer.md +0 -177
  371. package/templates/common/claude/agents/tsq-planner.md +0 -190
  372. package/templates/common/claude/agents/tsq-prompter.md +0 -356
  373. package/templates/common/claude/agents/tsq-qa.md +0 -168
  374. package/templates/common/claude/agents/tsq-retro.md +0 -193
  375. package/templates/common/claude/agents/tsq-security.md +0 -221
  376. package/templates/common/claude/hooks/auto-metrics.sh +0 -165
  377. package/templates/common/claude/hooks/auto-worklog.sh +0 -245
  378. package/templates/common/claude/hooks/event-logger.sh +0 -208
  379. package/templates/common/claude/settings.json +0 -86
  380. package/templates/common/claude/skills/architecture/SKILL.md +0 -123
  381. package/templates/common/claude/skills/backend/node/SKILL.md +0 -1015
  382. package/templates/common/claude/skills/coding/SKILL.md +0 -171
  383. package/templates/common/claude/skills/database/prisma/SKILL.md +0 -357
  384. package/templates/common/claude/skills/frontend/nextjs/SKILL.md +0 -279
  385. package/templates/common/claude/skills/frontend/react/SKILL.md +0 -1729
  386. package/templates/common/claude/skills/methodology/bdd/SKILL.md +0 -234
  387. package/templates/common/claude/skills/methodology/ddd/SKILL.md +0 -311
  388. package/templates/common/claude/skills/methodology/tdd/SKILL.md +0 -512
  389. package/templates/common/claude/skills/planning/SKILL.md +0 -90
  390. package/templates/common/claude/skills/security/SKILL.md +0 -234
  391. package/templates/common/claude/skills/testing/SKILL.md +0 -146
  392. package/templates/common/claude/skills/typescript/SKILL.md +0 -435
  393. package/templates/common/config.template.yaml +0 -132
  394. /package/templates/{common → base}/timsquad/architectures/clean/ARCHITECTURE.md +0 -0
  395. /package/templates/{common → base}/timsquad/architectures/clean/backend.xml +0 -0
  396. /package/templates/{common → base}/timsquad/architectures/clean/frontend.xml +0 -0
  397. /package/templates/{common → base}/timsquad/architectures/fsd/ARCHITECTURE.md +0 -0
  398. /package/templates/{common → base}/timsquad/architectures/fsd/frontend.xml +0 -0
  399. /package/templates/{common → base}/timsquad/architectures/hexagonal/ARCHITECTURE.md +0 -0
  400. /package/templates/{common → base}/timsquad/architectures/hexagonal/backend.xml +0 -0
  401. /package/templates/{common → base}/timsquad/constraints/competency-framework.xml +0 -0
  402. /package/templates/{common → base}/timsquad/constraints/ssot-schema.xml +0 -0
  403. /package/templates/{common → base}/timsquad/feedback/feedback-router.sh +0 -0
  404. /package/templates/{common → base}/timsquad/generators/data-design.xml +0 -0
  405. /package/templates/{common → base}/timsquad/generators/prd.xml +0 -0
  406. /package/templates/{common → base}/timsquad/generators/requirements.xml +0 -0
  407. /package/templates/{common → base}/timsquad/generators/service-spec.xml +0 -0
  408. /package/templates/{common → base}/timsquad/logs/_example.md +0 -0
  409. /package/templates/{common → base}/timsquad/logs/_template.md +0 -0
  410. /package/templates/{common → base}/timsquad/patterns/cqrs.xml +0 -0
  411. /package/templates/{common → base}/timsquad/patterns/event-sourcing.xml +0 -0
  412. /package/templates/{common → base}/timsquad/patterns/repository.xml +0 -0
  413. /package/templates/{common → base}/timsquad/process/phase-checklist.yaml +0 -0
  414. /package/templates/{common → base}/timsquad/process/state-machine.xml +0 -0
  415. /package/templates/{common → base}/timsquad/process/validation-rules.xml +0 -0
  416. /package/templates/{common → base}/timsquad/process/workflow-base.xml +0 -0
  417. /package/templates/{common → base}/timsquad/retrospective/cycle-report.template.md +0 -0
  418. /package/templates/{common → base}/timsquad/retrospective/patterns/failure-patterns.md +0 -0
  419. /package/templates/{common → base}/timsquad/retrospective/patterns/success-patterns.md +0 -0
  420. /package/templates/{common → base}/timsquad/retrospective/retrospective-config.xml +0 -0
  421. /package/templates/{common → base}/timsquad/retrospective/retrospective-state.xml +0 -0
  422. /package/templates/{common → base}/timsquad/ssot/adr/ADR-000-template.md +0 -0
  423. /package/templates/{common → base}/timsquad/ssot/adr/ADR-001-example.md +0 -0
  424. /package/templates/{common → base}/timsquad/ssot/data-design.template.md +0 -0
  425. /package/templates/{common → base}/timsquad/ssot/deployment-spec.template.md +0 -0
  426. /package/templates/{common → base}/timsquad/ssot/env-config.template.md +0 -0
  427. /package/templates/{common → base}/timsquad/ssot/error-codes.template.md +0 -0
  428. /package/templates/{common → base}/timsquad/ssot/functional-spec.template.md +0 -0
  429. /package/templates/{common → base}/timsquad/ssot/glossary.template.md +0 -0
  430. /package/templates/{common → base}/timsquad/ssot/integration-spec.template.md +0 -0
  431. /package/templates/{common → base}/timsquad/ssot/planning.template.md +0 -0
  432. /package/templates/{common → base}/timsquad/ssot/prd.template.md +0 -0
  433. /package/templates/{common → base}/timsquad/ssot/requirements.template.md +0 -0
  434. /package/templates/{common → base}/timsquad/ssot/security-spec.template.md +0 -0
  435. /package/templates/{common → base}/timsquad/ssot/service-spec.template.md +0 -0
  436. /package/templates/{common → base}/timsquad/ssot/test-spec.template.md +0 -0
  437. /package/templates/{common → base}/timsquad/ssot/ui-ux-spec.template.md +0 -0
  438. /package/templates/{common → base}/timsquad/state/workspace.xml +0 -0
@@ -1,171 +0,0 @@
1
- ---
2
- name: coding
3
- description: 코드 작성 규칙 및 패턴 가이드라인
4
- user-invocable: false
5
- ---
6
-
7
- <skill name="coding">
8
- <purpose>일관된 고품질 코드 작성을 위한 가이드라인</purpose>
9
-
10
- <naming-conventions>
11
- <convention target="클래스" rule="PascalCase">
12
- <example correct="true">UserService, OrderRepository</example>
13
- <example correct="false">userService, user_service</example>
14
- </convention>
15
- <convention target="함수/메서드" rule="camelCase">
16
- <example correct="true">getUserById, calculateTotal</example>
17
- <example correct="false">GetUserById, get_user_by_id</example>
18
- </convention>
19
- <convention target="변수" rule="camelCase">
20
- <example correct="true">userName, totalAmount</example>
21
- <example correct="false">UserName, user_name</example>
22
- </convention>
23
- <convention target="상수" rule="UPPER_SNAKE">
24
- <example correct="true">MAX_RETRY_COUNT, API_BASE_URL</example>
25
- <example correct="false">maxRetryCount, MaxRetryCount</example>
26
- </convention>
27
- <convention target="파일" rule="kebab-case">
28
- <example correct="true">user-service.ts, order-repository.ts</example>
29
- <example correct="false">userService.ts, UserService.ts</example>
30
- </convention>
31
- </naming-conventions>
32
-
33
- <function-principles>
34
- <principle name="단일 책임">함수는 한 가지 일만 수행</principle>
35
- <principle name="명확한 이름">함수 이름만으로 동작 파악 가능</principle>
36
- <principle name="적절한 크기">20줄 이내 권장</principle>
37
- <examples>
38
- <example type="good">
39
- <![CDATA[
40
- function calculateOrderTotal(items: OrderItem[]): number {
41
- return items.reduce((sum, item) => sum + item.price * item.quantity, 0);
42
- }
43
- ]]>
44
- <description>단일 책임, 명확한 이름</description>
45
- </example>
46
- <example type="bad">
47
- <![CDATA[
48
- function processOrder(order: Order): void {
49
- // 가격 계산 + 재고 확인 + 결제 처리 + 알림 전송...
50
- }
51
- ]]>
52
- <description>여러 책임, 모호한 이름</description>
53
- </example>
54
- </examples>
55
- </function-principles>
56
-
57
- <error-handling>
58
- <example type="good">
59
- <![CDATA[
60
- async function getUser(id: string): Promise<User> {
61
- const user = await userRepository.findById(id);
62
- if (!user) {
63
- throw new NotFoundError('USER_NOT_FOUND', `User ${id} not found`);
64
- }
65
- return user;
66
- }
67
- ]]>
68
- <description>명시적 에러 처리</description>
69
- </example>
70
- <example type="bad">
71
- <![CDATA[
72
- async function getUser(id: string): Promise<User | null> {
73
- try {
74
- return await userRepository.findById(id);
75
- } catch {
76
- return null; // 에러 원인 알 수 없음
77
- }
78
- }
79
- ]]>
80
- <description>에러 무시</description>
81
- </example>
82
- </error-handling>
83
-
84
- <patterns>
85
- <pattern name="Repository">
86
- <purpose>데이터 접근 추상화</purpose>
87
- <example>
88
- <![CDATA[
89
- interface UserRepository {
90
- findById(id: string): Promise<User | null>;
91
- findByEmail(email: string): Promise<User | null>;
92
- save(user: User): Promise<User>;
93
- delete(id: string): Promise<void>;
94
- }
95
-
96
- class PostgresUserRepository implements UserRepository {
97
- async findById(id: string): Promise<User | null> {
98
- // PostgreSQL 구현
99
- }
100
- }
101
- ]]>
102
- </example>
103
- </pattern>
104
- <pattern name="DTO/Entity 분리">
105
- <purpose>레이어 간 데이터 전달</purpose>
106
- <example>
107
- <![CDATA[
108
- // Entity (도메인)
109
- class User {
110
- constructor(
111
- public readonly id: string,
112
- public email: string,
113
- public passwordHash: string, // 민감 정보
114
- ) {}
115
- }
116
-
117
- // DTO (외부 노출)
118
- interface UserResponseDto {
119
- id: string;
120
- email: string;
121
- // passwordHash 제외
122
- }
123
- ]]>
124
- </example>
125
- </pattern>
126
- <pattern name="의존성 주입">
127
- <purpose>테스트 용이성, 유연한 구성</purpose>
128
- <example type="good">
129
- <![CDATA[
130
- class UserService {
131
- constructor(private userRepository: UserRepository) {}
132
- }
133
- ]]>
134
- </example>
135
- <example type="bad">
136
- <![CDATA[
137
- class UserService {
138
- private userRepository = new PostgresUserRepository();
139
- }
140
- ]]>
141
- </example>
142
- </pattern>
143
- </patterns>
144
-
145
- <anti-patterns>
146
- <anti-pattern name="any 타입">
147
- <bad>function process(data: any): any { ... }</bad>
148
- <good>function process&lt;T&gt;(data: T): ProcessedData&lt;T&gt; { ... }</good>
149
- </anti-pattern>
150
- <anti-pattern name="매직 넘버">
151
- <bad>if (status === 1) { ... }</bad>
152
- <good>
153
- const Status = { ACTIVE: 1, INACTIVE: 0 } as const;
154
- if (status === Status.ACTIVE) { ... }
155
- </good>
156
- </anti-pattern>
157
- <anti-pattern name="콘솔 로그">
158
- <bad>console.log('user:', user);</bad>
159
- <good>logger.debug('User fetched', { userId: user.id });</good>
160
- </anti-pattern>
161
- </anti-patterns>
162
-
163
- <checklist>
164
- <item>함수가 단일 책임을 가지는가</item>
165
- <item>네이밍이 명확하고 일관적인가</item>
166
- <item>에러가 명시적으로 처리되는가</item>
167
- <item>any 타입이 없는가</item>
168
- <item>매직 넘버/문자열이 없는가</item>
169
- <item>console.log가 없는가</item>
170
- </checklist>
171
- </skill>
@@ -1,357 +0,0 @@
1
- ---
2
- name: prisma
3
- description: Prisma ORM 개발 가이드라인
4
- user-invocable: false
5
- ---
6
-
7
- <skill name="prisma">
8
- <purpose>Prisma ORM을 활용한 타입 안전 데이터베이스 개발 가이드라인</purpose>
9
-
10
- <philosophy>
11
- <principle>Schema as SSOT - 스키마가 진실의 원천</principle>
12
- <principle>Type Safety - 자동 생성 타입 활용</principle>
13
- <principle>Migration First - 스키마 변경은 마이그레이션으로</principle>
14
- </philosophy>
15
-
16
- <schema-design>
17
- <pattern name="기본 모델 정의">
18
- <example>
19
- <![CDATA[
20
- // prisma/schema.prisma
21
-
22
- generator client {
23
- provider = "prisma-client-js"
24
- }
25
-
26
- datasource db {
27
- provider = "postgresql"
28
- url = env("DATABASE_URL")
29
- }
30
-
31
- model User {
32
- id String @id @default(cuid())
33
- email String @unique
34
- name String
35
- password String
36
- role Role @default(USER)
37
-
38
- createdAt DateTime @default(now())
39
- updatedAt DateTime @updatedAt
40
-
41
- // Relations
42
- posts Post[]
43
- profile Profile?
44
-
45
- @@index([email])
46
- @@map("users") // 테이블명
47
- }
48
-
49
- model Post {
50
- id String @id @default(cuid())
51
- title String
52
- content String?
53
- published Boolean @default(false)
54
-
55
- createdAt DateTime @default(now())
56
- updatedAt DateTime @updatedAt
57
-
58
- // Relations
59
- author User @relation(fields: [authorId], references: [id])
60
- authorId String
61
-
62
- @@index([authorId])
63
- @@map("posts")
64
- }
65
-
66
- enum Role {
67
- USER
68
- ADMIN
69
- }
70
- ]]>
71
- </example>
72
- </pattern>
73
-
74
- <pattern name="공통 필드 패턴">
75
- <description>모든 모델에 공통으로 들어가는 필드</description>
76
- <example>
77
- <![CDATA[
78
- // 공통 필드 패턴 (Prisma는 상속 미지원, 컨벤션으로 관리)
79
- // id String @id @default(cuid())
80
- // createdAt DateTime @default(now())
81
- // updatedAt DateTime @updatedAt
82
-
83
- model BaseFields {
84
- // 참고용 - 실제 모델에 복사해서 사용
85
- id String @id @default(cuid())
86
- createdAt DateTime @default(now())
87
- updatedAt DateTime @updatedAt
88
- }
89
- ]]>
90
- </example>
91
- </pattern>
92
-
93
- <pattern name="소프트 삭제">
94
- <example>
95
- <![CDATA[
96
- model User {
97
- id String @id @default(cuid())
98
- // ...
99
- deletedAt DateTime? // null이면 활성, 값 있으면 삭제됨
100
-
101
- @@index([deletedAt])
102
- }
103
-
104
- // 쿼리 시 필터링
105
- const activeUsers = await prisma.user.findMany({
106
- where: { deletedAt: null },
107
- });
108
- ]]>
109
- </example>
110
- </pattern>
111
- </schema-design>
112
-
113
- <client-setup>
114
- <pattern name="싱글톤 인스턴스">
115
- <example>
116
- <![CDATA[
117
- // lib/prisma.ts
118
- import { PrismaClient } from '@prisma/client';
119
-
120
- const globalForPrisma = globalThis as unknown as {
121
- prisma: PrismaClient | undefined;
122
- };
123
-
124
- export const prisma = globalForPrisma.prisma ?? new PrismaClient({
125
- log: process.env.NODE_ENV === 'development'
126
- ? ['query', 'error', 'warn']
127
- : ['error'],
128
- });
129
-
130
- if (process.env.NODE_ENV !== 'production') {
131
- globalForPrisma.prisma = prisma;
132
- }
133
- ]]>
134
- </example>
135
- </pattern>
136
-
137
- <pattern name="확장 (Extensions)">
138
- <example>
139
- <![CDATA[
140
- // lib/prisma.ts
141
- import { PrismaClient } from '@prisma/client';
142
-
143
- const prismaBase = new PrismaClient();
144
-
145
- export const prisma = prismaBase.$extends({
146
- query: {
147
- // 모든 findMany에 소프트 삭제 필터 자동 적용
148
- $allModels: {
149
- async findMany({ model, operation, args, query }) {
150
- args.where = { ...args.where, deletedAt: null };
151
- return query(args);
152
- },
153
- },
154
- },
155
- });
156
- ]]>
157
- </example>
158
- </pattern>
159
- </client-setup>
160
-
161
- <query-patterns>
162
- <pattern name="기본 CRUD">
163
- <example>
164
- <![CDATA[
165
- // Create
166
- const user = await prisma.user.create({
167
- data: {
168
- email: 'test@example.com',
169
- name: 'Test User',
170
- password: hashedPassword,
171
- },
172
- });
173
-
174
- // Read
175
- const user = await prisma.user.findUnique({
176
- where: { id: userId },
177
- });
178
-
179
- const users = await prisma.user.findMany({
180
- where: { role: 'USER' },
181
- orderBy: { createdAt: 'desc' },
182
- take: 10,
183
- skip: 0,
184
- });
185
-
186
- // Update
187
- const updated = await prisma.user.update({
188
- where: { id: userId },
189
- data: { name: 'New Name' },
190
- });
191
-
192
- // Delete
193
- await prisma.user.delete({
194
- where: { id: userId },
195
- });
196
- ]]>
197
- </example>
198
- </pattern>
199
-
200
- <pattern name="Relations 로딩">
201
- <example>
202
- <![CDATA[
203
- // include: 관계 데이터 포함
204
- const userWithPosts = await prisma.user.findUnique({
205
- where: { id: userId },
206
- include: {
207
- posts: true,
208
- profile: true,
209
- },
210
- });
211
-
212
- // select: 특정 필드만 선택 (성능 최적화)
213
- const userWithPosts = await prisma.user.findUnique({
214
- where: { id: userId },
215
- select: {
216
- id: true,
217
- name: true,
218
- posts: {
219
- select: {
220
- id: true,
221
- title: true,
222
- },
223
- where: { published: true },
224
- take: 5,
225
- },
226
- },
227
- });
228
- ]]>
229
- </example>
230
- </pattern>
231
-
232
- <pattern name="트랜잭션">
233
- <example>
234
- <![CDATA[
235
- // Interactive Transaction
236
- const result = await prisma.$transaction(async (tx) => {
237
- // 1. 사용자 생성
238
- const user = await tx.user.create({
239
- data: { email, name, password },
240
- });
241
-
242
- // 2. 프로필 생성
243
- const profile = await tx.profile.create({
244
- data: { userId: user.id, bio: '' },
245
- });
246
-
247
- // 3. 웰컴 알림 생성
248
- await tx.notification.create({
249
- data: { userId: user.id, message: 'Welcome!' },
250
- });
251
-
252
- return user;
253
- });
254
-
255
- // 실패 시 모두 롤백
256
- ]]>
257
- </example>
258
- </pattern>
259
-
260
- <pattern name="Upsert">
261
- <example>
262
- <![CDATA[
263
- // 있으면 업데이트, 없으면 생성
264
- const user = await prisma.user.upsert({
265
- where: { email: 'test@example.com' },
266
- update: { name: 'Updated Name' },
267
- create: { email: 'test@example.com', name: 'New User', password },
268
- });
269
- ]]>
270
- </example>
271
- </pattern>
272
- </query-patterns>
273
-
274
- <migration>
275
- <commands>
276
- <command name="npx prisma migrate dev">개발 환경 마이그레이션 (자동 생성 + 적용)</command>
277
- <command name="npx prisma migrate deploy">프로덕션 마이그레이션 적용</command>
278
- <command name="npx prisma migrate reset">DB 초기화 + 모든 마이그레이션 재적용</command>
279
- <command name="npx prisma db push">빠른 프로토타이핑 (마이그레이션 없이)</command>
280
- <command name="npx prisma generate">클라이언트 재생성</command>
281
- </commands>
282
- <workflow>
283
- <step>1. schema.prisma 수정</step>
284
- <step>2. npx prisma migrate dev --name descriptive_name</step>
285
- <step>3. 생성된 SQL 검토</step>
286
- <step>4. 커밋 (schema.prisma + migrations/)</step>
287
- </workflow>
288
- </migration>
289
-
290
- <repository-pattern>
291
- <example>
292
- <![CDATA[
293
- // domain/user/repository.ts
294
- export interface UserRepository {
295
- findById(id: string): Promise<User | null>;
296
- findByEmail(email: string): Promise<User | null>;
297
- save(user: User): Promise<User>;
298
- delete(id: string): Promise<void>;
299
- }
300
-
301
- // infrastructure/database/prisma-user-repository.ts
302
- import { prisma } from '@/lib/prisma';
303
- import { UserRepository } from '@/domain/user/repository';
304
-
305
- export class PrismaUserRepository implements UserRepository {
306
- async findById(id: string) {
307
- return prisma.user.findUnique({ where: { id } });
308
- }
309
-
310
- async findByEmail(email: string) {
311
- return prisma.user.findUnique({ where: { email } });
312
- }
313
-
314
- async save(data: Omit<User, 'id' | 'createdAt' | 'updatedAt'>) {
315
- return prisma.user.create({ data });
316
- }
317
-
318
- async delete(id: string) {
319
- await prisma.user.delete({ where: { id } });
320
- }
321
- }
322
- ]]>
323
- </example>
324
- </repository-pattern>
325
-
326
- <rules>
327
- <category name="스키마">
328
- <must>모든 모델에 id, createdAt, updatedAt</must>
329
- <must>명시적 인덱스 정의</must>
330
- <must>@@map으로 테이블명 명시</must>
331
- <must>관계는 명확히 정의</must>
332
- </category>
333
- <category name="쿼리">
334
- <must>select로 필요한 필드만 조회 (성능)</must>
335
- <must>페이지네이션 적용 (take, skip)</must>
336
- <must>복잡한 작업은 트랜잭션 사용</must>
337
- <must-not>N+1 쿼리 (include/select 사용)</must-not>
338
- <must-not>무한 결과 조회</must-not>
339
- </category>
340
- <category name="마이그레이션">
341
- <must>migrate dev로 개발</must>
342
- <must>migrate deploy로 배포</must>
343
- <must>마이그레이션 파일 커밋</must>
344
- <must-not>프로덕션에서 db push 사용</must-not>
345
- </category>
346
- </rules>
347
-
348
- <checklist>
349
- <item priority="critical">싱글톤 인스턴스 사용</item>
350
- <item priority="critical">마이그레이션으로 스키마 관리</item>
351
- <item priority="critical">트랜잭션으로 데이터 정합성</item>
352
- <item priority="high">select로 필요한 필드만 조회</item>
353
- <item priority="high">인덱스 적절히 설정</item>
354
- <item priority="high">Repository 패턴 적용</item>
355
- <item priority="medium">소프트 삭제 고려</item>
356
- </checklist>
357
- </skill>