timsquad 2.1.0 → 3.3.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 (345) hide show
  1. package/README.md +124 -724
  2. package/dist/commands/daemon.d.ts +7 -0
  3. package/dist/commands/daemon.d.ts.map +1 -0
  4. package/dist/commands/daemon.js +140 -0
  5. package/dist/commands/daemon.js.map +1 -0
  6. package/dist/commands/feedback.d.ts +9 -0
  7. package/dist/commands/feedback.d.ts.map +1 -1
  8. package/dist/commands/feedback.js +235 -14
  9. package/dist/commands/feedback.js.map +1 -1
  10. package/dist/commands/full.js +2 -2
  11. package/dist/commands/full.js.map +1 -1
  12. package/dist/commands/init.d.ts.map +1 -1
  13. package/dist/commands/init.js +107 -20
  14. package/dist/commands/init.js.map +1 -1
  15. package/dist/commands/knowledge.d.ts +3 -0
  16. package/dist/commands/knowledge.d.ts.map +1 -0
  17. package/dist/commands/knowledge.js +316 -0
  18. package/dist/commands/knowledge.js.map +1 -0
  19. package/dist/commands/log.d.ts +27 -0
  20. package/dist/commands/log.d.ts.map +1 -1
  21. package/dist/commands/log.js +965 -0
  22. package/dist/commands/log.js.map +1 -1
  23. package/dist/commands/meta-index.d.ts +3 -0
  24. package/dist/commands/meta-index.d.ts.map +1 -0
  25. package/dist/commands/meta-index.js +401 -0
  26. package/dist/commands/meta-index.js.map +1 -0
  27. package/dist/commands/metrics.d.ts.map +1 -1
  28. package/dist/commands/metrics.js +239 -4
  29. package/dist/commands/metrics.js.map +1 -1
  30. package/dist/commands/retro.js +154 -6
  31. package/dist/commands/retro.js.map +1 -1
  32. package/dist/commands/upgrade.d.ts +8 -0
  33. package/dist/commands/upgrade.d.ts.map +1 -0
  34. package/dist/commands/upgrade.js +287 -0
  35. package/dist/commands/upgrade.js.map +1 -0
  36. package/dist/commands/workflow.d.ts +3 -0
  37. package/dist/commands/workflow.d.ts.map +1 -0
  38. package/dist/commands/workflow.js +607 -0
  39. package/dist/commands/workflow.js.map +1 -0
  40. package/dist/daemon/context-writer.d.ts +16 -0
  41. package/dist/daemon/context-writer.d.ts.map +1 -0
  42. package/dist/daemon/context-writer.js +35 -0
  43. package/dist/daemon/context-writer.js.map +1 -0
  44. package/dist/daemon/entry.d.ts +7 -0
  45. package/dist/daemon/entry.d.ts.map +1 -0
  46. package/dist/daemon/entry.js +17 -0
  47. package/dist/daemon/entry.js.map +1 -0
  48. package/dist/daemon/event-queue.d.ts +52 -0
  49. package/dist/daemon/event-queue.d.ts.map +1 -0
  50. package/dist/daemon/event-queue.js +255 -0
  51. package/dist/daemon/event-queue.js.map +1 -0
  52. package/dist/daemon/file-watcher.d.ts +19 -0
  53. package/dist/daemon/file-watcher.d.ts.map +1 -0
  54. package/dist/daemon/file-watcher.js +87 -0
  55. package/dist/daemon/file-watcher.js.map +1 -0
  56. package/dist/daemon/index.d.ts +28 -0
  57. package/dist/daemon/index.d.ts.map +1 -0
  58. package/dist/daemon/index.js +204 -0
  59. package/dist/daemon/index.js.map +1 -0
  60. package/dist/daemon/jsonl-watcher.d.ts +49 -0
  61. package/dist/daemon/jsonl-watcher.d.ts.map +1 -0
  62. package/dist/daemon/jsonl-watcher.js +258 -0
  63. package/dist/daemon/jsonl-watcher.js.map +1 -0
  64. package/dist/daemon/meta-cache.d.ts +62 -0
  65. package/dist/daemon/meta-cache.d.ts.map +1 -0
  66. package/dist/daemon/meta-cache.js +240 -0
  67. package/dist/daemon/meta-cache.js.map +1 -0
  68. package/dist/daemon/shutdown.d.ts +21 -0
  69. package/dist/daemon/shutdown.d.ts.map +1 -0
  70. package/dist/daemon/shutdown.js +158 -0
  71. package/dist/daemon/shutdown.js.map +1 -0
  72. package/dist/index.js +20 -3
  73. package/dist/index.js.map +1 -1
  74. package/dist/lib/agent-composer.d.ts +38 -0
  75. package/dist/lib/agent-composer.d.ts.map +1 -0
  76. package/dist/lib/agent-composer.js +128 -0
  77. package/dist/lib/agent-composer.js.map +1 -0
  78. package/dist/lib/agent-generator.d.ts +22 -0
  79. package/dist/lib/agent-generator.d.ts.map +1 -0
  80. package/dist/lib/agent-generator.js +150 -0
  81. package/dist/lib/agent-generator.js.map +1 -0
  82. package/dist/lib/ast-parser.d.ts +11 -0
  83. package/dist/lib/ast-parser.d.ts.map +1 -0
  84. package/dist/lib/ast-parser.js +282 -0
  85. package/dist/lib/ast-parser.js.map +1 -0
  86. package/dist/lib/config.d.ts +6 -2
  87. package/dist/lib/config.d.ts.map +1 -1
  88. package/dist/lib/config.js +27 -3
  89. package/dist/lib/config.js.map +1 -1
  90. package/dist/lib/meta-index.d.ts +19 -0
  91. package/dist/lib/meta-index.d.ts.map +1 -0
  92. package/dist/lib/meta-index.js +573 -0
  93. package/dist/lib/meta-index.js.map +1 -0
  94. package/dist/lib/project.js +1 -1
  95. package/dist/lib/project.js.map +1 -1
  96. package/dist/lib/skill-generator.d.ts +32 -0
  97. package/dist/lib/skill-generator.d.ts.map +1 -0
  98. package/dist/lib/skill-generator.js +187 -0
  99. package/dist/lib/skill-generator.js.map +1 -0
  100. package/dist/lib/template.d.ts +16 -2
  101. package/dist/lib/template.d.ts.map +1 -1
  102. package/dist/lib/template.js +109 -20
  103. package/dist/lib/template.js.map +1 -1
  104. package/dist/lib/ui-index.d.ts +12 -0
  105. package/dist/lib/ui-index.d.ts.map +1 -0
  106. package/dist/lib/ui-index.js +239 -0
  107. package/dist/lib/ui-index.js.map +1 -0
  108. package/dist/lib/ui-parser.d.ts +12 -0
  109. package/dist/lib/ui-parser.d.ts.map +1 -0
  110. package/dist/lib/ui-parser.js +472 -0
  111. package/dist/lib/ui-parser.js.map +1 -0
  112. package/dist/lib/update-check.d.ts +6 -0
  113. package/dist/lib/update-check.d.ts.map +1 -0
  114. package/dist/lib/update-check.js +121 -0
  115. package/dist/lib/update-check.js.map +1 -0
  116. package/dist/lib/upgrade-backup.d.ts +33 -0
  117. package/dist/lib/upgrade-backup.d.ts.map +1 -0
  118. package/dist/lib/upgrade-backup.js +101 -0
  119. package/dist/lib/upgrade-backup.js.map +1 -0
  120. package/dist/lib/version.d.ts +19 -0
  121. package/dist/lib/version.d.ts.map +1 -0
  122. package/dist/lib/version.js +35 -0
  123. package/dist/lib/version.js.map +1 -0
  124. package/dist/lib/workflow-state.d.ts +48 -0
  125. package/dist/lib/workflow-state.d.ts.map +1 -0
  126. package/dist/lib/workflow-state.js +67 -0
  127. package/dist/lib/workflow-state.js.map +1 -0
  128. package/dist/types/config.d.ts +102 -2
  129. package/dist/types/config.d.ts.map +1 -1
  130. package/dist/types/config.js +173 -9
  131. package/dist/types/config.js.map +1 -1
  132. package/dist/types/feedback.d.ts +7 -0
  133. package/dist/types/feedback.d.ts.map +1 -1
  134. package/dist/types/feedback.js +1 -1
  135. package/dist/types/feedback.js.map +1 -1
  136. package/dist/types/index.d.ts +3 -0
  137. package/dist/types/index.d.ts.map +1 -1
  138. package/dist/types/index.js +3 -0
  139. package/dist/types/index.js.map +1 -1
  140. package/dist/types/meta-index.d.ts +146 -0
  141. package/dist/types/meta-index.d.ts.map +1 -0
  142. package/dist/types/meta-index.js +7 -0
  143. package/dist/types/meta-index.js.map +1 -0
  144. package/dist/types/project.d.ts +18 -2
  145. package/dist/types/project.d.ts.map +1 -1
  146. package/dist/types/project.js +21 -0
  147. package/dist/types/project.js.map +1 -1
  148. package/dist/types/task-log.d.ts +208 -0
  149. package/dist/types/task-log.d.ts.map +1 -0
  150. package/dist/types/task-log.js +6 -0
  151. package/dist/types/task-log.js.map +1 -0
  152. package/dist/types/ui-meta.d.ts +118 -0
  153. package/dist/types/ui-meta.d.ts.map +1 -0
  154. package/dist/types/ui-meta.js +7 -0
  155. package/dist/types/ui-meta.js.map +1 -0
  156. package/package.json +12 -4
  157. package/templates/base/agents/base/tsq-architect.md +68 -0
  158. package/templates/base/agents/base/tsq-dba.md +56 -0
  159. package/templates/base/agents/base/tsq-designer.md +72 -0
  160. package/templates/base/agents/base/tsq-developer.md +67 -0
  161. package/templates/base/agents/base/tsq-qa.md +55 -0
  162. package/templates/base/agents/base/tsq-security.md +65 -0
  163. package/templates/base/agents/overlays/domain/general-web/_common.md +11 -0
  164. package/templates/base/agents/overlays/platform/claude-code.md +12 -0
  165. package/templates/base/config.template.yaml +213 -0
  166. package/templates/base/knowledge/checklists/accessibility.md +37 -0
  167. package/templates/base/knowledge/checklists/architecture-review.md +28 -0
  168. package/templates/base/knowledge/checklists/database-standards.md +84 -0
  169. package/templates/base/knowledge/checklists/design-reference.md +97 -0
  170. package/templates/base/knowledge/checklists/security.md +50 -0
  171. package/templates/base/knowledge/checklists/ssot-validation.md +19 -0
  172. package/templates/base/knowledge/domains/_template.md +16 -0
  173. package/templates/base/knowledge/platforms/_template.md +16 -0
  174. package/templates/base/knowledge/templates/sequence-report.md +44 -0
  175. package/templates/base/knowledge/templates/task-result.md +105 -0
  176. package/templates/base/skills/_template/SKILL.md +59 -0
  177. package/templates/base/skills/_template/references/_template.md +35 -0
  178. package/templates/base/skills/_template/rules/_sections.md +34 -0
  179. package/templates/base/skills/_template/rules/_template.md +32 -0
  180. package/templates/base/skills/_template/scripts/_template.sh +31 -0
  181. package/templates/base/skills/architecture/SKILL.md +54 -0
  182. package/templates/base/skills/architecture/references/adr-template.md +50 -0
  183. package/templates/base/skills/architecture/references/api-design.md +64 -0
  184. package/templates/base/skills/backend/node/SKILL.md +81 -0
  185. package/templates/base/skills/backend/node/rules/async-patterns.md +81 -0
  186. package/templates/base/skills/backend/node/rules/deployment.md +33 -0
  187. package/templates/base/skills/backend/node/rules/env-config.md +41 -0
  188. package/templates/base/skills/backend/node/rules/error-handling.md +83 -0
  189. package/templates/base/skills/backend/node/rules/hono-app-setup.md +98 -0
  190. package/templates/base/skills/backend/node/rules/jwt-auth.md +76 -0
  191. package/templates/base/skills/backend/node/rules/middleware.md +56 -0
  192. package/templates/base/skills/backend/node/rules/testing.md +82 -0
  193. package/templates/base/skills/coding/SKILL.md +47 -0
  194. package/templates/base/skills/coding/rules/patterns.md +81 -0
  195. package/templates/base/skills/database/SKILL.md +98 -0
  196. package/templates/base/skills/database/prisma/SKILL.md +57 -0
  197. package/templates/base/skills/database/prisma/rules/queries.md +133 -0
  198. package/templates/base/skills/database/prisma/rules/schema-design.md +80 -0
  199. package/templates/base/skills/frontend/nextjs/SKILL.md +59 -0
  200. package/templates/base/skills/frontend/nextjs/rules/app-router.md +138 -0
  201. package/templates/base/skills/frontend/react/SKILL.md +86 -0
  202. package/templates/base/skills/frontend/react/rules/_sections.md +88 -0
  203. package/templates/base/skills/frontend/react/rules/anti-patterns.md +67 -0
  204. package/templates/base/skills/frontend/react/rules/async-api-routes.md +38 -0
  205. package/templates/base/skills/frontend/react/rules/async-defer-await.md +80 -0
  206. package/templates/base/skills/frontend/react/rules/async-dependencies.md +36 -0
  207. package/templates/base/skills/frontend/react/rules/async-parallel.md +28 -0
  208. package/templates/base/skills/frontend/react/rules/async-suspense-boundaries.md +99 -0
  209. package/templates/base/skills/frontend/react/rules/bundle-barrel-imports.md +59 -0
  210. package/templates/base/skills/frontend/react/rules/bundle-defer-third-party.md +49 -0
  211. package/templates/base/skills/frontend/react/rules/bundle-dynamic-imports.md +35 -0
  212. package/templates/base/skills/frontend/react/rules/component-conventions.md +74 -0
  213. package/templates/base/skills/frontend/react/rules/js-combine-iterations.md +32 -0
  214. package/templates/base/skills/frontend/react/rules/js-early-exit.md +50 -0
  215. package/templates/base/skills/frontend/react/rules/js-index-maps.md +37 -0
  216. package/templates/base/skills/frontend/react/rules/js-set-map-lookups.md +24 -0
  217. package/templates/base/skills/frontend/react/rules/rendering-conditional-render.md +40 -0
  218. package/templates/base/skills/frontend/react/rules/rendering-content-visibility.md +38 -0
  219. package/templates/base/skills/frontend/react/rules/rendering-hoist-jsx.md +46 -0
  220. package/templates/base/skills/frontend/react/rules/rerender-defer-reads.md +39 -0
  221. package/templates/base/skills/frontend/react/rules/rerender-derived-state.md +29 -0
  222. package/templates/base/skills/frontend/react/rules/rerender-memo.md +44 -0
  223. package/templates/base/skills/frontend/react/rules/rerender-transitions.md +40 -0
  224. package/templates/base/skills/frontend/react/rules/server-after-nonblocking.md +73 -0
  225. package/templates/base/skills/frontend/react/rules/server-cache-react.md +26 -0
  226. package/templates/base/skills/frontend/react/rules/server-parallel-fetching.md +79 -0
  227. package/templates/base/skills/frontend/react/rules/state-location.md +55 -0
  228. package/templates/base/skills/methodology/bdd/SKILL.md +69 -0
  229. package/templates/base/skills/methodology/bdd/rules/gherkin-patterns.md +113 -0
  230. package/templates/base/skills/methodology/ddd/SKILL.md +74 -0
  231. package/templates/base/skills/methodology/ddd/rules/strategic-patterns.md +98 -0
  232. package/templates/base/skills/methodology/debugging/SKILL.md +60 -0
  233. package/templates/base/skills/methodology/debugging/references/root-cause-tracing.md +84 -0
  234. package/templates/base/skills/methodology/tdd/SKILL.md +66 -0
  235. package/templates/base/skills/methodology/tdd/rules/real-world-example.md +88 -0
  236. package/templates/base/skills/methodology/tdd/rules/techniques.md +185 -0
  237. package/templates/base/skills/planning/SKILL.md +58 -0
  238. package/templates/base/skills/planning/references/prd-guide.md +47 -0
  239. package/templates/base/skills/planning/references/requirements-guide.md +46 -0
  240. package/templates/base/skills/prompt-engineering/SKILL.md +103 -0
  241. package/templates/base/skills/retrospective/SKILL.md +102 -0
  242. package/templates/base/skills/security/SKILL.md +55 -0
  243. package/templates/base/skills/security/rules/owasp-examples.md +119 -0
  244. package/templates/base/skills/security/scripts/check-secrets.sh +55 -0
  245. package/templates/base/skills/testing/SKILL.md +63 -0
  246. package/templates/base/skills/testing/references/testing-patterns.md +103 -0
  247. package/templates/base/skills/tsq-protocol/SKILL.md +51 -0
  248. package/templates/base/skills/typescript/SKILL.md +67 -0
  249. package/templates/base/skills/typescript/rules/type-patterns.md +135 -0
  250. package/templates/base/skills/typescript/rules/utility-types.md +76 -0
  251. package/templates/base/skills/ui-design/SKILL.md +70 -0
  252. package/templates/{common → base}/timsquad/feedback/routing-rules.yaml +1 -1
  253. package/templates/{common → base}/timsquad/retrospective/metrics/metrics-schema.json +46 -1
  254. package/templates/platforms/claude-code/CLAUDE.md.template +64 -0
  255. package/templates/platforms/claude-code/rules/adr-rules.md +32 -0
  256. package/templates/platforms/claude-code/rules/feedback-routing.md +18 -0
  257. package/templates/platforms/claude-code/rules/phase-management.md +23 -0
  258. package/templates/platforms/claude-code/rules/reporting-format.md +26 -0
  259. package/templates/platforms/claude-code/rules/sequence-management.md +72 -0
  260. package/templates/platforms/claude-code/rules/workspace-sync.md +33 -0
  261. package/templates/platforms/claude-code/settings.json +26 -0
  262. package/templates/project-types/api-backend/config.yaml +227 -0
  263. package/templates/project-types/api-backend/process/workflow.xml +214 -0
  264. package/templates/project-types/fintech/config.yaml +151 -0
  265. package/templates/project-types/fintech/process/workflow.xml +316 -0
  266. package/templates/project-types/infra/config.yaml +327 -0
  267. package/templates/project-types/infra/process/workflow.xml +296 -0
  268. package/templates/project-types/platform/config.yaml +254 -0
  269. package/templates/project-types/platform/process/workflow.xml +254 -0
  270. package/templates/project-types/web-app/config.yaml +198 -0
  271. package/templates/project-types/web-app/process/workflow.xml +210 -0
  272. package/templates/project-types/web-service/config.yaml +136 -0
  273. package/templates/project-types/web-service/process/workflow.xml +184 -0
  274. package/templates/common/CLAUDE.md.template +0 -254
  275. package/templates/common/claude/agents/tsq-dba.md +0 -311
  276. package/templates/common/claude/agents/tsq-designer.md +0 -323
  277. package/templates/common/claude/agents/tsq-developer.md +0 -177
  278. package/templates/common/claude/agents/tsq-planner.md +0 -190
  279. package/templates/common/claude/agents/tsq-prompter.md +0 -356
  280. package/templates/common/claude/agents/tsq-qa.md +0 -168
  281. package/templates/common/claude/agents/tsq-retro.md +0 -193
  282. package/templates/common/claude/agents/tsq-security.md +0 -221
  283. package/templates/common/claude/hooks/auto-metrics.sh +0 -165
  284. package/templates/common/claude/hooks/auto-worklog.sh +0 -245
  285. package/templates/common/claude/hooks/event-logger.sh +0 -208
  286. package/templates/common/claude/settings.json +0 -86
  287. package/templates/common/claude/skills/architecture/SKILL.md +0 -123
  288. package/templates/common/claude/skills/backend/node/SKILL.md +0 -1015
  289. package/templates/common/claude/skills/coding/SKILL.md +0 -171
  290. package/templates/common/claude/skills/database/prisma/SKILL.md +0 -357
  291. package/templates/common/claude/skills/frontend/nextjs/SKILL.md +0 -279
  292. package/templates/common/claude/skills/frontend/react/SKILL.md +0 -1729
  293. package/templates/common/claude/skills/methodology/bdd/SKILL.md +0 -234
  294. package/templates/common/claude/skills/methodology/ddd/SKILL.md +0 -311
  295. package/templates/common/claude/skills/methodology/tdd/SKILL.md +0 -512
  296. package/templates/common/claude/skills/planning/SKILL.md +0 -90
  297. package/templates/common/claude/skills/security/SKILL.md +0 -234
  298. package/templates/common/claude/skills/testing/SKILL.md +0 -146
  299. package/templates/common/claude/skills/typescript/SKILL.md +0 -435
  300. package/templates/common/config.template.yaml +0 -132
  301. /package/templates/{common → base}/timsquad/architectures/clean/ARCHITECTURE.md +0 -0
  302. /package/templates/{common → base}/timsquad/architectures/clean/backend.xml +0 -0
  303. /package/templates/{common → base}/timsquad/architectures/clean/frontend.xml +0 -0
  304. /package/templates/{common → base}/timsquad/architectures/fsd/ARCHITECTURE.md +0 -0
  305. /package/templates/{common → base}/timsquad/architectures/fsd/frontend.xml +0 -0
  306. /package/templates/{common → base}/timsquad/architectures/hexagonal/ARCHITECTURE.md +0 -0
  307. /package/templates/{common → base}/timsquad/architectures/hexagonal/backend.xml +0 -0
  308. /package/templates/{common → base}/timsquad/constraints/competency-framework.xml +0 -0
  309. /package/templates/{common → base}/timsquad/constraints/ssot-schema.xml +0 -0
  310. /package/templates/{common → base}/timsquad/feedback/feedback-router.sh +0 -0
  311. /package/templates/{common → base}/timsquad/generators/data-design.xml +0 -0
  312. /package/templates/{common → base}/timsquad/generators/prd.xml +0 -0
  313. /package/templates/{common → base}/timsquad/generators/requirements.xml +0 -0
  314. /package/templates/{common → base}/timsquad/generators/service-spec.xml +0 -0
  315. /package/templates/{common → base}/timsquad/logs/_example.md +0 -0
  316. /package/templates/{common → base}/timsquad/logs/_template.md +0 -0
  317. /package/templates/{common → base}/timsquad/patterns/cqrs.xml +0 -0
  318. /package/templates/{common → base}/timsquad/patterns/event-sourcing.xml +0 -0
  319. /package/templates/{common → base}/timsquad/patterns/repository.xml +0 -0
  320. /package/templates/{common → base}/timsquad/process/phase-checklist.yaml +0 -0
  321. /package/templates/{common → base}/timsquad/process/state-machine.xml +0 -0
  322. /package/templates/{common → base}/timsquad/process/validation-rules.xml +0 -0
  323. /package/templates/{common → base}/timsquad/process/workflow-base.xml +0 -0
  324. /package/templates/{common → base}/timsquad/retrospective/cycle-report.template.md +0 -0
  325. /package/templates/{common → base}/timsquad/retrospective/patterns/failure-patterns.md +0 -0
  326. /package/templates/{common → base}/timsquad/retrospective/patterns/success-patterns.md +0 -0
  327. /package/templates/{common → base}/timsquad/retrospective/retrospective-config.xml +0 -0
  328. /package/templates/{common → base}/timsquad/retrospective/retrospective-state.xml +0 -0
  329. /package/templates/{common → base}/timsquad/ssot/adr/ADR-000-template.md +0 -0
  330. /package/templates/{common → base}/timsquad/ssot/adr/ADR-001-example.md +0 -0
  331. /package/templates/{common → base}/timsquad/ssot/data-design.template.md +0 -0
  332. /package/templates/{common → base}/timsquad/ssot/deployment-spec.template.md +0 -0
  333. /package/templates/{common → base}/timsquad/ssot/env-config.template.md +0 -0
  334. /package/templates/{common → base}/timsquad/ssot/error-codes.template.md +0 -0
  335. /package/templates/{common → base}/timsquad/ssot/functional-spec.template.md +0 -0
  336. /package/templates/{common → base}/timsquad/ssot/glossary.template.md +0 -0
  337. /package/templates/{common → base}/timsquad/ssot/integration-spec.template.md +0 -0
  338. /package/templates/{common → base}/timsquad/ssot/planning.template.md +0 -0
  339. /package/templates/{common → base}/timsquad/ssot/prd.template.md +0 -0
  340. /package/templates/{common → base}/timsquad/ssot/requirements.template.md +0 -0
  341. /package/templates/{common → base}/timsquad/ssot/security-spec.template.md +0 -0
  342. /package/templates/{common → base}/timsquad/ssot/service-spec.template.md +0 -0
  343. /package/templates/{common → base}/timsquad/ssot/test-spec.template.md +0 -0
  344. /package/templates/{common → base}/timsquad/ssot/ui-ux-spec.template.md +0 -0
  345. /package/templates/{common → base}/timsquad/state/workspace.xml +0 -0
@@ -0,0 +1,58 @@
1
+ ---
2
+ name: planning
3
+ description: |
4
+ 기획 및 요건 정의 가이드라인.
5
+ PRD, 요구사항 정의, 문서 구조화, 대용량 문서 분할 전략을 다룸.
6
+ Use when: "기획, PRD, 요구사항, 요건 정의, 스코프, 마일스톤"
7
+ version: "1.0.0"
8
+ tags: [planning, prd, requirements]
9
+ user-invocable: false
10
+ ---
11
+
12
+ # Planning
13
+
14
+ 기획 문서 작성 및 요건 정의를 위한 가이드라인.
15
+
16
+ ## Philosophy
17
+
18
+ - SSOT 구조 준수: PRD (Why) → Planning (Overview) → Requirements (What)
19
+ - 각 문서는 다음 단계의 입력
20
+ - 검증 가능한 요건만 작성
21
+
22
+ ## Resources
23
+
24
+ | Priority | Type | Resource | Description |
25
+ |----------|------|----------|-------------|
26
+ | HIGH | ref | [prd-guide](references/prd-guide.md) | PRD 작성 가이드 + 예시 |
27
+ | HIGH | ref | [requirements-guide](references/requirements-guide.md) | 요건 분류 + SMART + MoSCoW |
28
+
29
+ ## Quick Rules
30
+
31
+ ### SSOT Documents
32
+ | 문서 | 역할 |
33
+ |------|------|
34
+ | `prd.md` | 왜 만드는지, 목표, 성공 지표 |
35
+ | `planning.md` | 전체 계획, 마일스톤, 일정 |
36
+ | `requirements.md` | 기능/비기능 요건 목록 |
37
+ | `functional-spec.md` | 기능 시나리오, 예외처리 |
38
+
39
+ ### Large Document Strategy
40
+ 800줄 이상 예상 문서는 반드시 분할:
41
+ 1. 목차 기반 규모 사전 추정
42
+ 2. 도메인별 분할
43
+ 3. 인덱스 파일에서 분할 문서 링크 유지
44
+ 4. 순차 append 방식으로 섹션별 작성
45
+
46
+ ### Context Verification
47
+ SSOT 템플릿 작성 시 `config.yaml` 프로젝트 설정을 먼저 확인.
48
+ 프로젝트에서 실제 사용하는 서비스만 포함. 제너릭 외부 서비스를 무분별하게 채우지 않는다.
49
+
50
+ ## Checklist
51
+
52
+ | Priority | Item |
53
+ |----------|------|
54
+ | CRITICAL | 목표가 명확히 정의되었는가 |
55
+ | CRITICAL | 스코프가 명확히 구분되었는가 (포함/제외) |
56
+ | HIGH | 모든 요건에 우선순위가 있는가 |
57
+ | HIGH | 요건이 검증 가능한가 (정량적 기준) |
58
+ | MEDIUM | 이해관계자 승인을 받았는가 |
@@ -0,0 +1,47 @@
1
+ ---
2
+ title: PRD Writing Guide
3
+ category: guide
4
+ source: internal
5
+ ---
6
+
7
+ # PRD (Product Requirements Document) Guide
8
+
9
+ PRD 작성 시 필수 섹션과 예시.
10
+
11
+ ## Required Sections
12
+
13
+ 1. **배경 및 목적** — 왜 이 제품/기능이 필요한가
14
+ 2. **목표 사용자** — 누가 사용하는가
15
+ 3. **핵심 가치** — 어떤 문제를 해결하는가
16
+ 4. **성공 지표** — 어떻게 성공을 측정할 것인가
17
+ 5. **스코프** — 포함/제외 범위
18
+
19
+ ## Example
20
+
21
+ ```markdown
22
+ ## 1. 배경 및 목적
23
+ 현재 로그인 프로세스에서 이탈률이 30%에 달함.
24
+ 소셜 로그인 도입으로 가입/로그인 허들을 낮추고자 함.
25
+
26
+ ## 2. 목표 사용자
27
+ - 처음 방문하는 신규 사용자
28
+ - 비밀번호를 자주 잊어버리는 사용자
29
+
30
+ ## 3. 핵심 가치
31
+ - 3초 내 로그인 완료
32
+ - 비밀번호 기억 부담 제거
33
+
34
+ ## 4. 성공 지표
35
+ - 로그인 이탈률 30% → 10%
36
+ - 가입 전환율 20% 향상
37
+
38
+ ## 5. 스코프
39
+ 포함: Google, Apple 소셜 로그인
40
+ 제외: Facebook, Twitter (Phase 2)
41
+ ```
42
+
43
+ ## Common Pitfalls
44
+
45
+ - 성공 지표가 정량적이지 않음 ("사용자 경험 개선" → 구체적 수치)
46
+ - 스코프 경계가 모호 → 나중에 스코프 크리프 발생
47
+ - 목표 사용자 미정의 → 모든 사람을 위해 만들다 아무도 만족 못함
@@ -0,0 +1,46 @@
1
+ ---
2
+ title: Requirements Writing Guide
3
+ category: guide
4
+ source: internal
5
+ ---
6
+
7
+ # Requirements Writing Guide
8
+
9
+ 기능/비기능 요건 정의 및 분류 가이드.
10
+
11
+ ## Classification
12
+
13
+ | 유형 | 약어 | 설명 |
14
+ |------|------|------|
15
+ | 기능 요건 | FR | 시스템이 해야 하는 것 |
16
+ | 비기능 요건 | NFR | 성능, 보안, 확장성 등 |
17
+
18
+ ## SMART Principles
19
+
20
+ - **S**pecific — 구체적
21
+ - **M**easurable — 측정 가능
22
+ - **A**chievable — 달성 가능
23
+ - **R**elevant — 관련성 있음
24
+ - **T**ime-bound — 기한 있음
25
+
26
+ ## Priority System (MoSCoW)
27
+
28
+ - **Must** — 반드시 포함
29
+ - **Should** — 강력 권장
30
+ - **Could** — 있으면 좋음
31
+ - **Won't** — 이번에는 제외
32
+
33
+ ## Requirements Table Template
34
+
35
+ ```markdown
36
+ | ID | 분류 | 요건 | 우선순위 | 검증 방법 |
37
+ |----|-----|-----|---------|----------|
38
+ | FR-001 | 인증 | 사용자는 이메일/비밀번호로 로그인할 수 있다 | Must | 테스트 |
39
+ | NFR-001 | 성능 | 로그인 응답 시간 < 500ms | Must | 부하 테스트 |
40
+ ```
41
+
42
+ ## Common Pitfalls
43
+
44
+ - 검증 불가능한 요건 ("빨라야 한다" → "응답 500ms 이하")
45
+ - 우선순위 미지정 → 모든 것이 Must가 됨
46
+ - 기능/비기능 미분류 → 비기능 요건 누락
@@ -0,0 +1,103 @@
1
+ ---
2
+ name: prompt-engineering
3
+ description: 프롬프트 최적화, 템플릿 관리, 회고 기반 개선 가이드라인
4
+ version: "1.0.0"
5
+ tags: [prompt, optimization, retrospective]
6
+ user-invocable: false
7
+ ---
8
+
9
+ <skill name="prompt-engineering">
10
+ <purpose>에이전트/스킬 프롬프트 최적화 및 품질 개선</purpose>
11
+
12
+ <optimization-principles>
13
+ <principle name="구조화">
14
+ 역할 → 페르소나 → 작업 전 필수 → 핵심 원칙 → 작업 프로세스 → 출력 형식 → 금지 사항 → 예시
15
+ </principle>
16
+ <principle name="명확성">
17
+ | Bad | Good |
18
+ |-----|------|
19
+ | "잘 작성해" | "3문장 이내로 요약해" |
20
+ | "좋은 코드" | "테스트 커버리지 80%" |
21
+ | 나열만 | "필수/권장/선택" 분류 |
22
+ </principle>
23
+ <principle name="컨텍스트">
24
+ 프로젝트 정보, 참조 문서 경로, 제약 사항을 명시적으로 주입
25
+ </principle>
26
+ <principle name="예시 포함">
27
+ Good/Bad 예시를 함께 제공하여 기대 품질 수준 명확화
28
+ </principle>
29
+ </optimization-principles>
30
+
31
+ <template-format>
32
+ <![CDATA[
33
+ ---
34
+ name: {template-name}
35
+ version: 1.0.0
36
+ agent: {target-agent}
37
+ task_type: {implementation|review|analysis}
38
+ ---
39
+
40
+ # {Title}
41
+
42
+ ## 컨텍스트 주입
43
+ {{CONTEXT}}
44
+
45
+ ## 작업 정의
46
+ {{TASK_DESCRIPTION}}
47
+
48
+ ## SSOT 참조
49
+ {{SSOT_REFERENCES}}
50
+
51
+ ## 출력 요구사항
52
+ {{OUTPUT_REQUIREMENTS}}
53
+
54
+ ## 검증 기준
55
+ {{VALIDATION_CRITERIA}}
56
+ ]]>
57
+ </template-format>
58
+
59
+ <version-management>
60
+ | 변경 유형 | 버전 증가 | 예시 |
61
+ |---------|----------|------|
62
+ | 구조 변경 | Major (x.0.0) | 섹션 추가/삭제 |
63
+ | 내용 수정 | Minor (0.x.0) | 규칙 추가, 예시 수정 |
64
+ | 오타 수정 | Patch (0.0.x) | 단순 수정 |
65
+ </version-management>
66
+
67
+ <rollback-conditions>
68
+ | 조건 | 액션 |
69
+ |-----|------|
70
+ | 성공률 10% 하락 | 이전 버전 롤백 |
71
+ | Critical 피드백 발생 | 즉시 롤백 + 분석 |
72
+ | A/B 테스트 실패 | 기존 버전 유지 |
73
+ </rollback-conditions>
74
+
75
+ <improvement-mapping>
76
+ 패턴 → 프롬프트 개선 매핑 프로세스:
77
+ 1. 실패/성공 패턴 식별 (회고 스킬에서)
78
+ 2. 대상 에이전트/스킬 .md 파일 특정
79
+ 3. 변경 전/후 diff 작성
80
+ 4. 기대 효과 및 검증 방법 명시
81
+ 5. 사용자 승인 후 적용
82
+ </improvement-mapping>
83
+
84
+ <quality-checklist>
85
+ | 항목 | 검증 내용 |
86
+ |-----|----------|
87
+ | 명확성 | 모호한 표현이 없는가? |
88
+ | 완전성 | 필요한 정보가 모두 있는가? |
89
+ | 구조화 | 논리적 순서로 구성되었는가? |
90
+ | 예시 | Good/Bad 예시가 있는가? |
91
+ | 제약 | 금지 사항이 명시되었는가? |
92
+ | 출력 | 기대 출력 형식이 정의되었는가? |
93
+ </quality-checklist>
94
+
95
+ <effectiveness-metrics>
96
+ | 메트릭 | 측정 방법 | 목표 |
97
+ |-------|----------|:----:|
98
+ | 작업 성공률 | 성공 작업 / 전체 작업 | 90%+ |
99
+ | 수정 횟수 | 평균 수정 횟수 | 2 미만 |
100
+ | 피드백 레벨 | Level 2+ 피드백 비율 | 10% 미만 |
101
+ | SSOT 정합성 | SSOT 불일치 건수 | 0 |
102
+ </effectiveness-metrics>
103
+ </skill>
@@ -0,0 +1,102 @@
1
+ ---
2
+ name: retrospective
3
+ description: 회고 분석, 패턴 식별, 개선 제안 가이드라인
4
+ version: "1.0.0"
5
+ tags: [retrospective, analysis, improvement]
6
+ user-invocable: false
7
+ ---
8
+
9
+ <skill name="retrospective">
10
+ <purpose>프로젝트 회고를 위한 분석 프레임워크와 개선 프로세스</purpose>
11
+
12
+ <tsq-cli priority="critical">
13
+ <instruction>
14
+ 로그 기록, 피드백, 메트릭, 회고 등 TSQ CLI가 제공하는 기능은 반드시 CLI 커맨드를 사용하세요.
15
+ 직접 파일을 조작하지 마세요. CLI를 사용해야 구조화된 데이터가 자동 저장됩니다.
16
+ </instruction>
17
+ <commands>
18
+ | 시점 | 커맨드 |
19
+ |-----|--------|
20
+ | 회고 시작 | `tsq retro start` |
21
+ | Phase별 회고 | `tsq retro phase {phase}` |
22
+ | 메트릭 수집 | `tsq retro collect` 또는 `tsq metrics collect` |
23
+ | 로그 확인 | `tsq log list` / `tsq log today` |
24
+ | 리포트 생성 | `tsq retro report` (GitHub Issue 포함) |
25
+ | 로컬 리포트만 | `tsq retro report --local` |
26
+ | 사이클 완료 | `tsq retro apply` |
27
+ </commands>
28
+ </tsq-cli>
29
+
30
+ <references>
31
+ <reference path=".timsquad/retrospective/metrics/">메트릭 데이터</reference>
32
+ <reference path=".timsquad/logs/">작업 로그</reference>
33
+ <reference path=".timsquad/retrospective/patterns/">기존 패턴</reference>
34
+ <reference path=".timsquad/state/workspace.xml">작업 이력</reference>
35
+ </references>
36
+
37
+ <kpt-framework>
38
+ <description>Keep-Problem-Try 회고 프레임워크</description>
39
+ <category name="Keep">무엇이 잘 되었나? 계속해야 할 것은?</category>
40
+ <category name="Problem">무엇이 문제였나? 장애물은?</category>
41
+ <category name="Try">다음에 시도해볼 것은?</category>
42
+ </kpt-framework>
43
+
44
+ <pattern-classification>
45
+ <failure-pattern id="FP-XXX">
46
+ <criteria>3회 이상 반복, 작업 지연 유발, 품질 저하 원인</criteria>
47
+ </failure-pattern>
48
+ <success-pattern id="SP-XXX">
49
+ <criteria>효과 검증됨, 효율성 향상, 품질 향상</criteria>
50
+ </success-pattern>
51
+ </pattern-classification>
52
+
53
+ <metrics>
54
+ | 메트릭 | 계산 방법 |
55
+ |-------|----------|
56
+ | 작업 수 | 완료된 작업 개수 |
57
+ | 성공률 | (성공 작업 / 전체 작업) x 100 |
58
+ | 평균 수정 횟수 | 총 수정 횟수 / 작업 수 |
59
+ | 점수 | 가중 평균 (성공률 x 0.4 + (1 - 수정률) x 0.3 + 기타 x 0.3) |
60
+ </metrics>
61
+
62
+ <improvement-format>
63
+ <![CDATA[
64
+ ## IMP-XXX: {개선 제목}
65
+
66
+ **대상**: {에이전트/스킬}.md
67
+ **관련 패턴**: FP-XXX / SP-XXX
68
+
69
+ ### 현재 문제
70
+ {문제 설명}
71
+
72
+ ### 제안 변경
73
+ ```diff
74
+ - 현재 내용
75
+ + 개선된 내용
76
+ ```
77
+
78
+ ### 기대 효과
79
+ {개선 효과}
80
+ ]]>
81
+ </improvement-format>
82
+
83
+ <report-sections>
84
+ 1. 메트릭 요약
85
+ 2. 에이전트별 성과
86
+ 3. 피드백 분석
87
+ 4. 발견된 패턴
88
+ 5. 개선 조치
89
+ 6. 다음 사이클 목표
90
+ </report-sections>
91
+
92
+ <principles>
93
+ <principle>객관적 데이터 우선 - 주관적 평가보다 수치 기반</principle>
94
+ <principle>구체적 예시 - 추상적 서술 지양</principle>
95
+ <principle>실행 가능한 개선안 - "더 잘하자" 대신 구체적 액션</principle>
96
+ <principle>균형 잡힌 시각 - 문제점만이 아닌 성공 사례도 포함</principle>
97
+ </principles>
98
+
99
+ <apply-process>
100
+ 제안된 개선 → 사용자 검토/승인 → SKILL.md 업데이트 → 템플릿 업데이트 → lessons.md 기록 → 다음 사이클에서 효과 측정
101
+ </apply-process>
102
+ </skill>
@@ -0,0 +1,55 @@
1
+ ---
2
+ name: security
3
+ description: 보안 검토 및 취약점 탐지 가이드라인
4
+ version: "1.0.0"
5
+ tags: [security, owasp, vulnerability]
6
+ user-invocable: false
7
+ ---
8
+
9
+ # Security Guidelines (OWASP Top 10)
10
+
11
+ ## OWASP Top 10 요약
12
+
13
+ | # | 취약점 | 핵심 방어 |
14
+ |---|--------|----------|
15
+ | 1 | Injection | Parameterized Query, ORM 사용 |
16
+ | 2 | Broken Authentication | 강력한 패스워드 정책, bcrypt(12+) |
17
+ | 3 | Sensitive Data Exposure | DTO로 민감 정보 제외, 로그 마스킹 |
18
+ | 5 | Broken Access Control | authenticate + authorize 미들웨어 |
19
+ | 6 | Security Misconfiguration | helmet(), CORS 제한 |
20
+ | 7 | XSS | textContent 사용, innerHTML 금지 |
21
+ | 8 | Insecure Deserialization | Zod 스키마 검증 |
22
+ | 9 | Known Vulnerabilities | npm audit, 정기 업데이트 |
23
+ | 10 | Insufficient Logging | 로그인 실패, 브루트포스 로깅 |
24
+
25
+ ## 추가 보안 체크
26
+
27
+ ### 시크릿 관리
28
+ - **금지**: 하드코딩 (`const apiKey = 'sk-...'`)
29
+ - **필수**: 환경변수 (`process.env.API_KEY`)
30
+ - **권장**: 시크릿 매니저
31
+
32
+ ### Rate Limiting
33
+ - API 엔드포인트에 rate limiter 적용
34
+
35
+ ### CSRF 방지
36
+ - csrf 토큰 사용
37
+
38
+ ## Checklist
39
+ - [ ] SQL/NoSQL Injection 방지
40
+ - [ ] 강력한 인증 구현
41
+ - [ ] 민감 정보 보호
42
+ - [ ] 접근 제어 구현
43
+ - [ ] XSS 방지
44
+ - [ ] 입력 검증 (Zod)
45
+ - [ ] 의존성 취약점 확인
46
+ - [ ] 보안 로깅 구현
47
+ - [ ] 시크릿 안전하게 관리
48
+ - [ ] Rate Limiting 적용
49
+
50
+ ## Resources
51
+
52
+ | Priority | Type | Resource | Description |
53
+ |----------|------|----------|-------------|
54
+ | CRITICAL | rule | [owasp-examples](rules/owasp-examples.md) | 취약점별 Bad/Good 코드 예시 |
55
+ | HIGH | script | [check-secrets](scripts/check-secrets.sh) | 하드코딩된 시크릿 자동 스캔 |
@@ -0,0 +1,119 @@
1
+ ---
2
+ title: OWASP Top 10 Security Patterns
3
+ impact: CRITICAL
4
+ tags: security, owasp, vulnerability
5
+ ---
6
+
7
+ # OWASP Top 10 — 코드 예시
8
+
9
+ ## 1. Injection
10
+ ```typescript
11
+ // Bad
12
+ const query = `SELECT * FROM users WHERE email = '${email}'`;
13
+
14
+ // Good: Parameterized Query
15
+ const query = 'SELECT * FROM users WHERE email = $1';
16
+ await db.query(query, [email]);
17
+ // Good: ORM 사용
18
+ await userRepository.findOne({ where: { email } });
19
+ ```
20
+
21
+ ## 2. Broken Authentication
22
+ ```typescript
23
+ // Bad
24
+ if (password.length >= 4) { ... }
25
+
26
+ // Good
27
+ const passwordPolicy = {
28
+ minLength: 12, requireUppercase: true, requireLowercase: true,
29
+ requireNumber: true, requireSpecialChar: true,
30
+ };
31
+ const hash = await bcrypt.hash(password, 12);
32
+ ```
33
+
34
+ ## 3. Sensitive Data Exposure
35
+ ```typescript
36
+ // Bad
37
+ logger.info('User login', { email, password });
38
+ return { ...user }; // passwordHash 포함
39
+
40
+ // Good
41
+ logger.info('User login', { email, password: '***' });
42
+ return userToDto(user); // passwordHash 제외
43
+ ```
44
+
45
+ ## 5. Broken Access Control
46
+ ```typescript
47
+ // Bad
48
+ app.get('/api/users/:id', async (req, res) => {
49
+ const user = await userService.getUser(req.params.id);
50
+ return res.json(user);
51
+ });
52
+
53
+ // Good
54
+ app.get('/api/users/:id', authenticate, authorize('user:read'), async (req, res) => {
55
+ if (req.user.id !== req.params.id && !req.user.isAdmin) throw new ForbiddenError();
56
+ const user = await userService.getUser(req.params.id);
57
+ return res.json(user);
58
+ });
59
+ ```
60
+
61
+ ## 6. Security Misconfiguration
62
+ ```typescript
63
+ app.use(helmet());
64
+ app.use(helmet.contentSecurityPolicy({
65
+ directives: { defaultSrc: ["'self'"], scriptSrc: ["'self'"] },
66
+ }));
67
+ app.use(cors({ origin: ['https://allowed-domain.com'], credentials: true }));
68
+ ```
69
+
70
+ ## 7. XSS
71
+ ```typescript
72
+ // Bad
73
+ element.innerHTML = userInput;
74
+ // Good
75
+ element.textContent = userInput;
76
+ ```
77
+
78
+ ## 8. Insecure Deserialization
79
+ ```typescript
80
+ // Bad
81
+ const data = JSON.parse(userInput);
82
+ // Good
83
+ const schema = z.object({ name: z.string().max(100), age: z.number().min(0) });
84
+ const data = schema.parse(JSON.parse(userInput));
85
+ ```
86
+
87
+ ## 9. Known Vulnerabilities
88
+ ```bash
89
+ npm audit && npm audit fix
90
+ npm outdated && npm update
91
+ ```
92
+
93
+ ## 10. Insufficient Logging
94
+ ```typescript
95
+ logger.warn('Login failed', { email, ip: req.ip, timestamp: new Date().toISOString() });
96
+ if (failedAttempts >= 5) {
97
+ logger.error('Possible brute force attack', { email, ip: req.ip });
98
+ await lockAccount(email);
99
+ }
100
+ ```
101
+
102
+ ## Additional Checks
103
+
104
+ ### Rate Limiting
105
+ ```typescript
106
+ import rateLimit from 'express-rate-limit';
107
+ app.use('/api/', rateLimit({ windowMs: 15 * 60 * 1000, max: 100 }));
108
+ ```
109
+
110
+ ### CSRF 방지
111
+ ```typescript
112
+ import csrf from 'csurf';
113
+ app.use(csrf({ cookie: true }));
114
+ ```
115
+
116
+ ### 시크릿 관리
117
+ - **금지**: `const apiKey = 'sk-1234567890';`
118
+ - **필수**: `const apiKey = process.env.API_KEY;`
119
+ - **권장**: `await secretManager.getSecret('api-key');`
@@ -0,0 +1,55 @@
1
+ #!/bin/bash
2
+ # @name check-secrets
3
+ # @description 하드코딩된 시크릿/토큰/비밀번호를 소스코드에서 스캔
4
+ # @args [PROJECT_ROOT] (기본: 현재 디렉토리)
5
+ # @output text (발견된 파일:라인 목록 또는 "No secrets found")
6
+
7
+ set -euo pipefail
8
+
9
+ PROJECT_ROOT="${1:-.}"
10
+ FOUND=0
11
+
12
+ echo "Scanning for hardcoded secrets in: $PROJECT_ROOT"
13
+ echo "================================================"
14
+
15
+ # Pattern 1: API keys, tokens, secrets in assignments
16
+ echo ""
17
+ echo "## Hardcoded API Keys / Tokens"
18
+ if grep -rn --include="*.ts" --include="*.tsx" --include="*.js" --include="*.jsx" --include="*.py" --include="*.go" \
19
+ -E "(api_key|apiKey|API_KEY|secret|SECRET|token|TOKEN|password|PASSWORD)\s*[:=]\s*['\"][^'\"]{8,}" \
20
+ "$PROJECT_ROOT/src" "$PROJECT_ROOT/app" "$PROJECT_ROOT/lib" 2>/dev/null | \
21
+ grep -v "node_modules" | grep -v ".test." | grep -v "__mock__" | grep -v "example" | grep -v "placeholder"; then
22
+ FOUND=1
23
+ else
24
+ echo " (none found)"
25
+ fi
26
+
27
+ # Pattern 2: .env files committed
28
+ echo ""
29
+ echo "## Committed .env Files"
30
+ if find "$PROJECT_ROOT" -name ".env" -o -name ".env.local" -o -name ".env.production" 2>/dev/null | \
31
+ grep -v "node_modules" | grep -v ".example"; then
32
+ FOUND=1
33
+ else
34
+ echo " (none found)"
35
+ fi
36
+
37
+ # Pattern 3: Private keys
38
+ echo ""
39
+ echo "## Private Keys"
40
+ if grep -rn --include="*.ts" --include="*.tsx" --include="*.js" --include="*.jsx" --include="*.pem" --include="*.key" \
41
+ -l "PRIVATE KEY" "$PROJECT_ROOT" 2>/dev/null | grep -v "node_modules"; then
42
+ FOUND=1
43
+ else
44
+ echo " (none found)"
45
+ fi
46
+
47
+ echo ""
48
+ echo "================================================"
49
+ if [ "$FOUND" -eq 1 ]; then
50
+ echo "WARNING: Potential secrets found. Review above results."
51
+ exit 1
52
+ else
53
+ echo "No secrets found."
54
+ exit 0
55
+ fi
@@ -0,0 +1,63 @@
1
+ ---
2
+ name: testing
3
+ description: |
4
+ 테스트 작성 규칙 및 패턴 가이드라인.
5
+ TDD 사이클, 테스트 피라미드, Given-When-Then 패턴, 커버리지 기준을 다룸.
6
+ Use when: "테스트 작성, TDD, 단위 테스트, 통합 테스트, E2E, 커버리지"
7
+ version: "1.0.0"
8
+ tags: [testing, tdd, quality]
9
+ user-invocable: false
10
+ ---
11
+
12
+ # Testing
13
+
14
+ 품질 보장을 위한 테스트 작성 가이드라인.
15
+
16
+ ## Philosophy
17
+
18
+ - Red-Green-Refactor (TDD 사이클) 준수
19
+ - 테스트 피라미드: Unit(다수) > Integration(중간) > E2E(소수)
20
+ - 행동(behavior) 테스트 — 구현 디테일이 아닌 결과 검증
21
+
22
+ ## Resources
23
+
24
+ | Priority | Type | Resource | Description |
25
+ |----------|------|----------|-------------|
26
+ | HIGH | ref | [testing-patterns](references/testing-patterns.md) | Given-When-Then, Mock 가이드, 카테고리별 예시 |
27
+
28
+ ## Quick Rules
29
+
30
+ ### TDD Cycle
31
+ 1. **Red** — 실패하는 테스트 작성
32
+ 2. **Green** — 테스트를 통과하는 최소 코드 작성
33
+ 3. **Refactor** — 코드 정리 (테스트는 계속 통과)
34
+
35
+ ### Test Naming
36
+ - 형식: `should {expected behavior} when {condition}`
37
+ - Good: `should return null when user is not found`
38
+ - Bad: `test getUser`, `works correctly`
39
+
40
+ ### Test Categories
41
+ 모든 테스트는 3가지 카테고리 커버:
42
+ - **Happy Path** — 정상 흐름
43
+ - **Edge Cases** — 경계 조건 (빈 문자열, 0, null, 최대값)
44
+ - **Error Cases** — 오류 상황
45
+
46
+ ### Coverage Standards
47
+
48
+ | Metric | Minimum | Recommended |
49
+ |--------|---------|-------------|
50
+ | Line Coverage | 80% | 90% |
51
+ | Branch Coverage | 70% | 80% |
52
+ | Function Coverage | 80% | 90% |
53
+
54
+ ## Checklist
55
+
56
+ | Priority | Item |
57
+ |----------|------|
58
+ | CRITICAL | Given-When-Then 패턴을 따르는가 |
59
+ | CRITICAL | Happy path, Edge case, Error case 커버하는가 |
60
+ | HIGH | 테스트 이름이 `should...when...` 형식인가 |
61
+ | HIGH | 커버리지 기준을 충족하는가 |
62
+ | MEDIUM | Mock이 적절히 사용되었는가 (외부 서비스만) |
63
+ | MEDIUM | 테스트가 독립적인가 (순서 무관) |