@clawplays/ospec-cli 1.0.0 → 1.0.1

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.
@@ -4,8 +4,6 @@ title: OSpec Change
4
4
 
5
5
  description: Create or advance an active change inside a OSpec project while respecting workflow files and optional-step activation.
6
6
 
7
- version: 5.1.0
8
-
9
7
  author: OSpec Team
10
8
 
11
9
  license: MIT
package/dist/cli.js CHANGED
@@ -55,7 +55,7 @@ const VerifyCommand_1 = require("./commands/VerifyCommand");
55
55
  const WorkflowCommand_1 = require("./commands/WorkflowCommand");
56
56
  const LayoutCommand_1 = require("./commands/LayoutCommand");
57
57
  const services_1 = require("./services");
58
- const CLI_VERSION = '1.0.0';
58
+ const CLI_VERSION = '1.0.1';
59
59
  function showInitUsage() {
60
60
  console.log('Usage: ospec init [root-dir] [--summary "..."] [--tech-stack node,react] [--architecture "..."] [--document-language en-US|zh-CN|ja-JP|ar]');
61
61
  }
@@ -5,4 +5,5 @@ export declare class LayoutCommand extends BaseCommand {
5
5
  private migrateToNested;
6
6
  private collectClassicMovePlan;
7
7
  private collectNestedSkillFiles;
8
+ private isPlaceholderDirectoryTree;
8
9
  }
@@ -105,17 +105,25 @@ class LayoutCommand extends BaseCommand_1.BaseCommand {
105
105
  }
106
106
  const movePlan = await this.collectClassicMovePlan(rootDir);
107
107
  const conflicts = [];
108
+ const removablePlaceholderPaths = new Set();
108
109
  for (const move of movePlan) {
109
110
  if (!(await services_1.services.fileService.exists(move.sourcePath))) {
110
111
  continue;
111
112
  }
112
113
  if (await services_1.services.fileService.exists(move.targetPath)) {
114
+ if (await this.isPlaceholderDirectoryTree(move.targetPath)) {
115
+ removablePlaceholderPaths.add(move.targetPath);
116
+ continue;
117
+ }
113
118
  conflicts.push(`${move.targetRelativePath} already exists`);
114
119
  }
115
120
  }
116
121
  if (conflicts.length > 0) {
117
122
  throw new Error(`Cannot migrate to nested layout because target paths already exist:\n- ${conflicts.join('\n- ')}`);
118
123
  }
124
+ for (const targetPath of Array.from(removablePlaceholderPaths).sort((left, right) => right.localeCompare(left))) {
125
+ await services_1.services.fileService.remove(targetPath);
126
+ }
119
127
  const movedPaths = [];
120
128
  for (const move of movePlan) {
121
129
  if (!(await services_1.services.fileService.exists(move.sourcePath))) {
@@ -196,5 +204,22 @@ class LayoutCommand extends BaseCommand_1.BaseCommand {
196
204
  }
197
205
  return results;
198
206
  }
207
+ async isPlaceholderDirectoryTree(targetPath) {
208
+ const stat = await services_1.services.fileService.stat(targetPath);
209
+ if (!stat.isDirectory()) {
210
+ return false;
211
+ }
212
+ const entries = await services_1.services.fileService.readDir(targetPath);
213
+ if (entries.length === 0) {
214
+ return true;
215
+ }
216
+ for (const entryName of entries) {
217
+ const entryPath = path.join(targetPath, entryName);
218
+ if (!(await this.isPlaceholderDirectoryTree(entryPath))) {
219
+ return false;
220
+ }
221
+ }
222
+ return true;
223
+ }
199
224
  }
200
225
  exports.LayoutCommand = LayoutCommand;
@@ -661,8 +661,6 @@ title: ${definition.title}
661
661
 
662
662
  description: ${definition.description}
663
663
 
664
- version: 5.1.0
665
-
666
664
  author: OSpec Team
667
665
 
668
666
  license: MIT
@@ -831,8 +829,6 @@ title: OSpec CLI (Legacy Alias)
831
829
 
832
830
  description: Legacy compatibility alias that redirects ospec-cli skill usage to the newer ospec skill name.
833
831
 
834
- version: 5.1.0
835
-
836
832
  author: OSpec Team
837
833
 
838
834
  license: MIT
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@clawplays/ospec-cli",
3
- "version": "1.0.0",
3
+ "version": "1.0.1",
4
4
  "description": "Official OSpec CLI package for spec-driven development (SDD) and document-driven development in AI coding agent and CLI workflows.",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -14,20 +14,11 @@
14
14
  "postinstall": "node scripts/postinstall.js",
15
15
  "prepack": "node scripts/strip-sourcemap-refs.js",
16
16
  "index:rebuild": "node dist/tools/build-index.js",
17
- "release:cut": "node scripts/release-cut.js",
18
- "release:cut:patch": "node scripts/release-cut.js patch",
19
- "release:cut:minor": "node scripts/release-cut.js minor",
20
- "release:cut:major": "node scripts/release-cut.js major",
21
17
  "release:smoke": "node scripts/release-smoke.js",
22
18
  "release:notes": "node scripts/release-notes.js",
23
19
  "release:upload-notes": "node scripts/release-upload-notes.js",
24
- "release:sync-version": "node scripts/sync-version.js",
25
- "release:bump:patch": "npm version patch --no-git-tag-version",
26
- "release:bump:minor": "npm version minor --no-git-tag-version",
27
- "release:bump:major": "npm version major --no-git-tag-version",
28
20
  "release:check": "npm pack --dry-run",
29
- "release:publish": "npm publish --access public",
30
- "version": "npm run release:sync-version"
21
+ "release:publish": "npm publish --access public"
31
22
  },
32
23
  "keywords": [
33
24
  "ospec",
package/skill.yaml CHANGED
@@ -1,7 +1,6 @@
1
1
  name: ospec
2
2
  title: OSpec
3
3
  description: Document-driven OSpec workflow skill for AI-assisted development with Codex, Claude Code, and similar AI tools.
4
- version: 5.1.0
5
4
  author: OSpec Team
6
5
  license: MIT
7
6