@clawplays/ospec-cli 0.3.7 → 0.3.9

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 (166) hide show
  1. package/README.md +9 -1
  2. package/SKILL.md +1 -1
  3. package/assets/git-hooks/post-merge +4 -2
  4. package/assets/git-hooks/pre-commit +4 -2
  5. package/dist/advanced/BatchOperations.d.ts +1 -2
  6. package/dist/advanced/BatchOperations.js +1 -2
  7. package/dist/advanced/CachingLayer.d.ts +1 -2
  8. package/dist/advanced/CachingLayer.js +1 -2
  9. package/dist/advanced/FeatureUpdater.d.ts +1 -2
  10. package/dist/advanced/FeatureUpdater.js +1 -2
  11. package/dist/advanced/PerformanceMonitor.d.ts +1 -2
  12. package/dist/advanced/PerformanceMonitor.js +1 -2
  13. package/dist/advanced/StatePersistence.d.ts +1 -2
  14. package/dist/advanced/StatePersistence.js +1 -2
  15. package/dist/advanced/index.d.ts +1 -2
  16. package/dist/advanced/index.js +1 -2
  17. package/dist/cli/commands/config.d.ts +1 -2
  18. package/dist/cli/commands/config.js +1 -2
  19. package/dist/cli/commands/feature.d.ts +1 -2
  20. package/dist/cli/commands/feature.js +1 -2
  21. package/dist/cli/commands/index.d.ts +1 -2
  22. package/dist/cli/commands/index.js +1 -2
  23. package/dist/cli/commands/project.d.ts +1 -2
  24. package/dist/cli/commands/project.js +1 -2
  25. package/dist/cli/commands/validate.d.ts +1 -2
  26. package/dist/cli/commands/validate.js +1 -2
  27. package/dist/cli/index.d.ts +1 -2
  28. package/dist/cli/index.js +1 -2
  29. package/dist/cli.d.ts +1 -2
  30. package/dist/cli.js +1 -2
  31. package/dist/commands/ArchiveCommand.d.ts +1 -2
  32. package/dist/commands/ArchiveCommand.js +1 -1
  33. package/dist/commands/BaseCommand.d.ts +1 -2
  34. package/dist/commands/BaseCommand.js +1 -2
  35. package/dist/commands/BatchCommand.d.ts +1 -2
  36. package/dist/commands/BatchCommand.js +1 -2
  37. package/dist/commands/ChangesCommand.js +0 -1
  38. package/dist/commands/DocsCommand.d.ts +1 -2
  39. package/dist/commands/DocsCommand.js +0 -1
  40. package/dist/commands/IndexCommand.d.ts +1 -2
  41. package/dist/commands/IndexCommand.js +1 -2
  42. package/dist/commands/InitCommand.d.ts +1 -2
  43. package/dist/commands/InitCommand.js +0 -1
  44. package/dist/commands/NewCommand.d.ts +0 -1
  45. package/dist/commands/NewCommand.js +19 -12
  46. package/dist/commands/PluginsCommand.d.ts +0 -1
  47. package/dist/commands/PluginsCommand.js +0 -1
  48. package/dist/commands/ProgressCommand.d.ts +1 -2
  49. package/dist/commands/ProgressCommand.js +1 -2
  50. package/dist/commands/QueueCommand.d.ts +0 -1
  51. package/dist/commands/QueueCommand.js +0 -1
  52. package/dist/commands/RunCommand.d.ts +0 -1
  53. package/dist/commands/RunCommand.js +0 -1
  54. package/dist/commands/SkillCommand.d.ts +0 -1
  55. package/dist/commands/SkillCommand.js +1 -2
  56. package/dist/commands/SkillsCommand.d.ts +1 -2
  57. package/dist/commands/SkillsCommand.js +1 -2
  58. package/dist/commands/StatusCommand.d.ts +1 -2
  59. package/dist/commands/StatusCommand.js +0 -1
  60. package/dist/commands/UpdateCommand.d.ts +0 -1
  61. package/dist/commands/UpdateCommand.js +37 -2
  62. package/dist/commands/VerifyCommand.d.ts +1 -2
  63. package/dist/commands/VerifyCommand.js +4 -41
  64. package/dist/commands/WorkflowCommand.d.ts +0 -1
  65. package/dist/commands/WorkflowCommand.js +0 -1
  66. package/dist/commands/index.d.ts +0 -1
  67. package/dist/commands/index.js +0 -1
  68. package/dist/core/constants.d.ts +1 -2
  69. package/dist/core/constants.js +1 -2
  70. package/dist/core/errors.d.ts +1 -2
  71. package/dist/core/errors.js +1 -2
  72. package/dist/core/index.d.ts +1 -2
  73. package/dist/core/index.js +1 -2
  74. package/dist/core/types.d.ts +0 -1
  75. package/dist/core/types.js +1 -2
  76. package/dist/index.d.ts +1 -2
  77. package/dist/index.js +1 -2
  78. package/dist/presets/ProjectPresets.d.ts +0 -1
  79. package/dist/presets/ProjectPresets.js +0 -1
  80. package/dist/scaffolds/ProjectScaffoldPresets.d.ts +1 -2
  81. package/dist/scaffolds/ProjectScaffoldPresets.js +1 -2
  82. package/dist/services/ConfigManager.d.ts +1 -2
  83. package/dist/services/ConfigManager.js +0 -1
  84. package/dist/services/FeatureManager.d.ts +1 -2
  85. package/dist/services/FeatureManager.js +1 -2
  86. package/dist/services/FileService.d.ts +1 -2
  87. package/dist/services/FileService.js +0 -1
  88. package/dist/services/IndexBuilder.d.ts +1 -2
  89. package/dist/services/IndexBuilder.js +1 -2
  90. package/dist/services/Logger.d.ts +1 -2
  91. package/dist/services/Logger.js +1 -2
  92. package/dist/services/ProjectAssetRegistry.d.ts +0 -1
  93. package/dist/services/ProjectAssetRegistry.js +1 -2
  94. package/dist/services/ProjectAssetService.d.ts +0 -1
  95. package/dist/services/ProjectAssetService.js +4 -2
  96. package/dist/services/ProjectScaffoldCommandService.d.ts +1 -2
  97. package/dist/services/ProjectScaffoldCommandService.js +0 -1
  98. package/dist/services/ProjectScaffoldService.d.ts +1 -2
  99. package/dist/services/ProjectScaffoldService.js +0 -1
  100. package/dist/services/ProjectService.d.ts +1 -1
  101. package/dist/services/ProjectService.js +267 -411
  102. package/dist/services/QueueService.d.ts +0 -1
  103. package/dist/services/QueueService.js +1 -1
  104. package/dist/services/RunService.d.ts +0 -1
  105. package/dist/services/RunService.js +0 -1
  106. package/dist/services/SkillParser.d.ts +1 -2
  107. package/dist/services/SkillParser.js +0 -1
  108. package/dist/services/StateManager.d.ts +0 -1
  109. package/dist/services/StateManager.js +0 -1
  110. package/dist/services/TemplateEngine.d.ts +1 -2
  111. package/dist/services/TemplateEngine.js +1 -2
  112. package/dist/services/TemplateGenerator.d.ts +1 -2
  113. package/dist/services/TemplateGenerator.js +6 -7
  114. package/dist/services/ValidationService.d.ts +1 -2
  115. package/dist/services/ValidationService.js +1 -2
  116. package/dist/services/Validator.d.ts +1 -2
  117. package/dist/services/Validator.js +1 -2
  118. package/dist/services/index.d.ts +0 -1
  119. package/dist/services/index.js +0 -1
  120. package/dist/services/templates/ExecutionTemplateBuilder.d.ts +1 -2
  121. package/dist/services/templates/ExecutionTemplateBuilder.js +52 -29
  122. package/dist/services/templates/ProjectTemplateBuilder.d.ts +1 -2
  123. package/dist/services/templates/ProjectTemplateBuilder.js +0 -1
  124. package/dist/services/templates/TemplateBuilderBase.d.ts +5 -1
  125. package/dist/services/templates/TemplateBuilderBase.js +31 -3
  126. package/dist/services/templates/TemplateInputFactory.d.ts +1 -2
  127. package/dist/services/templates/TemplateInputFactory.js +4 -1
  128. package/dist/services/templates/templateTypes.d.ts +4 -1
  129. package/dist/services/templates/templateTypes.js +1 -2
  130. package/dist/tools/build-index.js +128 -36
  131. package/dist/utils/DateUtils.d.ts +1 -2
  132. package/dist/utils/DateUtils.js +1 -2
  133. package/dist/utils/PathUtils.d.ts +0 -1
  134. package/dist/utils/PathUtils.js +0 -1
  135. package/dist/utils/StringUtils.d.ts +1 -2
  136. package/dist/utils/StringUtils.js +1 -2
  137. package/dist/utils/helpers.d.ts +0 -1
  138. package/dist/utils/helpers.js +0 -1
  139. package/dist/utils/index.d.ts +1 -2
  140. package/dist/utils/index.js +1 -2
  141. package/dist/utils/logger.d.ts +1 -2
  142. package/dist/utils/logger.js +1 -2
  143. package/dist/utils/path.d.ts +1 -2
  144. package/dist/utils/path.js +1 -2
  145. package/dist/utils/subcommandHelp.d.ts +0 -1
  146. package/dist/utils/subcommandHelp.js +0 -1
  147. package/dist/workflow/ArchiveGate.d.ts +1 -2
  148. package/dist/workflow/ArchiveGate.js +1 -2
  149. package/dist/workflow/ConfigurableWorkflow.d.ts +1 -2
  150. package/dist/workflow/ConfigurableWorkflow.js +1 -2
  151. package/dist/workflow/HookSystem.d.ts +1 -2
  152. package/dist/workflow/HookSystem.js +1 -2
  153. package/dist/workflow/IndexRegenerator.d.ts +1 -2
  154. package/dist/workflow/IndexRegenerator.js +1 -2
  155. package/dist/workflow/PluginWorkflowComposer.d.ts +0 -1
  156. package/dist/workflow/PluginWorkflowComposer.js +0 -1
  157. package/dist/workflow/SkillUpdateEngine.d.ts +1 -2
  158. package/dist/workflow/SkillUpdateEngine.js +1 -2
  159. package/dist/workflow/VerificationSystem.d.ts +1 -2
  160. package/dist/workflow/VerificationSystem.js +1 -2
  161. package/dist/workflow/WorkflowEngine.d.ts +1 -2
  162. package/dist/workflow/WorkflowEngine.js +1 -2
  163. package/dist/workflow/index.d.ts +0 -1
  164. package/dist/workflow/index.js +0 -1
  165. package/package.json +17 -8
  166. package/skill.yaml +2 -2
package/README.md CHANGED
@@ -21,7 +21,9 @@
21
21
  <a href="docs/README.ar.md">العربية</a>
22
22
  </p>
23
23
 
24
- OSpec is a document-driven workflow for AI-assisted development, helping you define requirements and changes in docs first, then drive implementation, validation, and archive through AI collaboration.
24
+ The official OSpec CLI package is `@clawplays/ospec-cli`, and the official command is `ospec`. OSpec supports spec-driven development (SDD) and document-driven development for AI coding agents and CLI workflows.
25
+
26
+ OSpec.ai is the official project site. `OSpec`, `ospec`, `ospec.ai`, `ospec ai`, `ospecai`, and `ospec-ai` all point to the same official project and CLI.
25
27
 
26
28
  <p align="center">
27
29
  <a href="docs/prompt-guide.md">Prompt Guide</a> |
@@ -46,6 +48,10 @@ AI coding assistants are powerful, but requirements that live only in chat histo
46
48
  npm install -g @clawplays/ospec-cli
47
49
  ```
48
50
 
51
+ Official package: `@clawplays/ospec-cli`
52
+ Command: `ospec`
53
+ Verify install: `ospec --help`
54
+
49
55
  ## Quick Start
50
56
 
51
57
  OSpec only takes 3 steps:
@@ -160,6 +166,8 @@ For an existing OSpec project, after upgrading the CLI with npm, run this in the
160
166
  ospec update
161
167
  ```
162
168
 
169
+ `ospec update` also migrates legacy root-level `build-index-auto.cjs` / `build-index-auto.js` tooling into `.ospec/tools/build-index-auto.cjs` and refreshes OSpec-managed hook entrypoints to use the new location.
170
+
163
171
  ## How The OSpec Workflow Works
164
172
 
165
173
  ```text
package/SKILL.md CHANGED
@@ -53,7 +53,7 @@ Required checks after `ospec init`:
53
53
  - `changes/archived/`
54
54
  - `SKILL.md`
55
55
  - `SKILL.index.json`
56
- - `build-index-auto.cjs`
56
+ - `.ospec/tools/build-index-auto.cjs`
57
57
  - `for-ai/ai-guide.md`
58
58
  - `for-ai/execution-protocol.md`
59
59
  - `for-ai/naming-conventions.md`
@@ -1,11 +1,13 @@
1
1
  #!/bin/sh
2
2
 
3
- if [ -f "build-index-auto.cjs" ]; then
3
+ if [ -f ".ospec/tools/build-index-auto.cjs" ]; then
4
+ OSPEC_BUILD_INDEX_SCRIPT=".ospec/tools/build-index-auto.cjs"
5
+ elif [ -f "build-index-auto.cjs" ]; then
4
6
  OSPEC_BUILD_INDEX_SCRIPT="build-index-auto.cjs"
5
7
  elif [ -f "build-index-auto.js" ]; then
6
8
  OSPEC_BUILD_INDEX_SCRIPT="build-index-auto.js"
7
9
  else
8
- echo "[ospec] build-index-auto.cjs not found, skip hook check"
10
+ echo "[ospec] .ospec/tools/build-index-auto.cjs not found, skip hook check"
9
11
  exit 0
10
12
  fi
11
13
 
@@ -1,11 +1,13 @@
1
1
  #!/bin/sh
2
2
 
3
- if [ -f "build-index-auto.cjs" ]; then
3
+ if [ -f ".ospec/tools/build-index-auto.cjs" ]; then
4
+ OSPEC_BUILD_INDEX_SCRIPT=".ospec/tools/build-index-auto.cjs"
5
+ elif [ -f "build-index-auto.cjs" ]; then
4
6
  OSPEC_BUILD_INDEX_SCRIPT="build-index-auto.cjs"
5
7
  elif [ -f "build-index-auto.js" ]; then
6
8
  OSPEC_BUILD_INDEX_SCRIPT="build-index-auto.js"
7
9
  else
8
- echo "[ospec] build-index-auto.cjs not found, skip hook check"
10
+ echo "[ospec] .ospec/tools/build-index-auto.cjs not found, skip hook check"
9
11
  exit 0
10
12
  fi
11
13
 
@@ -32,5 +32,4 @@ export declare class BatchOperations {
32
32
  }>;
33
33
  private matchesQuery;
34
34
  }
35
- export declare const batchOperations: BatchOperations;
36
- //# sourceMappingURL=BatchOperations.d.ts.map
35
+ export declare const batchOperations: BatchOperations;
@@ -155,5 +155,4 @@ class BatchOperations {
155
155
  }
156
156
  }
157
157
  exports.BatchOperations = BatchOperations;
158
- exports.batchOperations = new BatchOperations();
159
- //# sourceMappingURL=BatchOperations.js.map
158
+ exports.batchOperations = new BatchOperations();
@@ -62,5 +62,4 @@ export declare class CachingLayer<T = any> {
62
62
  */
63
63
  destroy(): void;
64
64
  }
65
- export declare const cachingLayer: CachingLayer<any>;
66
- //# sourceMappingURL=CachingLayer.d.ts.map
65
+ export declare const cachingLayer: CachingLayer<any>;
@@ -132,5 +132,4 @@ class CachingLayer {
132
132
  }
133
133
  }
134
134
  exports.CachingLayer = CachingLayer;
135
- exports.cachingLayer = new CachingLayer();
136
- //# sourceMappingURL=CachingLayer.js.map
135
+ exports.cachingLayer = new CachingLayer();
@@ -42,5 +42,4 @@ export declare class FeatureUpdater {
42
42
  */
43
43
  clearLogs(): void;
44
44
  }
45
- export declare const featureUpdater: FeatureUpdater;
46
- //# sourceMappingURL=FeatureUpdater.d.ts.map
45
+ export declare const featureUpdater: FeatureUpdater;
@@ -147,5 +147,4 @@ class FeatureUpdater {
147
147
  }
148
148
  }
149
149
  exports.FeatureUpdater = FeatureUpdater;
150
- exports.featureUpdater = new FeatureUpdater();
151
- //# sourceMappingURL=FeatureUpdater.js.map
150
+ exports.featureUpdater = new FeatureUpdater();
@@ -48,5 +48,4 @@ export declare class PerformanceMonitor {
48
48
  */
49
49
  generateReport(): string;
50
50
  }
51
- export declare const performanceMonitor: PerformanceMonitor;
52
- //# sourceMappingURL=PerformanceMonitor.d.ts.map
51
+ export declare const performanceMonitor: PerformanceMonitor;
@@ -125,5 +125,4 @@ class PerformanceMonitor {
125
125
  }
126
126
  }
127
127
  exports.PerformanceMonitor = PerformanceMonitor;
128
- exports.performanceMonitor = new PerformanceMonitor();
129
- //# sourceMappingURL=PerformanceMonitor.js.map
128
+ exports.performanceMonitor = new PerformanceMonitor();
@@ -57,5 +57,4 @@ export declare class StatePersistence {
57
57
  memory: string;
58
58
  };
59
59
  }
60
- export declare const statePersistence: StatePersistence;
61
- //# sourceMappingURL=StatePersistence.d.ts.map
60
+ export declare const statePersistence: StatePersistence;
@@ -164,5 +164,4 @@ class StatePersistence {
164
164
  }
165
165
  }
166
166
  exports.StatePersistence = StatePersistence;
167
- exports.statePersistence = new StatePersistence();
168
- //# sourceMappingURL=StatePersistence.js.map
167
+ exports.statePersistence = new StatePersistence();
@@ -10,5 +10,4 @@ export type { BatchOperationResult, BatchQuery } from './BatchOperations';
10
10
  export { PerformanceMonitor, performanceMonitor } from './PerformanceMonitor';
11
11
  export type { PerformanceMetric, PerformanceSummary } from './PerformanceMonitor';
12
12
  export { CachingLayer, cachingLayer } from './CachingLayer';
13
- export type { CacheEntry } from './CachingLayer';
14
- //# sourceMappingURL=index.d.ts.map
13
+ export type { CacheEntry } from './CachingLayer';
@@ -18,5 +18,4 @@ Object.defineProperty(exports, "PerformanceMonitor", { enumerable: true, get: fu
18
18
  Object.defineProperty(exports, "performanceMonitor", { enumerable: true, get: function () { return PerformanceMonitor_1.performanceMonitor; } });
19
19
  var CachingLayer_1 = require("./CachingLayer");
20
20
  Object.defineProperty(exports, "CachingLayer", { enumerable: true, get: function () { return CachingLayer_1.CachingLayer; } });
21
- Object.defineProperty(exports, "cachingLayer", { enumerable: true, get: function () { return CachingLayer_1.cachingLayer; } });
22
- //# sourceMappingURL=index.js.map
21
+ Object.defineProperty(exports, "cachingLayer", { enumerable: true, get: function () { return CachingLayer_1.cachingLayer; } });
@@ -1,5 +1,4 @@
1
1
  /**
2
2
  * Config 命令
3
3
  * TODO: 实现 config 命令
4
- */
5
- //# sourceMappingURL=config.d.ts.map
4
+ */
@@ -2,5 +2,4 @@
2
2
  /**
3
3
  * Config 命令
4
4
  * TODO: 实现 config 命令
5
- */
6
- //# sourceMappingURL=config.js.map
5
+ */
@@ -1,5 +1,4 @@
1
1
  /**
2
2
  * Feature 命令组
3
3
  * TODO: 实现 feature 相关命令
4
- */
5
- //# sourceMappingURL=feature.d.ts.map
4
+ */
@@ -2,5 +2,4 @@
2
2
  /**
3
3
  * Feature 命令组
4
4
  * TODO: 实现 feature 相关命令
5
- */
6
- //# sourceMappingURL=feature.js.map
5
+ */
@@ -1,5 +1,4 @@
1
1
  /**
2
2
  * Index 命令组
3
3
  * TODO: 实现 index 相关命令
4
- */
5
- //# sourceMappingURL=index.d.ts.map
4
+ */
@@ -2,5 +2,4 @@
2
2
  /**
3
3
  * Index 命令组
4
4
  * TODO: 实现 index 相关命令
5
- */
6
- //# sourceMappingURL=index.js.map
5
+ */
@@ -1,5 +1,4 @@
1
1
  /**
2
2
  * Project 命令组
3
3
  * TODO: 实现 project 相关命令
4
- */
5
- //# sourceMappingURL=project.d.ts.map
4
+ */
@@ -2,5 +2,4 @@
2
2
  /**
3
3
  * Project 命令组
4
4
  * TODO: 实现 project 相关命令
5
- */
6
- //# sourceMappingURL=project.js.map
5
+ */
@@ -1,5 +1,4 @@
1
1
  /**
2
2
  * Validate 命令
3
3
  * TODO: 实现 validate 命令
4
- */
5
- //# sourceMappingURL=validate.d.ts.map
4
+ */
@@ -2,5 +2,4 @@
2
2
  /**
3
3
  * Validate 命令
4
4
  * TODO: 实现 validate 命令
5
- */
6
- //# sourceMappingURL=validate.js.map
5
+ */
@@ -1,5 +1,4 @@
1
1
  /**
2
2
  * CLI 命令入口
3
3
  * TODO: 实现具体命令
4
- */
5
- //# sourceMappingURL=index.d.ts.map
4
+ */
package/dist/cli/index.js CHANGED
@@ -2,5 +2,4 @@
2
2
  /**
3
3
  * CLI 命令入口
4
4
  * TODO: 实现具体命令
5
- */
6
- //# sourceMappingURL=index.js.map
5
+ */
package/dist/cli.d.ts CHANGED
@@ -1,3 +1,2 @@
1
1
  #!/usr/bin/env node
2
- export {};
3
- //# sourceMappingURL=cli.d.ts.map
2
+ export {};
package/dist/cli.js CHANGED
@@ -224,7 +224,7 @@ const services_1 = require("./services");
224
224
 
225
225
 
226
226
 
227
- const CLI_VERSION = '0.3.7';
227
+ const CLI_VERSION = '0.3.9';
228
228
 
229
229
  function showInitUsage() {
230
230
  console.log('Usage: ospec init [root-dir] [--summary "..."] [--tech-stack node,react] [--architecture "..."] [--document-language en-US|zh-CN|ja-JP|ar]');
@@ -1100,4 +1100,3 @@ main().catch(error => {
1100
1100
 
1101
1101
 
1102
1102
 
1103
- //# sourceMappingURL=cli.js.map
@@ -10,5 +10,4 @@ export declare class ArchiveCommand extends BaseCommand {
10
10
  private resolveArchiveDirName;
11
11
  private toRelativePath;
12
12
  }
13
- export {};
14
- //# sourceMappingURL=ArchiveCommand.d.ts.map
13
+ export {};
@@ -209,6 +209,7 @@ class ArchiveCommand extends BaseCommand_1.BaseCommand {
209
209
  await services_1.services.fileService.move(targetPath, archivePath);
210
210
  await services_1.services.stateManager.writeState(archivePath, nextState);
211
211
  await this.updateProposalStatus(archivePath, 'archived');
212
+ await services_1.services.projectService.rebaseMovedChangeMarkdownLinks(targetPath, archivePath);
212
213
  await services_1.services.projectService.rebuildIndex(projectRoot);
213
214
  return this.toRelativePath(projectRoot, archivePath);
214
215
  }
@@ -267,4 +268,3 @@ class ArchiveCommand extends BaseCommand_1.BaseCommand {
267
268
  }
268
269
  }
269
270
  exports.ArchiveCommand = ArchiveCommand;
270
- //# sourceMappingURL=ArchiveCommand.js.map
@@ -29,5 +29,4 @@ export declare abstract class BaseCommand {
29
29
  * 打印警告信息
30
30
  */
31
31
  protected warn(message: string): void;
32
- }
33
- //# sourceMappingURL=BaseCommand.d.ts.map
32
+ }
@@ -42,5 +42,4 @@ class BaseCommand {
42
42
  console.warn(`⚠ ${message}`);
43
43
  }
44
44
  }
45
- exports.BaseCommand = BaseCommand;
46
- //# sourceMappingURL=BaseCommand.js.map
45
+ exports.BaseCommand = BaseCommand;
@@ -1,5 +1,4 @@
1
1
  import { BaseCommand } from './BaseCommand';
2
2
  export declare class BatchCommand extends BaseCommand {
3
3
  execute(action: string, projectPath?: string): Promise<void>;
4
- }
5
- //# sourceMappingURL=BatchCommand.d.ts.map
4
+ }
@@ -38,5 +38,4 @@ class BatchCommand extends BaseCommand_1.BaseCommand {
38
38
  }
39
39
  }
40
40
  }
41
- exports.BatchCommand = BatchCommand;
42
- //# sourceMappingURL=BatchCommand.js.map
41
+ exports.BatchCommand = BatchCommand;
@@ -71,4 +71,3 @@ class ChangesCommand extends BaseCommand_1.BaseCommand {
71
71
  }
72
72
  }
73
73
  exports.ChangesCommand = ChangesCommand;
74
- //# sourceMappingURL=ChangesCommand.js.map
@@ -1,5 +1,4 @@
1
1
  import { BaseCommand } from './BaseCommand';
2
2
  export declare class DocsCommand extends BaseCommand {
3
3
  execute(action?: string, projectPath?: string): Promise<void>;
4
- }
5
- //# sourceMappingURL=DocsCommand.d.ts.map
4
+ }
@@ -116,4 +116,3 @@ class DocsCommand extends BaseCommand_1.BaseCommand {
116
116
  }
117
117
  }
118
118
  exports.DocsCommand = DocsCommand;
119
- //# sourceMappingURL=DocsCommand.js.map
@@ -1,5 +1,4 @@
1
1
  import { BaseCommand } from './BaseCommand';
2
2
  export declare class IndexCommand extends BaseCommand {
3
3
  execute(action?: string, projectPath?: string): Promise<void>;
4
- }
5
- //# sourceMappingURL=IndexCommand.d.ts.map
4
+ }
@@ -53,5 +53,4 @@ class IndexCommand extends BaseCommand_1.BaseCommand {
53
53
  }
54
54
  }
55
55
  }
56
- exports.IndexCommand = IndexCommand;
57
- //# sourceMappingURL=IndexCommand.js.map
56
+ exports.IndexCommand = IndexCommand;
@@ -1,5 +1,4 @@
1
1
  import { BaseCommand } from './BaseCommand';
2
2
  export declare class InitCommand extends BaseCommand {
3
3
  execute(rootDir?: string): Promise<void>;
4
- }
5
- //# sourceMappingURL=InitCommand.d.ts.map
4
+ }
@@ -121,4 +121,3 @@ class InitCommand extends BaseCommand_1.BaseCommand {
121
121
  }
122
122
  }
123
123
  exports.InitCommand = InitCommand;
124
- //# sourceMappingURL=InitCommand.js.map
@@ -8,4 +8,3 @@ export declare class NewCommand extends BaseCommand {
8
8
  execute(featureName: string, rootDir?: string, options?: NewCommandOptions): Promise<void>;
9
9
  private normalizeFlags;
10
10
  }
11
- //# sourceMappingURL=NewCommand.d.ts.map
@@ -78,6 +78,8 @@ class NewCommand extends BaseCommand_1.BaseCommand {
78
78
  flags,
79
79
  optionalSteps: activatedSteps,
80
80
  documentLanguage,
81
+ projectRoot: targetDir,
82
+ documentPath: path.join(featureDir, constants_1.FILE_NAMES.PROPOSAL),
81
83
  }));
82
84
  await services_1.services.fileService.writeFile(path.join(featureDir, constants_1.FILE_NAMES.TASKS), services_1.services.templateEngine.generateTasksTemplate({
83
85
  feature: featureName,
@@ -87,6 +89,8 @@ class NewCommand extends BaseCommand_1.BaseCommand {
87
89
  flags,
88
90
  optionalSteps: activatedSteps,
89
91
  documentLanguage,
92
+ projectRoot: targetDir,
93
+ documentPath: path.join(featureDir, constants_1.FILE_NAMES.TASKS),
90
94
  }));
91
95
  await services_1.services.fileService.writeFile(path.join(featureDir, constants_1.FILE_NAMES.VERIFICATION), services_1.services.templateEngine.generateVerificationTemplate({
92
96
  feature: featureName,
@@ -96,6 +100,8 @@ class NewCommand extends BaseCommand_1.BaseCommand {
96
100
  flags,
97
101
  optionalSteps: activatedSteps,
98
102
  documentLanguage,
103
+ projectRoot: targetDir,
104
+ documentPath: path.join(featureDir, constants_1.FILE_NAMES.VERIFICATION),
99
105
  }));
100
106
  await services_1.services.fileService.writeFile(path.join(featureDir, constants_1.FILE_NAMES.REVIEW), services_1.services.templateEngine.generateReviewTemplate({
101
107
  feature: featureName,
@@ -105,6 +111,8 @@ class NewCommand extends BaseCommand_1.BaseCommand {
105
111
  flags,
106
112
  optionalSteps: activatedSteps,
107
113
  documentLanguage,
114
+ projectRoot: targetDir,
115
+ documentPath: path.join(featureDir, constants_1.FILE_NAMES.REVIEW),
108
116
  }));
109
117
  await this.writePluginArtifacts(featureDir, activatedSteps);
110
118
  this.success(`${placement === constants_1.DIR_NAMES.QUEUED ? 'Queued change' : 'Change'} ${featureName} created at ${featureDir}`);
@@ -193,28 +201,28 @@ class NewCommand extends BaseCommand_1.BaseCommand {
193
201
  if (/[\u0600-\u06FF]/.test(content)) {
194
202
  return 'ar';
195
203
  }
196
- if (/[ぁ-ゟ゠-ヿ]/.test(content)) {
204
+ if (this.hasJapaneseKana(content)) {
197
205
  return 'ja-JP';
198
206
  }
199
- if (this.isLikelyJapaneseKanjiContent(content)) {
200
- return 'ja-JP';
201
- }
202
- if (/[一-龥]/.test(content)) {
203
- return 'zh-CN';
207
+ if (this.hasCjkIdeographs(content)) {
208
+ return this.isLikelyJapaneseKanjiContent(content) ? 'ja-JP' : 'zh-CN';
204
209
  }
205
210
  if (/[A-Za-z]/.test(content)) {
206
211
  return 'en-US';
207
212
  }
208
213
  return null;
209
214
  }
215
+ hasJapaneseKana(content) {
216
+ return /[\u3040-\u30FF]/.test(content);
217
+ }
218
+ hasCjkIdeographs(content) {
219
+ return /[\u3400-\u9FFF]/.test(content);
220
+ }
210
221
  isLikelyJapaneseKanjiContent(content) {
211
- if (!/[一-龥]/.test(content)) {
222
+ if (!this.hasCjkIdeographs(content)) {
212
223
  return false;
213
224
  }
214
- if (/[々〆ヵヶ「」『』]/.test(content)) {
215
- return true;
216
- }
217
- return /(一覧|詳細|設定|権限|検索|構成|変更|確認|対応|連携|承認|申請|手順|履歴|機能|実装|設計|運用|画面|帳票|組織|拠点|区分|種別|完了|開始|終了|表示|取得|追加|削除|更新|登録)/.test(content);
225
+ return /[\u3005\u3006\u300C-\u300F\u30F5\u30F6]/.test(content);
218
226
  }
219
227
  async ensureChangeNameAvailable(targetDir, featureName) {
220
228
  const activeDir = PathUtils_1.PathUtils.getChangeDir(targetDir, constants_1.DIR_NAMES.ACTIVE, featureName);
@@ -310,4 +318,3 @@ class NewCommand extends BaseCommand_1.BaseCommand {
310
318
  }
311
319
  }
312
320
  exports.NewCommand = NewCommand;
313
- //# sourceMappingURL=NewCommand.js.map
@@ -55,4 +55,3 @@ export declare class PluginsCommand extends BaseCommand {
55
55
  private isBuiltInCheckpointRunner;
56
56
  private getPluginEntries;
57
57
  }
58
- //# sourceMappingURL=PluginsCommand.d.ts.map
@@ -2489,4 +2489,3 @@ class PluginsCommand extends BaseCommand_1.BaseCommand {
2489
2489
  }
2490
2490
  }
2491
2491
  exports.PluginsCommand = PluginsCommand;
2492
- //# sourceMappingURL=PluginsCommand.js.map
@@ -1,5 +1,4 @@
1
1
  import { BaseCommand } from './BaseCommand';
2
2
  export declare class ProgressCommand extends BaseCommand {
3
3
  execute(featurePath?: string): Promise<void>;
4
- }
5
- //# sourceMappingURL=ProgressCommand.d.ts.map
4
+ }
@@ -99,5 +99,4 @@ class ProgressCommand extends BaseCommand_1.BaseCommand {
99
99
  }
100
100
  }
101
101
  }
102
- exports.ProgressCommand = ProgressCommand;
103
- //# sourceMappingURL=ProgressCommand.js.map
102
+ exports.ProgressCommand = ProgressCommand;
@@ -7,4 +7,3 @@ export declare class QueueCommand extends BaseCommand {
7
7
  private activateNext;
8
8
  private parseAddArgs;
9
9
  }
10
- //# sourceMappingURL=QueueCommand.d.ts.map
@@ -144,4 +144,3 @@ class QueueCommand extends BaseCommand_1.BaseCommand {
144
144
  }
145
145
  }
146
146
  exports.QueueCommand = QueueCommand;
147
- //# sourceMappingURL=QueueCommand.js.map
@@ -10,4 +10,3 @@ export declare class RunCommand extends BaseCommand {
10
10
  private printReport;
11
11
  private parseStartArgs;
12
12
  }
13
- //# sourceMappingURL=RunCommand.d.ts.map
@@ -197,4 +197,3 @@ class RunCommand extends BaseCommand_1.BaseCommand {
197
197
  }
198
198
  }
199
199
  exports.RunCommand = RunCommand;
200
- //# sourceMappingURL=RunCommand.js.map
@@ -28,4 +28,3 @@ export declare class SkillCommand extends BaseCommand {
28
28
  private resolveTargetDir;
29
29
  private resolveProviderHome;
30
30
  }
31
- //# sourceMappingURL=SkillCommand.d.ts.map
@@ -50,7 +50,7 @@ Use this action when the user intent is initialization.
50
50
 
51
51
  - use \`ospec init [path]\` so the repository ends in change-ready state
52
52
 
53
- - verify \`.skillrc\`, \`.ospec/\`, \`changes/\`, \`SKILL.md\`, \`SKILL.index.json\`, \`build-index-auto.cjs\`, \`for-ai/\`, and \`docs/project/\` files on disk
53
+ - verify \`.skillrc\`, \`.ospec/\`, \`changes/\`, \`SKILL.md\`, \`SKILL.index.json\`, \`.ospec/tools/build-index-auto.cjs\`, \`for-ai/\`, and \`docs/project/\` files on disk
54
54
 
55
55
  - if project overview context is missing and AI can ask follow-up questions, ask for a brief summary or tech stack before initialization; if the user declines, fall back to placeholder docs
56
56
 
@@ -1237,4 +1237,3 @@ interface:
1237
1237
 
1238
1238
  exports.SkillCommand = SkillCommand;
1239
1239
 
1240
- //# sourceMappingURL=SkillCommand.js.map
@@ -1,5 +1,4 @@
1
1
  import { BaseCommand } from './BaseCommand';
2
2
  export declare class SkillsCommand extends BaseCommand {
3
3
  execute(action?: string, projectPath?: string): Promise<void>;
4
- }
5
- //# sourceMappingURL=SkillsCommand.d.ts.map
4
+ }
@@ -64,5 +64,4 @@ class SkillsCommand extends BaseCommand_1.BaseCommand {
64
64
  }
65
65
  }
66
66
  }
67
- exports.SkillsCommand = SkillsCommand;
68
- //# sourceMappingURL=SkillsCommand.js.map
67
+ exports.SkillsCommand = SkillsCommand;
@@ -2,5 +2,4 @@ import { BaseCommand } from './BaseCommand';
2
2
  export declare class StatusCommand extends BaseCommand {
3
3
  execute(projectPath?: string): Promise<void>;
4
4
  private getRecommendedNextSteps;
5
- }
6
- //# sourceMappingURL=StatusCommand.d.ts.map
5
+ }
@@ -170,4 +170,3 @@ class StatusCommand extends BaseCommand_1.BaseCommand {
170
170
  }
171
171
  }
172
172
  exports.StatusCommand = StatusCommand;
173
- //# sourceMappingURL=StatusCommand.js.map
@@ -5,4 +5,3 @@ export declare class UpdateCommand extends BaseCommand {
5
5
  private syncInstalledSkills;
6
6
  private shouldSyncClaudeSkills;
7
7
  }
8
- //# sourceMappingURL=UpdateCommand.d.ts.map