scene-capability-engine 3.0.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 (336) hide show
  1. package/CHANGELOG.md +2513 -0
  2. package/LICENSE +21 -0
  3. package/README.md +765 -0
  4. package/README.zh.md +630 -0
  5. package/bin/kiro-spec-engine.js +796 -0
  6. package/bin/kse.js +3 -0
  7. package/bin/sce.js +3 -0
  8. package/bin/sco.js +3 -0
  9. package/docs/331-poc-adaptation-roadmap.md +156 -0
  10. package/docs/331-poc-dual-track-integration-guide.md +120 -0
  11. package/docs/331-poc-weekly-delivery-checklist.md +52 -0
  12. package/docs/OFFLINE_INSTALL.md +96 -0
  13. package/docs/README.md +279 -0
  14. package/docs/adopt-migration-guide.md +599 -0
  15. package/docs/adoption-guide.md +616 -0
  16. package/docs/agent-hooks-analysis.md +815 -0
  17. package/docs/architecture.md +733 -0
  18. package/docs/articles/ai-driven-development-philosophy-and-practice-review.md +208 -0
  19. package/docs/articles/ai-driven-development-philosophy-and-practice.en.md +459 -0
  20. package/docs/articles/ai-driven-development-philosophy-and-practice.md +492 -0
  21. package/docs/autonomous-control-guide.md +851 -0
  22. package/docs/command-reference.md +1368 -0
  23. package/docs/community.md +115 -0
  24. package/docs/cross-tool-guide.md +555 -0
  25. package/docs/developer-guide.md +619 -0
  26. package/docs/document-governance.md +865 -0
  27. package/docs/environment-management-guide.md +526 -0
  28. package/docs/examples/add-export-command/design.md +194 -0
  29. package/docs/examples/add-export-command/requirements.md +110 -0
  30. package/docs/examples/add-export-command/tasks.md +88 -0
  31. package/docs/examples/add-rest-api/design.md +855 -0
  32. package/docs/examples/add-rest-api/requirements.md +323 -0
  33. package/docs/examples/add-rest-api/tasks.md +355 -0
  34. package/docs/examples/add-user-dashboard/design.md +192 -0
  35. package/docs/examples/add-user-dashboard/requirements.md +143 -0
  36. package/docs/examples/add-user-dashboard/tasks.md +91 -0
  37. package/docs/faq.md +697 -0
  38. package/docs/handoffs/evidence/ontology/moqui-template-baseline-2026-02-17-232922.json +156 -0
  39. package/docs/handoffs/evidence/ontology/moqui-template-baseline-2026-02-17-232922.md +24 -0
  40. package/docs/images/wechat-qr.png +0 -0
  41. package/docs/integration-modes.md +529 -0
  42. package/docs/integration-philosophy.md +313 -0
  43. package/docs/knowledge-management-guide.md +263 -0
  44. package/docs/manual-workflows-guide.md +418 -0
  45. package/docs/moqui-capability-matrix.md +73 -0
  46. package/docs/moqui-template-core-library-playbook.md +109 -0
  47. package/docs/multi-agent-coordination-guide.md +553 -0
  48. package/docs/multi-repo-management-guide.md +1344 -0
  49. package/docs/quick-start-with-ai-tools.md +375 -0
  50. package/docs/quick-start.md +146 -0
  51. package/docs/release-checklist.md +121 -0
  52. package/docs/releases/README.md +13 -0
  53. package/docs/releases/v1.46.2-validation.md +45 -0
  54. package/docs/releases/v1.46.2.md +50 -0
  55. package/docs/scene-runtime-guide.md +347 -0
  56. package/docs/spec-collaboration-guide.md +369 -0
  57. package/docs/spec-locking-guide.md +225 -0
  58. package/docs/spec-numbering-guide.md +348 -0
  59. package/docs/spec-workflow.md +519 -0
  60. package/docs/steering-strategy-guide.md +196 -0
  61. package/docs/team-collaboration-guide.md +465 -0
  62. package/docs/testing-strategy.md +272 -0
  63. package/docs/tools/claude-guide.md +654 -0
  64. package/docs/tools/cursor-guide.md +706 -0
  65. package/docs/tools/generic-guide.md +446 -0
  66. package/docs/tools/kiro-guide.md +308 -0
  67. package/docs/tools/vscode-guide.md +445 -0
  68. package/docs/tools/windsurf-guide.md +391 -0
  69. package/docs/troubleshooting.md +1135 -0
  70. package/docs/upgrade-guide.md +639 -0
  71. package/docs/value-observability-guide.md +127 -0
  72. package/docs/zh/README.md +341 -0
  73. package/docs/zh/quick-start.md +764 -0
  74. package/docs/zh/release-checklist.md +121 -0
  75. package/docs/zh/releases/README.md +13 -0
  76. package/docs/zh/releases/v1.46.2-validation.md +45 -0
  77. package/docs/zh/releases/v1.46.2.md +50 -0
  78. package/docs/zh/spec-numbering-guide.md +348 -0
  79. package/docs/zh/tools/claude-guide.md +349 -0
  80. package/docs/zh/tools/cursor-guide.md +281 -0
  81. package/docs/zh/tools/generic-guide.md +499 -0
  82. package/docs/zh/tools/kiro-guide.md +342 -0
  83. package/docs/zh/tools/vscode-guide.md +449 -0
  84. package/docs/zh/tools/windsurf-guide.md +378 -0
  85. package/docs/zh/value-observability-guide.md +127 -0
  86. package/docs//344/272/244/344/273/230/346/270/205/345/215/225.md +75 -0
  87. package/lib/adoption/adoption-logger.js +487 -0
  88. package/lib/adoption/adoption-strategy.js +538 -0
  89. package/lib/adoption/backup-manager.js +420 -0
  90. package/lib/adoption/conflict-resolver.js +410 -0
  91. package/lib/adoption/detection-engine.js +275 -0
  92. package/lib/adoption/diff-viewer.js +226 -0
  93. package/lib/adoption/error-formatter.js +509 -0
  94. package/lib/adoption/file-classifier.js +385 -0
  95. package/lib/adoption/progress-reporter.js +534 -0
  96. package/lib/adoption/smart-orchestrator.js +470 -0
  97. package/lib/adoption/strategy-selector.js +218 -0
  98. package/lib/adoption/summary-generator.js +493 -0
  99. package/lib/adoption/template-sync.js +605 -0
  100. package/lib/auto/autonomous-engine.js +485 -0
  101. package/lib/auto/checkpoint-manager.js +300 -0
  102. package/lib/auto/close-loop-runner.js +2476 -0
  103. package/lib/auto/config-schema.js +176 -0
  104. package/lib/auto/decision-engine.js +344 -0
  105. package/lib/auto/error-recovery-manager.js +580 -0
  106. package/lib/auto/goal-decomposer.js +278 -0
  107. package/lib/auto/progress-tracker.js +502 -0
  108. package/lib/auto/safety-manager.js +186 -0
  109. package/lib/auto/semantic-decomposer.js +137 -0
  110. package/lib/auto/state-manager.js +126 -0
  111. package/lib/auto/task-queue-manager.js +340 -0
  112. package/lib/backup/backup-system.js +372 -0
  113. package/lib/backup/selective-backup.js +207 -0
  114. package/lib/collab/agent-registry.js +240 -0
  115. package/lib/collab/collab-manager.js +285 -0
  116. package/lib/collab/contract-manager.js +320 -0
  117. package/lib/collab/coordinator.js +370 -0
  118. package/lib/collab/dependency-manager.js +280 -0
  119. package/lib/collab/index.js +20 -0
  120. package/lib/collab/integration-manager.js +202 -0
  121. package/lib/collab/merge-coordinator.js +252 -0
  122. package/lib/collab/metadata-manager.js +233 -0
  123. package/lib/collab/multi-agent-config.js +120 -0
  124. package/lib/collab/spec-lifecycle-manager.js +304 -0
  125. package/lib/collab/sync-barrier.js +88 -0
  126. package/lib/collab/visualizer.js +208 -0
  127. package/lib/commands/adopt.js +749 -0
  128. package/lib/commands/auto.js +19559 -0
  129. package/lib/commands/collab.js +275 -0
  130. package/lib/commands/context.js +99 -0
  131. package/lib/commands/docs.js +808 -0
  132. package/lib/commands/doctor.js +273 -0
  133. package/lib/commands/env.js +420 -0
  134. package/lib/commands/knowledge.js +309 -0
  135. package/lib/commands/lock.js +235 -0
  136. package/lib/commands/ops.js +409 -0
  137. package/lib/commands/orchestrate.js +446 -0
  138. package/lib/commands/prompt.js +105 -0
  139. package/lib/commands/repo.js +118 -0
  140. package/lib/commands/rollback.js +219 -0
  141. package/lib/commands/scene.js +15549 -0
  142. package/lib/commands/spec-bootstrap.js +147 -0
  143. package/lib/commands/spec-gate.js +157 -0
  144. package/lib/commands/spec-pipeline.js +205 -0
  145. package/lib/commands/status.js +321 -0
  146. package/lib/commands/task.js +199 -0
  147. package/lib/commands/templates.js +654 -0
  148. package/lib/commands/upgrade.js +231 -0
  149. package/lib/commands/value.js +569 -0
  150. package/lib/commands/watch.js +684 -0
  151. package/lib/commands/workflows.js +240 -0
  152. package/lib/commands/workspace-multi.js +325 -0
  153. package/lib/commands/workspace.js +189 -0
  154. package/lib/context/context-exporter.js +378 -0
  155. package/lib/context/prompt-generator.js +482 -0
  156. package/lib/data/moqui-capability-lexicon.json +45 -0
  157. package/lib/environment/backup-system.js +189 -0
  158. package/lib/environment/environment-manager.js +379 -0
  159. package/lib/environment/environment-registry.js +168 -0
  160. package/lib/gitignore/gitignore-backup.js +229 -0
  161. package/lib/gitignore/gitignore-detector.js +239 -0
  162. package/lib/gitignore/gitignore-integration.js +267 -0
  163. package/lib/gitignore/gitignore-transformer.js +193 -0
  164. package/lib/gitignore/layered-rules-template.js +42 -0
  165. package/lib/governance/archive-tool.js +284 -0
  166. package/lib/governance/cleanup-tool.js +237 -0
  167. package/lib/governance/config-manager.js +186 -0
  168. package/lib/governance/diagnostic-engine.js +271 -0
  169. package/lib/governance/doc-reference-checker.js +200 -0
  170. package/lib/governance/execution-logger.js +243 -0
  171. package/lib/governance/file-scanner.js +285 -0
  172. package/lib/governance/hooks-manager.js +333 -0
  173. package/lib/governance/reporter.js +337 -0
  174. package/lib/governance/validation-engine.js +181 -0
  175. package/lib/i18n.js +79 -0
  176. package/lib/knowledge/entry-manager.js +208 -0
  177. package/lib/knowledge/index-manager.js +261 -0
  178. package/lib/knowledge/knowledge-manager.js +273 -0
  179. package/lib/knowledge/template-manager.js +191 -0
  180. package/lib/lock/index.js +21 -0
  181. package/lib/lock/lock-file.js +192 -0
  182. package/lib/lock/lock-manager.js +321 -0
  183. package/lib/lock/machine-identifier.js +135 -0
  184. package/lib/lock/steering-file-lock.js +207 -0
  185. package/lib/lock/task-lock-manager.js +345 -0
  186. package/lib/operations/audit-logger.js +293 -0
  187. package/lib/operations/feedback-manager.js +1147 -0
  188. package/lib/operations/index.js +23 -0
  189. package/lib/operations/models/index.js +170 -0
  190. package/lib/operations/operations-manager.js +151 -0
  191. package/lib/operations/operations-validator.js +280 -0
  192. package/lib/operations/permission-manager.js +354 -0
  193. package/lib/operations/template-loader.js +143 -0
  194. package/lib/orchestrator/agent-spawner.js +629 -0
  195. package/lib/orchestrator/bootstrap-prompt-builder.js +236 -0
  196. package/lib/orchestrator/index.js +19 -0
  197. package/lib/orchestrator/orchestration-engine.js +1270 -0
  198. package/lib/orchestrator/orchestrator-config.js +173 -0
  199. package/lib/orchestrator/status-monitor.js +591 -0
  200. package/lib/python-checker.js +209 -0
  201. package/lib/repo/config-manager.js +580 -0
  202. package/lib/repo/errors/config-error.js +13 -0
  203. package/lib/repo/errors/git-error.js +15 -0
  204. package/lib/repo/errors/repo-error.js +14 -0
  205. package/lib/repo/git-operations.js +181 -0
  206. package/lib/repo/handlers/.gitkeep +1 -0
  207. package/lib/repo/handlers/exec-handler.js +155 -0
  208. package/lib/repo/handlers/health-handler.js +169 -0
  209. package/lib/repo/handlers/init-handler.js +197 -0
  210. package/lib/repo/handlers/status-handler.js +176 -0
  211. package/lib/repo/output-formatter.js +184 -0
  212. package/lib/repo/path-resolver.js +178 -0
  213. package/lib/repo/repo-manager.js +514 -0
  214. package/lib/scene-runtime/audit-emitter.js +59 -0
  215. package/lib/scene-runtime/binding-plugin-loader.js +351 -0
  216. package/lib/scene-runtime/binding-registry.js +349 -0
  217. package/lib/scene-runtime/eval-bridge.js +44 -0
  218. package/lib/scene-runtime/index.js +19 -0
  219. package/lib/scene-runtime/moqui-adapter.js +620 -0
  220. package/lib/scene-runtime/moqui-client.js +606 -0
  221. package/lib/scene-runtime/moqui-extractor.js +2029 -0
  222. package/lib/scene-runtime/plan-compiler.js +208 -0
  223. package/lib/scene-runtime/policy-gate.js +58 -0
  224. package/lib/scene-runtime/runtime-executor.js +358 -0
  225. package/lib/scene-runtime/scene-loader.js +96 -0
  226. package/lib/scene-runtime/scene-ontology.js +959 -0
  227. package/lib/scene-runtime/scene-template-linter.js +852 -0
  228. package/lib/scene-runtime/templates/scene-template-erp-query-v0.1.yaml +28 -0
  229. package/lib/scene-runtime/templates/scene-template-hybrid-shadow-v0.1.yaml +34 -0
  230. package/lib/spec/bootstrap/context-collector.js +48 -0
  231. package/lib/spec/bootstrap/draft-generator.js +158 -0
  232. package/lib/spec/bootstrap/questionnaire-engine.js +70 -0
  233. package/lib/spec/bootstrap/trace-emitter.js +59 -0
  234. package/lib/spec/multi-spec-orchestrate.js +93 -0
  235. package/lib/spec/pipeline/constants.js +6 -0
  236. package/lib/spec/pipeline/stage-adapters.js +118 -0
  237. package/lib/spec/pipeline/stage-runner.js +146 -0
  238. package/lib/spec/pipeline/state-store.js +119 -0
  239. package/lib/spec-gate/engine/gate-engine.js +165 -0
  240. package/lib/spec-gate/policy/default-policy.js +22 -0
  241. package/lib/spec-gate/policy/policy-loader.js +103 -0
  242. package/lib/spec-gate/result-emitter.js +81 -0
  243. package/lib/spec-gate/rules/default-rules.js +156 -0
  244. package/lib/spec-gate/rules/rule-registry.js +51 -0
  245. package/lib/steering/adoption-config.js +164 -0
  246. package/lib/steering/compliance-auto-fixer.js +204 -0
  247. package/lib/steering/compliance-cache.js +99 -0
  248. package/lib/steering/compliance-error-reporter.js +70 -0
  249. package/lib/steering/context-sync-manager.js +273 -0
  250. package/lib/steering/index.js +92 -0
  251. package/lib/steering/spec-steering.js +230 -0
  252. package/lib/steering/steering-compliance-checker.js +73 -0
  253. package/lib/steering/steering-loader.js +144 -0
  254. package/lib/steering/steering-manager.js +289 -0
  255. package/lib/task/index.js +12 -0
  256. package/lib/task/task-claimer.js +489 -0
  257. package/lib/task/task-status-store.js +418 -0
  258. package/lib/templates/cache-manager.js +440 -0
  259. package/lib/templates/content-generalizer.js +247 -0
  260. package/lib/templates/frontmatter-generator.js +128 -0
  261. package/lib/templates/git-handler.js +471 -0
  262. package/lib/templates/metadata-collector.js +328 -0
  263. package/lib/templates/path-utils.js +144 -0
  264. package/lib/templates/registry-parser.js +505 -0
  265. package/lib/templates/spec-reader.js +216 -0
  266. package/lib/templates/template-applicator.js +249 -0
  267. package/lib/templates/template-creator.js +256 -0
  268. package/lib/templates/template-error.js +143 -0
  269. package/lib/templates/template-exporter.js +502 -0
  270. package/lib/templates/template-manager.js +782 -0
  271. package/lib/templates/template-validator.js +361 -0
  272. package/lib/upgrade/migration-engine.js +382 -0
  273. package/lib/upgrade/migrations/.gitkeep +52 -0
  274. package/lib/upgrade/migrations/1.0.0-to-1.1.0.js +78 -0
  275. package/lib/utils/file-diff.js +177 -0
  276. package/lib/utils/fs-utils.js +274 -0
  277. package/lib/utils/tool-detector.js +383 -0
  278. package/lib/utils/validation.js +324 -0
  279. package/lib/value/gate-summary-emitter.js +99 -0
  280. package/lib/value/metric-contract-loader.js +210 -0
  281. package/lib/value/risk-evaluator.js +117 -0
  282. package/lib/value/weekly-snapshot-builder.js +61 -0
  283. package/lib/version/version-checker.js +156 -0
  284. package/lib/version/version-manager.js +327 -0
  285. package/lib/watch/action-executor.js +458 -0
  286. package/lib/watch/event-debouncer.js +323 -0
  287. package/lib/watch/execution-logger.js +550 -0
  288. package/lib/watch/file-watcher.js +499 -0
  289. package/lib/watch/presets.js +266 -0
  290. package/lib/watch/watch-manager.js +533 -0
  291. package/lib/workspace/multi/global-config.js +150 -0
  292. package/lib/workspace/multi/index.js +22 -0
  293. package/lib/workspace/multi/path-utils.js +173 -0
  294. package/lib/workspace/multi/workspace-context-resolver.js +244 -0
  295. package/lib/workspace/multi/workspace-registry.js +196 -0
  296. package/lib/workspace/multi/workspace-state-manager.js +537 -0
  297. package/lib/workspace/multi/workspace.js +90 -0
  298. package/lib/workspace/workspace-manager.js +370 -0
  299. package/lib/workspace/workspace-sync.js +356 -0
  300. package/locales/en.json +114 -0
  301. package/locales/zh.json +114 -0
  302. package/package.json +102 -0
  303. package/template/.kiro/README.md +247 -0
  304. package/template/.kiro/hooks/check-spec-on-create.kiro.hook +17 -0
  305. package/template/.kiro/hooks/run-tests-on-save.kiro.hook +13 -0
  306. package/template/.kiro/hooks/sync-tasks-on-edit.kiro.hook +16 -0
  307. package/template/.kiro/specs/SPEC_WORKFLOW_GUIDE.md +134 -0
  308. package/template/.kiro/steering/CORE_PRINCIPLES.md +133 -0
  309. package/template/.kiro/steering/CURRENT_CONTEXT.md +30 -0
  310. package/template/.kiro/steering/ENVIRONMENT.md +35 -0
  311. package/template/.kiro/steering/RULES_GUIDE.md +46 -0
  312. package/template/.kiro/templates/operations/default/change-impact.md +112 -0
  313. package/template/.kiro/templates/operations/default/deployment.md +91 -0
  314. package/template/.kiro/templates/operations/default/feedback-response.md +269 -0
  315. package/template/.kiro/templates/operations/default/migration-plan.md +172 -0
  316. package/template/.kiro/templates/operations/default/monitoring.md +135 -0
  317. package/template/.kiro/templates/operations/default/operations.md +135 -0
  318. package/template/.kiro/templates/operations/default/rollback.md +143 -0
  319. package/template/.kiro/templates/operations/default/tools.yaml +364 -0
  320. package/template/.kiro/templates/operations/default/troubleshooting.md +123 -0
  321. package/template/.kiro/tools/backup_manager.py +295 -0
  322. package/template/.kiro/tools/configuration_manager.py +218 -0
  323. package/template/.kiro/tools/document_evaluator.py +550 -0
  324. package/template/.kiro/tools/enhancement_logger.py +168 -0
  325. package/template/.kiro/tools/error_handler.py +335 -0
  326. package/template/.kiro/tools/improvement_identifier.py +444 -0
  327. package/template/.kiro/tools/modification_applicator.py +737 -0
  328. package/template/.kiro/tools/quality_gate_enforcer.py +207 -0
  329. package/template/.kiro/tools/quality_scorer.py +305 -0
  330. package/template/.kiro/tools/report_generator.py +154 -0
  331. package/template/.kiro/tools/ultrawork_enhancer.py +676 -0
  332. package/template/.kiro/tools/ultrawork_enhancer_refactored.py +0 -0
  333. package/template/.kiro/tools/ultrawork_enhancer_v2.py +463 -0
  334. package/template/.kiro/tools/ultrawork_enhancer_v3.py +606 -0
  335. package/template/.kiro/tools/workflow_quality_gate.py +100 -0
  336. package/template/README.md +111 -0
@@ -0,0 +1,502 @@
1
+ /**
2
+ * TemplateExporter - Exports template package to directory
3
+ */
4
+
5
+ const fs = require('fs').promises;
6
+ const path = require('path');
7
+
8
+ class TemplateExporter {
9
+ constructor() {
10
+ this.defaultOutputDir = '.kiro/templates/exports';
11
+ }
12
+
13
+ /**
14
+ * Exports template package
15
+ * @param {Object} templateData - Template data
16
+ * @param {string} outputDir - Output directory
17
+ * @returns {Promise<Object>} Export result
18
+ */
19
+ async exportTemplate(templateData, outputDir) {
20
+ const { metadata, files, validationResult } = templateData;
21
+ const templateDir = outputDir || path.join(this.defaultOutputDir, metadata.name);
22
+
23
+ try {
24
+ // Create output directory
25
+ await this.createOutputDirectory(templateDir);
26
+
27
+ // Write template files
28
+ const writtenFiles = await this.writeTemplateFiles(files, templateDir);
29
+
30
+ // Generate registry entry
31
+ const registryEntry = this.generateRegistryEntry(metadata);
32
+ await fs.writeFile(
33
+ path.join(templateDir, 'template-registry.json'),
34
+ JSON.stringify(registryEntry, null, 2),
35
+ 'utf-8'
36
+ );
37
+ writtenFiles.push('template-registry.json');
38
+
39
+ // Generate documentation files
40
+ const submissionGuide = this.generateSubmissionGuide(metadata);
41
+ await fs.writeFile(
42
+ path.join(templateDir, 'SUBMISSION_GUIDE.md'),
43
+ submissionGuide,
44
+ 'utf-8'
45
+ );
46
+ writtenFiles.push('SUBMISSION_GUIDE.md');
47
+
48
+ const prDescription = this.generatePRDescription(metadata);
49
+ await fs.writeFile(
50
+ path.join(templateDir, 'PR_DESCRIPTION.md'),
51
+ prDescription,
52
+ 'utf-8'
53
+ );
54
+ writtenFiles.push('PR_DESCRIPTION.md');
55
+
56
+ const reviewChecklist = this.generateReviewChecklist(validationResult);
57
+ await fs.writeFile(
58
+ path.join(templateDir, 'REVIEW_CHECKLIST.md'),
59
+ reviewChecklist,
60
+ 'utf-8'
61
+ );
62
+ writtenFiles.push('REVIEW_CHECKLIST.md');
63
+
64
+ const usageExample = this.generateUsageExample(metadata);
65
+ await fs.writeFile(
66
+ path.join(templateDir, 'USAGE_EXAMPLE.md'),
67
+ usageExample,
68
+ 'utf-8'
69
+ );
70
+ writtenFiles.push('USAGE_EXAMPLE.md');
71
+
72
+ // Log creation
73
+ await this.logCreation(templateDir, templateData);
74
+ writtenFiles.push('creation.log');
75
+
76
+ return {
77
+ success: true,
78
+ outputDir: templateDir,
79
+ filesCreated: writtenFiles,
80
+ validation: validationResult,
81
+ metadata
82
+ };
83
+ } catch (error) {
84
+ // Cleanup on failure
85
+ try {
86
+ await fs.rm(templateDir, { recursive: true, force: true });
87
+ } catch {
88
+ // Ignore cleanup errors
89
+ }
90
+ throw new Error(`Export failed: ${error.message}`);
91
+ }
92
+ }
93
+
94
+ /**
95
+ * Creates output directory structure
96
+ * @param {string} outputDir - Output directory
97
+ * @returns {Promise<void>}
98
+ */
99
+ async createOutputDirectory(outputDir) {
100
+ try {
101
+ await fs.access(outputDir);
102
+ // Directory exists, ask user (for now, just overwrite)
103
+ await fs.rm(outputDir, { recursive: true, force: true });
104
+ } catch {
105
+ // Directory doesn't exist, that's fine
106
+ }
107
+
108
+ await fs.mkdir(outputDir, { recursive: true });
109
+ }
110
+
111
+ /**
112
+ * Writes template files
113
+ * @param {Object} fileContents - File contents
114
+ * @param {string} outputDir - Output directory
115
+ * @returns {Promise<Array>} Written files
116
+ */
117
+ async writeTemplateFiles(fileContents, outputDir) {
118
+ const writtenFiles = [];
119
+
120
+ for (const [filename, content] of Object.entries(fileContents)) {
121
+ if (content) {
122
+ const filePath = path.join(outputDir, filename);
123
+ await fs.writeFile(filePath, content, 'utf-8');
124
+ writtenFiles.push(filename);
125
+ }
126
+ }
127
+
128
+ return writtenFiles;
129
+ }
130
+
131
+ /**
132
+ * Generates registry entry
133
+ * @param {Object} metadata - Template metadata
134
+ * @returns {Object} Registry entry
135
+ */
136
+ generateRegistryEntry(metadata) {
137
+ return {
138
+ name: metadata.name,
139
+ category: metadata.category,
140
+ description: metadata.description,
141
+ tags: metadata.tags || [],
142
+ author: metadata.author,
143
+ version: metadata.version,
144
+ kse_version: metadata.kse_version,
145
+ created_at: metadata.created_at,
146
+ updated_at: metadata.updated_at,
147
+ path: `${metadata.category}/${metadata.name}`
148
+ };
149
+ }
150
+
151
+ /**
152
+ * Generates submission guide
153
+ * @param {Object} metadata - Template metadata
154
+ * @returns {string} Submission guide content
155
+ */
156
+ generateSubmissionGuide(metadata) {
157
+ return `# Template Submission Guide
158
+
159
+ ## Template: ${metadata.name}
160
+
161
+ Congratulations! Your template has been generated successfully. Follow these steps to submit it to the scene-capability-engine-templates repository.
162
+
163
+ ## Next Steps
164
+
165
+ ### 1. Review the Template
166
+
167
+ - Check \`requirements.md\`, \`design.md\`, and \`tasks.md\` for accuracy
168
+ - Verify that all project-specific content has been replaced with template variables
169
+ - Review \`REVIEW_CHECKLIST.md\` for a complete list of items to verify
170
+
171
+ ### 2. Test the Template
172
+
173
+ Test your template locally before submitting:
174
+
175
+ \`\`\`bash
176
+ # Apply the template to create a new Spec
177
+ kse spec create test-spec --template ${metadata.name}
178
+
179
+ # Verify the generated Spec is correct
180
+ cd .kiro/specs/test-spec
181
+ # Check that variables were replaced correctly
182
+ \`\`\`
183
+
184
+ ### 3. Submit to Repository
185
+
186
+ **Option A: Fork + Pull Request (Recommended)**
187
+
188
+ \`\`\`bash
189
+ # 1. Fork the scene-capability-engine-templates repository on GitHub
190
+ # 2. Clone your fork
191
+ git clone https://github.com/YOUR_USERNAME/scene-capability-engine-templates.git
192
+ cd scene-capability-engine-templates
193
+
194
+ # 3. Create a branch
195
+ git checkout -b add-${metadata.name}
196
+
197
+ # 4. Copy your template to the appropriate category directory
198
+ mkdir -p ${metadata.category}/${metadata.name}
199
+ cp /path/to/this/template/* ${metadata.category}/${metadata.name}/
200
+
201
+ # 5. Update template-registry.json
202
+ # Add the entry from template-registry.json in this directory
203
+
204
+ # 6. Commit and push
205
+ git add .
206
+ git commit -m "feat: add ${metadata.name} template"
207
+ git push origin add-${metadata.name}
208
+
209
+ # 7. Create Pull Request on GitHub
210
+ # Use the content from PR_DESCRIPTION.md
211
+ \`\`\`
212
+
213
+ **Option B: Issue Submission (Simple)**
214
+
215
+ If you're not familiar with Git:
216
+
217
+ 1. Go to https://github.com/heguangyong/scene-capability-engine-templates/issues
218
+ 2. Create a new issue with title: \`[Template Submission] ${metadata.name}\`
219
+ 3. Attach the template files or paste their contents
220
+ 4. A maintainer will review and add your template
221
+
222
+ ## Files in This Package
223
+
224
+ - \`requirements.md\` - Template requirements document
225
+ - \`design.md\` - Template design document
226
+ - \`tasks.md\` - Template tasks document
227
+ - \`template-registry.json\` - Registry entry for your template
228
+ - \`SUBMISSION_GUIDE.md\` - This file
229
+ - \`PR_DESCRIPTION.md\` - Draft PR description
230
+ - \`REVIEW_CHECKLIST.md\` - Items to verify before submission
231
+ - \`USAGE_EXAMPLE.md\` - How to use your template
232
+ - \`creation.log\` - Creation log for debugging
233
+
234
+ ## Questions?
235
+
236
+ If you have questions about the submission process, please:
237
+ - Check the scene-capability-engine-templates repository README
238
+ - Open an issue in the repository
239
+ - Contact the maintainers
240
+
241
+ Thank you for contributing to the kse template library!
242
+ `;
243
+ }
244
+
245
+ /**
246
+ * Generates PR description
247
+ * @param {Object} metadata - Template metadata
248
+ * @returns {string} PR description
249
+ */
250
+ generatePRDescription(metadata) {
251
+ return `# Add ${metadata.name} Template
252
+
253
+ ## Description
254
+
255
+ ${metadata.description}
256
+
257
+ ## Template Details
258
+
259
+ - **Name**: ${metadata.name}
260
+ - **Category**: ${metadata.category}
261
+ - **Tags**: ${metadata.tags.join(', ')}
262
+ - **Author**: ${metadata.author}
263
+ - **Version**: ${metadata.version}
264
+ - **Minimum KSE Version**: ${metadata.kse_version}
265
+
266
+ ## Files Included
267
+
268
+ - \`requirements.md\` - Requirements document with YAML frontmatter
269
+ - \`design.md\` - Design document with YAML frontmatter
270
+ - \`tasks.md\` - Tasks document with YAML frontmatter
271
+
272
+ ## Checklist
273
+
274
+ - [ ] Template files include valid YAML frontmatter
275
+ - [ ] All project-specific content replaced with template variables
276
+ - [ ] Template tested locally with \`kse spec create\`
277
+ - [ ] Template follows naming conventions (kebab-case)
278
+ - [ ] Description is clear and concise
279
+ - [ ] Tags are relevant and searchable
280
+ - [ ] Registry entry added to \`template-registry.json\`
281
+
282
+ ## Testing
283
+
284
+ Tested locally by applying the template:
285
+
286
+ \`\`\`bash
287
+ kse spec create test-spec --template ${metadata.name}
288
+ \`\`\`
289
+
290
+ ## Additional Notes
291
+
292
+ (Add any additional context or notes here)
293
+ `;
294
+ }
295
+
296
+ /**
297
+ * Generates review checklist
298
+ * @param {Object} validationResult - Validation result
299
+ * @returns {string} Review checklist
300
+ */
301
+ generateReviewChecklist(validationResult) {
302
+ const score = validationResult?.score || 0;
303
+ const errors = validationResult?.errors || [];
304
+ const warnings = validationResult?.warnings || [];
305
+
306
+ return `# Template Review Checklist
307
+
308
+ ## Validation Results
309
+
310
+ - **Quality Score**: ${score}/100
311
+ - **Errors**: ${errors.length}
312
+ - **Warnings**: ${warnings.length}
313
+
314
+ ${errors.length > 0 ? `\n### Errors\n\n${errors.map(e => `- ❌ ${e}`).join('\n')}\n` : ''}
315
+ ${warnings.length > 0 ? `\n### Warnings\n\n${warnings.map(w => `- ⚠️ ${w}`).join('\n')}\n` : ''}
316
+
317
+ ## Manual Review Items
318
+
319
+ ### Content Quality
320
+
321
+ - [ ] All project-specific names replaced with \`{{SPEC_NAME}}\`
322
+ - [ ] All dates replaced with \`{{DATE}}\`
323
+ - [ ] All author names replaced with \`{{AUTHOR}}\`
324
+ - [ ] All version numbers replaced with \`{{VERSION}}\` (where appropriate)
325
+ - [ ] No hardcoded paths or URLs (except examples)
326
+ - [ ] EARS patterns preserved correctly
327
+ - [ ] Requirement numbering is consistent
328
+
329
+ ### Metadata Quality
330
+
331
+ - [ ] Template name is in kebab-case
332
+ - [ ] Description is clear and concise (1-2 sentences)
333
+ - [ ] Category is appropriate
334
+ - [ ] Tags are relevant and searchable
335
+ - [ ] Version follows semver format
336
+ - [ ] Author information is correct
337
+
338
+ ### Structure Quality
339
+
340
+ - [ ] All three files present (requirements.md, design.md, tasks.md)
341
+ - [ ] YAML frontmatter is valid in all files
342
+ - [ ] Frontmatter includes all required fields
343
+ - [ ] Document structure is preserved
344
+ - [ ] Internal references are not broken
345
+
346
+ ### Testing
347
+
348
+ - [ ] Template applied successfully with \`kse spec create\`
349
+ - [ ] Variables replaced correctly in generated Spec
350
+ - [ ] Generated Spec is usable and makes sense
351
+ - [ ] No errors during template application
352
+
353
+ ### Documentation
354
+
355
+ - [ ] USAGE_EXAMPLE.md is clear and helpful
356
+ - [ ] All template variables are documented
357
+ - [ ] Prerequisites are listed (if any)
358
+ - [ ] Examples are provided
359
+
360
+ ## Recommendations
361
+
362
+ ${score >= 90 ? '✅ Template quality is excellent! Ready for submission.' : ''}
363
+ ${score >= 70 && score < 90 ? '⚠️ Template quality is good, but consider addressing warnings before submission.' : ''}
364
+ ${score < 70 ? '❌ Template quality needs improvement. Please address errors and warnings before submission.' : ''}
365
+
366
+ ## Next Steps
367
+
368
+ 1. Review and address any errors or warnings above
369
+ 2. Complete the manual review checklist
370
+ 3. Test the template locally
371
+ 4. Follow the submission guide in SUBMISSION_GUIDE.md
372
+ `;
373
+ }
374
+
375
+ /**
376
+ * Generates usage example
377
+ * @param {Object} metadata - Template metadata
378
+ * @returns {string} Usage example
379
+ */
380
+ generateUsageExample(metadata) {
381
+ return `# Template Usage Example
382
+
383
+ ## Template: ${metadata.name}
384
+
385
+ ${metadata.description}
386
+
387
+ ## How to Use This Template
388
+
389
+ ### 1. List Available Templates
390
+
391
+ \`\`\`bash
392
+ kse templates list
393
+ \`\`\`
394
+
395
+ ### 2. View Template Details
396
+
397
+ \`\`\`bash
398
+ kse templates show ${metadata.category}/${metadata.name}
399
+ \`\`\`
400
+
401
+ ### 3. Create a New Spec from This Template
402
+
403
+ \`\`\`bash
404
+ kse spec create my-new-feature --template ${metadata.category}/${metadata.name}
405
+ \`\`\`
406
+
407
+ This will create a new Spec at \`.kiro/specs/XX-00-my-new-feature/\` with:
408
+ - \`requirements.md\` - Requirements document
409
+ - \`design.md\` - Design document
410
+ - \`tasks.md\` - Implementation tasks
411
+
412
+ ### 4. Customize the Generated Spec
413
+
414
+ The template uses the following variables that will be replaced:
415
+
416
+ - \`{{SPEC_NAME}}\` - Your Spec name in kebab-case (e.g., \`my-new-feature\`)
417
+ - \`{{SPEC_NAME_TITLE}}\` - Your Spec name in Title Case (e.g., \`My New Feature\`)
418
+ - \`{{DATE}}\` - Current date in ISO format (e.g., \`2025-01-31\`)
419
+ - \`{{AUTHOR}}\` - Your name from git config
420
+ - \`{{VERSION}}\` - Version number (default: \`1.0.0\`)
421
+
422
+ ## What This Template Provides
423
+
424
+ This template helps you create a Spec for:
425
+
426
+ ${metadata.description}
427
+
428
+ ## Prerequisites
429
+
430
+ - kse version ${metadata.kse_version} or higher
431
+ - Basic understanding of Spec-driven development
432
+
433
+ ## Tags
434
+
435
+ ${metadata.tags.map(tag => `- ${tag}`).join('\n')}
436
+
437
+ ## Example Output
438
+
439
+ After applying this template, you'll have a complete Spec structure ready to customize for your specific needs.
440
+
441
+ ## Questions?
442
+
443
+ If you have questions about using this template:
444
+ - Check the kse documentation
445
+ - Review the generated Spec files
446
+ - Open an issue in the scene-capability-engine-templates repository
447
+ `;
448
+ }
449
+
450
+ /**
451
+ * Logs creation details
452
+ * @param {string} outputDir - Output directory
453
+ * @param {Object} templateData - Template data
454
+ * @returns {Promise<void>}
455
+ */
456
+ async logCreation(outputDir, templateData) {
457
+ const { metadata, validationResult, generalizationResult } = templateData;
458
+ const timestamp = new Date().toISOString();
459
+
460
+ const log = `# Template Creation Log
461
+
462
+ **Timestamp**: ${timestamp}
463
+ **Template Name**: ${metadata.name}
464
+ **Category**: ${metadata.category}
465
+ **Version**: ${metadata.version}
466
+
467
+ ## Generalization Summary
468
+
469
+ - Total Replacements: ${generalizationResult?.summary?.totalReplacements || 0}
470
+ - Total Flags: ${generalizationResult?.summary?.totalFlags || 0}
471
+
472
+ ## Validation Summary
473
+
474
+ - Quality Score: ${validationResult?.score || 0}/100
475
+ - Errors: ${validationResult?.errors?.length || 0}
476
+ - Warnings: ${validationResult?.warnings?.length || 0}
477
+
478
+ ## Files Generated
479
+
480
+ - requirements.md
481
+ - design.md
482
+ - tasks.md
483
+ - template-registry.json
484
+ - SUBMISSION_GUIDE.md
485
+ - PR_DESCRIPTION.md
486
+ - REVIEW_CHECKLIST.md
487
+ - USAGE_EXAMPLE.md
488
+ - creation.log
489
+
490
+ ## Status
491
+
492
+ ${validationResult?.valid ? '✅ Template validation passed' : '❌ Template validation failed'}
493
+
494
+ ---
495
+ Generated by kse templates create-from-spec
496
+ `;
497
+
498
+ await fs.writeFile(path.join(outputDir, 'creation.log'), log, 'utf-8');
499
+ }
500
+ }
501
+
502
+ module.exports = TemplateExporter;