timsquad 3.5.0 → 3.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (454) hide show
  1. package/README.ko.md +103 -107
  2. package/README.md +100 -104
  3. package/dist/commands/daemon.d.ts.map +1 -1
  4. package/dist/commands/daemon.js +48 -2
  5. package/dist/commands/daemon.js.map +1 -1
  6. package/dist/commands/init.js +46 -14
  7. package/dist/commands/init.js.map +1 -1
  8. package/dist/commands/{upgrade.d.ts → update.d.ts} +3 -3
  9. package/dist/commands/update.d.ts.map +1 -0
  10. package/dist/commands/{upgrade.js → update.js} +12 -17
  11. package/dist/commands/update.js.map +1 -0
  12. package/dist/daemon/context-writer.d.ts +14 -0
  13. package/dist/daemon/context-writer.d.ts.map +1 -1
  14. package/dist/daemon/context-writer.js +29 -0
  15. package/dist/daemon/context-writer.js.map +1 -1
  16. package/dist/daemon/event-queue.d.ts +7 -11
  17. package/dist/daemon/event-queue.d.ts.map +1 -1
  18. package/dist/daemon/event-queue.js +78 -118
  19. package/dist/daemon/event-queue.js.map +1 -1
  20. package/dist/daemon/file-watcher.d.ts +14 -8
  21. package/dist/daemon/file-watcher.d.ts.map +1 -1
  22. package/dist/daemon/file-watcher.js +78 -41
  23. package/dist/daemon/file-watcher.js.map +1 -1
  24. package/dist/daemon/index.d.ts +1 -1
  25. package/dist/daemon/index.d.ts.map +1 -1
  26. package/dist/daemon/index.js +54 -47
  27. package/dist/daemon/index.js.map +1 -1
  28. package/dist/index.js +3 -41
  29. package/dist/index.js.map +1 -1
  30. package/dist/lib/agent-generator.d.ts.map +1 -1
  31. package/dist/lib/agent-generator.js +21 -10
  32. package/dist/lib/agent-generator.js.map +1 -1
  33. package/dist/lib/compile-rules.d.ts +2 -0
  34. package/dist/lib/compile-rules.d.ts.map +1 -1
  35. package/dist/lib/compile-rules.js +39 -4
  36. package/dist/lib/compile-rules.js.map +1 -1
  37. package/dist/lib/compiler.d.ts +22 -1
  38. package/dist/lib/compiler.d.ts.map +1 -1
  39. package/dist/lib/compiler.js +178 -12
  40. package/dist/lib/compiler.js.map +1 -1
  41. package/dist/lib/config.d.ts +3 -0
  42. package/dist/lib/config.d.ts.map +1 -1
  43. package/dist/lib/config.js +17 -2
  44. package/dist/lib/config.js.map +1 -1
  45. package/dist/{commands/log.d.ts → lib/log-utils.d.ts} +7 -15
  46. package/dist/lib/log-utils.d.ts.map +1 -0
  47. package/dist/lib/log-utils.js +347 -0
  48. package/dist/lib/log-utils.js.map +1 -0
  49. package/dist/lib/skill-generator.d.ts +1 -1
  50. package/dist/lib/skill-generator.d.ts.map +1 -1
  51. package/dist/lib/skill-generator.js +19 -44
  52. package/dist/lib/skill-generator.js.map +1 -1
  53. package/dist/lib/ssot-map.d.ts +31 -0
  54. package/dist/lib/ssot-map.d.ts.map +1 -0
  55. package/dist/lib/ssot-map.js +79 -0
  56. package/dist/lib/ssot-map.js.map +1 -0
  57. package/dist/lib/template.d.ts +10 -3
  58. package/dist/lib/template.d.ts.map +1 -1
  59. package/dist/lib/template.js +137 -22
  60. package/dist/lib/template.js.map +1 -1
  61. package/dist/lib/upgrade-backup.js +1 -1
  62. package/dist/lib/upgrade-backup.js.map +1 -1
  63. package/dist/lib/workflow-state.d.ts +1 -1
  64. package/dist/lib/workflow-state.d.ts.map +1 -1
  65. package/dist/lib/workflow-state.js +1 -1
  66. package/dist/lib/workflow-state.js.map +1 -1
  67. package/dist/types/config.d.ts +10 -1
  68. package/dist/types/config.d.ts.map +1 -1
  69. package/dist/types/config.js +46 -41
  70. package/dist/types/config.js.map +1 -1
  71. package/dist/types/feedback.d.ts +1 -54
  72. package/dist/types/feedback.d.ts.map +1 -1
  73. package/dist/types/feedback.js +1 -22
  74. package/dist/types/feedback.js.map +1 -1
  75. package/dist/types/index.d.ts +1 -0
  76. package/dist/types/index.d.ts.map +1 -1
  77. package/dist/types/index.js +1 -0
  78. package/dist/types/index.js.map +1 -1
  79. package/dist/types/meta-index.d.ts +8 -0
  80. package/dist/types/meta-index.d.ts.map +1 -1
  81. package/dist/types/project.d.ts +6 -1
  82. package/dist/types/project.d.ts.map +1 -1
  83. package/dist/types/project.js +15 -0
  84. package/dist/types/project.js.map +1 -1
  85. package/dist/types/ssot-map.d.ts +30 -0
  86. package/dist/types/ssot-map.d.ts.map +1 -0
  87. package/dist/types/ssot-map.js +6 -0
  88. package/dist/types/ssot-map.js.map +1 -0
  89. package/package.json +1 -1
  90. package/templates/base/agents/base/tsq-architect.md +1 -1
  91. package/templates/base/agents/base/tsq-dba.md +3 -1
  92. package/templates/base/agents/base/tsq-designer.md +3 -1
  93. package/templates/base/agents/base/tsq-developer.md +3 -1
  94. package/templates/base/agents/base/tsq-librarian.md +45 -0
  95. package/templates/base/agents/base/tsq-qa.md +3 -1
  96. package/templates/base/agents/base/tsq-security.md +3 -1
  97. package/templates/base/agents/overlays/platform/claude-code.md +2 -2
  98. package/templates/base/config.template.yaml +17 -28
  99. package/templates/base/knowledge/templates/task-result.md +5 -10
  100. package/templates/base/skills/_shared/naming-conventions.md +49 -0
  101. package/templates/base/skills/_template/SKILL.md +31 -17
  102. package/templates/base/skills/{architecture → tsq-architecture}/SKILL.md +2 -2
  103. package/templates/base/skills/tsq-audit/SKILL.md +74 -0
  104. package/templates/base/skills/{methodology/bdd → tsq-bdd}/SKILL.md +14 -9
  105. package/templates/base/skills/tsq-coding/SKILL.md +65 -0
  106. package/templates/base/skills/tsq-coding/rules/async-patterns.md +81 -0
  107. package/templates/base/skills/tsq-coding/rules/code-organization.md +80 -0
  108. package/templates/base/skills/tsq-coding/rules/error-handling.md +76 -0
  109. package/templates/base/skills/tsq-coding/rules/type-safety.md +85 -0
  110. package/templates/base/skills/tsq-controller/SKILL.md +81 -0
  111. package/templates/base/skills/tsq-controller/memory/.gitkeep +0 -0
  112. package/templates/base/skills/{mobile/dart → tsq-dart}/SKILL.md +5 -3
  113. package/templates/base/skills/{database → tsq-database}/SKILL.md +13 -27
  114. package/templates/base/skills/tsq-database/rules/query-optimization.md +32 -0
  115. package/templates/base/skills/tsq-database/rules/supabase-patterns.md +94 -0
  116. package/templates/base/skills/{methodology/ddd → tsq-ddd}/SKILL.md +15 -10
  117. package/templates/base/skills/{methodology/debugging → tsq-debugging}/SKILL.md +2 -2
  118. package/templates/base/skills/tsq-decompose/SKILL.md +117 -0
  119. package/templates/base/skills/tsq-delete/SKILL.md +72 -0
  120. package/templates/base/skills/{mobile/flutter → tsq-flutter}/SKILL.md +6 -3
  121. package/templates/base/skills/tsq-grill/SKILL.md +86 -0
  122. package/templates/base/skills/{backend/node → tsq-hono}/SKILL.md +6 -4
  123. package/templates/base/skills/tsq-librarian/SKILL.md +78 -0
  124. package/templates/base/skills/tsq-log/SKILL.md +30 -0
  125. package/templates/base/skills/{frontend/nextjs → tsq-nextjs}/SKILL.md +14 -9
  126. package/templates/base/skills/{planning → tsq-planning}/SKILL.md +2 -2
  127. package/templates/base/skills/{database/prisma → tsq-prisma}/SKILL.md +15 -9
  128. package/templates/base/skills/tsq-product-audit/SKILL.md +113 -0
  129. package/templates/base/skills/tsq-product-audit/checklists/01-security.md +86 -0
  130. package/templates/base/skills/tsq-product-audit/checklists/02-performance.md +67 -0
  131. package/templates/base/skills/tsq-product-audit/checklists/03-seo.md +46 -0
  132. package/templates/base/skills/tsq-product-audit/checklists/04-accessibility.md +66 -0
  133. package/templates/base/skills/tsq-product-audit/checklists/05-ui-ux.md +50 -0
  134. package/templates/base/skills/tsq-product-audit/checklists/06-architecture.md +53 -0
  135. package/templates/base/skills/tsq-product-audit/checklists/07-functional-requirements.md +55 -0
  136. package/templates/base/skills/tsq-product-audit/rules/audit-protocol.md +136 -0
  137. package/templates/base/skills/tsq-product-audit/rules/false-positive-guard.md +81 -0
  138. package/templates/base/skills/tsq-product-audit/rules/scoring-criteria.md +113 -0
  139. package/templates/base/skills/tsq-product-audit/templates/improvement-plan-template.md +60 -0
  140. package/templates/base/skills/tsq-product-audit/templates/report-template.md +88 -0
  141. package/templates/base/skills/tsq-prompt/SKILL.md +86 -0
  142. package/templates/base/skills/tsq-protocol/SKILL.md +101 -33
  143. package/templates/base/skills/{frontend/react → tsq-react}/SKILL.md +6 -3
  144. package/templates/base/skills/tsq-retro/SKILL.md +86 -0
  145. package/templates/base/skills/tsq-retro/references/feedback-guide.md +58 -0
  146. package/templates/base/skills/tsq-retro/references/improve-protocol.md +87 -0
  147. package/templates/base/skills/tsq-retro/references/improvement-template.md +26 -0
  148. package/templates/base/skills/tsq-security/SKILL.md +66 -0
  149. package/templates/base/skills/tsq-security/rules/auth-patterns.md +62 -0
  150. package/templates/base/skills/tsq-security/rules/dependency-security.md +69 -0
  151. package/templates/base/skills/tsq-security/rules/input-validation.md +68 -0
  152. package/templates/base/skills/tsq-security/rules/secrets-management.md +65 -0
  153. package/templates/base/skills/tsq-spec/SKILL.md +58 -0
  154. package/templates/base/skills/{stability-verification → tsq-stability}/SKILL.md +3 -3
  155. package/templates/base/skills/tsq-start/SKILL.md +90 -0
  156. package/templates/base/skills/tsq-start/references/onboarding-questions.md +177 -0
  157. package/templates/base/skills/tsq-status/SKILL.md +32 -0
  158. package/templates/base/skills/{methodology/tdd → tsq-tdd}/SKILL.md +12 -3
  159. package/templates/base/skills/tsq-testing/SKILL.md +69 -0
  160. package/templates/base/skills/tsq-testing/references/e2e-stability.md +33 -0
  161. package/templates/base/skills/{typescript → tsq-typescript}/SKILL.md +5 -11
  162. package/templates/base/skills/{ui-design → tsq-ui}/SKILL.md +2 -2
  163. package/templates/base/skills/tsq-update/SKILL.md +48 -0
  164. package/templates/base/timsquad/constraints/competency-framework.xml +2 -2
  165. package/templates/base/timsquad/constraints/ssot-schema.xml +2 -2
  166. package/templates/base/timsquad/process/phase-checklist.yaml +1 -1
  167. package/templates/base/timsquad/process/state-machine.xml +2 -2
  168. package/templates/base/timsquad/process/validation-rules.xml +8 -8
  169. package/templates/base/timsquad/process/workflow-base.xml +8 -8
  170. package/templates/base/timsquad/retrospective/cycle-report.template.md +2 -2
  171. package/templates/base/timsquad/retrospective/patterns/failure-patterns.md +1 -1
  172. package/templates/base/timsquad/retrospective/patterns/success-patterns.md +2 -2
  173. package/templates/base/timsquad/retrospective/retrospective-state.xml +2 -2
  174. package/templates/base/timsquad/ssot/audit-trail-spec.template.md +155 -0
  175. package/templates/base/timsquad/ssot/compliance-matrix.template.md +105 -0
  176. package/templates/base/timsquad/ssot/component-map.template.md +181 -0
  177. package/templates/base/timsquad/ssot/data-design.template.md +4 -4
  178. package/templates/base/timsquad/ssot/deployment-spec.template.md +29 -22
  179. package/templates/base/timsquad/ssot/env-config.template.md +4 -2
  180. package/templates/base/timsquad/ssot/error-codes.template.md +3 -3
  181. package/templates/base/timsquad/ssot/functional-spec.template.md +40 -3
  182. package/templates/base/timsquad/ssot/glossary.template.md +2 -2
  183. package/templates/base/timsquad/ssot/infra-topology.template.md +191 -0
  184. package/templates/base/timsquad/ssot/integration-spec.template.md +2 -2
  185. package/templates/base/timsquad/ssot/monitoring-spec.template.md +185 -0
  186. package/templates/base/timsquad/ssot/navigation-map.template.md +154 -0
  187. package/templates/base/timsquad/ssot/performance-budget.template.md +132 -0
  188. package/templates/base/timsquad/ssot/planning.template.md +3 -3
  189. package/templates/base/timsquad/ssot/prd/_template.md +73 -0
  190. package/templates/base/timsquad/ssot/prd.template.md +10 -21
  191. package/templates/base/timsquad/ssot/requirements.template.md +3 -3
  192. package/templates/base/timsquad/ssot/sdk-spec.template.md +223 -0
  193. package/templates/base/timsquad/ssot/service-spec.template.md +3 -3
  194. package/templates/base/timsquad/ssot/state-machine.template.md +127 -0
  195. package/templates/base/timsquad/ssot/test-spec.template.md +11 -1
  196. package/templates/base/timsquad/ssot/ui-ux-spec.template.md +43 -3
  197. package/templates/base/timsquad/ssot-map.template.yaml +69 -0
  198. package/templates/base/timsquad/state/workspace.xml +11 -11
  199. package/templates/platforms/claude-code/rules/adr-rules.md +1 -1
  200. package/templates/platforms/claude-code/rules/api-conventions.md +12 -0
  201. package/templates/platforms/claude-code/rules/build-gate.md +1 -1
  202. package/templates/platforms/claude-code/rules/completion-verification.md +0 -2
  203. package/templates/platforms/claude-code/rules/context-monitor.md +1 -1
  204. package/templates/platforms/claude-code/rules/feedback-routing.md +2 -2
  205. package/templates/platforms/claude-code/rules/librarian-constraints.md +11 -0
  206. package/templates/platforms/claude-code/rules/phase-management.md +2 -2
  207. package/templates/platforms/claude-code/rules/plan-review.md +2 -2
  208. package/templates/platforms/claude-code/rules/quality-guards.md +0 -2
  209. package/templates/platforms/claude-code/rules/sequence-management.md +15 -15
  210. package/templates/platforms/claude-code/rules/session-notes.md +1 -1
  211. package/templates/platforms/claude-code/rules/test-conventions.md +13 -0
  212. package/templates/platforms/claude-code/rules/workspace-sync.md +1 -1
  213. package/templates/platforms/claude-code/scripts/build-gate.sh +6 -1
  214. package/templates/platforms/claude-code/scripts/change-scope-guard.sh +110 -0
  215. package/templates/platforms/claude-code/scripts/check-capability.sh +68 -0
  216. package/templates/platforms/claude-code/scripts/completion-guard.sh +134 -14
  217. package/templates/platforms/claude-code/scripts/context-restore.sh +95 -0
  218. package/templates/platforms/claude-code/scripts/e2e-commit-gate.sh +70 -0
  219. package/templates/platforms/claude-code/scripts/e2e-marker.sh +51 -0
  220. package/templates/platforms/claude-code/scripts/phase-guard.sh +3 -6
  221. package/templates/platforms/claude-code/scripts/pre-compact.sh +70 -0
  222. package/templates/platforms/claude-code/scripts/safe-guard.sh +2 -5
  223. package/templates/platforms/claude-code/scripts/subagent-start.sh +11 -0
  224. package/templates/platforms/claude-code/scripts/subagent-stop.sh +11 -0
  225. package/templates/platforms/claude-code/settings.json +28 -56
  226. package/templates/project-types/api-backend/config.yaml +9 -5
  227. package/templates/project-types/api-backend/process/workflow.xml +2 -2
  228. package/templates/project-types/fintech/config.yaml +13 -19
  229. package/templates/project-types/fintech/ssot/audit-trail-spec.template.md +207 -0
  230. package/templates/project-types/fintech/ssot/compliance-matrix.template.md +187 -0
  231. package/templates/project-types/infra/config.yaml +7 -4
  232. package/templates/project-types/infra/process/workflow.xml +3 -3
  233. package/templates/project-types/mobile-app/config.yaml +8 -14
  234. package/templates/project-types/mobile-app/process/workflow.xml +4 -4
  235. package/templates/project-types/platform/config.yaml +8 -5
  236. package/templates/project-types/platform/process/workflow.xml +3 -3
  237. package/templates/project-types/web-app/config.yaml +9 -15
  238. package/templates/project-types/web-app/process/workflow.xml +6 -6
  239. package/templates/project-types/web-service/config.yaml +10 -19
  240. package/templates/project-types/web-service/process/workflow.xml +6 -6
  241. package/dist/commands/compile.d.ts +0 -3
  242. package/dist/commands/compile.d.ts.map +0 -1
  243. package/dist/commands/compile.js +0 -170
  244. package/dist/commands/compile.js.map +0 -1
  245. package/dist/commands/feedback.d.ts +0 -12
  246. package/dist/commands/feedback.d.ts.map +0 -1
  247. package/dist/commands/feedback.js +0 -382
  248. package/dist/commands/feedback.js.map +0 -1
  249. package/dist/commands/full.d.ts +0 -3
  250. package/dist/commands/full.d.ts.map +0 -1
  251. package/dist/commands/full.js +0 -88
  252. package/dist/commands/full.js.map +0 -1
  253. package/dist/commands/git/commit.d.ts +0 -3
  254. package/dist/commands/git/commit.d.ts.map +0 -1
  255. package/dist/commands/git/commit.js +0 -85
  256. package/dist/commands/git/commit.js.map +0 -1
  257. package/dist/commands/git/index.d.ts +0 -5
  258. package/dist/commands/git/index.d.ts.map +0 -1
  259. package/dist/commands/git/index.js +0 -5
  260. package/dist/commands/git/index.js.map +0 -1
  261. package/dist/commands/git/pr.d.ts +0 -3
  262. package/dist/commands/git/pr.d.ts.map +0 -1
  263. package/dist/commands/git/pr.js +0 -139
  264. package/dist/commands/git/pr.js.map +0 -1
  265. package/dist/commands/git/release.d.ts +0 -3
  266. package/dist/commands/git/release.d.ts.map +0 -1
  267. package/dist/commands/git/release.js +0 -153
  268. package/dist/commands/git/release.js.map +0 -1
  269. package/dist/commands/git/sync.d.ts +0 -3
  270. package/dist/commands/git/sync.d.ts.map +0 -1
  271. package/dist/commands/git/sync.js +0 -132
  272. package/dist/commands/git/sync.js.map +0 -1
  273. package/dist/commands/improve.d.ts +0 -3
  274. package/dist/commands/improve.d.ts.map +0 -1
  275. package/dist/commands/improve.js +0 -286
  276. package/dist/commands/improve.js.map +0 -1
  277. package/dist/commands/knowledge.d.ts +0 -3
  278. package/dist/commands/knowledge.d.ts.map +0 -1
  279. package/dist/commands/knowledge.js +0 -316
  280. package/dist/commands/knowledge.js.map +0 -1
  281. package/dist/commands/log.d.ts.map +0 -1
  282. package/dist/commands/log.js +0 -1436
  283. package/dist/commands/log.js.map +0 -1
  284. package/dist/commands/meta-index.d.ts +0 -3
  285. package/dist/commands/meta-index.d.ts.map +0 -1
  286. package/dist/commands/meta-index.js +0 -401
  287. package/dist/commands/meta-index.js.map +0 -1
  288. package/dist/commands/metrics.d.ts +0 -3
  289. package/dist/commands/metrics.d.ts.map +0 -1
  290. package/dist/commands/metrics.js +0 -843
  291. package/dist/commands/metrics.js.map +0 -1
  292. package/dist/commands/quick.d.ts +0 -3
  293. package/dist/commands/quick.d.ts.map +0 -1
  294. package/dist/commands/quick.js +0 -136
  295. package/dist/commands/quick.js.map +0 -1
  296. package/dist/commands/retro.d.ts +0 -3
  297. package/dist/commands/retro.d.ts.map +0 -1
  298. package/dist/commands/retro.js +0 -828
  299. package/dist/commands/retro.js.map +0 -1
  300. package/dist/commands/session.d.ts +0 -3
  301. package/dist/commands/session.d.ts.map +0 -1
  302. package/dist/commands/session.js +0 -346
  303. package/dist/commands/session.js.map +0 -1
  304. package/dist/commands/skills.d.ts +0 -12
  305. package/dist/commands/skills.d.ts.map +0 -1
  306. package/dist/commands/skills.js +0 -228
  307. package/dist/commands/skills.js.map +0 -1
  308. package/dist/commands/status.d.ts +0 -3
  309. package/dist/commands/status.d.ts.map +0 -1
  310. package/dist/commands/status.js +0 -127
  311. package/dist/commands/status.js.map +0 -1
  312. package/dist/commands/upgrade.d.ts.map +0 -1
  313. package/dist/commands/upgrade.js.map +0 -1
  314. package/dist/commands/watch.d.ts +0 -3
  315. package/dist/commands/watch.d.ts.map +0 -1
  316. package/dist/commands/watch.js +0 -213
  317. package/dist/commands/watch.js.map +0 -1
  318. package/dist/commands/workflow.d.ts +0 -3
  319. package/dist/commands/workflow.d.ts.map +0 -1
  320. package/dist/commands/workflow.js +0 -607
  321. package/dist/commands/workflow.js.map +0 -1
  322. package/templates/base/skills/coding/SKILL.md +0 -47
  323. package/templates/base/skills/controller/SKILL.md +0 -111
  324. package/templates/base/skills/prompt-engineering/SKILL.md +0 -103
  325. package/templates/base/skills/retrospective/SKILL.md +0 -102
  326. package/templates/base/skills/security/SKILL.md +0 -55
  327. package/templates/base/skills/testing/SKILL.md +0 -63
  328. package/templates/base/timsquad/feedback/feedback-router.sh +0 -341
  329. package/templates/base/timsquad/feedback/routing-rules.yaml +0 -352
  330. package/templates/platforms/claude-code/CLAUDE.md.template +0 -89
  331. package/templates/platforms/claude-code/rules/skill-suggest.md +0 -27
  332. package/templates/platforms/claude-code/scripts/skill-rules.json +0 -85
  333. package/templates/platforms/claude-code/scripts/skill-suggest.sh +0 -105
  334. /package/templates/base/skills/{architecture → tsq-architecture}/references/adr-template.md +0 -0
  335. /package/templates/base/skills/{architecture → tsq-architecture}/references/api-design.md +0 -0
  336. /package/templates/base/skills/{methodology/bdd → tsq-bdd}/rules/gherkin-patterns.md +0 -0
  337. /package/templates/base/skills/{coding → tsq-coding}/rules/patterns.md +0 -0
  338. /package/templates/base/skills/{controller → tsq-controller}/references/README.md +0 -0
  339. /package/templates/base/skills/{controller → tsq-controller}/rules/README.md +0 -0
  340. /package/templates/base/skills/{mobile/dart → tsq-dart}/rules/async-patterns.md +0 -0
  341. /package/templates/base/skills/{mobile/dart → tsq-dart}/rules/code-style.md +0 -0
  342. /package/templates/base/skills/{mobile/dart → tsq-dart}/rules/null-safety.md +0 -0
  343. /package/templates/base/skills/{mobile/dart → tsq-dart}/rules/type-system.md +0 -0
  344. /package/templates/base/skills/{methodology/ddd → tsq-ddd}/rules/strategic-patterns.md +0 -0
  345. /package/templates/base/skills/{methodology/debugging → tsq-debugging}/references/root-cause-tracing.md +0 -0
  346. /package/templates/base/skills/{mobile/flutter → tsq-flutter}/ci-cd/SKILL.md +0 -0
  347. /package/templates/base/skills/{mobile/flutter → tsq-flutter}/ci-cd/references/ci-cd-pipeline.md +0 -0
  348. /package/templates/base/skills/{mobile/flutter → tsq-flutter}/ci-cd/rules/code-signing.md +0 -0
  349. /package/templates/base/skills/{mobile/flutter → tsq-flutter}/ci-cd/rules/codemagic-setup.md +0 -0
  350. /package/templates/base/skills/{mobile/flutter → tsq-flutter}/ci-cd/rules/fastlane-setup.md +0 -0
  351. /package/templates/base/skills/{mobile/flutter → tsq-flutter}/ci-cd/rules/github-actions.md +0 -0
  352. /package/templates/base/skills/{mobile/flutter → tsq-flutter}/ci-cd/rules/store-deployment.md +0 -0
  353. /package/templates/base/skills/{mobile/flutter → tsq-flutter}/ci-cd/rules/versioning.md +0 -0
  354. /package/templates/base/skills/{mobile/flutter → tsq-flutter}/i18n/SKILL.md +0 -0
  355. /package/templates/base/skills/{mobile/flutter → tsq-flutter}/i18n/references/i18n-architecture.md +0 -0
  356. /package/templates/base/skills/{mobile/flutter → tsq-flutter}/i18n/rules/arb-files.md +0 -0
  357. /package/templates/base/skills/{mobile/flutter → tsq-flutter}/i18n/rules/locale-switching.md +0 -0
  358. /package/templates/base/skills/{mobile/flutter → tsq-flutter}/i18n/rules/localization-setup.md +0 -0
  359. /package/templates/base/skills/{mobile/flutter → tsq-flutter}/i18n/rules/plural-gender.md +0 -0
  360. /package/templates/base/skills/{mobile/flutter → tsq-flutter}/i18n/rules/text-direction.md +0 -0
  361. /package/templates/base/skills/{mobile/flutter → tsq-flutter}/monitoring/SKILL.md +0 -0
  362. /package/templates/base/skills/{mobile/flutter → tsq-flutter}/monitoring/references/monitoring-architecture.md +0 -0
  363. /package/templates/base/skills/{mobile/flutter → tsq-flutter}/monitoring/rules/analytics.md +0 -0
  364. /package/templates/base/skills/{mobile/flutter → tsq-flutter}/monitoring/rules/crashlytics-setup.md +0 -0
  365. /package/templates/base/skills/{mobile/flutter → tsq-flutter}/monitoring/rules/logging.md +0 -0
  366. /package/templates/base/skills/{mobile/flutter → tsq-flutter}/monitoring/rules/performance-monitoring.md +0 -0
  367. /package/templates/base/skills/{mobile/flutter → tsq-flutter}/monitoring/rules/sentry-integration.md +0 -0
  368. /package/templates/base/skills/{mobile/flutter → tsq-flutter}/networking/SKILL.md +0 -0
  369. /package/templates/base/skills/{mobile/flutter → tsq-flutter}/networking/references/api-client-architecture.md +0 -0
  370. /package/templates/base/skills/{mobile/flutter → tsq-flutter}/networking/rules/caching.md +0 -0
  371. /package/templates/base/skills/{mobile/flutter → tsq-flutter}/networking/rules/connectivity.md +0 -0
  372. /package/templates/base/skills/{mobile/flutter → tsq-flutter}/networking/rules/dio-setup.md +0 -0
  373. /package/templates/base/skills/{mobile/flutter → tsq-flutter}/networking/rules/error-handling.md +0 -0
  374. /package/templates/base/skills/{mobile/flutter → tsq-flutter}/networking/rules/interceptors.md +0 -0
  375. /package/templates/base/skills/{mobile/flutter → tsq-flutter}/networking/rules/retrofit-patterns.md +0 -0
  376. /package/templates/base/skills/{mobile/flutter → tsq-flutter}/push-notifications/SKILL.md +0 -0
  377. /package/templates/base/skills/{mobile/flutter → tsq-flutter}/push-notifications/references/notification-architecture.md +0 -0
  378. /package/templates/base/skills/{mobile/flutter → tsq-flutter}/push-notifications/references/platform-setup.md +0 -0
  379. /package/templates/base/skills/{mobile/flutter → tsq-flutter}/push-notifications/rules/background-processing.md +0 -0
  380. /package/templates/base/skills/{mobile/flutter → tsq-flutter}/push-notifications/rules/deep-linking.md +0 -0
  381. /package/templates/base/skills/{mobile/flutter → tsq-flutter}/push-notifications/rules/fcm-setup.md +0 -0
  382. /package/templates/base/skills/{mobile/flutter → tsq-flutter}/push-notifications/rules/local-notifications.md +0 -0
  383. /package/templates/base/skills/{mobile/flutter → tsq-flutter}/push-notifications/rules/notification-handling.md +0 -0
  384. /package/templates/base/skills/{mobile/flutter → tsq-flutter}/push-notifications/rules/notification-permissions.md +0 -0
  385. /package/templates/base/skills/{mobile/flutter → tsq-flutter}/push-notifications/rules/rich-notifications.md +0 -0
  386. /package/templates/base/skills/{mobile/flutter → tsq-flutter}/references/freezed-patterns.md +0 -0
  387. /package/templates/base/skills/{mobile/flutter → tsq-flutter}/references/project-structure.md +0 -0
  388. /package/templates/base/skills/{mobile/flutter → tsq-flutter}/rules/animations.md +0 -0
  389. /package/templates/base/skills/{mobile/flutter → tsq-flutter}/rules/architecture.md +0 -0
  390. /package/templates/base/skills/{mobile/flutter → tsq-flutter}/rules/navigation-routing.md +0 -0
  391. /package/templates/base/skills/{mobile/flutter → tsq-flutter}/rules/performance.md +0 -0
  392. /package/templates/base/skills/{mobile/flutter → tsq-flutter}/rules/platform-adaptive.md +0 -0
  393. /package/templates/base/skills/{mobile/flutter → tsq-flutter}/rules/state-management.md +0 -0
  394. /package/templates/base/skills/{mobile/flutter → tsq-flutter}/rules/testing.md +0 -0
  395. /package/templates/base/skills/{mobile/flutter → tsq-flutter}/rules/widget-conventions.md +0 -0
  396. /package/templates/base/skills/{mobile/flutter → tsq-flutter}/security/SKILL.md +0 -0
  397. /package/templates/base/skills/{mobile/flutter → tsq-flutter}/security/references/mobile-security-checklist.md +0 -0
  398. /package/templates/base/skills/{mobile/flutter → tsq-flutter}/security/rules/api-key-protection.md +0 -0
  399. /package/templates/base/skills/{mobile/flutter → tsq-flutter}/security/rules/authentication.md +0 -0
  400. /package/templates/base/skills/{mobile/flutter → tsq-flutter}/security/rules/data-protection.md +0 -0
  401. /package/templates/base/skills/{mobile/flutter → tsq-flutter}/security/rules/obfuscation.md +0 -0
  402. /package/templates/base/skills/{mobile/flutter → tsq-flutter}/security/rules/secure-storage.md +0 -0
  403. /package/templates/base/skills/{mobile/flutter → tsq-flutter}/security/rules/ssl-pinning.md +0 -0
  404. /package/templates/base/skills/{backend/node → tsq-hono}/rules/async-patterns.md +0 -0
  405. /package/templates/base/skills/{backend/node → tsq-hono}/rules/deployment.md +0 -0
  406. /package/templates/base/skills/{backend/node → tsq-hono}/rules/env-config.md +0 -0
  407. /package/templates/base/skills/{backend/node → tsq-hono}/rules/error-handling.md +0 -0
  408. /package/templates/base/skills/{backend/node → tsq-hono}/rules/hono-app-setup.md +0 -0
  409. /package/templates/base/skills/{backend/node → tsq-hono}/rules/jwt-auth.md +0 -0
  410. /package/templates/base/skills/{backend/node → tsq-hono}/rules/middleware.md +0 -0
  411. /package/templates/base/skills/{backend/node → tsq-hono}/rules/testing.md +0 -0
  412. /package/templates/base/skills/{frontend/nextjs → tsq-nextjs}/rules/app-router.md +0 -0
  413. /package/templates/base/skills/{planning → tsq-planning}/references/prd-guide.md +0 -0
  414. /package/templates/base/skills/{planning → tsq-planning}/references/requirements-guide.md +0 -0
  415. /package/templates/base/skills/{database/prisma → tsq-prisma}/rules/queries.md +0 -0
  416. /package/templates/base/skills/{database/prisma → tsq-prisma}/rules/schema-design.md +0 -0
  417. /package/templates/base/skills/{frontend/react → tsq-react}/rules/_sections.md +0 -0
  418. /package/templates/base/skills/{frontend/react → tsq-react}/rules/anti-patterns.md +0 -0
  419. /package/templates/base/skills/{frontend/react → tsq-react}/rules/async-api-routes.md +0 -0
  420. /package/templates/base/skills/{frontend/react → tsq-react}/rules/async-defer-await.md +0 -0
  421. /package/templates/base/skills/{frontend/react → tsq-react}/rules/async-dependencies.md +0 -0
  422. /package/templates/base/skills/{frontend/react → tsq-react}/rules/async-parallel.md +0 -0
  423. /package/templates/base/skills/{frontend/react → tsq-react}/rules/async-suspense-boundaries.md +0 -0
  424. /package/templates/base/skills/{frontend/react → tsq-react}/rules/bundle-barrel-imports.md +0 -0
  425. /package/templates/base/skills/{frontend/react → tsq-react}/rules/bundle-defer-third-party.md +0 -0
  426. /package/templates/base/skills/{frontend/react → tsq-react}/rules/bundle-dynamic-imports.md +0 -0
  427. /package/templates/base/skills/{frontend/react → tsq-react}/rules/component-conventions.md +0 -0
  428. /package/templates/base/skills/{frontend/react → tsq-react}/rules/js-combine-iterations.md +0 -0
  429. /package/templates/base/skills/{frontend/react → tsq-react}/rules/js-early-exit.md +0 -0
  430. /package/templates/base/skills/{frontend/react → tsq-react}/rules/js-index-maps.md +0 -0
  431. /package/templates/base/skills/{frontend/react → tsq-react}/rules/js-set-map-lookups.md +0 -0
  432. /package/templates/base/skills/{frontend/react → tsq-react}/rules/rendering-conditional-render.md +0 -0
  433. /package/templates/base/skills/{frontend/react → tsq-react}/rules/rendering-content-visibility.md +0 -0
  434. /package/templates/base/skills/{frontend/react → tsq-react}/rules/rendering-hoist-jsx.md +0 -0
  435. /package/templates/base/skills/{frontend/react → tsq-react}/rules/rerender-defer-reads.md +0 -0
  436. /package/templates/base/skills/{frontend/react → tsq-react}/rules/rerender-derived-state.md +0 -0
  437. /package/templates/base/skills/{frontend/react → tsq-react}/rules/rerender-memo.md +0 -0
  438. /package/templates/base/skills/{frontend/react → tsq-react}/rules/rerender-transitions.md +0 -0
  439. /package/templates/base/skills/{frontend/react → tsq-react}/rules/server-after-nonblocking.md +0 -0
  440. /package/templates/base/skills/{frontend/react → tsq-react}/rules/server-cache-react.md +0 -0
  441. /package/templates/base/skills/{frontend/react → tsq-react}/rules/server-parallel-fetching.md +0 -0
  442. /package/templates/base/skills/{frontend/react → tsq-react}/rules/state-location.md +0 -0
  443. /package/templates/base/skills/{security → tsq-security}/rules/owasp-examples.md +0 -0
  444. /package/templates/base/skills/{security → tsq-security}/scripts/check-secrets.sh +0 -0
  445. /package/templates/base/skills/{stability-verification → tsq-stability}/references/release-checklist.md +0 -0
  446. /package/templates/base/skills/{stability-verification → tsq-stability}/references/security-fix-patterns.md +0 -0
  447. /package/templates/base/skills/{stability-verification → tsq-stability}/rules/verification-layers.md +0 -0
  448. /package/templates/base/skills/{stability-verification → tsq-stability}/rules/verification-workflow.md +0 -0
  449. /package/templates/base/skills/{stability-verification → tsq-stability}/scripts/verify.sh +0 -0
  450. /package/templates/base/skills/{methodology/tdd → tsq-tdd}/rules/real-world-example.md +0 -0
  451. /package/templates/base/skills/{methodology/tdd → tsq-tdd}/rules/techniques.md +0 -0
  452. /package/templates/base/skills/{testing → tsq-testing}/references/testing-patterns.md +0 -0
  453. /package/templates/base/skills/{typescript → tsq-typescript}/rules/type-patterns.md +0 -0
  454. /package/templates/base/skills/{typescript → tsq-typescript}/rules/utility-types.md +0 -0
@@ -18,14 +18,32 @@ user-invocable: false
18
18
  - {핵심 원칙 2}
19
19
  - {핵심 원칙 3}
20
20
 
21
+ ## Contract
22
+
23
+ - **Trigger**: {스킬 활성화 조건}
24
+ - **Input**: {필요한 입력/컨텍스트}
25
+ - **Output**: {보장하는 출력/결과}
26
+ - **Error**: {실패 시 행동}
27
+ - **Dependencies**: {관련 스킬 또는 "없음"}
28
+
29
+ ## Protocol
30
+
31
+ 1. {첫 번째 단계}
32
+ 2. {두 번째 단계}
33
+ 3. {세 번째 단계}
34
+
35
+ ## Verification
36
+
37
+ | Check | Command | Pass Criteria |
38
+ |-------|---------|---------------|
39
+ | {항목} | `{실행 명령}` | exit code 0 |
40
+
21
41
  ## Resources
22
42
 
23
43
  | Priority | Type | Resource | Description |
24
44
  |----------|------|----------|-------------|
25
45
  | CRITICAL | rule | [{rule-name}](rules/{rule-name}.md) | {1줄 설명} |
26
- | HIGH | rule | [{rule-name}](rules/{rule-name}.md) | {1줄 설명} |
27
46
  | HIGH | ref | [{topic}](references/{topic}.md) | {1줄 설명} |
28
- | MEDIUM | script | [{script}](scripts/{script}.sh) | {1줄 설명} |
29
47
 
30
48
  ## Quick Rules
31
49
 
@@ -33,26 +51,22 @@ user-invocable: false
33
51
  - {규칙}
34
52
  - {규칙}
35
53
 
36
- ### {카테고리 2}
37
- - {규칙}
38
- - {규칙}
39
-
40
- ## Checklist
41
-
42
- | Priority | Item |
43
- |----------|------|
44
- | CRITICAL | {필수 확인 항목} |
45
- | HIGH | {중요 확인 항목} |
46
- | MEDIUM | {권장 확인 항목} |
47
-
48
54
  <!--
49
55
  스킬 작성 가이드:
50
56
  - SKILL.md는 120줄 이하 인덱스 (항상 로드됨 → 컨텍스트 절약)
51
- - 하위 디렉토리 3종:
52
- - rules/ → "이렇게 해라/하지 마라" (Incorrect/Correct 패턴, impact 레벨)
57
+ - 필수 섹션: Philosophy, Contract, Protocol, Verification, Quick Rules
58
+ - 선택 섹션: Resources (rules/references/scripts 있을 )
59
+ - Checklist는 Verification으로 통합 (중복 제거)
60
+ - 하위 디렉토리 4종:
61
+ - rules/ → "이렇게 해라/하지 마라" (Incorrect/Correct 패턴, impact 레벨)
53
62
  - references/ → "이것을 알아라" (심층 가이드, 외부 문서)
54
- - scripts/ → "이것을 실행해라" (자동화, 검증, 생성)
63
+ - scripts/ → "이것을 실행해라" (자동화, 검증, 생성)
64
+ - memory/ → "프로젝트에서 결정된 것" (동적, 프로젝트 진행 중 축적)
55
65
  - rules/는 Read로 온디맨드 로드, scripts/는 Bash로 실행 (토큰 0)
66
+ - memory/는 스킬 활성 시 Protocol 첫 단계에서 반드시 Read
67
+ - 프로젝트별 결정사항, 사용자 지시, 컨벤션 축적
68
+ - git 추적 가능 → 팀 공유
69
+ - 예: memory/conventions.md, memory/decisions.md
56
70
  - "Claude가 이미 아는 것"은 넣지 말 것 → 프로젝트 컨벤션만
57
71
  - description은 PRIMARY trigger — 1024자 이하
58
72
  - 참조 모델: vercel-react-best-practices (SKILL.md 인덱스 + 45 rules 파일)
@@ -1,11 +1,11 @@
1
1
  ---
2
- name: architecture
2
+ name: tsq-architecture
3
3
  description: |
4
4
  아키텍처 설계 및 API 명세 가이드라인.
5
5
  Clean Architecture, RESTful API 설계, ADR, 데이터 모델링을 다룸.
6
6
  Use when: "아키텍처 설계, API 설계, ADR, 레이어 구조, 데이터 모델"
7
7
  version: "1.0.0"
8
- tags: [architecture, api, design]
8
+ tags: [tsq, architecture, api, design]
9
9
  user-invocable: false
10
10
  ---
11
11
 
@@ -0,0 +1,74 @@
1
+ ---
2
+ name: tsq-audit
3
+ description: |
4
+ 코드 감사 스킬. 변경 파일 기반으로 관련 스킬 Verification 자동 실행 + 6관점 분석 + severity별 리포트.
5
+ 자기감사(self-audit)와 교차리뷰(cross-review)를 통합.
6
+ Use when: `/tsq-audit` 호출 시, Phase gate 전 품질 확인 시, 코드 리뷰 요청 시, PR 리뷰 시.
7
+ version: "2.0.0"
8
+ tags: [tsq, audit, review, verification, quality, code-review]
9
+ user-invocable: true
10
+ context: fork
11
+ allowed-tools: Read, Grep, Glob, Bash
12
+ argument-hint: "[대상] — 변경 사항 감사/리뷰"
13
+ ---
14
+
15
+ # Code Audit
16
+
17
+ 변경 파일 기반 감사를 수행하여 품질 게이트를 통과하도록 돕는다.
18
+ 별도 컨텍스트(fork)에서 실행하여 구현자와 독립된 판단을 보장한다.
19
+
20
+ ## Contract
21
+
22
+ - **Trigger**: `/tsq-audit` 호출 또는 Phase gate 전 품질 확인
23
+ - **Input**: 현재 변경 파일 목록 + 관련 스킬 Verification
24
+ - **Output**: 스킬별 Verification 결과 + 6관점 severity별 리포트
25
+ - **Error**: Verification 실패 시 해당 항목 + 수정 가이드 출력
26
+ - **Dependencies**: coding, testing, security
27
+
28
+ ## Protocol
29
+
30
+ 1. **변경 수집**: `git diff --name-only` 또는 staged changes로 대상 수집
31
+ 2. **스킬 매칭**: 변경 파일 확장자/경로 기반으로 관련 스킬 자동 감지
32
+ - `.ts/.tsx` → coding, typescript 스킬
33
+ - `test` 포함 경로 → testing 스킬
34
+ - `security`, `auth`, `middleware` → security 스킬
35
+ - `.sh` 파일 → security 스킬 (shellcheck)
36
+ - `schema`, `migration` → database 스킬
37
+ 3. **Verification 실행**: 매칭된 각 스킬의 Verification 테이블에서 Command 실행
38
+ 4. **6관점 분석**: 변경 코드를 아래 관점에서 분석
39
+ 5. **리포트 생성**: severity별 구조화된 결과 출력
40
+
41
+ ## 6관점 분석
42
+
43
+ | 관점 | 점검 항목 |
44
+ |------|----------|
45
+ | **보안** | OWASP Top 10, 시크릿 노출, injection, XSS |
46
+ | **타입 안전성** | any 타입, 타입 단언(as), 미검증 캐스팅 |
47
+ | **에러 핸들링** | catch 누락, 에러 무시, 불완전한 에러 처리 |
48
+ | **API 호환성** | 기존 인터페이스 변경, breaking changes |
49
+ | **테스트 커버리지** | 변경 코드의 테스트 존재 여부 |
50
+ | **성능** | N+1 쿼리, 불필요한 리렌더링, 메모리 누수 |
51
+
52
+ ## Report Format
53
+
54
+ ```
55
+ ## Audit Report
56
+ ### CRITICAL (즉시 수정)
57
+ - [CRITICAL] src/auth.ts:42 — SQL injection 가능성
58
+ ### HIGH (머지 전 수정)
59
+ - [HIGH] src/api.ts:15 — 에러 핸들링 누락
60
+ ### MEDIUM (개선 권장)
61
+ - [MEDIUM] src/utils.ts:8 — any 타입 사용
62
+ ### LOW (참고)
63
+ - [LOW] src/config.ts:3 — 매직넘버 사용
64
+ ```
65
+
66
+ ## Verification
67
+
68
+ | Check | Command | Pass Criteria |
69
+ |-------|---------|---------------|
70
+ | 변경 파일 감지 | `git diff --name-only` | 1개 이상 변경 파일 |
71
+ | 스킬 Verification | 관련 스킬 체크 실행 | 모든 체크 통과 |
72
+ | 6관점 커버리지 | 6가지 관점 체크 | 모든 관점 포함 |
73
+ | severity 분류 | 구조화 리포트 | severity 태그 존재 |
74
+ | 파일/라인 참조 | 코드 위치 명시 | 정확한 위치 참조 |
@@ -1,10 +1,12 @@
1
1
  ---
2
- name: bdd
3
- description: Behavior-Driven Development 가이드라인
2
+ name: tsq-bdd
3
+ description: |
4
+ Behavior-Driven Development 가이드라인. Given-When-Then 시나리오, 비즈니스 언어 기반 명세.
5
+ Use when: BDD 방식 개발, Given-When-Then 시나리오 작성, Feature 파일 작성, 인수 테스트 설계 시.
4
6
  version: "1.0.0"
5
- tags: [bdd, methodology, testing]
7
+ tags: [tsq, bdd, methodology, testing]
6
8
  user-invocable: false
7
- compatible-with: [tdd, ddd]
9
+ compatible-with: [tsq-tdd, tsq-ddd]
8
10
  ---
9
11
 
10
12
  # BDD (Behavior-Driven Development)
@@ -59,11 +61,14 @@ Then [기대 결과]
59
61
  - UI 구현 세부사항 시나리오에 포함
60
62
 
61
63
  ## Checklist
62
- - [ ] Feature 파일이 비즈니스 언어로 작성됨
63
- - [ ] Given-When-Then 형식 준수
64
- - [ ] 시나리오가 독립적으로 실행 가능
65
- - [ ] Step Definition 재사용성 확보
66
- - [ ] Background로 공통 전제조건 추출
64
+
65
+ | Priority | Item |
66
+ |----------|------|
67
+ | CRITICAL | Feature 파일이 비즈니스 언어로 작성됨 |
68
+ | CRITICAL | Given-When-Then 형식 준수 |
69
+ | HIGH | 시나리오가 독립적으로 실행 가능 |
70
+ | HIGH | Step Definition 재사용성 확보 |
71
+ | MEDIUM | Background로 공통 전제조건 추출 |
67
72
 
68
73
  ## 참조
69
74
  - `rules/gherkin-patterns.md` — Feature 파일, Step Definition, API BDD 예시, 디렉토리 구조
@@ -0,0 +1,65 @@
1
+ ---
2
+ name: tsq-coding
3
+ description: |
4
+ 코드 작성 규칙 및 패턴 가이드라인.
5
+ 네이밍 규칙, 함수 원칙, 에러 핸들링, 금지 패턴을 다룸.
6
+ Use when: "코드 작성, 구현, 리팩토링, 네이밍, 코딩 컨벤션"
7
+ version: "1.0.0"
8
+ tags: [tsq, coding, conventions, naming]
9
+ user-invocable: false
10
+ ---
11
+
12
+ # Coding Guidelines
13
+
14
+ 코드 작성 시 일관된 컨벤션과 패턴을 적용한다.
15
+
16
+ ## Philosophy
17
+
18
+ - 단일 책임: 함수는 한 가지 일만 수행
19
+ - 명확한 이름: 코드만 읽고도 동작을 파악 가능
20
+ - 명시적 에러 처리: 에러를 삼키지 않는다
21
+
22
+ ## Contract
23
+
24
+ - **Trigger**: 코드 작성/수정 태스크
25
+ - **Input**: 구현 요구사항 + 기존 코드 컨텍스트
26
+ - **Output**: 컨벤션 준수 코드
27
+ - **Error**: 컨벤션 위반 시 수정 안내
28
+ - **Dependencies**: 없음
29
+
30
+ ## Protocol
31
+
32
+ 1. **컨벤션 확인**: 네이밍, 파일 구조 규칙 확인
33
+ 2. **구현**: 단일 책임 원칙 준수하며 코드 작성
34
+ 3. **린트**: `tsc --noEmit` + 린트 검증
35
+ 4. **리뷰**: 금지 패턴(any, 매직넘버, console.log) 제거 확인
36
+
37
+ ## Verification
38
+
39
+ | Check | Command | Pass Criteria |
40
+ |-------|---------|---------------|
41
+ | 타입 검사 | `tsc --noEmit` | exit code 0 |
42
+ | any 타입 | `grep -r "any" --include="*.ts"` | 0건 (신규 코드) |
43
+ | console.log | `grep -r "console.log" --include="*.ts"` | 0건 (신규 코드) |
44
+ | 함수 크기 | 수동 검증 | 20줄 이내 권장 |
45
+
46
+ ## Resources
47
+
48
+ | Priority | Type | Resource | Description |
49
+ |----------|------|----------|-------------|
50
+ | HIGH | rule | [patterns](rules/patterns.md) | Error Handling, Repository, DTO, Anti-Patterns |
51
+
52
+ ## Quick Rules
53
+
54
+ ### 네이밍
55
+ | 대상 | 규칙 | 예시 |
56
+ |------|------|------|
57
+ | 클래스 | PascalCase | `UserService` |
58
+ | 함수/변수 | camelCase | `getUserById` |
59
+ | 상수 | UPPER_SNAKE | `MAX_RETRY_COUNT` |
60
+ | 파일 | kebab-case | `user-service.ts` |
61
+
62
+ ### 금지
63
+ - `any` 타입 사용
64
+ - 매직 넘버/문자열 사용
65
+ - `console.log` 사용 (logger 사용)
@@ -0,0 +1,81 @@
1
+ ---
2
+ title: Async/Await Best Practices
3
+ impact: HIGH
4
+ tags: coding, async, performance
5
+ ---
6
+
7
+ # Async/Await Best Practices
8
+
9
+ ## Avoid Callback Hell
10
+
11
+ ```typescript
12
+ // Bad: 중첩 콜백
13
+ getUser(id, (user) => {
14
+ getOrders(user.id, (orders) => {
15
+ getItems(orders[0].id, (items) => { /* ... */ });
16
+ });
17
+ });
18
+
19
+ // Good: async/await 플랫 구조
20
+ const user = await getUser(id);
21
+ const orders = await getOrders(user.id);
22
+ const items = await getItems(orders[0].id);
23
+ ```
24
+
25
+ ## Parallel Execution with Promise.all
26
+
27
+ ```typescript
28
+ // Bad: 순차 실행 — 불필요한 대기
29
+ const users = await getUsers();
30
+ const orders = await getOrders();
31
+ const stats = await getStats();
32
+
33
+ // Good: 독립 작업은 병렬 실행
34
+ const [users, orders, stats] = await Promise.all([
35
+ getUsers(),
36
+ getOrders(),
37
+ getStats(),
38
+ ]);
39
+ ```
40
+
41
+ ## Error Propagation
42
+
43
+ ```typescript
44
+ // Bad: 에러 삼킴
45
+ async function fetchData() {
46
+ try { return await api.get('/data'); }
47
+ catch { return []; } // 실패 원인 불명
48
+ }
49
+
50
+ // Good: 의미 있는 에러 변환 후 전파
51
+ async function fetchData() {
52
+ try { return await api.get('/data'); }
53
+ catch (err) {
54
+ throw new AppError('FETCH_FAILED', 'Data fetch failed', 500, err as Error);
55
+ }
56
+ }
57
+ ```
58
+
59
+ ## Promise.allSettled for Partial Failures
60
+
61
+ ```typescript
62
+ const results = await Promise.allSettled([
63
+ sendEmail(user1),
64
+ sendEmail(user2),
65
+ sendEmail(user3),
66
+ ]);
67
+
68
+ const failures = results.filter(
69
+ (r): r is PromiseRejectedResult => r.status === 'rejected',
70
+ );
71
+ if (failures.length) logger.warn('Partial failures', { count: failures.length });
72
+ ```
73
+
74
+ ## Rules
75
+
76
+ | Rule | Description |
77
+ |------|-------------|
78
+ | 불필요한 await 금지 | return 직전 단일 Promise는 await 생략 가능 |
79
+ | for-of + await 주의 | 순차 필요 시만 사용, 아니면 Promise.all |
80
+ | void Promise 금지 | fire-and-forget 시 명시적 .catch 또는 void 연산자 |
81
+ | async 함수 반환 타입 | Promise<T>를 명시적으로 선언 |
@@ -0,0 +1,80 @@
1
+ ---
2
+ title: Code Organization
3
+ impact: MEDIUM
4
+ tags: coding, architecture, modules
5
+ ---
6
+
7
+ # Code Organization
8
+
9
+ ## Single Responsibility
10
+
11
+ ```typescript
12
+ // Bad: 하나의 클래스가 여러 책임
13
+ class UserService {
14
+ async createUser(dto: CreateUserDto) { /* ... */ }
15
+ async sendWelcomeEmail(user: User) { /* ... */ }
16
+ async generateReport(userId: string) { /* ... */ }
17
+ }
18
+
19
+ // Good: 책임 분리
20
+ class UserService { async createUser(dto: CreateUserDto) { /* ... */ } }
21
+ class NotificationService { async sendWelcomeEmail(user: User) { /* ... */ } }
22
+ class ReportService { async generateReport(userId: string) { /* ... */ } }
23
+ ```
24
+
25
+ ## Module Boundaries
26
+
27
+ ```
28
+ src/
29
+ modules/
30
+ user/
31
+ user.service.ts
32
+ user.repository.ts
33
+ user.types.ts
34
+ index.ts # barrel export (public API)
35
+ order/
36
+ order.service.ts
37
+ order.repository.ts
38
+ order.types.ts
39
+ index.ts
40
+ ```
41
+
42
+ ## Barrel Exports
43
+
44
+ ```typescript
45
+ // modules/user/index.ts — 공개 인터페이스만 노출
46
+ export { UserService } from './user.service';
47
+ export type { User, CreateUserDto } from './user.types';
48
+ // user.repository.ts는 내부 구현이므로 export하지 않음
49
+
50
+ // 외부에서 사용
51
+ import { UserService, type User } from '@/modules/user';
52
+ ```
53
+
54
+ ## Circular Dependency Prevention
55
+
56
+ ```typescript
57
+ // Bad: A -> B -> A 순환 참조
58
+ // user.service.ts imports order.service.ts
59
+ // order.service.ts imports user.service.ts
60
+
61
+ // Good: 공통 인터페이스 추출
62
+ // shared/types.ts
63
+ export interface IUserLookup {
64
+ findById(id: string): Promise<User | null>;
65
+ }
66
+
67
+ // order.service.ts — 인터페이스에 의존
68
+ class OrderService {
69
+ constructor(private userLookup: IUserLookup) {}
70
+ }
71
+ ```
72
+
73
+ ## Rules
74
+
75
+ | Rule | Description |
76
+ |------|-------------|
77
+ | 파일 300줄 제한 | 초과 시 분리 검토 |
78
+ | 모듈 간 직접 import 금지 | barrel export(index.ts)를 통해서만 접근 |
79
+ | 상위 레이어 import 금지 | domain -> infra 방향 import 불가 |
80
+ | 공유 타입은 shared/ | 두 모듈 이상에서 사용되면 shared로 이동 |
@@ -0,0 +1,76 @@
1
+ ---
2
+ title: Error Handling Patterns
3
+ impact: HIGH
4
+ tags: coding, error-handling, resilience
5
+ ---
6
+
7
+ # Error Handling Patterns
8
+
9
+ ## Custom Error Classes
10
+
11
+ ```typescript
12
+ class AppError extends Error {
13
+ constructor(
14
+ public readonly code: string,
15
+ message: string,
16
+ public readonly statusCode: number = 500,
17
+ public readonly cause?: Error,
18
+ ) {
19
+ super(message);
20
+ this.name = this.constructor.name;
21
+ }
22
+ }
23
+
24
+ class NotFoundError extends AppError {
25
+ constructor(code: string, message: string) {
26
+ super(code, message, 404);
27
+ }
28
+ }
29
+
30
+ class ValidationError extends AppError {
31
+ constructor(code: string, message: string, public readonly fields: string[]) {
32
+ super(code, message, 400);
33
+ }
34
+ }
35
+ ```
36
+
37
+ ## Never Swallow Errors
38
+
39
+ ```typescript
40
+ // Bad: 에러 무시 — 디버깅 불가
41
+ try { await save(data); } catch {}
42
+
43
+ // Bad: 원인 손실
44
+ try { await save(data); } catch { throw new Error('save failed'); }
45
+
46
+ // Good: 원인 체이닝
47
+ try { await save(data); } catch (err) {
48
+ throw new AppError('SAVE_FAILED', 'Data save failed', 500, err as Error);
49
+ }
50
+ ```
51
+
52
+ ## Error Boundaries (React)
53
+
54
+ ```typescript
55
+ class ErrorBoundary extends React.Component<Props, { error?: Error }> {
56
+ static getDerivedStateFromError(error: Error) {
57
+ return { error };
58
+ }
59
+ componentDidCatch(error: Error, info: React.ErrorInfo) {
60
+ logger.error('UI Error', { error, componentStack: info.componentStack });
61
+ }
62
+ render() {
63
+ if (this.state.error) return this.props.fallback;
64
+ return this.props.children;
65
+ }
66
+ }
67
+ ```
68
+
69
+ ## Rules
70
+
71
+ | Rule | Description |
72
+ |------|-------------|
73
+ | 에러 로깅 필수 | catch 블록에서 최소 로깅 또는 re-throw |
74
+ | 사용자 메시지 분리 | 내부 에러와 사용자 노출 메시지를 분리 |
75
+ | 에러 코드 사용 | 문자열 비교 대신 enum/const 에러 코드 |
76
+ | cause 체이닝 | 원본 에러를 cause로 보존 |
@@ -0,0 +1,85 @@
1
+ ---
2
+ title: TypeScript Type Safety
3
+ impact: HIGH
4
+ tags: coding, typescript, type-safety
5
+ ---
6
+
7
+ # TypeScript Type Safety
8
+
9
+ ## Strict Mode
10
+
11
+ ```jsonc
12
+ // tsconfig.json — 최소 필수 설정
13
+ {
14
+ "compilerOptions": {
15
+ "strict": true,
16
+ "noUncheckedIndexedAccess": true,
17
+ "exactOptionalPropertyTypes": true
18
+ }
19
+ }
20
+ ```
21
+
22
+ ## Avoid `any`
23
+
24
+ ```typescript
25
+ // Bad: any는 타입 검사를 무력화
26
+ function process(data: any) { return data.name; }
27
+
28
+ // Good: 제네릭 또는 unknown 사용
29
+ function process<T extends { name: string }>(data: T) { return data.name; }
30
+
31
+ // Good: unknown + 타입 가드
32
+ function process(data: unknown): string {
33
+ if (typeof data === 'object' && data !== null && 'name' in data) {
34
+ return (data as { name: string }).name;
35
+ }
36
+ throw new Error('Invalid data');
37
+ }
38
+ ```
39
+
40
+ ## Discriminated Unions
41
+
42
+ ```typescript
43
+ // 상태별 안전한 분기 처리
44
+ type Result<T> =
45
+ | { status: 'success'; data: T }
46
+ | { status: 'error'; error: AppError }
47
+ | { status: 'loading' };
48
+
49
+ function handle(result: Result<User>) {
50
+ switch (result.status) {
51
+ case 'success': return render(result.data); // data 타입 보장
52
+ case 'error': return showError(result.error);
53
+ case 'loading': return showSpinner();
54
+ }
55
+ // exhaustiveness check: 누락된 case가 있으면 컴파일 에러
56
+ const _exhaustive: never = result;
57
+ }
58
+ ```
59
+
60
+ ## Branded Types
61
+
62
+ ```typescript
63
+ // 같은 string이지만 혼용 방지
64
+ type UserId = string & { readonly __brand: 'UserId' };
65
+ type OrderId = string & { readonly __brand: 'OrderId' };
66
+
67
+ function createUserId(id: string): UserId { return id as UserId; }
68
+ function createOrderId(id: string): OrderId { return id as OrderId; }
69
+
70
+ function getUser(id: UserId) { /* ... */ }
71
+
72
+ const userId = createUserId('u-123');
73
+ const orderId = createOrderId('o-456');
74
+ getUser(userId); // OK
75
+ // getUser(orderId); // Compile error
76
+ ```
77
+
78
+ ## Rules
79
+
80
+ | Rule | Description |
81
+ |------|-------------|
82
+ | any 사용 금지 | eslint no-explicit-any 활성화 |
83
+ | as 캐스팅 최소화 | 타입 가드 또는 제네릭으로 대체 |
84
+ | union exhaustiveness | switch문에 never 체크 포함 |
85
+ | optional vs undefined | 선택 속성과 undefined 값을 구분 |
@@ -0,0 +1,81 @@
1
+ ---
2
+ name: tsq-controller
3
+ description: |
4
+ Context DI 컨테이너. 서브에이전트 위임 시 compiled spec을 의존성으로 주입.
5
+ 서브에이전트 호출, Task() 위임, 에이전트 실행 시 자동 트리거.
6
+ Use when: "구현해줘", "테스트해줘", "리뷰해줘", "설계해줘", 서브에이전트 위임
7
+ version: "2.1.0"
8
+ tags: [tsq, controller, di, context-injection]
9
+ user-invocable: false
10
+ ---
11
+
12
+ # Controller (Context DI Container)
13
+
14
+ 서브에이전트에게 작업을 위임할 때 컨텍스트를 자동 해석하고 주입하는 컨테이너.
15
+
16
+ ## Contract
17
+
18
+ - **Trigger**: 서브에이전트 위임 시 (구현, 테스트, 리뷰 등)
19
+ - **Input**: 에이전트 파일 + prerequisites + compiled specs
20
+ - **Output**: 조합된 프롬프트로 Task() 실행
21
+ - **Error**: spec stale 시 `tsq compile` 재실행 안내
22
+
23
+ ## Protocol
24
+
25
+ 1. **Memory 참조**: `memory/` 디렉토리의 모든 .md 파일 Read
26
+ 2. **SSOT Map 참조**: `.timsquad/ssot-map.yaml` → 티어 compiled spec 목록 확인
27
+ 3. **Capability Token 발급**: `.timsquad/state/controller-active` + `allowed-paths.txt` 생성
28
+ 4. **에이전트 파일 확인**: `.claude/agents/{agent}.md` 읽기
29
+ 5. **Prerequisites 파싱**: `<prerequisites>` 태그에서 SSOT 목록 추출
30
+ 6. **Spec Resolve**: `references/`에서 해당 compiled spec 로드
31
+ 7. **Stale 체크**: `.compile-manifest.json` hash 비교
32
+ 8. **방법론 참조**: `config.yaml`의 `methodology.development` → 해당 스킬 Protocol 로드
33
+ 9. **프롬프트 조합**: tsq-protocol + **phase-memory carry-over** + memory + specs + methodology + phase 제약 + 지시
34
+ - `.timsquad/state/phase-memory.md` 존재 시 carry-over/주의 섹션을 프롬프트 앞에 강제 삽입
35
+ - 미존재 시 스킵 (초기 프로젝트)
36
+ 10. **Task() 호출**: 조합된 프롬프트로 서브에이전트 실행. 에이전트 파일의 `model` 필드가 있으면 Task()의 model 파라미터로 전달 (예: model: sonnet → 빠른 모델, model: opus → 정밀 모델)
37
+ 11. **Completion Report 검증**: 5개 필드(Task, Status, Files, Tests, Notes) 확인 — 누락 시 재요청
38
+ 12. **완료 트리거**: Triggers 섹션의 해당 규칙 수행
39
+ 13. **Capability Token 회수**: `controller-active` + `allowed-paths.txt` 삭제
40
+
41
+ ## Delegation Rules
42
+
43
+ **Developer** — 코드 구현 + 단위 테스트. 도구: 전체. 완료: 테스트 통과 + `tsc --noEmit` 클린.
44
+ **QA** (`tsq-qa.md`) — 코드 리뷰 (읽기 전용). 도구: Read, Grep, Glob, Bash. 출력: severity별 리포트.
45
+ **Librarian** (`tsq-librarian.md`) — Phase 종합 기록 (소스 수정 금지). 도구: 전체 (src/ 제외). 호출 조건: Phase Gate PASS.
46
+ **Architect** (`tsq-architect.md`) — 실행 계획 검증 (읽기 전용, fork 컨텍스트). 도구: Read, Grep, Glob. 출력: 커버리지/의존성/크기 검증 리포트.
47
+
48
+ ## Triggers
49
+
50
+ 동기(Controller) = 프로세스 강제, 게이트 판정. 비동기(Daemon) = 관찰, 로그 기록. Daemon 장애 시 Controller는 정상 동작.
51
+
52
+ ### task-complete (동기)
53
+ 1. **Completion Report 검증** — 5개 필드(Task, Status, Files, Tests, Notes) 확인, 누락 시 재요청
54
+ 2. **단위 테스트 확인** — Status=pass 필수, fail 시 Developer에 재위임
55
+ 3. **L1 로그 + Decision Log 확인** — Daemon이 L1 생성 (SubagentStop Hook). Daemon 장애 시 Controller가 수동 기록
56
+ 4. **workflow.json 갱신** — `.timsquad/state/workflow.json`에 완료된 task/sequence/phase 상태 기록 (compact 후 재개 시 진행 상태 복구용)
57
+ 5. **Sequence 완료 판정**: 해당 sequence의 expected_agents 모두 완료 → sequence-complete
58
+ 6. **미완료 시**: 다음 태스크 위임. planning.md의 해당 Task 산출물(출력 파일)이 이미 존재하면 스킵하고 그 다음 Task로 진행 (세션 재개 시 중복 작업 방지)
59
+
60
+ ### sequence-complete (동기)
61
+ 1. **통합 게이트**: `npm run test:integration` + `tsc --noEmit` — 실패 시 차단, Developer에 수정 위임
62
+ 2. **L2 로그 확인**: `.timsquad/logs/sequences/{seq-id}.md` 존재 확인
63
+ 3. **문서 갱신 체크**: ROADMAP/STATUS/CHANGELOG stale 여부 (7일 이상 미수정 시 경고)
64
+ 3.5. **Spec Compliance 체크**: 해당 Sequence의 Sub-PRD Must-Have 목록과 완료된 Task 산출물을 대조. 누락 항목이 있으면 경고 표시 (block 아님 — 다른 Sequence나 Phase에서 처리 가능). 경고 내용을 L2 로그에 기록
65
+ 4. **Phase 완료 판정**: 모든 시퀀스 완료 → phase-complete
66
+
67
+ ### phase-complete (동기)
68
+ 1. **E2E 게이트**: `npm run test:e2e` — 실패 시 차단
69
+ 2. **L3 로그 + Phase Gate 확인**: `.timsquad/logs/phases/{phase-id}.md` 존재
70
+ 3. **Librarian 호출**: Task(librarian) — Phase Memory 아카이브 + 새 HEAD 생성 + Trail + 리포트
71
+ 4. **사용자 안내**: "Phase {id} 완료. 다음 단계: (1) `/tsq-retro` — 회고 실행, (2) `/clear` — 컨텍스트 초기화 (phase-memory 자동 주입됩니다)"
72
+
73
+ ### ssot-changed (비동기, Daemon 전담)
74
+ Daemon이 파일 감시로 `.compile-manifest.json` 갱신. 다음 Controller 실행 시 Stale 체크로 감지.
75
+
76
+ ## Mode Declaration
77
+ 서브에이전트 매 응답 첫 줄: `[MODE: {phase}] [TASK: {id}] [SPEC: {file}]`
78
+
79
+ ## P3 Workflow
80
+ Developer(구현+테스트) → vitest → QA(L1 피드백) → L2 자동 생성.
81
+ QA 진입: developer completed + tests pass + build success.
@@ -1,8 +1,10 @@
1
1
  ---
2
- name: dart
3
- description: Dart 언어 가이드라인. Sound null safety, 패턴 매칭, sealed class, 비동기 프로그래밍, Effective Dart 스타일.
2
+ name: tsq-dart
3
+ description: |
4
+ Dart 언어 가이드라인. Sound null safety, 패턴 매칭, sealed class, 비동기 프로그래밍, Effective Dart 스타일.
5
+ Use when: Dart 코드 작성·수정, null safety 적용, 패턴 매칭 사용, .dart 파일 편집 시.
4
6
  version: "1.0.0"
5
- tags: [dart, language, null-safety, async]
7
+ tags: [tsq, dart, language, null-safety, async]
6
8
  user-invocable: false
7
9
  ---
8
10