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
@@ -0,0 +1,105 @@
1
+ # Task Result Template
2
+
3
+ 모든 에이전트가 태스크 완료 시 사용하는 공통 리턴 형식.
4
+
5
+ ## TASK-{id} Result
6
+
7
+ ### Summary
8
+ {1줄 요약}
9
+
10
+ ### Changes
11
+ | File | Lines | Action | Description |
12
+ |------|-------|--------|-------------|
13
+
14
+ ### Techniques Applied
15
+ - {패턴/기법}: {적용 이유}
16
+
17
+ ### SSOT Alignment
18
+ - {ssot-문서}#{섹션}: {구현 상태}
19
+
20
+ ### Decisions
21
+ - {결정}: {근거}
22
+
23
+ ### Issues / Handoff Notes
24
+ - {전달 사항} 또는 "없음"
25
+
26
+ ### UI Meta Index Updates (컴포넌트 작업 시, 선택)
27
+ | component | layout | colorScheme | spacing | states | responsive |
28
+ |-----------|--------|-------------|---------|--------|------------|
29
+
30
+ ### TSQ Log Enrich (필수)
31
+ 위 내용을 기반으로 반드시 tsq log enrich를 호출하세요:
32
+ ```bash
33
+ tsq log enrich {agent} --json '{"summary":"...", "techniques":[...], "ssot_refs":[...], "decisions":[...], "issues":[...]}'
34
+ ```
35
+
36
+ ---
37
+
38
+ ## Few-shot 예제
39
+
40
+ ### 예제 1: Developer — API 엔드포인트 구현
41
+
42
+ ```
43
+ ## P3-S001-T001 Result
44
+
45
+ ### Summary
46
+ POST /auth/login 엔드포인트 구현 + 단위 테스트 3개 작성
47
+
48
+ ### Changes
49
+ | File | Lines | Action | Description |
50
+ |------|-------|--------|-------------|
51
+ | src/routes/auth/login.ts | 1-45 | created | 로그인 핸들러 (Zod 검증 + Supabase Auth) |
52
+ | src/routes/auth/login.test.ts | 1-62 | created | 성공/실패/입력검증 3 케이스 |
53
+ | src/types/auth.ts | 12-18 | modified | LoginRequest/Response 타입 추가 |
54
+
55
+ ### Techniques Applied
56
+ - Zod validation: 런타임 입력 검증으로 타입 안전성 확보
57
+ - Repository pattern: Supabase 직접 호출 대신 AuthRepository 추상화
58
+
59
+ ### SSOT Alignment
60
+ - service-spec.md#POST-auth-login: aligned (명세대로 구현)
61
+ - data-design.md#users-table: aligned (email + hashed_password 컬럼 활용)
62
+ - error-codes.md#AUTH-001: aligned (잘못된 자격증명 에러 코드 적용)
63
+
64
+ ### Decisions
65
+ - session-based auth 선택: Supabase RLS와의 호환성 (JWT는 RLS 정책과 충돌)
66
+
67
+ ### Issues / Handoff Notes
68
+ - 없음
69
+
70
+ ### TSQ Log Enrich
71
+ ```
72
+
73
+ ```bash
74
+ tsq log enrich developer --json '{"summary":"POST /auth/login 엔드포인트 구현 + 단위 테스트 3개","techniques":[{"name":"Zod validation","reason":"런타임 입력 검증"},{"name":"Repository pattern","reason":"Supabase 추상화"}],"ssot_refs":[{"doc":"service-spec.md","section":"POST-auth-login","status":"aligned"},{"doc":"data-design.md","section":"users-table","status":"aligned"}],"decisions":[{"decision":"session-based auth","rationale":"Supabase RLS 호환성"}],"issues":[]}'
75
+ ```
76
+
77
+ ### 예제 2: QA — 리뷰 결과
78
+
79
+ ```
80
+ ## P3-S001-T003 Result
81
+
82
+ ### Summary
83
+ 인증 시퀀스 코드 리뷰 — Level 1 이슈 2건, Level 2 이슈 1건 발견
84
+
85
+ ### Changes
86
+ | File | Lines | Action | Description |
87
+ |------|-------|--------|-------------|
88
+ | (리뷰 대상) src/routes/auth/ | - | reviewed | 3개 파일 검토 |
89
+
90
+ ### Techniques Applied
91
+ - SSOT 교차 검증: service-spec.md vs 실제 응답 형식 대조
92
+ - 경계값 분석: 비밀번호 길이 제한 미검증 발견
93
+
94
+ ### SSOT Alignment
95
+ - service-spec.md#POST-auth-login: partial (응답의 token 필드명이 access_token으로 불일치)
96
+ - error-codes.md#AUTH-002: misaligned (계정 잠금 에러코드 미구현)
97
+
98
+ ### Decisions
99
+ - 없음 (리뷰 역할)
100
+
101
+ ### Issues / Handoff Notes
102
+ - Level 1: 비밀번호 최소 길이 검증 누락 (src/routes/auth/login.ts:23) → @developer 수정 요청
103
+ - Level 1: 로그인 실패 시 응답에 email 노출 (src/routes/auth/login.ts:38) → @developer 수정 요청
104
+ - Level 2: token → access_token 필드명 SSOT 불일치 → PM 보고 (명세 vs 구현 어느 쪽이 정확한지 확인 필요)
105
+ ```
@@ -0,0 +1,59 @@
1
+ ---
2
+ name: {skill-name}
3
+ description: |
4
+ {무엇을 하는지 + 언제 사용하는지, 1024자 이하.}
5
+ {에이전트가 이 description만 보고 스킬 필요 여부를 판단함.}
6
+ version: "1.0.0"
7
+ tags: [{tag1}, {tag2}]
8
+ user-invocable: false
9
+ ---
10
+
11
+ # {Skill Title}
12
+
13
+ {1~2줄 목적 설명}
14
+
15
+ ## Philosophy
16
+
17
+ - {핵심 원칙 1}
18
+ - {핵심 원칙 2}
19
+ - {핵심 원칙 3}
20
+
21
+ ## Resources
22
+
23
+ | Priority | Type | Resource | Description |
24
+ |----------|------|----------|-------------|
25
+ | CRITICAL | rule | [{rule-name}](rules/{rule-name}.md) | {1줄 설명} |
26
+ | HIGH | rule | [{rule-name}](rules/{rule-name}.md) | {1줄 설명} |
27
+ | HIGH | ref | [{topic}](references/{topic}.md) | {1줄 설명} |
28
+ | MEDIUM | script | [{script}](scripts/{script}.sh) | {1줄 설명} |
29
+
30
+ ## Quick Rules
31
+
32
+ ### {카테고리 1}
33
+ - {규칙}
34
+ - {규칙}
35
+
36
+ ### {카테고리 2}
37
+ - {규칙}
38
+ - {규칙}
39
+
40
+ ## Checklist
41
+
42
+ | Priority | Item |
43
+ |----------|------|
44
+ | CRITICAL | {필수 확인 항목} |
45
+ | HIGH | {중요 확인 항목} |
46
+ | MEDIUM | {권장 확인 항목} |
47
+
48
+ <!--
49
+ 스킬 작성 가이드:
50
+ - SKILL.md는 120줄 이하 인덱스 (항상 로드됨 → 컨텍스트 절약)
51
+ - 하위 디렉토리 3종:
52
+ - rules/ → "이렇게 해라/하지 마라" (Incorrect/Correct 패턴, impact 레벨)
53
+ - references/ → "이것을 알아라" (심층 가이드, 외부 문서)
54
+ - scripts/ → "이것을 실행해라" (자동화, 검증, 생성)
55
+ - rules/는 Read로 온디맨드 로드, scripts/는 Bash로 실행 (토큰 0)
56
+ - "Claude가 이미 아는 것"은 넣지 말 것 → 프로젝트 컨벤션만
57
+ - description은 PRIMARY trigger — 1024자 이하
58
+ - 참조 모델: vercel-react-best-practices (SKILL.md 인덱스 + 45 rules 파일)
59
+ -->
@@ -0,0 +1,35 @@
1
+ ---
2
+ title: {Reference Title}
3
+ category: guide # guide | api | migration | external
4
+ source: internal # URL (외부) 또는 "internal" (자체 작성)
5
+ ---
6
+
7
+ # {Reference Title}
8
+
9
+ {이 레퍼런스가 다루는 주제 1~2줄 설명}
10
+
11
+ ## Key Concepts
12
+
13
+ {에이전트가 알아야 할 핵심 개념}
14
+
15
+ ## Detailed Guide
16
+
17
+ {상세 가이드 내용}
18
+
19
+ ## Common Pitfalls
20
+
21
+ {에이전트가 흔히 하는 실수}
22
+
23
+ ## Examples
24
+
25
+ {구체적인 코드/설정 예시}
26
+
27
+ <!--
28
+ 레퍼런스 파일 작성 가이드:
29
+ - 50~200줄 (심층 가이드)
30
+ - frontmatter 필수: title, category
31
+ - source 권장: 외부 자료 기반이면 URL 기록
32
+ - rules/와 차이: 규칙이 아닌 "알아야 할 지식"
33
+ - 에이전트가 Read로 필요할 때만 로드 (온디맨드)
34
+ - 파일명: kebab-case.md (예: nextjs-migration.md)
35
+ -->
@@ -0,0 +1,34 @@
1
+ ---
2
+ title: Rule Categories
3
+ ---
4
+
5
+ # Rule Categories
6
+
7
+ 규칙 파일을 카테고리별로 그룹화하는 인덱스.
8
+ SKILL.md의 Resources 테이블과 함께 에이전트의 규칙 탐색을 돕습니다.
9
+
10
+ ## {Category 1} ({prefix-})
11
+
12
+ **Impact:** CRITICAL
13
+ **Description:** {이 카테고리의 규칙이 왜 중요한지}
14
+
15
+ | Rule | Description |
16
+ |------|-------------|
17
+ | [{prefix}-{name}]({prefix}-{name}.md) | {1줄 설명} |
18
+
19
+ ## {Category 2} ({prefix-})
20
+
21
+ **Impact:** HIGH
22
+ **Description:** {이 카테고리의 규칙이 왜 중요한지}
23
+
24
+ | Rule | Description |
25
+ |------|-------------|
26
+ | [{prefix}-{name}]({prefix}-{name}.md) | {1줄 설명} |
27
+
28
+ <!--
29
+ _sections.md 작성 가이드:
30
+ - 5개 이상 규칙이 있는 스킬에서 사용
31
+ - Impact 순으로 카테고리 정렬 (CRITICAL → LOW)
32
+ - 파일명 prefix로 규칙 자동 분류 (예: async-, bundle-, server-)
33
+ - 참조: vercel-react-best-practices/rules/_sections.md
34
+ -->
@@ -0,0 +1,32 @@
1
+ ---
2
+ title: {Rule Title}
3
+ impact: HIGH # CRITICAL | HIGH | MEDIUM | LOW
4
+ impactDescription: {영향도 수치} # 예: "2-10× improvement", "200-800ms 감소"
5
+ tags: {tag1}, {tag2}
6
+ ---
7
+
8
+ ## {Rule Title}
9
+
10
+ **Impact: {LEVEL} ({영향도 수치})**
11
+
12
+ {왜 이 규칙이 필요한지 1~2줄 설명}
13
+
14
+ **Incorrect ({무엇이 잘못됐는지}):**
15
+ ```{lang}
16
+ // 잘못된 패턴
17
+ ```
18
+
19
+ **Correct ({무엇이 올바른지}):**
20
+ ```{lang}
21
+ // 올바른 패턴
22
+ ```
23
+
24
+ <!--
25
+ 규칙 파일 작성 가이드:
26
+ - 20~80줄 (간결하게)
27
+ - frontmatter 필수: title, impact, tags
28
+ - impactDescription 권장: 수치화된 영향도
29
+ - Incorrect/Correct 코드 예시 필수
30
+ - "Claude가 이미 아는 것"은 생략, 프로젝트 고유 패턴만
31
+ - 파일명: kebab-case.md (예: async-parallel.md)
32
+ -->
@@ -0,0 +1,31 @@
1
+ #!/bin/bash
2
+ # @name {script-name}
3
+ # @description {이 스크립트가 하는 일 1줄}
4
+ # @args {필요한 인자 설명}
5
+ # @output {출력 형식 (text | json | exit-code)}
6
+
7
+ set -euo pipefail
8
+
9
+ # ─────────────────────────────────────
10
+ # 설정
11
+ # ─────────────────────────────────────
12
+ PROJECT_ROOT="${1:-.}"
13
+
14
+ # ─────────────────────────────────────
15
+ # 실행
16
+ # ─────────────────────────────────────
17
+
18
+ echo "Running {script-name}..."
19
+
20
+ # TODO: 스크립트 로직 작성
21
+
22
+ echo "Done."
23
+
24
+ # ─────────────────────────────────────
25
+ # 스크립트 작성 가이드:
26
+ # - set -euo pipefail 필수 (안전 실행)
27
+ # - 외부 URL 호출 금지 (보안)
28
+ # - 헤더 메타데이터 필수: @name, @description, @args, @output
29
+ # - 에이전트가 Bash로 실행 (컨텍스트에 로드하지 않음 → 토큰 0)
30
+ # - 파일명: {verb}-{noun}.sh (예: check-secrets.sh, validate-schema.sh)
31
+ # ─────────────────────────────────────
@@ -0,0 +1,54 @@
1
+ ---
2
+ name: architecture
3
+ description: |
4
+ 아키텍처 설계 및 API 명세 가이드라인.
5
+ Clean Architecture, RESTful API 설계, ADR, 데이터 모델링을 다룸.
6
+ Use when: "아키텍처 설계, API 설계, ADR, 레이어 구조, 데이터 모델"
7
+ version: "1.0.0"
8
+ tags: [architecture, api, design]
9
+ user-invocable: false
10
+ ---
11
+
12
+ # Architecture
13
+
14
+ 시스템 아키텍처 설계 및 API 명세를 위한 가이드라인.
15
+
16
+ ## Philosophy
17
+
18
+ - 의존성 규칙: 안쪽 레이어는 바깥쪽을 모름
19
+ - 추상화: 인터페이스를 통한 의존성 역전
20
+ - 단일 책임: 각 컴포넌트는 하나의 역할
21
+
22
+ ## Resources
23
+
24
+ | Priority | Type | Resource | Description |
25
+ |----------|------|----------|-------------|
26
+ | HIGH | ref | [api-design](references/api-design.md) | RESTful API URL 패턴, 응답 형식 |
27
+ | HIGH | ref | [adr-template](references/adr-template.md) | ADR 작성 가이드 + 템플릿 |
28
+
29
+ ## Quick Rules
30
+
31
+ ### Clean Architecture Layers
32
+ | Layer | Level | 역할 |
33
+ |-------|-------|------|
34
+ | Entities | core | 핵심 비즈니스 로직 |
35
+ | Use Cases | application | 애플리케이션 로직 |
36
+ | Interface Adapters | adapter | 컨트롤러, 프레젠터 |
37
+ | Frameworks & Drivers | external | DB, Web, 외부 시스템 |
38
+
39
+ ### Data Design
40
+ - 정규화: 1NF(원자값) → 2NF(부분 함수 종속 제거) → 3NF(이행 함수 종속 제거)
41
+ - 인덱스: 자주 조회되는 컬럼, WHERE/JOIN/ORDER BY 대상, 카디널리티 고려
42
+
43
+ ### ADR
44
+ 트레이드오프가 있는 기술 결정 시 반드시 ADR 작성. 상세 템플릿은 references/adr-template.md 참조.
45
+
46
+ ## Checklist
47
+
48
+ | Priority | Item |
49
+ |----------|------|
50
+ | CRITICAL | 레이어 간 의존성이 올바른가 (안→밖만 허용) |
51
+ | CRITICAL | API 응답 형식이 일관적인가 |
52
+ | HIGH | 에러 코드가 문서화되었는가 |
53
+ | HIGH | 주요 결정에 ADR이 있는가 |
54
+ | MEDIUM | 데이터 모델이 정규화되었는가 |
@@ -0,0 +1,50 @@
1
+ ---
2
+ title: Architecture Decision Record Template
3
+ category: guide
4
+ source: internal
5
+ ---
6
+
7
+ # Architecture Decision Record (ADR)
8
+
9
+ 아키텍처 결정을 문서화하는 ADR 작성 가이드.
10
+
11
+ ## When to Write ADR
12
+
13
+ - 기술 스택 선정
14
+ - 아키텍처 패턴 결정
15
+ - 트레이드오프가 있는 결정
16
+
17
+ ## Template
18
+
19
+ ```markdown
20
+ # ADR-XXX: {제목}
21
+
22
+ ## Status
23
+ Proposed / Accepted / Deprecated / Superseded
24
+
25
+ ## Context
26
+ 결정이 필요한 배경과 상황
27
+
28
+ ## Decision
29
+ 내린 결정과 선택한 옵션
30
+
31
+ ## Consequences
32
+ ### Positive
33
+ - 장점 1
34
+ - 장점 2
35
+
36
+ ### Negative
37
+ - 단점 1 (완화 방안)
38
+
39
+ ## Alternatives Considered
40
+ | 옵션 | 장점 | 단점 |
41
+ |-----|-----|-----|
42
+ | A | ... | ... |
43
+ | B | ... | ... |
44
+ ```
45
+
46
+ ## Common Pitfalls
47
+
48
+ - Status를 업데이트하지 않아 현재 유효한지 모호
49
+ - Context 없이 Decision만 기록 → 나중에 "왜 이렇게 했지?" 불명확
50
+ - Alternatives를 기록하지 않으면 나중에 같은 논의 반복
@@ -0,0 +1,64 @@
1
+ ---
2
+ title: RESTful API Design Guide
3
+ category: guide
4
+ source: internal
5
+ ---
6
+
7
+ # RESTful API Design Guide
8
+
9
+ REST API URL 패턴, 응답 형식, 에러 코드 설계 가이드.
10
+
11
+ ## URL Patterns
12
+
13
+ | Method | Path | 용도 |
14
+ |--------|------|------|
15
+ | GET | `/api/v1/{resource}` | 목록 조회 |
16
+ | GET | `/api/v1/{resource}/:id` | 단일 조회 |
17
+ | POST | `/api/v1/{resource}` | 생성 |
18
+ | PUT | `/api/v1/{resource}/:id` | 전체 수정 |
19
+ | PATCH | `/api/v1/{resource}/:id` | 부분 수정 |
20
+ | DELETE | `/api/v1/{resource}/:id` | 삭제 |
21
+
22
+ ## Response Format
23
+
24
+ ### Success
25
+ ```json
26
+ {
27
+ "success": true,
28
+ "data": { ... },
29
+ "error": null,
30
+ "meta": {
31
+ "page": 1,
32
+ "limit": 20,
33
+ "total": 100
34
+ }
35
+ }
36
+ ```
37
+
38
+ ### Error
39
+ ```json
40
+ {
41
+ "success": false,
42
+ "data": null,
43
+ "error": {
44
+ "code": "AUTH_001",
45
+ "message": "Invalid credentials",
46
+ "details": { ... }
47
+ }
48
+ }
49
+ ```
50
+
51
+ ## Key Principles
52
+
53
+ - 리소스 중심 URL 설계 (동사 X, 명사 O)
54
+ - HTTP 메서드로 동작 표현 (GET=조회, POST=생성, PUT/PATCH=수정, DELETE=삭제)
55
+ - 일관된 응답 형식 (success/data/error 구조)
56
+ - 버전 관리 (`/api/v1/`)
57
+ - 적절한 HTTP 상태 코드 사용
58
+
59
+ ## Common Pitfalls
60
+
61
+ - URL에 동사 사용 (`/api/getUsers` → `/api/v1/users`)
62
+ - 일관성 없는 에러 응답 형식
63
+ - 페이지네이션 미구현 (대량 데이터 성능 이슈)
64
+ - 버전 없는 API → 하위 호환성 깨짐
@@ -0,0 +1,81 @@
1
+ ---
2
+ name: node
3
+ description: Node.js 백엔드 개발 가이드라인 (Hono Framework). 비동기 우선, Zod 타입 안전, Clean Architecture 레이어 분리.
4
+ version: "1.0.0"
5
+ tags: [nodejs, hono, backend]
6
+ user-invocable: false
7
+ ---
8
+
9
+ # Node.js Backend Guidelines (Hono)
10
+
11
+ Node.js 기반 백엔드 서비스 개발 가이드라인 (Hono 프레임워크 중심).
12
+
13
+ ## Philosophy
14
+
15
+ - 비동기 우선 - 블로킹 작업 피하기
16
+ - 에러는 명시적으로 처리
17
+ - 환경 분리 - 설정은 환경변수로
18
+ - 타입 안전한 API - Zod로 검증
19
+ - 레이어 분리 - Clean Architecture
20
+
21
+ ## Project Structure
22
+
23
+ 아키텍처 설정에 따라 결정:
24
+ - Clean Architecture: `architectures/clean/backend.xml`
25
+ - Hexagonal Architecture: `architectures/hexagonal/backend.xml`
26
+
27
+ ## Rules
28
+
29
+ | Priority | Rule | Description |
30
+ |----------|------|-------------|
31
+ | CRITICAL | [hono-app-setup](rules/hono-app-setup.md) | Hono 앱 설정, 미들웨어, 라우트, Zod 검증 |
32
+ | CRITICAL | [error-handling](rules/error-handling.md) | AppError 계층 + 글로벌 에러 핸들러 |
33
+ | CRITICAL | [async-patterns](rules/async-patterns.md) | Promise.all, waterfall 방지, 트랜잭션 |
34
+ | HIGH | [jwt-auth](rules/jwt-auth.md) | JWT 미들웨어, RBAC, 토큰 생성/갱신 |
35
+ | HIGH | [env-config](rules/env-config.md) | Zod 환경변수 검증 |
36
+ | MEDIUM | [middleware](rules/middleware.md) | Rate Limiting, Request Logging |
37
+ | MEDIUM | [testing](rules/testing.md) | Hono API 테스트 + Service 유닛 테스트 |
38
+ | LOW | [deployment](rules/deployment.md) | Graceful Shutdown |
39
+
40
+ ## Quick Rules
41
+
42
+ ### 비동기
43
+ - async/await 사용, 콜백 금지
44
+ - 독립 작업은 Promise.all로 병렬
45
+ - Waterfall 방지 (Promise 먼저 시작, 나중에 await)
46
+ - 동기 파일 I/O 금지 (fs.readFileSync)
47
+
48
+ ### 보안
49
+ - 환경변수 Zod 검증 (앱 시작 시 실패)
50
+ - 입력 검증 (zValidator)
51
+ - JWT HttpOnly 쿠키로 Refresh Token 관리
52
+ - Rate Limiting 적용
53
+ - 에러 메시지에 민감 정보 제외
54
+ - 하드코딩된 시크릿 금지
55
+
56
+ ### 구조
57
+ - Clean Architecture 레이어 분리
58
+ - Repository 패턴 (DI)
59
+ - 글로벌 에러 핸들러
60
+ - 커스텀 에러 클래스 계층
61
+
62
+ ### Hono
63
+ - 타입 안전한 라우트 정의
64
+ - zValidator로 요청 검증
65
+ - 미들웨어로 공통 로직 처리
66
+ - 일관된 응답 형식 `{ success, data, error }`
67
+
68
+ ## Checklist
69
+
70
+ | Priority | Item |
71
+ |----------|------|
72
+ | CRITICAL | Zod 입력 검증 (zValidator) |
73
+ | CRITICAL | 글로벌 에러 핸들러 |
74
+ | CRITICAL | 환경변수 Zod 검증 |
75
+ | CRITICAL | Waterfall 제거 (Promise.all) |
76
+ | HIGH | Clean Architecture 레이어 분리 |
77
+ | HIGH | 커스텀 에러 클래스 |
78
+ | HIGH | JWT 인증 (HttpOnly Refresh Token) |
79
+ | HIGH | Rate Limiting |
80
+ | MEDIUM | Request Logging (구조화 로그) |
81
+ | MEDIUM | Graceful Shutdown |
@@ -0,0 +1,81 @@
1
+ ---
2
+ title: Async Patterns
3
+ impact: CRITICAL
4
+ tags: async, promise, waterfall, transaction
5
+ ---
6
+
7
+ ## Async Patterns
8
+
9
+ ### Promise.all for Independent Operations
10
+
11
+ **Incorrect:**
12
+ ```typescript
13
+ // Sequential - 3 round trips
14
+ const user = await userService.findById(userId);
15
+ const orders = await orderService.findByUserId(userId);
16
+ const notifications = await notificationService.getUnread(userId);
17
+ ```
18
+
19
+ **Correct:**
20
+ ```typescript
21
+ // Parallel - 1 round trip
22
+ const [user, orders, notifications] = await Promise.all([
23
+ userService.findById(userId),
24
+ orderService.findByUserId(userId),
25
+ notificationService.getUnread(userId),
26
+ ]);
27
+ ```
28
+
29
+ ### API Route Waterfall Prevention
30
+
31
+ **Incorrect:**
32
+ ```typescript
33
+ app.get('/dashboard', async (c) => {
34
+ const session = await auth();
35
+ const config = await fetchConfig(); // config는 session 불필요
36
+ const data = await fetchData(session.user.id);
37
+ return c.json({ data, config });
38
+ });
39
+ ```
40
+
41
+ **Correct:**
42
+ ```typescript
43
+ app.get('/dashboard', async (c) => {
44
+ const sessionPromise = auth();
45
+ const configPromise = fetchConfig(); // 즉시 시작
46
+
47
+ const session = await sessionPromise;
48
+ const [config, data] = await Promise.all([
49
+ configPromise,
50
+ fetchData(session.user.id), // session에 의존
51
+ ]);
52
+ return c.json({ data, config });
53
+ });
54
+ ```
55
+
56
+ ### Prisma Transaction
57
+
58
+ ```typescript
59
+ export async function createOrder(input: CreateOrderInput) {
60
+ return prisma.$transaction(async (tx) => {
61
+ const user = await tx.user.findUnique({ where: { id: input.userId } });
62
+ if (!user) throw new AppError('USER_NOT_FOUND', 'User not found', 404);
63
+
64
+ let totalAmount = 0;
65
+ for (const item of input.items) {
66
+ const product = await tx.product.findUnique({ where: { id: item.productId } });
67
+ if (!product || product.stock < item.quantity) {
68
+ throw new AppError('INSUFFICIENT_STOCK', `Insufficient stock for ${item.productId}`, 400);
69
+ }
70
+ await tx.product.update({ where: { id: item.productId }, data: { stock: { decrement: item.quantity } } });
71
+ totalAmount += product.price * item.quantity;
72
+ }
73
+
74
+ return tx.order.create({
75
+ data: { userId: input.userId, totalAmount, status: 'PENDING',
76
+ items: { create: input.items.map(i => ({ productId: i.productId, quantity: i.quantity })) } },
77
+ include: { items: true },
78
+ });
79
+ });
80
+ }
81
+ ```
@@ -0,0 +1,33 @@
1
+ ---
2
+ title: Deployment
3
+ impact: LOW
4
+ tags: deployment, graceful-shutdown
5
+ ---
6
+
7
+ ## Graceful Shutdown
8
+
9
+ ```typescript
10
+ // src/index.ts
11
+ import { serve } from '@hono/node-server';
12
+ import app from './app';
13
+ import { config } from './config';
14
+ import { prisma } from './infrastructure/database/prisma';
15
+
16
+ const server = serve({
17
+ fetch: app.fetch,
18
+ port: config.PORT,
19
+ hostname: config.HOST,
20
+ }, (info) => {
21
+ console.log(`Server running at http://${info.address}:${info.port}`);
22
+ });
23
+
24
+ async function shutdown(signal: string) {
25
+ console.log(`${signal} received. Shutting down...`);
26
+ server.close(() => console.log('HTTP server closed'));
27
+ await prisma.$disconnect();
28
+ process.exit(0);
29
+ }
30
+
31
+ process.on('SIGTERM', () => shutdown('SIGTERM'));
32
+ process.on('SIGINT', () => shutdown('SIGINT'));
33
+ ```