timsquad 2.0.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 (353) hide show
  1. package/README.md +168 -234
  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 +251 -11
  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/git/commit.d.ts.map +1 -1
  13. package/dist/commands/git/commit.js +1 -4
  14. package/dist/commands/git/commit.js.map +1 -1
  15. package/dist/commands/improve.d.ts +3 -0
  16. package/dist/commands/improve.d.ts.map +1 -0
  17. package/dist/commands/improve.js +286 -0
  18. package/dist/commands/improve.js.map +1 -0
  19. package/dist/commands/init.d.ts.map +1 -1
  20. package/dist/commands/init.js +110 -22
  21. package/dist/commands/init.js.map +1 -1
  22. package/dist/commands/knowledge.d.ts +3 -0
  23. package/dist/commands/knowledge.d.ts.map +1 -0
  24. package/dist/commands/knowledge.js +316 -0
  25. package/dist/commands/knowledge.js.map +1 -0
  26. package/dist/commands/log.d.ts +27 -0
  27. package/dist/commands/log.d.ts.map +1 -1
  28. package/dist/commands/log.js +1167 -2
  29. package/dist/commands/log.js.map +1 -1
  30. package/dist/commands/meta-index.d.ts +3 -0
  31. package/dist/commands/meta-index.d.ts.map +1 -0
  32. package/dist/commands/meta-index.js +401 -0
  33. package/dist/commands/meta-index.js.map +1 -0
  34. package/dist/commands/metrics.d.ts.map +1 -1
  35. package/dist/commands/metrics.js +640 -100
  36. package/dist/commands/metrics.js.map +1 -1
  37. package/dist/commands/retro.d.ts.map +1 -1
  38. package/dist/commands/retro.js +606 -58
  39. package/dist/commands/retro.js.map +1 -1
  40. package/dist/commands/session.d.ts +3 -0
  41. package/dist/commands/session.d.ts.map +1 -0
  42. package/dist/commands/session.js +346 -0
  43. package/dist/commands/session.js.map +1 -0
  44. package/dist/commands/upgrade.d.ts +8 -0
  45. package/dist/commands/upgrade.d.ts.map +1 -0
  46. package/dist/commands/upgrade.js +287 -0
  47. package/dist/commands/upgrade.js.map +1 -0
  48. package/dist/commands/workflow.d.ts +3 -0
  49. package/dist/commands/workflow.d.ts.map +1 -0
  50. package/dist/commands/workflow.js +607 -0
  51. package/dist/commands/workflow.js.map +1 -0
  52. package/dist/daemon/context-writer.d.ts +16 -0
  53. package/dist/daemon/context-writer.d.ts.map +1 -0
  54. package/dist/daemon/context-writer.js +35 -0
  55. package/dist/daemon/context-writer.js.map +1 -0
  56. package/dist/daemon/entry.d.ts +7 -0
  57. package/dist/daemon/entry.d.ts.map +1 -0
  58. package/dist/daemon/entry.js +17 -0
  59. package/dist/daemon/entry.js.map +1 -0
  60. package/dist/daemon/event-queue.d.ts +52 -0
  61. package/dist/daemon/event-queue.d.ts.map +1 -0
  62. package/dist/daemon/event-queue.js +255 -0
  63. package/dist/daemon/event-queue.js.map +1 -0
  64. package/dist/daemon/file-watcher.d.ts +19 -0
  65. package/dist/daemon/file-watcher.d.ts.map +1 -0
  66. package/dist/daemon/file-watcher.js +87 -0
  67. package/dist/daemon/file-watcher.js.map +1 -0
  68. package/dist/daemon/index.d.ts +28 -0
  69. package/dist/daemon/index.d.ts.map +1 -0
  70. package/dist/daemon/index.js +204 -0
  71. package/dist/daemon/index.js.map +1 -0
  72. package/dist/daemon/jsonl-watcher.d.ts +49 -0
  73. package/dist/daemon/jsonl-watcher.d.ts.map +1 -0
  74. package/dist/daemon/jsonl-watcher.js +258 -0
  75. package/dist/daemon/jsonl-watcher.js.map +1 -0
  76. package/dist/daemon/meta-cache.d.ts +62 -0
  77. package/dist/daemon/meta-cache.d.ts.map +1 -0
  78. package/dist/daemon/meta-cache.js +240 -0
  79. package/dist/daemon/meta-cache.js.map +1 -0
  80. package/dist/daemon/shutdown.d.ts +21 -0
  81. package/dist/daemon/shutdown.d.ts.map +1 -0
  82. package/dist/daemon/shutdown.js +158 -0
  83. package/dist/daemon/shutdown.js.map +1 -0
  84. package/dist/index.js +24 -3
  85. package/dist/index.js.map +1 -1
  86. package/dist/lib/agent-composer.d.ts +38 -0
  87. package/dist/lib/agent-composer.d.ts.map +1 -0
  88. package/dist/lib/agent-composer.js +128 -0
  89. package/dist/lib/agent-composer.js.map +1 -0
  90. package/dist/lib/agent-generator.d.ts +22 -0
  91. package/dist/lib/agent-generator.d.ts.map +1 -0
  92. package/dist/lib/agent-generator.js +150 -0
  93. package/dist/lib/agent-generator.js.map +1 -0
  94. package/dist/lib/ast-parser.d.ts +11 -0
  95. package/dist/lib/ast-parser.d.ts.map +1 -0
  96. package/dist/lib/ast-parser.js +282 -0
  97. package/dist/lib/ast-parser.js.map +1 -0
  98. package/dist/lib/config.d.ts +6 -2
  99. package/dist/lib/config.d.ts.map +1 -1
  100. package/dist/lib/config.js +27 -3
  101. package/dist/lib/config.js.map +1 -1
  102. package/dist/lib/meta-index.d.ts +19 -0
  103. package/dist/lib/meta-index.d.ts.map +1 -0
  104. package/dist/lib/meta-index.js +573 -0
  105. package/dist/lib/meta-index.js.map +1 -0
  106. package/dist/lib/project.js +1 -1
  107. package/dist/lib/project.js.map +1 -1
  108. package/dist/lib/skill-generator.d.ts +32 -0
  109. package/dist/lib/skill-generator.d.ts.map +1 -0
  110. package/dist/lib/skill-generator.js +187 -0
  111. package/dist/lib/skill-generator.js.map +1 -0
  112. package/dist/lib/template.d.ts +16 -2
  113. package/dist/lib/template.d.ts.map +1 -1
  114. package/dist/lib/template.js +175 -21
  115. package/dist/lib/template.js.map +1 -1
  116. package/dist/lib/ui-index.d.ts +12 -0
  117. package/dist/lib/ui-index.d.ts.map +1 -0
  118. package/dist/lib/ui-index.js +239 -0
  119. package/dist/lib/ui-index.js.map +1 -0
  120. package/dist/lib/ui-parser.d.ts +12 -0
  121. package/dist/lib/ui-parser.d.ts.map +1 -0
  122. package/dist/lib/ui-parser.js +472 -0
  123. package/dist/lib/ui-parser.js.map +1 -0
  124. package/dist/lib/update-check.d.ts +6 -0
  125. package/dist/lib/update-check.d.ts.map +1 -0
  126. package/dist/lib/update-check.js +121 -0
  127. package/dist/lib/update-check.js.map +1 -0
  128. package/dist/lib/upgrade-backup.d.ts +33 -0
  129. package/dist/lib/upgrade-backup.d.ts.map +1 -0
  130. package/dist/lib/upgrade-backup.js +101 -0
  131. package/dist/lib/upgrade-backup.js.map +1 -0
  132. package/dist/lib/version.d.ts +19 -0
  133. package/dist/lib/version.d.ts.map +1 -0
  134. package/dist/lib/version.js +35 -0
  135. package/dist/lib/version.js.map +1 -0
  136. package/dist/lib/workflow-state.d.ts +48 -0
  137. package/dist/lib/workflow-state.d.ts.map +1 -0
  138. package/dist/lib/workflow-state.js +67 -0
  139. package/dist/lib/workflow-state.js.map +1 -0
  140. package/dist/types/config.d.ts +102 -2
  141. package/dist/types/config.d.ts.map +1 -1
  142. package/dist/types/config.js +173 -9
  143. package/dist/types/config.js.map +1 -1
  144. package/dist/types/feedback.d.ts +59 -1
  145. package/dist/types/feedback.d.ts.map +1 -1
  146. package/dist/types/feedback.js +1 -4
  147. package/dist/types/feedback.js.map +1 -1
  148. package/dist/types/index.d.ts +3 -0
  149. package/dist/types/index.d.ts.map +1 -1
  150. package/dist/types/index.js +3 -0
  151. package/dist/types/index.js.map +1 -1
  152. package/dist/types/meta-index.d.ts +146 -0
  153. package/dist/types/meta-index.d.ts.map +1 -0
  154. package/dist/types/meta-index.js +7 -0
  155. package/dist/types/meta-index.js.map +1 -0
  156. package/dist/types/project.d.ts +19 -3
  157. package/dist/types/project.d.ts.map +1 -1
  158. package/dist/types/project.js +24 -1
  159. package/dist/types/project.js.map +1 -1
  160. package/dist/types/task-log.d.ts +208 -0
  161. package/dist/types/task-log.d.ts.map +1 -0
  162. package/dist/types/task-log.js +6 -0
  163. package/dist/types/task-log.js.map +1 -0
  164. package/dist/types/ui-meta.d.ts +118 -0
  165. package/dist/types/ui-meta.d.ts.map +1 -0
  166. package/dist/types/ui-meta.js +7 -0
  167. package/dist/types/ui-meta.js.map +1 -0
  168. package/package.json +12 -4
  169. package/templates/base/agents/base/tsq-architect.md +68 -0
  170. package/templates/base/agents/base/tsq-dba.md +56 -0
  171. package/templates/base/agents/base/tsq-designer.md +72 -0
  172. package/templates/base/agents/base/tsq-developer.md +67 -0
  173. package/templates/base/agents/base/tsq-qa.md +55 -0
  174. package/templates/base/agents/base/tsq-security.md +65 -0
  175. package/templates/base/agents/overlays/domain/general-web/_common.md +11 -0
  176. package/templates/base/agents/overlays/platform/claude-code.md +12 -0
  177. package/templates/base/config.template.yaml +213 -0
  178. package/templates/base/knowledge/checklists/accessibility.md +37 -0
  179. package/templates/base/knowledge/checklists/architecture-review.md +28 -0
  180. package/templates/base/knowledge/checklists/database-standards.md +84 -0
  181. package/templates/base/knowledge/checklists/design-reference.md +97 -0
  182. package/templates/base/knowledge/checklists/security.md +50 -0
  183. package/templates/base/knowledge/checklists/ssot-validation.md +19 -0
  184. package/templates/base/knowledge/domains/_template.md +16 -0
  185. package/templates/base/knowledge/platforms/_template.md +16 -0
  186. package/templates/base/knowledge/templates/sequence-report.md +44 -0
  187. package/templates/base/knowledge/templates/task-result.md +105 -0
  188. package/templates/base/skills/_template/SKILL.md +59 -0
  189. package/templates/base/skills/_template/references/_template.md +35 -0
  190. package/templates/base/skills/_template/rules/_sections.md +34 -0
  191. package/templates/base/skills/_template/rules/_template.md +32 -0
  192. package/templates/base/skills/_template/scripts/_template.sh +31 -0
  193. package/templates/base/skills/architecture/SKILL.md +54 -0
  194. package/templates/base/skills/architecture/references/adr-template.md +50 -0
  195. package/templates/base/skills/architecture/references/api-design.md +64 -0
  196. package/templates/base/skills/backend/node/SKILL.md +81 -0
  197. package/templates/base/skills/backend/node/rules/async-patterns.md +81 -0
  198. package/templates/base/skills/backend/node/rules/deployment.md +33 -0
  199. package/templates/base/skills/backend/node/rules/env-config.md +41 -0
  200. package/templates/base/skills/backend/node/rules/error-handling.md +83 -0
  201. package/templates/base/skills/backend/node/rules/hono-app-setup.md +98 -0
  202. package/templates/base/skills/backend/node/rules/jwt-auth.md +76 -0
  203. package/templates/base/skills/backend/node/rules/middleware.md +56 -0
  204. package/templates/base/skills/backend/node/rules/testing.md +82 -0
  205. package/templates/base/skills/coding/SKILL.md +47 -0
  206. package/templates/base/skills/coding/rules/patterns.md +81 -0
  207. package/templates/base/skills/database/SKILL.md +98 -0
  208. package/templates/base/skills/database/prisma/SKILL.md +57 -0
  209. package/templates/base/skills/database/prisma/rules/queries.md +133 -0
  210. package/templates/base/skills/database/prisma/rules/schema-design.md +80 -0
  211. package/templates/base/skills/frontend/nextjs/SKILL.md +59 -0
  212. package/templates/base/skills/frontend/nextjs/rules/app-router.md +138 -0
  213. package/templates/base/skills/frontend/react/SKILL.md +86 -0
  214. package/templates/base/skills/frontend/react/rules/_sections.md +88 -0
  215. package/templates/base/skills/frontend/react/rules/anti-patterns.md +67 -0
  216. package/templates/base/skills/frontend/react/rules/async-api-routes.md +38 -0
  217. package/templates/base/skills/frontend/react/rules/async-defer-await.md +80 -0
  218. package/templates/base/skills/frontend/react/rules/async-dependencies.md +36 -0
  219. package/templates/base/skills/frontend/react/rules/async-parallel.md +28 -0
  220. package/templates/base/skills/frontend/react/rules/async-suspense-boundaries.md +99 -0
  221. package/templates/base/skills/frontend/react/rules/bundle-barrel-imports.md +59 -0
  222. package/templates/base/skills/frontend/react/rules/bundle-defer-third-party.md +49 -0
  223. package/templates/base/skills/frontend/react/rules/bundle-dynamic-imports.md +35 -0
  224. package/templates/base/skills/frontend/react/rules/component-conventions.md +74 -0
  225. package/templates/base/skills/frontend/react/rules/js-combine-iterations.md +32 -0
  226. package/templates/base/skills/frontend/react/rules/js-early-exit.md +50 -0
  227. package/templates/base/skills/frontend/react/rules/js-index-maps.md +37 -0
  228. package/templates/base/skills/frontend/react/rules/js-set-map-lookups.md +24 -0
  229. package/templates/base/skills/frontend/react/rules/rendering-conditional-render.md +40 -0
  230. package/templates/base/skills/frontend/react/rules/rendering-content-visibility.md +38 -0
  231. package/templates/base/skills/frontend/react/rules/rendering-hoist-jsx.md +46 -0
  232. package/templates/base/skills/frontend/react/rules/rerender-defer-reads.md +39 -0
  233. package/templates/base/skills/frontend/react/rules/rerender-derived-state.md +29 -0
  234. package/templates/base/skills/frontend/react/rules/rerender-memo.md +44 -0
  235. package/templates/base/skills/frontend/react/rules/rerender-transitions.md +40 -0
  236. package/templates/base/skills/frontend/react/rules/server-after-nonblocking.md +73 -0
  237. package/templates/base/skills/frontend/react/rules/server-cache-react.md +26 -0
  238. package/templates/base/skills/frontend/react/rules/server-parallel-fetching.md +79 -0
  239. package/templates/base/skills/frontend/react/rules/state-location.md +55 -0
  240. package/templates/base/skills/methodology/bdd/SKILL.md +69 -0
  241. package/templates/base/skills/methodology/bdd/rules/gherkin-patterns.md +113 -0
  242. package/templates/base/skills/methodology/ddd/SKILL.md +74 -0
  243. package/templates/base/skills/methodology/ddd/rules/strategic-patterns.md +98 -0
  244. package/templates/base/skills/methodology/debugging/SKILL.md +60 -0
  245. package/templates/base/skills/methodology/debugging/references/root-cause-tracing.md +84 -0
  246. package/templates/base/skills/methodology/tdd/SKILL.md +66 -0
  247. package/templates/base/skills/methodology/tdd/rules/real-world-example.md +88 -0
  248. package/templates/base/skills/methodology/tdd/rules/techniques.md +185 -0
  249. package/templates/base/skills/planning/SKILL.md +58 -0
  250. package/templates/base/skills/planning/references/prd-guide.md +47 -0
  251. package/templates/base/skills/planning/references/requirements-guide.md +46 -0
  252. package/templates/base/skills/prompt-engineering/SKILL.md +103 -0
  253. package/templates/base/skills/retrospective/SKILL.md +102 -0
  254. package/templates/base/skills/security/SKILL.md +55 -0
  255. package/templates/base/skills/security/rules/owasp-examples.md +119 -0
  256. package/templates/base/skills/security/scripts/check-secrets.sh +55 -0
  257. package/templates/base/skills/testing/SKILL.md +63 -0
  258. package/templates/base/skills/testing/references/testing-patterns.md +103 -0
  259. package/templates/base/skills/tsq-protocol/SKILL.md +51 -0
  260. package/templates/base/skills/typescript/SKILL.md +67 -0
  261. package/templates/base/skills/typescript/rules/type-patterns.md +135 -0
  262. package/templates/base/skills/typescript/rules/utility-types.md +76 -0
  263. package/templates/base/skills/ui-design/SKILL.md +70 -0
  264. package/templates/{common → base}/timsquad/feedback/routing-rules.yaml +1 -1
  265. package/templates/base/timsquad/process/phase-checklist.yaml +174 -0
  266. package/templates/{common → base}/timsquad/process/state-machine.xml +12 -0
  267. package/templates/{common → base}/timsquad/process/workflow-base.xml +124 -0
  268. package/templates/{common → base}/timsquad/retrospective/metrics/metrics-schema.json +46 -1
  269. package/templates/platforms/claude-code/CLAUDE.md.template +64 -0
  270. package/templates/platforms/claude-code/rules/adr-rules.md +32 -0
  271. package/templates/platforms/claude-code/rules/feedback-routing.md +18 -0
  272. package/templates/platforms/claude-code/rules/phase-management.md +23 -0
  273. package/templates/platforms/claude-code/rules/reporting-format.md +26 -0
  274. package/templates/platforms/claude-code/rules/sequence-management.md +72 -0
  275. package/templates/platforms/claude-code/rules/workspace-sync.md +33 -0
  276. package/templates/platforms/claude-code/settings.json +26 -0
  277. package/templates/project-types/api-backend/config.yaml +227 -0
  278. package/templates/project-types/api-backend/process/workflow.xml +214 -0
  279. package/templates/project-types/fintech/config.yaml +151 -0
  280. package/templates/project-types/fintech/process/workflow.xml +316 -0
  281. package/templates/project-types/infra/config.yaml +327 -0
  282. package/templates/project-types/infra/process/workflow.xml +296 -0
  283. package/templates/project-types/platform/config.yaml +254 -0
  284. package/templates/project-types/platform/process/workflow.xml +254 -0
  285. package/templates/project-types/web-app/config.yaml +198 -0
  286. package/templates/project-types/web-app/process/workflow.xml +210 -0
  287. package/templates/project-types/web-service/config.yaml +136 -0
  288. package/templates/project-types/web-service/process/workflow.xml +184 -0
  289. package/templates/common/CLAUDE.md.template +0 -254
  290. package/templates/common/claude/agents/tsq-dba.md +0 -290
  291. package/templates/common/claude/agents/tsq-designer.md +0 -304
  292. package/templates/common/claude/agents/tsq-developer.md +0 -118
  293. package/templates/common/claude/agents/tsq-planner.md +0 -90
  294. package/templates/common/claude/agents/tsq-prompter.md +0 -336
  295. package/templates/common/claude/agents/tsq-qa.md +0 -134
  296. package/templates/common/claude/agents/tsq-retro.md +0 -168
  297. package/templates/common/claude/agents/tsq-security.md +0 -190
  298. package/templates/common/claude/skills/architecture/SKILL.md +0 -123
  299. package/templates/common/claude/skills/backend/node/SKILL.md +0 -1015
  300. package/templates/common/claude/skills/coding/SKILL.md +0 -171
  301. package/templates/common/claude/skills/database/prisma/SKILL.md +0 -357
  302. package/templates/common/claude/skills/frontend/nextjs/SKILL.md +0 -279
  303. package/templates/common/claude/skills/frontend/react/SKILL.md +0 -1729
  304. package/templates/common/claude/skills/methodology/bdd/SKILL.md +0 -234
  305. package/templates/common/claude/skills/methodology/ddd/SKILL.md +0 -311
  306. package/templates/common/claude/skills/methodology/tdd/SKILL.md +0 -512
  307. package/templates/common/claude/skills/planning/SKILL.md +0 -90
  308. package/templates/common/claude/skills/security/SKILL.md +0 -234
  309. package/templates/common/claude/skills/testing/SKILL.md +0 -146
  310. package/templates/common/claude/skills/typescript/SKILL.md +0 -435
  311. package/templates/common/config.template.yaml +0 -131
  312. /package/templates/{common → base}/timsquad/architectures/clean/ARCHITECTURE.md +0 -0
  313. /package/templates/{common → base}/timsquad/architectures/clean/backend.xml +0 -0
  314. /package/templates/{common → base}/timsquad/architectures/clean/frontend.xml +0 -0
  315. /package/templates/{common → base}/timsquad/architectures/fsd/ARCHITECTURE.md +0 -0
  316. /package/templates/{common → base}/timsquad/architectures/fsd/frontend.xml +0 -0
  317. /package/templates/{common → base}/timsquad/architectures/hexagonal/ARCHITECTURE.md +0 -0
  318. /package/templates/{common → base}/timsquad/architectures/hexagonal/backend.xml +0 -0
  319. /package/templates/{common → base}/timsquad/constraints/competency-framework.xml +0 -0
  320. /package/templates/{common → base}/timsquad/constraints/ssot-schema.xml +0 -0
  321. /package/templates/{common → base}/timsquad/feedback/feedback-router.sh +0 -0
  322. /package/templates/{common → base}/timsquad/generators/data-design.xml +0 -0
  323. /package/templates/{common → base}/timsquad/generators/prd.xml +0 -0
  324. /package/templates/{common → base}/timsquad/generators/requirements.xml +0 -0
  325. /package/templates/{common → base}/timsquad/generators/service-spec.xml +0 -0
  326. /package/templates/{common → base}/timsquad/logs/_example.md +0 -0
  327. /package/templates/{common → base}/timsquad/logs/_template.md +0 -0
  328. /package/templates/{common → base}/timsquad/patterns/cqrs.xml +0 -0
  329. /package/templates/{common → base}/timsquad/patterns/event-sourcing.xml +0 -0
  330. /package/templates/{common → base}/timsquad/patterns/repository.xml +0 -0
  331. /package/templates/{common → base}/timsquad/process/validation-rules.xml +0 -0
  332. /package/templates/{common → base}/timsquad/retrospective/cycle-report.template.md +0 -0
  333. /package/templates/{common → base}/timsquad/retrospective/patterns/failure-patterns.md +0 -0
  334. /package/templates/{common → base}/timsquad/retrospective/patterns/success-patterns.md +0 -0
  335. /package/templates/{common → base}/timsquad/retrospective/retrospective-config.xml +0 -0
  336. /package/templates/{common → base}/timsquad/retrospective/retrospective-state.xml +0 -0
  337. /package/templates/{common → base}/timsquad/ssot/adr/ADR-000-template.md +0 -0
  338. /package/templates/{common → base}/timsquad/ssot/adr/ADR-001-example.md +0 -0
  339. /package/templates/{common → base}/timsquad/ssot/data-design.template.md +0 -0
  340. /package/templates/{common → base}/timsquad/ssot/deployment-spec.template.md +0 -0
  341. /package/templates/{common → base}/timsquad/ssot/env-config.template.md +0 -0
  342. /package/templates/{common → base}/timsquad/ssot/error-codes.template.md +0 -0
  343. /package/templates/{common → base}/timsquad/ssot/functional-spec.template.md +0 -0
  344. /package/templates/{common → base}/timsquad/ssot/glossary.template.md +0 -0
  345. /package/templates/{common → base}/timsquad/ssot/integration-spec.template.md +0 -0
  346. /package/templates/{common → base}/timsquad/ssot/planning.template.md +0 -0
  347. /package/templates/{common → base}/timsquad/ssot/prd.template.md +0 -0
  348. /package/templates/{common → base}/timsquad/ssot/requirements.template.md +0 -0
  349. /package/templates/{common → base}/timsquad/ssot/security-spec.template.md +0 -0
  350. /package/templates/{common → base}/timsquad/ssot/service-spec.template.md +0 -0
  351. /package/templates/{common → base}/timsquad/ssot/test-spec.template.md +0 -0
  352. /package/templates/{common → base}/timsquad/ssot/ui-ux-spec.template.md +0 -0
  353. /package/templates/{common → base}/timsquad/state/workspace.xml +0 -0
@@ -0,0 +1,32 @@
1
+ /**
2
+ * Skill & Knowledge selective deployment.
3
+ * Mirrors agent-generator.ts pattern — only deploy what the project type needs.
4
+ */
5
+ import type { TimsquadConfig } from '../types/config.js';
6
+ import type { TemplateVariables } from './template.js';
7
+ /**
8
+ * Get skills to deploy for a project.
9
+ * Combines BASE_SKILLS + type-specific + domain-specific + stack-specific skills.
10
+ */
11
+ export declare function getActiveSkills(config: TimsquadConfig): string[];
12
+ /**
13
+ * Deploy only active skills from templates to project.
14
+ * Each skill is a directory: SKILL.md + optional rules/
15
+ */
16
+ export declare function deploySkills(templatesDir: string, destSkillsDir: string, activeSkills: string[], variables: TemplateVariables): Promise<void>;
17
+ /**
18
+ * Validate skill structure and return warnings.
19
+ * - SKILL.md should be ≤120 lines (concise index, not exhaustive doc)
20
+ */
21
+ export declare function validateSkillStructure(skillDir: string): string[];
22
+ /**
23
+ * Get knowledge files to deploy for a project.
24
+ * Combines BASE_KNOWLEDGE + type-specific + domain-specific knowledge.
25
+ */
26
+ export declare function getActiveKnowledge(config: TimsquadConfig): string[];
27
+ /**
28
+ * Deploy only active knowledge files from templates to project.
29
+ * Each knowledge item maps to a .md file under knowledge/.
30
+ */
31
+ export declare function deployKnowledge(templatesDir: string, destKnowledgeDir: string, activeKnowledge: string[], variables: TemplateVariables): Promise<void>;
32
+ //# sourceMappingURL=skill-generator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"skill-generator.d.ts","sourceRoot":"","sources":["../../src/lib/skill-generator.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAMzD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAOvD;;;GAGG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,cAAc,GAAG,MAAM,EAAE,CAShE;AAED;;;GAGG;AACH,wBAAsB,YAAY,CAChC,YAAY,EAAE,MAAM,EACpB,aAAa,EAAE,MAAM,EACrB,YAAY,EAAE,MAAM,EAAE,EACtB,SAAS,EAAE,iBAAiB,GAC3B,OAAO,CAAC,IAAI,CAAC,CAuBf;AAsCD;;;GAGG;AACH,wBAAgB,sBAAsB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,EAAE,CAiBjE;AA+ED;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,cAAc,GAAG,MAAM,EAAE,CAOnE;AAED;;;GAGG;AACH,wBAAsB,eAAe,CACnC,YAAY,EAAE,MAAM,EACpB,gBAAgB,EAAE,MAAM,EACxB,eAAe,EAAE,MAAM,EAAE,EACzB,SAAS,EAAE,iBAAiB,GAC3B,OAAO,CAAC,IAAI,CAAC,CAiBf"}
@@ -0,0 +1,187 @@
1
+ /**
2
+ * Skill & Knowledge selective deployment.
3
+ * Mirrors agent-generator.ts pattern — only deploy what the project type needs.
4
+ */
5
+ import path from 'path';
6
+ import fs from 'fs-extra';
7
+ import { BASE_SKILLS, SKILL_PRESETS, BASE_KNOWLEDGE, KNOWLEDGE_PRESETS, DOMAIN_SKILL_MAP, DOMAIN_KNOWLEDGE_MAP, STACK_SKILL_MAP, } from '../types/config.js';
8
+ import { substituteVariables } from './template.js';
9
+ // ─────────────────────────────────────────────────
10
+ // Skills
11
+ // ─────────────────────────────────────────────────
12
+ /**
13
+ * Get skills to deploy for a project.
14
+ * Combines BASE_SKILLS + type-specific + domain-specific + stack-specific skills.
15
+ */
16
+ export function getActiveSkills(config) {
17
+ const typeSkills = SKILL_PRESETS[config.project.type] || [];
18
+ const domainSkills = config.project.domain
19
+ ? (DOMAIN_SKILL_MAP[config.project.domain] || [])
20
+ : [];
21
+ const stackSkills = (config.project.stack || [])
22
+ .flatMap(s => STACK_SKILL_MAP[s] || []);
23
+ return [...new Set([...BASE_SKILLS, ...typeSkills, ...domainSkills, ...stackSkills])];
24
+ }
25
+ /**
26
+ * Deploy only active skills from templates to project.
27
+ * Each skill is a directory: SKILL.md + optional rules/
28
+ */
29
+ export async function deploySkills(templatesDir, destSkillsDir, activeSkills, variables) {
30
+ const srcSkillsDir = path.join(templatesDir, 'base', 'skills');
31
+ if (!await fs.pathExists(srcSkillsDir))
32
+ return;
33
+ // Always deploy _template/
34
+ const templateDir = path.join(srcSkillsDir, '_template');
35
+ if (await fs.pathExists(templateDir)) {
36
+ await copySkillDir(templateDir, path.join(destSkillsDir, '_template'), variables);
37
+ }
38
+ // Deploy active skills
39
+ for (const skill of activeSkills) {
40
+ const srcPath = path.join(srcSkillsDir, skill);
41
+ const destPath = path.join(destSkillsDir, skill);
42
+ if (!await fs.pathExists(srcPath))
43
+ continue;
44
+ await copySkillDir(srcPath, destPath, variables);
45
+ }
46
+ // Remove inactive skills (if re-deploying / upgrading)
47
+ await removeInactiveSkills(destSkillsDir, activeSkills);
48
+ }
49
+ /**
50
+ * Copy a skill directory (SKILL.md + rules/ + references/ + scripts/)
51
+ */
52
+ async function copySkillDir(srcDir, destDir, variables) {
53
+ await fs.ensureDir(destDir);
54
+ const entries = await fs.readdir(srcDir, { withFileTypes: true });
55
+ for (const entry of entries) {
56
+ const srcPath = path.join(srcDir, entry.name);
57
+ const destPath = path.join(destDir, entry.name);
58
+ if (entry.isDirectory()) {
59
+ await copySkillDir(srcPath, destPath, variables);
60
+ }
61
+ else {
62
+ const ext = path.extname(entry.name).toLowerCase();
63
+ const textExts = ['.md', '.yaml', '.yml', '.json', '.xml', '.txt'];
64
+ if (textExts.includes(ext)) {
65
+ const content = await fs.readFile(srcPath, 'utf-8');
66
+ const processed = substituteVariables(content, variables);
67
+ await fs.writeFile(destPath, processed, 'utf-8');
68
+ }
69
+ else {
70
+ await fs.copy(srcPath, destPath);
71
+ // Set executable permission for shell scripts
72
+ if (ext === '.sh') {
73
+ await fs.chmod(destPath, 0o755);
74
+ }
75
+ }
76
+ }
77
+ }
78
+ }
79
+ /**
80
+ * Validate skill structure and return warnings.
81
+ * - SKILL.md should be ≤120 lines (concise index, not exhaustive doc)
82
+ */
83
+ export function validateSkillStructure(skillDir) {
84
+ const warnings = [];
85
+ const skillMd = path.join(skillDir, 'SKILL.md');
86
+ if (!fs.pathExistsSync(skillMd))
87
+ return warnings;
88
+ const content = fs.readFileSync(skillMd, 'utf-8');
89
+ const lineCount = content.split('\n').length;
90
+ if (lineCount > 120) {
91
+ warnings.push(`${skillDir}: SKILL.md is ${lineCount} lines (max 120). ` +
92
+ `Consider moving detailed content to references/ or rules/.`);
93
+ }
94
+ return warnings;
95
+ }
96
+ /**
97
+ * Remove skill directories that are not in the active list.
98
+ * Preserves _template/ always.
99
+ */
100
+ async function removeInactiveSkills(destSkillsDir, activeSkills) {
101
+ if (!await fs.pathExists(destSkillsDir))
102
+ return;
103
+ // Build a set of top-level directories to keep
104
+ const keepSet = new Set();
105
+ keepSet.add('_template');
106
+ for (const skill of activeSkills) {
107
+ // For nested skills like 'frontend/react', keep the top-level 'frontend'
108
+ const topLevel = skill.split('/')[0];
109
+ keepSet.add(topLevel);
110
+ }
111
+ const entries = await fs.readdir(destSkillsDir, { withFileTypes: true });
112
+ for (const entry of entries) {
113
+ if (!entry.isDirectory())
114
+ continue;
115
+ if (keepSet.has(entry.name)) {
116
+ // For parent dirs like 'frontend/', check subdirectories
117
+ await removeInactiveSubSkills(path.join(destSkillsDir, entry.name), activeSkills, entry.name);
118
+ continue;
119
+ }
120
+ // Completely inactive top-level skill
121
+ await fs.remove(path.join(destSkillsDir, entry.name));
122
+ }
123
+ }
124
+ /**
125
+ * For parent skill directories (e.g. frontend/, methodology/),
126
+ * remove inactive sub-skills while keeping active ones.
127
+ */
128
+ async function removeInactiveSubSkills(parentDir, activeSkills, parentName) {
129
+ const entries = await fs.readdir(parentDir, { withFileTypes: true });
130
+ // Check if this directory itself is a skill (has SKILL.md)
131
+ const hasSelfSkill = entries.some(e => e.name === 'SKILL.md');
132
+ const isParentActive = activeSkills.includes(parentName);
133
+ // If parent itself is an active skill, keep it
134
+ if (hasSelfSkill && !isParentActive) {
135
+ // Remove only SKILL.md and rules/ from parent, keep subdirs
136
+ }
137
+ for (const entry of entries) {
138
+ if (!entry.isDirectory())
139
+ continue;
140
+ if (['rules', 'references', 'scripts'].includes(entry.name))
141
+ continue; // belongs to parent skill
142
+ const subSkillPath = `${parentName}/${entry.name}`;
143
+ if (!activeSkills.includes(subSkillPath)) {
144
+ await fs.remove(path.join(parentDir, entry.name));
145
+ }
146
+ }
147
+ // If parent directory is now empty (no SKILL.md, no subdirs), remove it
148
+ const remaining = await fs.readdir(parentDir);
149
+ if (remaining.length === 0) {
150
+ await fs.remove(parentDir);
151
+ }
152
+ }
153
+ // ─────────────────────────────────────────────────
154
+ // Knowledge
155
+ // ─────────────────────────────────────────────────
156
+ /**
157
+ * Get knowledge files to deploy for a project.
158
+ * Combines BASE_KNOWLEDGE + type-specific + domain-specific knowledge.
159
+ */
160
+ export function getActiveKnowledge(config) {
161
+ const typeKnowledge = KNOWLEDGE_PRESETS[config.project.type] || [];
162
+ const domainKnowledge = config.project.domain
163
+ ? (DOMAIN_KNOWLEDGE_MAP[config.project.domain] || [])
164
+ : [];
165
+ return [...new Set([...BASE_KNOWLEDGE, ...typeKnowledge, ...domainKnowledge])];
166
+ }
167
+ /**
168
+ * Deploy only active knowledge files from templates to project.
169
+ * Each knowledge item maps to a .md file under knowledge/.
170
+ */
171
+ export async function deployKnowledge(templatesDir, destKnowledgeDir, activeKnowledge, variables) {
172
+ const srcKnowledgeDir = path.join(templatesDir, 'base', 'knowledge');
173
+ if (!await fs.pathExists(srcKnowledgeDir))
174
+ return;
175
+ for (const item of activeKnowledge) {
176
+ // item = 'checklists/security' → file = 'checklists/security.md'
177
+ const srcPath = path.join(srcKnowledgeDir, item + '.md');
178
+ const destPath = path.join(destKnowledgeDir, item + '.md');
179
+ if (!await fs.pathExists(srcPath))
180
+ continue;
181
+ const content = await fs.readFile(srcPath, 'utf-8');
182
+ const processed = substituteVariables(content, variables);
183
+ await fs.ensureDir(path.dirname(destPath));
184
+ await fs.writeFile(destPath, processed, 'utf-8');
185
+ }
186
+ }
187
+ //# sourceMappingURL=skill-generator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"skill-generator.js","sourceRoot":"","sources":["../../src/lib/skill-generator.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,5 @@
1
1
  import type { ProjectType, ProjectLevel } from '../types/index.js';
2
+ import type { TimsquadConfig } from '../types/config.js';
2
3
  /**
3
4
  * Template variables for substitution
4
5
  */
@@ -6,9 +7,14 @@ export interface TemplateVariables {
6
7
  PROJECT_NAME: string;
7
8
  PROJECT_TYPE: string;
8
9
  PROJECT_LEVEL: string;
10
+ PROJECT_DOMAIN: string;
11
+ PROJECT_PLATFORM: string;
12
+ PROJECT_STACK: string;
9
13
  DATE: string;
10
14
  TIMESTAMP: string;
11
15
  INIT_DATE: string;
16
+ ACTIVE_AGENTS: string;
17
+ DELEGATION_RULES: string;
12
18
  }
13
19
  /**
14
20
  * Get templates directory path
@@ -17,11 +23,19 @@ export declare function getTemplatesDir(): string;
17
23
  /**
18
24
  * Create template variables
19
25
  */
20
- export declare function createTemplateVariables(name: string, type: ProjectType, level: ProjectLevel): TemplateVariables;
26
+ export declare function createTemplateVariables(name: string, type: ProjectType, level: ProjectLevel, config?: TimsquadConfig): TemplateVariables;
21
27
  /**
22
28
  * Substitute variables in content
23
29
  */
24
30
  export declare function substituteVariables(content: string, variables: TemplateVariables): string;
31
+ /**
32
+ * Copy and process a single file
33
+ */
34
+ export declare function copyAndProcessFile(src: string, dest: string, variables: TemplateVariables): Promise<void>;
35
+ /**
36
+ * Copy directory recursively with variable substitution
37
+ */
38
+ export declare function copyDirectoryWithSubstitution(srcDir: string, destDir: string, variables: TemplateVariables): Promise<void>;
25
39
  /**
26
40
  * Get required SSOT documents for project
27
41
  */
@@ -29,5 +43,5 @@ export declare function getRequiredDocuments(type: ProjectType, level: ProjectLe
29
43
  /**
30
44
  * Initialize project from templates
31
45
  */
32
- export declare function initializeProject(projectRoot: string, name: string, type: ProjectType, level: ProjectLevel): Promise<void>;
46
+ export declare function initializeProject(projectRoot: string, name: string, type: ProjectType, level: ProjectLevel, config?: TimsquadConfig, automationEnabled?: boolean): Promise<void>;
33
47
  //# sourceMappingURL=template.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"template.d.ts","sourceRoot":"","sources":["../../src/lib/template.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAOnE;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,EAAE,MAAM,CAAC;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED;;GAEG;AACH,wBAAgB,eAAe,IAAI,MAAM,CAGxC;AAED;;GAEG;AACH,wBAAgB,uBAAuB,CACrC,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,WAAW,EACjB,KAAK,EAAE,YAAY,GAClB,iBAAiB,CAUnB;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,iBAAiB,GAAG,MAAM,CASzF;AAwDD;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,WAAW,EAAE,KAAK,EAAE,YAAY,GAAG,MAAM,EAAE,CAIrF;AAED;;GAEG;AACH,wBAAsB,iBAAiB,CACrC,WAAW,EAAE,MAAM,EACnB,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,WAAW,EACjB,KAAK,EAAE,YAAY,GAClB,OAAO,CAAC,IAAI,CAAC,CAqDf"}
1
+ {"version":3,"file":"template.d.ts","sourceRoot":"","sources":["../../src/lib/template.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACnE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AASzD;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,EAAE,MAAM,CAAC;IACtB,cAAc,EAAE,MAAM,CAAC;IACvB,gBAAgB,EAAE,MAAM,CAAC;IACzB,aAAa,EAAE,MAAM,CAAC;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,aAAa,EAAE,MAAM,CAAC;IACtB,gBAAgB,EAAE,MAAM,CAAC;CAC1B;AAED;;GAEG;AACH,wBAAgB,eAAe,IAAI,MAAM,CAGxC;AAED;;GAEG;AACH,wBAAgB,uBAAuB,CACrC,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,WAAW,EACjB,KAAK,EAAE,YAAY,EACnB,MAAM,CAAC,EAAE,cAAc,GACtB,iBAAiB,CA0BnB;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,iBAAiB,GAAG,MAAM,CASzF;AAED;;GAEG;AACH,wBAAsB,kBAAkB,CACtC,GAAG,EAAE,MAAM,EACX,IAAI,EAAE,MAAM,EACZ,SAAS,EAAE,iBAAiB,GAC3B,OAAO,CAAC,IAAI,CAAC,CAMf;AAED;;GAEG;AACH,wBAAsB,6BAA6B,CACjD,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,MAAM,EACf,SAAS,EAAE,iBAAiB,GAC3B,OAAO,CAAC,IAAI,CAAC,CAkCf;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,WAAW,EAAE,KAAK,EAAE,YAAY,GAAG,MAAM,EAAE,CAIrF;AAED;;GAEG;AACH,wBAAsB,iBAAiB,CACrC,WAAW,EAAE,MAAM,EACnB,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,WAAW,EACjB,KAAK,EAAE,YAAY,EACnB,MAAM,CAAC,EAAE,cAAc,EACvB,iBAAiB,UAAO,GACvB,OAAO,CAAC,IAAI,CAAC,CA4Gf"}
@@ -3,6 +3,8 @@ import { fileURLToPath } from 'url';
3
3
  import fs from 'fs-extra';
4
4
  import { REQUIRED_SSOT_BY_LEVEL, REQUIRED_SSOT_BY_TYPE } from '../types/project.js';
5
5
  import { getDateString, getTimestamp } from '../utils/date.js';
6
+ import { getActiveAgents, generateAgentFiles, generateDelegationRules, formatActiveAgentsList } from './agent-generator.js';
7
+ import { getActiveSkills, deploySkills, getActiveKnowledge, deployKnowledge } from './skill-generator.js';
6
8
  const __filename = fileURLToPath(import.meta.url);
7
9
  const __dirname = path.dirname(__filename);
8
10
  /**
@@ -15,15 +17,28 @@ export function getTemplatesDir() {
15
17
  /**
16
18
  * Create template variables
17
19
  */
18
- export function createTemplateVariables(name, type, level) {
20
+ export function createTemplateVariables(name, type, level, config) {
19
21
  const now = new Date();
22
+ // 에이전트 관련 변수 생성
23
+ let activeAgentsText = '';
24
+ let delegationRulesText = '';
25
+ if (config) {
26
+ const activeAgents = getActiveAgents(config);
27
+ activeAgentsText = formatActiveAgentsList(activeAgents);
28
+ delegationRulesText = generateDelegationRules(activeAgents);
29
+ }
20
30
  return {
21
31
  PROJECT_NAME: name,
22
32
  PROJECT_TYPE: type,
23
33
  PROJECT_LEVEL: String(level),
34
+ PROJECT_DOMAIN: config?.project?.domain ?? 'general-web',
35
+ PROJECT_PLATFORM: config?.project?.platform ?? 'claude-code',
36
+ PROJECT_STACK: config?.project?.stack?.join(', ') ?? '',
24
37
  DATE: getDateString(),
25
38
  TIMESTAMP: getTimestamp(),
26
39
  INIT_DATE: now.toISOString(),
40
+ ACTIVE_AGENTS: activeAgentsText,
41
+ DELEGATION_RULES: delegationRulesText,
27
42
  };
28
43
  }
29
44
  /**
@@ -40,7 +55,7 @@ export function substituteVariables(content, variables) {
40
55
  /**
41
56
  * Copy and process a single file
42
57
  */
43
- async function copyAndProcessFile(src, dest, variables) {
58
+ export async function copyAndProcessFile(src, dest, variables) {
44
59
  const content = await fs.readFile(src, 'utf-8');
45
60
  const processed = substituteVariables(content, variables);
46
61
  await fs.ensureDir(path.dirname(dest));
@@ -49,7 +64,7 @@ async function copyAndProcessFile(src, dest, variables) {
49
64
  /**
50
65
  * Copy directory recursively with variable substitution
51
66
  */
52
- async function copyDirectoryWithSubstitution(srcDir, destDir, variables) {
67
+ export async function copyDirectoryWithSubstitution(srcDir, destDir, variables) {
53
68
  const entries = await fs.readdir(srcDir, { withFileTypes: true });
54
69
  for (const entry of entries) {
55
70
  const srcPath = path.join(srcDir, entry.name);
@@ -71,6 +86,10 @@ async function copyDirectoryWithSubstitution(srcDir, destDir, variables) {
71
86
  const textExtensions = ['.md', '.yaml', '.yml', '.json', '.xml', '.sh', '.txt'];
72
87
  if (textExtensions.includes(ext)) {
73
88
  await copyAndProcessFile(srcPath, destPath, variables);
89
+ // Preserve executable permission for shell scripts
90
+ if (ext === '.sh') {
91
+ await fs.chmod(destPath, 0o755);
92
+ }
74
93
  }
75
94
  else {
76
95
  await fs.copy(srcPath, destPath);
@@ -89,52 +108,103 @@ export function getRequiredDocuments(type, level) {
89
108
  /**
90
109
  * Initialize project from templates
91
110
  */
92
- export async function initializeProject(projectRoot, name, type, level) {
111
+ export async function initializeProject(projectRoot, name, type, level, config, automationEnabled = true) {
93
112
  const templatesDir = getTemplatesDir();
94
- const variables = createTemplateVariables(name, type, level);
95
113
  // Adjust level for fintech
96
114
  const effectiveLevel = type === 'fintech' ? 3 : level;
97
- const effectiveVariables = { ...variables, PROJECT_LEVEL: String(effectiveLevel) };
98
- // 1. Copy common/.claude to .claude
99
- const commonClaudeDir = path.join(templatesDir, 'common', 'claude');
115
+ const variables = createTemplateVariables(name, type, effectiveLevel, config);
116
+ // 1. Copy .claude/settings.json (개별 파일만)
117
+ const platformDir = path.join(templatesDir, 'platforms', 'claude-code');
100
118
  const destClaudeDir = path.join(projectRoot, '.claude');
101
- await copyDirectoryWithSubstitution(commonClaudeDir, destClaudeDir, effectiveVariables);
102
- // 2. Copy common/timsquad to .timsquad
103
- const commonTimsquadDir = path.join(templatesDir, 'common', 'timsquad');
119
+ await fs.ensureDir(destClaudeDir);
120
+ const settingsPath = path.join(platformDir, 'settings.json');
121
+ if (await fs.pathExists(settingsPath)) {
122
+ await copyAndProcessFile(settingsPath, path.join(destClaudeDir, 'settings.json'), variables);
123
+ }
124
+ // 2. Deploy .claude/rules/ (메인 세션 전용 상세 규칙)
125
+ const srcRulesDir = path.join(platformDir, 'rules');
126
+ const destRulesDir = path.join(destClaudeDir, 'rules');
127
+ if (await fs.pathExists(srcRulesDir)) {
128
+ await copyDirectoryWithSubstitution(srcRulesDir, destRulesDir, variables);
129
+ }
130
+ // 3. Config 기반 에이전트 동적 생성 (활성 에이전트만 배치)
131
+ if (config) {
132
+ const activeAgents = getActiveAgents(config);
133
+ const destAgentsDir = path.join(destClaudeDir, 'agents');
134
+ await generateAgentFiles(templatesDir, destAgentsDir, activeAgents, variables, config);
135
+ // 3. Config 기반 스킬 선택적 배치 (타입에 맞는 스킬만)
136
+ const activeSkills = getActiveSkills(config);
137
+ await deploySkills(templatesDir, path.join(destClaudeDir, 'skills'), activeSkills, variables);
138
+ // 4. Config 기반 knowledge 선택적 배치 (타입에 맞는 체크리스트만)
139
+ const activeKnowledge = getActiveKnowledge(config);
140
+ await deployKnowledge(templatesDir, path.join(destClaudeDir, 'knowledge'), activeKnowledge, variables);
141
+ }
142
+ else {
143
+ // config 없이 호출된 경우 전체 복사 (fallback)
144
+ await copyDirectoryWithSubstitution(platformDir, destClaudeDir, variables);
145
+ const baseAgentsDir = path.join(templatesDir, 'base', 'agents');
146
+ if (await fs.pathExists(baseAgentsDir)) {
147
+ await copyDirectoryWithSubstitution(baseAgentsDir, path.join(destClaudeDir, 'agents'), variables);
148
+ }
149
+ const baseSkillsDir = path.join(templatesDir, 'base', 'skills');
150
+ if (await fs.pathExists(baseSkillsDir)) {
151
+ await copyDirectoryWithSubstitution(baseSkillsDir, path.join(destClaudeDir, 'skills'), variables);
152
+ }
153
+ const baseKnowledgeDir = path.join(templatesDir, 'base', 'knowledge');
154
+ if (await fs.pathExists(baseKnowledgeDir)) {
155
+ await copyDirectoryWithSubstitution(baseKnowledgeDir, path.join(destClaudeDir, 'knowledge'), variables);
156
+ }
157
+ }
158
+ // 3. Copy common/timsquad to .timsquad
159
+ const commonTimsquadDir = path.join(templatesDir, 'base', 'timsquad');
104
160
  const destTimsquadDir = path.join(projectRoot, '.timsquad');
105
- await copyDirectoryWithSubstitution(commonTimsquadDir, destTimsquadDir, effectiveVariables);
106
- // 3. Copy type-specific workflow
107
- const typeWorkflowDir = path.join(templatesDir, type, 'process');
161
+ await copyDirectoryWithSubstitution(commonTimsquadDir, destTimsquadDir, variables);
162
+ // 4. Copy type-specific workflow
163
+ const typeWorkflowDir = path.join(templatesDir, 'project-types', type, 'process');
108
164
  if (await fs.pathExists(typeWorkflowDir)) {
109
165
  const destProcessDir = path.join(destTimsquadDir, 'process');
110
- await copyDirectoryWithSubstitution(typeWorkflowDir, destProcessDir, effectiveVariables);
166
+ await copyDirectoryWithSubstitution(typeWorkflowDir, destProcessDir, variables);
111
167
  }
112
- // 4. Create CLAUDE.md from template
113
- const claudeMdTemplate = path.join(templatesDir, 'common', 'CLAUDE.md.template');
168
+ // 5. Create CLAUDE.md from template
169
+ const claudeMdTemplate = path.join(templatesDir, 'platforms', 'claude-code', 'CLAUDE.md.template');
114
170
  if (await fs.pathExists(claudeMdTemplate)) {
115
- await copyAndProcessFile(claudeMdTemplate, path.join(projectRoot, 'CLAUDE.md'), effectiveVariables);
171
+ await copyAndProcessFile(claudeMdTemplate, path.join(projectRoot, 'CLAUDE.md'), variables);
116
172
  }
117
173
  // 5. Create additional directories
118
174
  const additionalDirs = [
119
175
  '.timsquad/logs',
120
176
  '.timsquad/logs/quick',
177
+ '.timsquad/logs/sessions',
178
+ '.timsquad/logs/tasks',
179
+ '.timsquad/logs/sequences',
180
+ '.timsquad/logs/phases',
181
+ '.timsquad/reports',
121
182
  '.timsquad/state',
183
+ '.timsquad/state/meta-index',
184
+ '.timsquad/state/meta-index/ui-index',
185
+ '.timsquad/.daemon',
122
186
  '.timsquad/knowledge',
123
187
  '.timsquad/retrospective/cycles',
124
188
  '.timsquad/retrospective/metrics',
125
189
  '.timsquad/retrospective/improvements/prompts',
126
190
  '.timsquad/retrospective/improvements/templates',
191
+ '.claude/knowledge/platforms',
192
+ '.claude/knowledge/domains',
193
+ '.claude/knowledge/checklists',
194
+ '.claude/knowledge/templates',
127
195
  ];
128
196
  for (const dir of additionalDirs) {
129
197
  await fs.ensureDir(path.join(projectRoot, dir));
130
198
  }
131
199
  // 6. Create initial state files
132
- await createInitialStateFiles(projectRoot, name, type, effectiveLevel);
200
+ await createInitialStateFiles(projectRoot, name, type, effectiveLevel, automationEnabled);
201
+ // 7. Create .gitignore (기존 파일이 없을 때만)
202
+ await createGitignore(projectRoot);
133
203
  }
134
204
  /**
135
205
  * Create initial state files
136
206
  */
137
- async function createInitialStateFiles(projectRoot, _name, _type, _level) {
207
+ async function createInitialStateFiles(projectRoot, _name, _type, _level, automationEnabled = true) {
138
208
  // current-phase.json
139
209
  const phaseData = {
140
210
  current: 'planning',
@@ -142,10 +212,94 @@ async function createInitialStateFiles(projectRoot, _name, _type, _level) {
142
212
  progress: 0,
143
213
  };
144
214
  await fs.writeJson(path.join(projectRoot, '.timsquad', 'state', 'current-phase.json'), phaseData, { spaces: 2 });
145
- // knowledge files
215
+ // workflow.json (자동화 워크플로우 상태)
216
+ const workflowData = {
217
+ schema_version: '1.0.0',
218
+ automation: {
219
+ sequence_log: automationEnabled,
220
+ phase_log: automationEnabled,
221
+ phase_gate: automationEnabled,
222
+ metrics: automationEnabled,
223
+ retro: automationEnabled,
224
+ },
225
+ current_phase: null,
226
+ sequences: {},
227
+ completed_phases: [],
228
+ };
229
+ await fs.writeJson(path.join(projectRoot, '.timsquad', 'state', 'workflow.json'), workflowData, { spaces: 2 });
230
+ // knowledge files (이하 기존 로직)
146
231
  const knowledgeDir = path.join(projectRoot, '.timsquad', 'knowledge');
147
232
  await fs.writeFile(path.join(knowledgeDir, 'tribal.md'), `# Tribal Knowledge\n\n## 코딩 컨벤션\n\n## 아키텍처 패턴\n`, 'utf-8');
148
233
  await fs.writeFile(path.join(knowledgeDir, 'lessons.md'), `# Lessons Learned\n\n`, 'utf-8');
149
234
  await fs.writeFile(path.join(knowledgeDir, 'constraints.md'), `# Project Constraints\n\n`, 'utf-8');
150
235
  }
236
+ /**
237
+ * Create .gitignore for TimSquad project
238
+ * .timsquad/, .claude/, CLAUDE.md 는 git 추적 대상으로 포함
239
+ * 런타임 생성 파일과 일반적 무시 대상만 제외
240
+ */
241
+ async function createGitignore(projectRoot) {
242
+ const gitignorePath = path.join(projectRoot, '.gitignore');
243
+ // 기존 .gitignore가 있으면 건드리지 않음
244
+ if (await fs.pathExists(gitignorePath)) {
245
+ return;
246
+ }
247
+ const content = `# OS
248
+ .DS_Store
249
+ Thumbs.db
250
+
251
+ # Editor
252
+ .vscode/
253
+ .idea/
254
+ *.swp
255
+ *.swo
256
+
257
+ # Node
258
+ node_modules/
259
+ npm-debug.log*
260
+ yarn-error.log*
261
+ pnpm-debug.log*
262
+
263
+ # Build output
264
+ dist/
265
+ build/
266
+ .next/
267
+ out/
268
+
269
+ # Environment
270
+ .env
271
+ .env.local
272
+ .env.*.local
273
+
274
+ # Temp
275
+ *.tmp
276
+ *.temp
277
+
278
+ # ============================================================
279
+ # TimSquad - 아래 항목은 git에 포함됨 (ignore하지 않음)
280
+ # ============================================================
281
+ # CLAUDE.md → 프로젝트 에이전트 지시사항 (추적)
282
+ # .claude/ → 에이전트, 스킬, 훅 설정 (추적)
283
+ # .timsquad/ → SSOT, 설정, 프로세스 (추적)
284
+ #
285
+ # 단, 런타임 생성 로그/세션 데이터는 제외:
286
+ .timsquad/logs/sessions/
287
+ .timsquad/logs/quick/
288
+ .timsquad/logs/tasks/
289
+ .timsquad/logs/sequences/
290
+ .timsquad/logs/phases/
291
+ .timsquad/logs/*-session.md
292
+ .timsquad/logs/*-alerts.md
293
+ .timsquad/logs/workflow-automation.log
294
+ .timsquad/retrospective/metrics/latest.json
295
+ .timsquad/state/meta-index/
296
+ .timsquad/state/workflow.json
297
+ .timsquad/.daemon/
298
+ .timsquad/.daemon.pid
299
+ .timsquad/.daemon.log
300
+ .timsquad/.daemon.sock
301
+ .timsquad/.upgrade-backup/
302
+ `;
303
+ await fs.writeFile(gitignorePath, content, 'utf-8');
304
+ }
151
305
  //# sourceMappingURL=template.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"template.js","sourceRoot":"","sources":["../../src/lib/template.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,aAAa,EAAE,MAAM,KAAK,CAAC;AACpC,OAAO,EAAE,MAAM,UAAU,CAAC;AAE1B,OAAO,EAAE,sBAAsB,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AACpF,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAE/D,MAAM,UAAU,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAClD,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;AAc3C;;GAEG;AACH,MAAM,UAAU,eAAe;IAC7B,oDAAoD;IACpD,OAAO,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,WAAW,CAAC,CAAC;AAC1D,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,uBAAuB,CACrC,IAAY,EACZ,IAAiB,EACjB,KAAmB;IAEnB,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC;IACvB,OAAO;QACL,YAAY,EAAE,IAAI;QAClB,YAAY,EAAE,IAAI;QAClB,aAAa,EAAE,MAAM,CAAC,KAAK,CAAC;QAC5B,IAAI,EAAE,aAAa,EAAE;QACrB,SAAS,EAAE,YAAY,EAAE;QACzB,SAAS,EAAE,GAAG,CAAC,WAAW,EAAE;KAC7B,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,mBAAmB,CAAC,OAAe,EAAE,SAA4B;IAC/E,IAAI,MAAM,GAAG,OAAO,CAAC;IAErB,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC;QACrD,MAAM,OAAO,GAAG,IAAI,MAAM,CAAC,SAAS,GAAG,QAAQ,EAAE,GAAG,CAAC,CAAC;QACtD,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;IAC1C,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;GAEG;AACH,KAAK,UAAU,kBAAkB,CAC/B,GAAW,EACX,IAAY,EACZ,SAA4B;IAE5B,MAAM,OAAO,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;IAChD,MAAM,SAAS,GAAG,mBAAmB,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;IAE1D,MAAM,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;IACvC,MAAM,EAAE,CAAC,SAAS,CAAC,IAAI,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;AAC/C,CAAC;AAED;;GAEG;AACH,KAAK,UAAU,6BAA6B,CAC1C,MAAc,EACd,OAAe,EACf,SAA4B;IAE5B,MAAM,OAAO,GAAG,MAAM,EAAE,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC;IAElE,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;QAC5B,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;QAC9C,IAAI,QAAQ,GAAG,KAAK,CAAC,IAAI,CAAC;QAE1B,0BAA0B;QAC1B,IAAI,QAAQ,CAAC,QAAQ,CAAC,cAAc,CAAC,EAAE,CAAC;YACtC,QAAQ,GAAG,QAAQ,CAAC,OAAO,CAAC,cAAc,EAAE,KAAK,CAAC,CAAC;QACrD,CAAC;aAAM,IAAI,QAAQ,CAAC,QAAQ,CAAC,gBAAgB,CAAC,EAAE,CAAC;YAC/C,QAAQ,GAAG,QAAQ,CAAC,OAAO,CAAC,gBAAgB,EAAE,OAAO,CAAC,CAAC;QACzD,CAAC;QAED,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;QAE9C,IAAI,KAAK,CAAC,WAAW,EAAE,EAAE,CAAC;YACxB,MAAM,6BAA6B,CAAC,OAAO,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC;QACpE,CAAC;aAAM,CAAC;YACN,8CAA8C;YAC9C,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,CAAC;YACnD,MAAM,cAAc,GAAG,CAAC,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;YAEhF,IAAI,cAAc,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;gBACjC,MAAM,kBAAkB,CAAC,OAAO,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC;YACzD,CAAC;iBAAM,CAAC;gBACN,MAAM,EAAE,CAAC,IAAI,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;YACnC,CAAC;QACH,CAAC;IACH,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,oBAAoB,CAAC,IAAiB,EAAE,KAAmB;IACzE,MAAM,OAAO,GAAG,sBAAsB,CAAC,KAAK,CAAC,CAAC;IAC9C,MAAM,MAAM,GAAG,qBAAqB,CAAC,IAAI,CAAC,CAAC;IAC3C,OAAO,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,OAAO,EAAE,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;AAC/C,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,iBAAiB,CACrC,WAAmB,EACnB,IAAY,EACZ,IAAiB,EACjB,KAAmB;IAEnB,MAAM,YAAY,GAAG,eAAe,EAAE,CAAC;IACvC,MAAM,SAAS,GAAG,uBAAuB,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;IAE7D,2BAA2B;IAC3B,MAAM,cAAc,GAAG,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;IACtD,MAAM,kBAAkB,GAAG,EAAE,GAAG,SAAS,EAAE,aAAa,EAAE,MAAM,CAAC,cAAc,CAAC,EAAE,CAAC;IAEnF,oCAAoC;IACpC,MAAM,eAAe,GAAG,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC;IACpE,MAAM,aAAa,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC;IACxD,MAAM,6BAA6B,CAAC,eAAe,EAAE,aAAa,EAAE,kBAAkB,CAAC,CAAC;IAExF,uCAAuC;IACvC,MAAM,iBAAiB,GAAG,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,QAAQ,EAAE,UAAU,CAAC,CAAC;IACxE,MAAM,eAAe,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC;IAC5D,MAAM,6BAA6B,CAAC,iBAAiB,EAAE,eAAe,EAAE,kBAAkB,CAAC,CAAC;IAE5F,iCAAiC;IACjC,MAAM,eAAe,GAAG,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,EAAE,SAAS,CAAC,CAAC;IACjE,IAAI,MAAM,EAAE,CAAC,UAAU,CAAC,eAAe,CAAC,EAAE,CAAC;QACzC,MAAM,cAAc,GAAG,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,SAAS,CAAC,CAAC;QAC7D,MAAM,6BAA6B,CAAC,eAAe,EAAE,cAAc,EAAE,kBAAkB,CAAC,CAAC;IAC3F,CAAC;IAED,oCAAoC;IACpC,MAAM,gBAAgB,GAAG,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,QAAQ,EAAE,oBAAoB,CAAC,CAAC;IACjF,IAAI,MAAM,EAAE,CAAC,UAAU,CAAC,gBAAgB,CAAC,EAAE,CAAC;QAC1C,MAAM,kBAAkB,CACtB,gBAAgB,EAChB,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,WAAW,CAAC,EACnC,kBAAkB,CACnB,CAAC;IACJ,CAAC;IAED,mCAAmC;IACnC,MAAM,cAAc,GAAG;QACrB,gBAAgB;QAChB,sBAAsB;QACtB,iBAAiB;QACjB,qBAAqB;QACrB,gCAAgC;QAChC,iCAAiC;QACjC,8CAA8C;QAC9C,gDAAgD;KACjD,CAAC;IAEF,KAAK,MAAM,GAAG,IAAI,cAAc,EAAE,CAAC;QACjC,MAAM,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC,CAAC;IAClD,CAAC;IAED,gCAAgC;IAChC,MAAM,uBAAuB,CAAC,WAAW,EAAE,IAAI,EAAE,IAAI,EAAE,cAAc,CAAC,CAAC;AACzE,CAAC;AAED;;GAEG;AACH,KAAK,UAAU,uBAAuB,CACpC,WAAmB,EACnB,KAAa,EACb,KAAkB,EAClB,MAAoB;IAEpB,qBAAqB;IACrB,MAAM,SAAS,GAAG;QAChB,OAAO,EAAE,UAAU;QACnB,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;QACnC,QAAQ,EAAE,CAAC;KACZ,CAAC;IACF,MAAM,EAAE,CAAC,SAAS,CAChB,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,WAAW,EAAE,OAAO,EAAE,oBAAoB,CAAC,EAClE,SAAS,EACT,EAAE,MAAM,EAAE,CAAC,EAAE,CACd,CAAC;IAEF,kBAAkB;IAClB,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,WAAW,EAAE,WAAW,CAAC,CAAC;IAEtE,MAAM,EAAE,CAAC,SAAS,CAChB,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,WAAW,CAAC,EACpC,iDAAiD,EACjD,OAAO,CACR,CAAC;IAEF,MAAM,EAAE,CAAC,SAAS,CAChB,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,YAAY,CAAC,EACrC,uBAAuB,EACvB,OAAO,CACR,CAAC;IAEF,MAAM,EAAE,CAAC,SAAS,CAChB,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,gBAAgB,CAAC,EACzC,2BAA2B,EAC3B,OAAO,CACR,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"template.js","sourceRoot":"","sources":["../../src/lib/template.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ /**
2
+ * UI Index core library
3
+ * 프론트엔드 컴포넌트 구조 인덱싱, health 점수 관리
4
+ * 저장소: .timsquad/state/meta-index/ui-index/
5
+ */
6
+ import type { UIModuleIndex, ComponentEntry, UIHealthScore, UIPendingEntry } from '../types/ui-meta.js';
7
+ export declare function getUIIndexDir(metaDir: string): string;
8
+ export declare function rebuildUIIndex(projectRoot: string, metaDir: string, excludePatterns?: string[]): Promise<UIModuleIndex>;
9
+ export declare function updateUIIndex(projectRoot: string, metaDir: string, changedFiles?: string[]): Promise<UIModuleIndex>;
10
+ export declare function calculateUIHealth(components: Record<string, ComponentEntry>): UIHealthScore;
11
+ export declare function appendUIPending(metaDir: string, entry: UIPendingEntry): Promise<void>;
12
+ //# sourceMappingURL=ui-index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ui-index.d.ts","sourceRoot":"","sources":["../../src/lib/ui-index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAOH,OAAO,KAAK,EACV,aAAa,EAAE,cAAc,EAC7B,aAAa,EAAE,cAAc,EAC9B,MAAM,qBAAqB,CAAC;AAoB7B,wBAAgB,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAErD;AAID,wBAAsB,cAAc,CAClC,WAAW,EAAE,MAAM,EACnB,OAAO,EAAE,MAAM,EACf,eAAe,CAAC,EAAE,MAAM,EAAE,GACzB,OAAO,CAAC,aAAa,CAAC,CA4ExB;AAID,wBAAsB,aAAa,CACjC,WAAW,EAAE,MAAM,EACnB,OAAO,EAAE,MAAM,EACf,YAAY,CAAC,EAAE,MAAM,EAAE,GACtB,OAAO,CAAC,aAAa,CAAC,CAyExB;AAID,wBAAgB,iBAAiB,CAC/B,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,GACzC,aAAa,CAuBf;AAID,wBAAsB,eAAe,CACnC,OAAO,EAAE,MAAM,EACf,KAAK,EAAE,cAAc,GACpB,OAAO,CAAC,IAAI,CAAC,CAIf"}