@protonspy/csdd 0.1.1 → 0.1.2

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 (3) hide show
  1. package/README.md +11 -6
  2. package/bin/csdd.js +16 -1
  3. package/package.json +6 -6
package/README.md CHANGED
@@ -6,16 +6,19 @@
6
6
  workflow for [Claude Code](https://claude.com/claude-code) into a contract that
7
7
  is validated mechanically — for humans *and* AI agents.
8
8
 
9
- ## Install
9
+ ## Run
10
+
11
+ No install needed — `npx` fetches the right prebuilt binary for your platform:
10
12
 
11
13
  ```bash
12
- npm install -g @protonspy/csdd
14
+ npx @protonspy/csdd --help
15
+ npx @protonspy/csdd # interactive TUI
13
16
  ```
14
17
 
15
- Or run it without installing:
18
+ Prefer the short `csdd` command on your `PATH`? Install it globally:
16
19
 
17
20
  ```bash
18
- npx @protonspy/csdd --help
21
+ npm install -g @protonspy/csdd # then: csdd
19
22
  ```
20
23
 
21
24
  This package ships a thin launcher; the native binary for your platform is
@@ -25,10 +28,12 @@ download at install time). Prebuilt for linux, macOS, and Windows on x64/arm64.
25
28
  ## Usage
26
29
 
27
30
  ```bash
28
- csdd # interactive TUI
29
- csdd spec generate photo-albums --artifact requirements # headless / CI
31
+ npx @protonspy/csdd # interactive TUI
32
+ npx @protonspy/csdd spec generate photo-albums --artifact requirements # headless / CI
30
33
  ```
31
34
 
35
+ > Installed globally? Drop the `npx @protonspy/` prefix and just call `csdd`.
36
+
32
37
  See the [full documentation](https://github.com/protonspy/csdd#readme).
33
38
 
34
39
  ## License
package/bin/csdd.js CHANGED
@@ -38,7 +38,22 @@ try {
38
38
  process.exit(1);
39
39
  }
40
40
 
41
- const child = spawn(binPath, process.argv.slice(2), { stdio: "inherit" });
41
+ // When invoked via `npx @protonspy/csdd` (which is `npm exec` under the hood),
42
+ // echo that exact spelling in the binary's --help / usage output. A global
43
+ // install runs this same launcher as the bare `csdd` command — there npm is not
44
+ // in the picture (npm_command is unset), so the binary keeps its default name.
45
+ // An explicit CSDD_PROG always wins.
46
+ const env = { ...process.env };
47
+ if (!env.CSDD_PROG) {
48
+ const argv1 = process.argv[1] || "";
49
+ const viaNpx =
50
+ process.env.npm_command === "exec" ||
51
+ argv1.includes("/_npx/") ||
52
+ argv1.includes("\\_npx\\");
53
+ if (viaNpx) env.CSDD_PROG = "npx @protonspy/csdd";
54
+ }
55
+
56
+ const child = spawn(binPath, process.argv.slice(2), { stdio: "inherit", env });
42
57
 
43
58
  // Forward terminating signals so the TUI shuts down cleanly.
44
59
  for (const sig of ["SIGINT", "SIGTERM", "SIGHUP"]) {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@protonspy/csdd",
3
- "version": "0.1.1",
3
+ "version": "0.1.2",
4
4
  "description": "Claude Spec-Driven Development — a single Go binary that turns the SDD workflow into a mechanically validated contract for humans and AI agents.",
5
5
  "keywords": [
6
6
  "claude",
@@ -32,10 +32,10 @@
32
32
  "node": ">=16"
33
33
  },
34
34
  "optionalDependencies": {
35
- "@protonspy/csdd-linux-x64": "0.1.1",
36
- "@protonspy/csdd-linux-arm64": "0.1.1",
37
- "@protonspy/csdd-darwin-x64": "0.1.1",
38
- "@protonspy/csdd-darwin-arm64": "0.1.1",
39
- "@protonspy/csdd-win32-x64": "0.1.1"
35
+ "@protonspy/csdd-linux-x64": "0.1.2",
36
+ "@protonspy/csdd-linux-arm64": "0.1.2",
37
+ "@protonspy/csdd-darwin-x64": "0.1.2",
38
+ "@protonspy/csdd-darwin-arm64": "0.1.2",
39
+ "@protonspy/csdd-win32-x64": "0.1.2"
40
40
  }
41
41
  }