timsquad 3.7.0 → 3.8.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 (92) hide show
  1. package/README.ko.md +8 -9
  2. package/README.md +44 -11
  3. package/dist/commands/audit.d.ts +6 -0
  4. package/dist/commands/audit.d.ts.map +1 -0
  5. package/dist/commands/audit.js +111 -0
  6. package/dist/commands/audit.js.map +1 -0
  7. package/dist/commands/log.d.ts +6 -0
  8. package/dist/commands/log.d.ts.map +1 -0
  9. package/dist/commands/log.js +85 -0
  10. package/dist/commands/log.js.map +1 -0
  11. package/dist/commands/next.d.ts +15 -0
  12. package/dist/commands/next.d.ts.map +1 -0
  13. package/dist/commands/next.js +146 -0
  14. package/dist/commands/next.js.map +1 -0
  15. package/dist/commands/plan.d.ts +6 -0
  16. package/dist/commands/plan.d.ts.map +1 -0
  17. package/dist/commands/plan.js +83 -0
  18. package/dist/commands/plan.js.map +1 -0
  19. package/dist/commands/retro.d.ts +6 -0
  20. package/dist/commands/retro.d.ts.map +1 -0
  21. package/dist/commands/retro.js +74 -0
  22. package/dist/commands/retro.js.map +1 -0
  23. package/dist/commands/spec.d.ts +6 -0
  24. package/dist/commands/spec.d.ts.map +1 -0
  25. package/dist/commands/spec.js +56 -0
  26. package/dist/commands/spec.js.map +1 -0
  27. package/dist/commands/status.d.ts +6 -0
  28. package/dist/commands/status.d.ts.map +1 -0
  29. package/dist/commands/status.js +99 -0
  30. package/dist/commands/status.js.map +1 -0
  31. package/dist/daemon/index.d.ts.map +1 -1
  32. package/dist/daemon/index.js +12 -10
  33. package/dist/daemon/index.js.map +1 -1
  34. package/dist/daemon/meta-cache.d.ts +2 -1
  35. package/dist/daemon/meta-cache.d.ts.map +1 -1
  36. package/dist/daemon/meta-cache.js +20 -4
  37. package/dist/daemon/meta-cache.js.map +1 -1
  38. package/dist/index.js +15 -1
  39. package/dist/index.js.map +1 -1
  40. package/dist/lib/config.d.ts.map +1 -1
  41. package/dist/lib/config.js +14 -1
  42. package/dist/lib/config.js.map +1 -1
  43. package/dist/lib/planning-parser.d.ts +65 -0
  44. package/dist/lib/planning-parser.d.ts.map +1 -0
  45. package/dist/lib/planning-parser.js +306 -0
  46. package/dist/lib/planning-parser.js.map +1 -0
  47. package/dist/lib/skill-generator.d.ts.map +1 -1
  48. package/dist/lib/skill-generator.js +7 -3
  49. package/dist/lib/skill-generator.js.map +1 -1
  50. package/dist/lib/template.d.ts.map +1 -1
  51. package/dist/lib/template.js +22 -5
  52. package/dist/lib/template.js.map +1 -1
  53. package/dist/lib/workflow-state.d.ts +77 -0
  54. package/dist/lib/workflow-state.d.ts.map +1 -1
  55. package/dist/lib/workflow-state.js +194 -0
  56. package/dist/lib/workflow-state.js.map +1 -1
  57. package/dist/types/config.d.ts +14 -0
  58. package/dist/types/config.d.ts.map +1 -1
  59. package/dist/types/config.js +15 -1
  60. package/dist/types/config.js.map +1 -1
  61. package/package.json +1 -1
  62. package/templates/base/agents/base/tsq-librarian.md +1 -1
  63. package/templates/base/scripts/calculate-retro-metrics.sh +46 -0
  64. package/templates/base/scripts/check-circular-deps.sh +82 -0
  65. package/templates/base/scripts/cleanup-trails.sh +44 -0
  66. package/templates/base/scripts/generate-prd-traceability.sh +91 -0
  67. package/templates/base/scripts/manage-fp-registry.sh +83 -0
  68. package/templates/base/scripts/validate-gherkin.sh +113 -0
  69. package/templates/base/skills/tsq-controller/SKILL.md +60 -37
  70. package/templates/base/skills/tsq-controller/references/model-routing.md +38 -0
  71. package/templates/base/skills/tsq-controller/references/wave-dispatch.md +50 -0
  72. package/templates/base/skills/tsq-full/SKILL.md +70 -0
  73. package/templates/base/skills/tsq-grill/SKILL.md +60 -55
  74. package/templates/base/skills/tsq-grill/references/interview-guide.md +86 -0
  75. package/templates/base/skills/tsq-inspect/SKILL.md +108 -0
  76. package/templates/base/skills/tsq-inspect/references/checklist.md +162 -0
  77. package/templates/base/skills/tsq-quick/SKILL.md +58 -0
  78. package/templates/base/skills/tsq-start/SKILL.md +17 -44
  79. package/templates/base/skills/tsq-start/references/onboarding-steps.md +85 -0
  80. package/templates/platforms/claude-code/scripts/build-gate.sh +25 -2
  81. package/templates/platforms/claude-code/scripts/check-capability.sh +41 -10
  82. package/templates/platforms/claude-code/scripts/completion-guard.sh +79 -3
  83. package/templates/platforms/claude-code/scripts/detect-env.sh +124 -0
  84. package/templates/platforms/claude-code/scripts/stale-guard.sh +47 -0
  85. package/templates/platforms/claude-code/scripts/subagent-stop.sh +41 -2
  86. package/templates/platforms/claude-code/scripts/tdd-guard.sh +57 -0
  87. package/templates/platforms/claude-code/scripts/validate-completion-report.sh +86 -0
  88. package/templates/platforms/claude-code/settings.json +10 -0
  89. package/templates/project-types/fintech/config.yaml +1 -1
  90. package/templates/project-types/mobile-app/config.yaml +1 -1
  91. package/templates/project-types/web-app/config.yaml +1 -1
  92. package/templates/project-types/web-service/config.yaml +1 -1
package/dist/index.js CHANGED
@@ -4,6 +4,13 @@ import chalk from 'chalk';
4
4
  import { registerInitCommand } from './commands/init.js';
5
5
  import { registerUpdateCommand } from './commands/update.js';
6
6
  import { registerDaemonCommand } from './commands/daemon.js';
7
+ import { registerNextCommand } from './commands/next.js';
8
+ import { registerPlanCommand } from './commands/plan.js';
9
+ import { registerSpecCommand } from './commands/spec.js';
10
+ import { registerLogCommand } from './commands/log.js';
11
+ import { registerStatusCommand } from './commands/status.js';
12
+ import { registerRetroCommand } from './commands/retro.js';
13
+ import { registerAuditCommand } from './commands/audit.js';
7
14
  import { checkForUpdates } from './lib/update-check.js';
8
15
  import { getInstalledVersion } from './lib/version.js';
9
16
  const program = new Command();
@@ -12,10 +19,17 @@ program
12
19
  .name('tsq')
13
20
  .description('TimSquad - AI Agent Development Process Framework')
14
21
  .version(VERSION);
15
- // Register commands (init, update, daemon — everything else is skills)
22
+ // Register commands
16
23
  registerInitCommand(program);
17
24
  registerUpdateCommand(program);
18
25
  registerDaemonCommand(program);
26
+ registerNextCommand(program);
27
+ registerPlanCommand(program);
28
+ registerSpecCommand(program);
29
+ registerLogCommand(program);
30
+ registerStatusCommand(program);
31
+ registerRetroCommand(program);
32
+ registerAuditCommand(program);
19
33
  // Default action (show help)
20
34
  program.action(() => {
21
35
  console.log(chalk.cyan.bold(`\n TimSquad v${VERSION}`));
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAC7D,OAAO,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAC7D,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAEvD,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;AAC9B,MAAM,OAAO,GAAG,mBAAmB,EAAE,CAAC;AAEtC,OAAO;KACJ,IAAI,CAAC,KAAK,CAAC;KACX,WAAW,CAAC,mDAAmD,CAAC;KAChE,OAAO,CAAC,OAAO,CAAC,CAAC;AAEpB,uEAAuE;AACvE,mBAAmB,CAAC,OAAO,CAAC,CAAC;AAC7B,qBAAqB,CAAC,OAAO,CAAC,CAAC;AAC/B,qBAAqB,CAAC,OAAO,CAAC,CAAC;AAE/B,6BAA6B;AAC7B,OAAO,CAAC,MAAM,CAAC,GAAG,EAAE;IAClB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,iBAAiB,OAAO,EAAE,CAAC,CAAC,CAAC;IACzD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,4CAA4C,CAAC,CAAC,CAAC;IACtE,OAAO,CAAC,IAAI,EAAE,CAAC;AACjB,CAAC,CAAC,CAAC;AAEH,4DAA4D;AAC5D,OAAO,CAAC,IAAI,CAAC,YAAY,EAAE,KAAK,IAAI,EAAE;IACpC,MAAM,eAAe,EAAE,CAAC;AAC1B,CAAC,CAAC,CAAC;AAEH,kBAAkB;AAClB,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;AAE5B,4BAA4B;AAC5B,IAAI,OAAO,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;IAC9B,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,iBAAiB,OAAO,EAAE,CAAC,CAAC,CAAC;IACzD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,4CAA4C,CAAC,CAAC,CAAC;IACtE,OAAO,CAAC,IAAI,EAAE,CAAC;AACjB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAC7D,OAAO,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAC7D,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AACvD,OAAO,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAC7D,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAEvD,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;AAC9B,MAAM,OAAO,GAAG,mBAAmB,EAAE,CAAC;AAEtC,OAAO;KACJ,IAAI,CAAC,KAAK,CAAC;KACX,WAAW,CAAC,mDAAmD,CAAC;KAChE,OAAO,CAAC,OAAO,CAAC,CAAC;AAEpB,oBAAoB;AACpB,mBAAmB,CAAC,OAAO,CAAC,CAAC;AAC7B,qBAAqB,CAAC,OAAO,CAAC,CAAC;AAC/B,qBAAqB,CAAC,OAAO,CAAC,CAAC;AAC/B,mBAAmB,CAAC,OAAO,CAAC,CAAC;AAC7B,mBAAmB,CAAC,OAAO,CAAC,CAAC;AAC7B,mBAAmB,CAAC,OAAO,CAAC,CAAC;AAC7B,kBAAkB,CAAC,OAAO,CAAC,CAAC;AAC5B,qBAAqB,CAAC,OAAO,CAAC,CAAC;AAC/B,oBAAoB,CAAC,OAAO,CAAC,CAAC;AAC9B,oBAAoB,CAAC,OAAO,CAAC,CAAC;AAE9B,6BAA6B;AAC7B,OAAO,CAAC,MAAM,CAAC,GAAG,EAAE;IAClB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,iBAAiB,OAAO,EAAE,CAAC,CAAC,CAAC;IACzD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,4CAA4C,CAAC,CAAC,CAAC;IACtE,OAAO,CAAC,IAAI,EAAE,CAAC;AACjB,CAAC,CAAC,CAAC;AAEH,4DAA4D;AAC5D,OAAO,CAAC,IAAI,CAAC,YAAY,EAAE,KAAK,IAAI,EAAE;IACpC,MAAM,eAAe,EAAE,CAAC;AAC1B,CAAC,CAAC,CAAC;AAEH,kBAAkB;AAClB,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;AAE5B,4BAA4B;AAC5B,IAAI,OAAO,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;IAC9B,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,iBAAiB,OAAO,EAAE,CAAC,CAAC,CAAC;IACzD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,4CAA4C,CAAC,CAAC,CAAC;IACtE,OAAO,CAAC,IAAI,EAAE,CAAC;AACjB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/lib/config.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,WAAW,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AACrG,OAAO,KAAK,EAAE,sBAAsB,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAQtF;;GAEG;AACH,wBAAsB,YAAY,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAExE;AAED;;GAEG;AACH,wBAAsB,UAAU,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC,CAe7E;AAED;;GAEG;AACH,wBAAsB,UAAU,CAAC,WAAW,EAAE,MAAM,EAAE,MAAM,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC,CAG3F;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CACjC,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,WAAW,EACjB,KAAK,EAAE,YAAY,EACnB,OAAO,CAAC,EAAE;IAAE,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,QAAQ,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IAAC,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IAAC,WAAW,CAAC,EAAE,sBAAsB,CAAC;IAAC,YAAY,CAAC,EAAE,mBAAmB,CAAA;CAAE,GACpK,cAAc,CAgDhB;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,OAAO,GAAG,MAAM,IAAI,cAAc,CAoBxE;AA2BD;;GAEG;AACH,wBAAsB,cAAc,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAGzE;AAED;;GAEG;AACH,wBAAsB,cAAc,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,CAG9E;AAED;;GAEG;AACH,wBAAsB,eAAe,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC,CAGhF"}
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/lib/config.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,WAAW,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AACrG,OAAO,KAAK,EAAE,sBAAsB,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAQtF;;GAEG;AACH,wBAAsB,YAAY,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAExE;AAED;;GAEG;AACH,wBAAsB,UAAU,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC,CAe7E;AAED;;GAEG;AACH,wBAAsB,UAAU,CAAC,WAAW,EAAE,MAAM,EAAE,MAAM,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC,CAG3F;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CACjC,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,WAAW,EACjB,KAAK,EAAE,YAAY,EACnB,OAAO,CAAC,EAAE;IAAE,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,QAAQ,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IAAC,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IAAC,WAAW,CAAC,EAAE,sBAAsB,CAAC;IAAC,YAAY,CAAC,EAAE,mBAAmB,CAAA;CAAE,GACpK,cAAc,CAiDhB;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,OAAO,GAAG,MAAM,IAAI,cAAc,CA2BxE;AAgCD;;GAEG;AACH,wBAAsB,cAAc,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAGzE;AAED;;GAEG;AACH,wBAAsB,cAAc,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,CAG9E;AAED;;GAEG;AACH,wBAAsB,eAAe,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC,CAGhF"}
@@ -1,5 +1,5 @@
1
1
  import path from 'path';
2
- import { DEFAULT_CONFIG, FINTECH_CONFIG_OVERRIDES, buildAgentsConfig, DEFAULT_NAMING } from '../types/config.js';
2
+ import { DEFAULT_CONFIG, FINTECH_CONFIG_OVERRIDES, buildAgentsConfig, DEFAULT_NAMING, DEFAULT_MODEL_ROUTING } from '../types/config.js';
3
3
  import { exists } from '../utils/fs.js';
4
4
  import { loadYaml, saveYaml } from '../utils/yaml.js';
5
5
  import { getInstalledVersion } from './version.js';
@@ -55,6 +55,7 @@ export function createDefaultConfig(name, type, level, options) {
55
55
  ...(options?.architecture && { architecture: options.architecture }),
56
56
  },
57
57
  agents: buildAgentsConfig(type),
58
+ model_routing: { ...DEFAULT_MODEL_ROUTING },
58
59
  naming: { ...DEFAULT_NAMING },
59
60
  };
60
61
  // Default domain to 'mobile' for mobile-app
@@ -107,6 +108,14 @@ export function validateConfig(config) {
107
108
  return false;
108
109
  if (project.workspaces !== undefined && !Array.isArray(project.workspaces))
109
110
  return false;
111
+ // Validate model_routing (optional)
112
+ if (c.model_routing !== undefined) {
113
+ const mr = c.model_routing;
114
+ if (typeof mr.enabled !== 'boolean')
115
+ return false;
116
+ if (!isValidModelRoutingStrategy(mr.strategy))
117
+ return false;
118
+ }
110
119
  return true;
111
120
  }
112
121
  /**
@@ -126,6 +135,10 @@ function isValidPlatform(value) {
126
135
  const valid = ['claude-code', 'cursor', 'windsurf', 'mcp', 'gemini'];
127
136
  return typeof value === 'string' && valid.includes(value);
128
137
  }
138
+ function isValidModelRoutingStrategy(value) {
139
+ const valid = ['aggressive', 'balanced', 'conservative'];
140
+ return typeof value === 'string' && valid.includes(value);
141
+ }
129
142
  function isValidDomain(value) {
130
143
  const valid = ['general-web', 'ml-engineering', 'fintech', 'mobile', 'gamedev', 'systems'];
131
144
  return typeof value === 'string' && valid.includes(value);
@@ -1 +1 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/lib/config.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/lib/config.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,65 @@
1
+ /**
2
+ * Planning.md Parser
3
+ *
4
+ * planning.md를 Phase → Sequence → Task 계층 구조로 파싱한다.
5
+ * Controller와 `tsq next` CLI가 사용하는 구조화된 데이터를 생성.
6
+ *
7
+ * 지원 형식:
8
+ * 1. Phase 테이블 (## 2. 마일스톤 아래의 테이블)
9
+ * 2. Phase 헤딩 (## Phase 1: ..., ### Sequence 1: ..., #### Task 1: ...)
10
+ * 3. Phase ID 패턴 (P1, P1-S001, P1-S001-T001)
11
+ */
12
+ export interface PlanningTask {
13
+ id: string;
14
+ title: string;
15
+ description: string;
16
+ agent?: string;
17
+ outputs?: string[];
18
+ dependencies?: string[];
19
+ }
20
+ export interface PlanningSequence {
21
+ id: string;
22
+ title: string;
23
+ tasks: PlanningTask[];
24
+ }
25
+ export interface PlanningPhase {
26
+ id: string;
27
+ title: string;
28
+ goal?: string;
29
+ deliverables?: string[];
30
+ completionCriteria?: string;
31
+ sequences: PlanningSequence[];
32
+ }
33
+ export interface PlanningDocument {
34
+ projectName: string;
35
+ phases: PlanningPhase[];
36
+ }
37
+ /**
38
+ * planning.md 파일을 파싱하여 구조화된 PlanningDocument 반환
39
+ */
40
+ export declare function parsePlanningFile(projectRoot: string): Promise<PlanningDocument | null>;
41
+ /**
42
+ * planning.md 내용을 파싱
43
+ */
44
+ export declare function parsePlanningContent(content: string): PlanningDocument;
45
+ /**
46
+ * 전체 Task 목록을 flat하게 반환
47
+ */
48
+ export declare function getAllTasks(doc: PlanningDocument): PlanningTask[];
49
+ /**
50
+ * Task ID로 검색
51
+ */
52
+ export declare function findTaskById(doc: PlanningDocument, taskId: string): PlanningTask | null;
53
+ /**
54
+ * Task가 속한 Phase를 찾기
55
+ */
56
+ export declare function findPhaseForTask(doc: PlanningDocument, taskId: string): PlanningPhase | null;
57
+ /**
58
+ * Task가 속한 Sequence를 찾기
59
+ */
60
+ export declare function findSequenceForTask(doc: PlanningDocument, taskId: string): PlanningSequence | null;
61
+ /**
62
+ * Phase에 속한 모든 Task ID 목록
63
+ */
64
+ export declare function getPhaseTaskIds(doc: PlanningDocument, phaseId: string): string[];
65
+ //# sourceMappingURL=planning-parser.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"planning-parser.d.ts","sourceRoot":"","sources":["../../src/lib/planning-parser.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAOH,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;CACzB;AAED,MAAM,WAAW,gBAAgB;IAC/B,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,YAAY,EAAE,CAAC;CACvB;AAED,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,SAAS,EAAE,gBAAgB,EAAE,CAAC;CAC/B;AAED,MAAM,WAAW,gBAAgB;IAC/B,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,aAAa,EAAE,CAAC;CACzB;AAUD;;GAEG;AACH,wBAAsB,iBAAiB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,GAAG,IAAI,CAAC,CAM7F;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,MAAM,GAAG,gBAAgB,CAmBtE;AAyOD;;GAEG;AACH,wBAAgB,WAAW,CAAC,GAAG,EAAE,gBAAgB,GAAG,YAAY,EAAE,CAIjE;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,GAAG,EAAE,gBAAgB,EAAE,MAAM,EAAE,MAAM,GAAG,YAAY,GAAG,IAAI,CAQvF;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,gBAAgB,EAAE,MAAM,EAAE,MAAM,GAAG,aAAa,GAAG,IAAI,CAO5F;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,gBAAgB,EAAE,MAAM,EAAE,MAAM,GAAG,gBAAgB,GAAG,IAAI,CAOlG;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,GAAG,EAAE,gBAAgB,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE,CAIhF"}
@@ -0,0 +1,306 @@
1
+ /**
2
+ * Planning.md Parser
3
+ *
4
+ * planning.md를 Phase → Sequence → Task 계층 구조로 파싱한다.
5
+ * Controller와 `tsq next` CLI가 사용하는 구조화된 데이터를 생성.
6
+ *
7
+ * 지원 형식:
8
+ * 1. Phase 테이블 (## 2. 마일스톤 아래의 테이블)
9
+ * 2. Phase 헤딩 (## Phase 1: ..., ### Sequence 1: ..., #### Task 1: ...)
10
+ * 3. Phase ID 패턴 (P1, P1-S001, P1-S001-T001)
11
+ */
12
+ import path from 'path';
13
+ import { exists, readFile } from '../utils/fs.js';
14
+ // ─── Parser ─────────────────────────────────────────────────────
15
+ const PHASE_HEADING_RE = /^##\s+Phase\s+(\d+)[.:]\s*(.+)$/i;
16
+ const SEQUENCE_HEADING_RE = /^###\s+(?:Sequence\s+|S)?(\d+)[.:]\s*(.+)$/i;
17
+ const TASK_HEADING_RE = /^####\s+(?:Task\s+|T)?(\d+)[.:]\s*(.+)$/i;
18
+ /**
19
+ * planning.md 파일을 파싱하여 구조화된 PlanningDocument 반환
20
+ */
21
+ export async function parsePlanningFile(projectRoot) {
22
+ const planningPath = path.join(projectRoot, '.timsquad', 'ssot', 'planning.md');
23
+ if (!await exists(planningPath))
24
+ return null;
25
+ const content = await readFile(planningPath);
26
+ return parsePlanningContent(content);
27
+ }
28
+ /**
29
+ * planning.md 내용을 파싱
30
+ */
31
+ export function parsePlanningContent(content) {
32
+ const lines = content.split('\n');
33
+ // Extract project name from H1
34
+ const h1Match = lines.find(l => l.startsWith('# '));
35
+ const projectName = h1Match
36
+ ? h1Match.replace(/^#\s+/, '').replace(/\s*기획서\s*$/, '').trim()
37
+ : 'Unknown';
38
+ // Try structured heading parse first
39
+ const phases = parseByHeadings(lines);
40
+ // If no structured headings found, try milestone table
41
+ if (phases.length === 0) {
42
+ const tablePhases = parseMilestoneTable(lines);
43
+ return { projectName, phases: tablePhases };
44
+ }
45
+ return { projectName, phases };
46
+ }
47
+ /**
48
+ * heading 기반 파싱 (## Phase N → ### Sequence N → #### Task N)
49
+ */
50
+ function parseByHeadings(lines) {
51
+ const phases = [];
52
+ let currentPhase = null;
53
+ let currentSequence = null;
54
+ let currentTask = null;
55
+ let contentBuffer = [];
56
+ let contentTarget = null;
57
+ function flushContent() {
58
+ const text = contentBuffer.join('\n').trim();
59
+ contentBuffer = [];
60
+ if (!text)
61
+ return;
62
+ if (contentTarget === 'task' && currentTask) {
63
+ currentTask.description = text;
64
+ parseTaskMetadata(currentTask, text);
65
+ }
66
+ else if (contentTarget === 'phase' && currentPhase) {
67
+ currentPhase.goal = text.split('\n')[0];
68
+ }
69
+ }
70
+ function flushTask() {
71
+ flushContent();
72
+ if (currentTask && currentSequence) {
73
+ currentSequence.tasks.push(currentTask);
74
+ currentTask = null;
75
+ }
76
+ }
77
+ function flushSequence() {
78
+ flushTask();
79
+ if (currentSequence && currentPhase) {
80
+ currentPhase.sequences.push(currentSequence);
81
+ currentSequence = null;
82
+ }
83
+ }
84
+ function flushPhase() {
85
+ // Task가 Sequence 없이 존재하면 기본 Sequence에 넣은 뒤 flush
86
+ if (currentTask && !currentSequence && currentPhase) {
87
+ currentSequence = {
88
+ id: `${currentPhase.id}-S001`,
89
+ title: 'Default',
90
+ tasks: [],
91
+ };
92
+ }
93
+ flushSequence();
94
+ if (currentPhase) {
95
+ phases.push(currentPhase);
96
+ currentPhase = null;
97
+ }
98
+ }
99
+ for (const line of lines) {
100
+ // Phase heading
101
+ const phaseMatch = line.match(PHASE_HEADING_RE);
102
+ if (phaseMatch) {
103
+ flushPhase();
104
+ const num = phaseMatch[1];
105
+ currentPhase = {
106
+ id: `P${num}`,
107
+ title: phaseMatch[2].trim(),
108
+ sequences: [],
109
+ };
110
+ contentTarget = 'phase';
111
+ continue;
112
+ }
113
+ // Sequence heading
114
+ const seqMatch = line.match(SEQUENCE_HEADING_RE);
115
+ if (seqMatch && currentPhase) {
116
+ flushSequence();
117
+ const num = seqMatch[1].padStart(3, '0');
118
+ currentSequence = {
119
+ id: `${currentPhase.id}-S${num}`,
120
+ title: seqMatch[2].trim(),
121
+ tasks: [],
122
+ };
123
+ contentTarget = 'sequence';
124
+ continue;
125
+ }
126
+ // Task heading
127
+ const taskMatch = line.match(TASK_HEADING_RE);
128
+ if (taskMatch && currentPhase) {
129
+ flushTask();
130
+ const seqId = currentSequence?.id || `${currentPhase.id}-S001`;
131
+ if (!currentSequence) {
132
+ currentSequence = {
133
+ id: seqId,
134
+ title: 'Default',
135
+ tasks: [],
136
+ };
137
+ }
138
+ const num = taskMatch[1].padStart(3, '0');
139
+ currentTask = {
140
+ id: `${seqId}-T${num}`,
141
+ title: taskMatch[2].trim(),
142
+ description: '',
143
+ };
144
+ contentTarget = 'task';
145
+ continue;
146
+ }
147
+ // Also detect inline task IDs (e.g., "- P1-S001-T001: Login UI")
148
+ const inlineTaskMatch = line.match(/^[-*]\s+(P(\d+)-S(\d+)-T(\d+))[.:]\s*(.+)$/);
149
+ if (inlineTaskMatch && currentPhase) {
150
+ flushTask();
151
+ // Normalize to 3-digit padding (P1-S1-T1 → P1-S001-T001)
152
+ const taskId = `P${inlineTaskMatch[2]}-S${inlineTaskMatch[3].padStart(3, '0')}-T${inlineTaskMatch[4].padStart(3, '0')}`;
153
+ const seqId = `P${inlineTaskMatch[2]}-S${inlineTaskMatch[3].padStart(3, '0')}`;
154
+ if (!currentSequence || currentSequence.id !== seqId) {
155
+ flushSequence();
156
+ currentSequence = {
157
+ id: seqId,
158
+ title: `Sequence ${seqId}`,
159
+ tasks: [],
160
+ };
161
+ }
162
+ currentTask = {
163
+ id: taskId,
164
+ title: inlineTaskMatch[5].trim(),
165
+ description: '',
166
+ };
167
+ contentTarget = 'task';
168
+ continue;
169
+ }
170
+ contentBuffer.push(line);
171
+ }
172
+ flushPhase();
173
+ return phases;
174
+ }
175
+ /**
176
+ * 마일스톤 테이블 파싱 (## 2. 마일스톤 아래 | Phase | 목표 | 산출물 | 완료 기준 |)
177
+ */
178
+ function parseMilestoneTable(lines) {
179
+ const phases = [];
180
+ let inMilestoneSection = false;
181
+ let headerFound = false;
182
+ for (const line of lines) {
183
+ if (/^##\s+\d+\.\s*마일스톤/i.test(line) || /^##\s+\d+\.\s*Milestones?/i.test(line)) {
184
+ inMilestoneSection = true;
185
+ continue;
186
+ }
187
+ if (inMilestoneSection && line.startsWith('## ')) {
188
+ break; // Next section
189
+ }
190
+ if (!inMilestoneSection)
191
+ continue;
192
+ // Skip header separator
193
+ if (/^\|[-\s|]+\|$/.test(line)) {
194
+ headerFound = true;
195
+ continue;
196
+ }
197
+ // Skip header row (first row with |)
198
+ if (!headerFound && line.startsWith('|')) {
199
+ continue;
200
+ }
201
+ if (!headerFound)
202
+ continue;
203
+ // Parse data row
204
+ const cells = line.split('|').map(c => c.trim()).filter(Boolean);
205
+ if (cells.length < 2)
206
+ continue;
207
+ const phaseCell = cells[0];
208
+ const phaseNumMatch = phaseCell.match(/Phase\s+(\d+)/i);
209
+ if (!phaseNumMatch)
210
+ continue;
211
+ const num = phaseNumMatch[1];
212
+ const goal = cells[1] || '';
213
+ const deliverables = cells[2] ? cells[2].split(/[,;]/).map(d => d.trim()).filter(Boolean) : [];
214
+ const criteria = cells[3] || '';
215
+ phases.push({
216
+ id: `P${num}`,
217
+ title: goal || `Phase ${num}`,
218
+ goal: goal || undefined,
219
+ deliverables: deliverables.length > 0 ? deliverables : undefined,
220
+ completionCriteria: criteria || undefined,
221
+ sequences: [{
222
+ id: `P${num}-S001`,
223
+ title: 'Default',
224
+ tasks: [{
225
+ id: `P${num}-S001-T001`,
226
+ title: goal || `Phase ${num} 구현`,
227
+ description: criteria || '',
228
+ }],
229
+ }],
230
+ });
231
+ }
232
+ return phases;
233
+ }
234
+ /**
235
+ * Task 본문에서 에이전트/출력/의존성 메타데이터 추출
236
+ */
237
+ function parseTaskMetadata(task, text) {
238
+ // Agent: developer | qa | architect | librarian
239
+ const agentMatch = text.match(/(?:Agent|에이전트|담당)[:\s]+(\w+)/i);
240
+ if (agentMatch)
241
+ task.agent = agentMatch[1].toLowerCase();
242
+ // Outputs: 산출물 목록
243
+ const outputLines = text.match(/(?:Output|산출물|파일)[:\s]+(.+)/gi);
244
+ if (outputLines) {
245
+ task.outputs = outputLines.flatMap(l => l.replace(/^[^:]+:\s*/, '').split(/[,;]/).map(o => o.trim()).filter(Boolean));
246
+ }
247
+ // Dependencies: 의존성
248
+ const depMatch = text.match(/(?:Depends|의존|선행)[:\s]+(.+)/i);
249
+ if (depMatch) {
250
+ task.dependencies = depMatch[1].split(/[,;]/).map(d => d.trim()).filter(Boolean);
251
+ }
252
+ }
253
+ // ─── Query Helpers ──────────────────────────────────────────────
254
+ /**
255
+ * 전체 Task 목록을 flat하게 반환
256
+ */
257
+ export function getAllTasks(doc) {
258
+ return doc.phases.flatMap(p => p.sequences.flatMap(s => s.tasks));
259
+ }
260
+ /**
261
+ * Task ID로 검색
262
+ */
263
+ export function findTaskById(doc, taskId) {
264
+ for (const phase of doc.phases) {
265
+ for (const seq of phase.sequences) {
266
+ const task = seq.tasks.find(t => t.id === taskId);
267
+ if (task)
268
+ return task;
269
+ }
270
+ }
271
+ return null;
272
+ }
273
+ /**
274
+ * Task가 속한 Phase를 찾기
275
+ */
276
+ export function findPhaseForTask(doc, taskId) {
277
+ for (const phase of doc.phases) {
278
+ for (const seq of phase.sequences) {
279
+ if (seq.tasks.some(t => t.id === taskId))
280
+ return phase;
281
+ }
282
+ }
283
+ return null;
284
+ }
285
+ /**
286
+ * Task가 속한 Sequence를 찾기
287
+ */
288
+ export function findSequenceForTask(doc, taskId) {
289
+ for (const phase of doc.phases) {
290
+ for (const seq of phase.sequences) {
291
+ if (seq.tasks.some(t => t.id === taskId))
292
+ return seq;
293
+ }
294
+ }
295
+ return null;
296
+ }
297
+ /**
298
+ * Phase에 속한 모든 Task ID 목록
299
+ */
300
+ export function getPhaseTaskIds(doc, phaseId) {
301
+ const phase = doc.phases.find(p => p.id === phaseId);
302
+ if (!phase)
303
+ return [];
304
+ return phase.sequences.flatMap(s => s.tasks.map(t => t.id));
305
+ }
306
+ //# sourceMappingURL=planning-parser.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"planning-parser.js","sourceRoot":"","sources":["../../src/lib/planning-parser.ts"],"names":[],"mappings":"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"}
@@ -1 +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;AAqBvD;;;GAGG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,cAAc,GAAG,MAAM,EAAE,CAUhE;AA4BD;;;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;AA0BD;;;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"}
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;AAwBvD;;;GAGG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,cAAc,GAAG,MAAM,EAAE,CAUhE;AA4BD;;;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;AA0BD;;;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"}
@@ -18,10 +18,14 @@ import { substituteVariables } from './template.js';
18
18
  * Dynamically includes methodology/tdd, methodology/bdd etc. based on config.methodology.development.
19
19
  */
20
20
  function getMethodologySkills(config) {
21
+ const skills = [];
21
22
  const dev = config.methodology?.development;
22
- if (!dev || dev === 'none')
23
- return [];
24
- return [`tsq-${dev}`];
23
+ if (dev && dev !== 'none')
24
+ skills.push(`tsq-${dev}`);
25
+ const arch = config.methodology?.architecture;
26
+ if (arch && arch !== 'none')
27
+ skills.push(`tsq-${arch}`);
28
+ return skills;
25
29
  }
26
30
  /**
27
31
  * Get skills to deploy for a project.
@@ -1 +1 @@
1
- {"version":3,"file":"skill-generator.js","sourceRoot":"","sources":["../../src/lib/skill-generator.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"skill-generator.js","sourceRoot":"","sources":["../../src/lib/skill-generator.ts"],"names":[],"mappings":"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"}
@@ -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;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;CACnB;AAmBD;;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,CAcnB;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,EAC5B,OAAO,CAAC,EAAE;IAAE,OAAO,CAAC,EAAE,MAAM,EAAE,CAAA;CAAE,GAC/B,OAAO,CAAC,IAAI,CAAC,CAoCf;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,WAAW,EAAE,KAAK,EAAE,YAAY,GAAG,MAAM,EAAE,CAUrF;AAiGD;;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,CAkHf;AAgFD;;;;;GAKG;AACH,wBAAsB,mBAAmB,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAuB7E"}
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;CACnB;AA8BD;;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,CAcnB;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,EAC5B,OAAO,CAAC,EAAE;IAAE,OAAO,CAAC,EAAE,MAAM,EAAE,CAAA;CAAE,GAC/B,OAAO,CAAC,IAAI,CAAC,CAoCf;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,WAAW,EAAE,KAAK,EAAE,YAAY,GAAG,MAAM,EAAE,CAUrF;AAiGD;;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,CAyHf;AAgFD;;;;;GAKG;AACH,wBAAsB,mBAAmB,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAuB7E"}
@@ -13,11 +13,22 @@ const __dirname = path.dirname(__filename);
13
13
  const TIMSQUAD_BLOCK = `<!-- tsq:start -->
14
14
  ## TimSquad
15
15
 
16
- ### 파이프라인 사전 조건
17
- 사용자가 구현/설계/테스트 등 작업을 지시하면 아래를 먼저 확인:
18
- 1. **데몬 미기동**: \`.timsquad/.daemon.pid\` 없으면 → "\`/tsq-start\`로 파이프라인을 시작해주세요" 안내
19
- 2. **SSOT 미충족**: \`.timsquad/ssot/prd.md\`가 placeholder만이면 → "\`/tsq-start\`로 온보딩을 진행해주세요 (PRD 작성 + 기능별 /tsq-grill 인터뷰)" 안내
20
- 3. 조건 충족 정상 파이프라인 진행
16
+ ### 작업 흐름
17
+ 사용자가 작업을 지시하면 바로 응답한다. 단, 작업 품질을 위해 아래 순서로 점검한다:
18
+
19
+ 1. **개발환경 점검**: 테스트 프레임워크 미설치 시 → "테스트 환경이 없습니다. 설치할까요?"
20
+ 2. **관련 스펙 점검**: 작업에 필요한 SSOT 문서(\`prd.md\`, Sub-PRD 등)의 충실도 확인
21
+ - 충분 → 그대로 진행
22
+ - 부족(빈 섹션, TBD, placeholder) → "이 작업의 기획 문서가 충분하지 않아 보강이 필요합니다. \`/tsq-grill\`로 보강할까요?"
23
+ - 미존재 → "프로젝트 기획서가 아직 없습니다. \`/tsq-grill prd\`로 만들어볼까요?"
24
+ 3. **작업 라우팅**: 사용자 확인 후 진행
25
+ - 슬래시 커맨드(\`/tsq-quick\`, \`/tsq-full\` 등) → 해당 스킬 실행
26
+ - 자연어 지시 → 복잡도 판단 후 사용자에게 확인:
27
+ - 단순 (1-2파일, 오타, 스타일) → 직접 수행
28
+ - 단일 태스크 (버그 수정, 소기능) → "Controller 경유로 진행할까요? (\`/tsq-quick\`)"
29
+ - 다단계 (새 기능, 대규모) → "풀 파이프라인으로 진행할까요? (\`/tsq-full\`)"
30
+
31
+ 사용자가 스펙 보강을 거절하면 그대로 진행한다. 강제하지 않되, 항상 안내한다.
21
32
 
22
33
  ### 작업 원칙
23
34
  - 요구사항에 여러 해석이 가능하면 선택지를 제시
@@ -212,6 +223,12 @@ export async function initializeProject(projectRoot, name, type, level, config,
212
223
  if (await fs.pathExists(srcScriptsDir)) {
213
224
  await copyDirectoryWithSubstitution(srcScriptsDir, destScriptsDir, variables);
214
225
  }
226
+ // 2.6. Deploy .timsquad/scripts/ (automation scripts)
227
+ const baseScriptsDir = path.join(templatesDir, 'base', 'scripts');
228
+ const destTsqScriptsDir = path.join(projectRoot, '.timsquad', 'scripts');
229
+ if (await fs.pathExists(baseScriptsDir)) {
230
+ await copyDirectoryWithSubstitution(baseScriptsDir, destTsqScriptsDir, variables);
231
+ }
215
232
  // 3. Config 기반 에이전트 동적 생성 (활성 에이전트만 배치)
216
233
  if (config) {
217
234
  const activeAgents = getActiveAgents(config);