sdtk-kit 1.3.1 → 1.4.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.
package/README.md CHANGED
@@ -23,8 +23,9 @@ After install, all five SDTK CLI tools — plus the unified `sdtk` orchestrator
23
23
  # Set up the chosen runtime for the whole suite in one command
24
24
  sdtk init --runtime claude # or --runtime codex
25
25
 
26
- # Generate a 17-file spec scaffold for your first feature
27
- sdtk-spec generate --feature-key MY_FEATURE
26
+ # Generate the 17-file SDLC scaffold for your product/MVP (or a single feature)
27
+ # (both --key and --name are required; --feature-key/--feature-name still work)
28
+ sdtk-spec generate --key SHOPEASE --name "ShopEase MVP"
28
29
  ```
29
30
 
30
31
  ## Unified init: `sdtk init`
@@ -118,7 +119,7 @@ are the mechanism that puts `sdtk`, `sdtk-spec`, `sdtk-code`, `sdtk-ops`,
118
119
  - **Major version bumps** in any sub-toolkit require a coordinated `sdtk-kit` major-bump and re-publish.
119
120
  - If you need exact version control per toolkit, use standalone packages instead.
120
121
 
121
- Current dependency ranges (as of sdtk-kit v1.3.1):
122
+ Current dependency ranges (as of sdtk-kit v1.3.2):
122
123
 
123
124
  | Package | Version |
124
125
  |------------------|---------|
@@ -131,10 +132,40 @@ Current dependency ranges (as of sdtk-kit v1.3.1):
131
132
  ## Updating
132
133
 
133
134
  ```bash
134
- npm update -g sdtk-kit
135
+ npm update -g sdtk-kit # or: npm install -g sdtk-kit@latest
136
+ sdtk --version # confirm sdtk-kit + per-kit versions
135
137
  ```
136
138
 
137
- This updates all sub-toolkits within their caret ranges.
139
+ This updates all sub-toolkits within their caret ranges. Two things to remember:
140
+
141
+ - **npm only updates the CLI code.** To refresh the skills already installed in a
142
+ project, re-run `init` with `--force` there: `sdtk init --runtime <r> --force`
143
+ (without `--force`, existing skill files are kept). `--force` re-copies
144
+ toolkit-managed files but never your own files — back up a customized
145
+ `*.config.json` first.
146
+ - **`init` never deletes.** When a release stops writing a directory an older
147
+ version created, remove the leftover yourself after inspecting it
148
+ (e.g. `Remove-Item -Recurse -Force .\.agents`), then re-run `sdtk init --force`.
149
+
150
+ If `npm install` fails right after a publish with `ETARGET No matching version
151
+ found`, your local metadata cache is stale — run `npm cache verify` then
152
+ `npm install -g sdtk-kit@latest --prefer-online`.
153
+
154
+ ### Maintainers: publish order
155
+
156
+ When releasing, **publish the sub-kits before the umbrella**, and verify each is
157
+ live before publishing `sdtk-kit`. The umbrella pins its sub-kits with caret
158
+ ranges, so if `sdtk-kit` is published before a sub-kit it requires, anyone
159
+ installing in that window hits `ETARGET`.
160
+
161
+ ```bash
162
+ # in the sub-kit (e.g. sdtk-design-kit)
163
+ npm publish
164
+ npm view sdtk-design-kit@<version> version # confirm it is live
165
+ # then in sdtk-kit
166
+ npm publish
167
+ npm view sdtk-kit@<version> version
168
+ ```
138
169
 
139
170
  ## Uninstalling
140
171
 
package/bin/sdtk.js CHANGED
@@ -24,6 +24,7 @@ function helpText() {
24
24
  "",
25
25
  "Usage:",
26
26
  " sdtk init --runtime <claude|codex> [options] Initialise all five toolkits",
27
+ " sdtk update [--check-only] Update all five toolkit CLIs",
27
28
  " sdtk --help Show this help",
28
29
  " sdtk --version Show versions",
29
30
  "",
@@ -42,6 +43,9 @@ function helpText() {
42
43
  " --keep-going Continue past a failing toolkit (default: fail-fast).",
43
44
  " --verbose Verbose per-toolkit output.",
44
45
  "",
46
+ "update options:",
47
+ " --check-only Print the planned npm command without running it.",
48
+ "",
45
49
  "Runs: sdtk-spec → sdtk-ops → sdtk-code → sdtk-design (all with --runtime)",
46
50
  " → sdtk-wiki (its own non-runtime init; installs no skills).",
47
51
  "",
@@ -91,6 +95,12 @@ function main(argv) {
91
95
  return cmdInit(argv.slice(1));
92
96
  }
93
97
 
98
+ if (command === "update") {
99
+ // eslint-disable-next-line global-require
100
+ const { cmdUpdate } = require("../src/commands/update");
101
+ return cmdUpdate(argv.slice(1));
102
+ }
103
+
94
104
  console.error(`sdtk: unknown command '${command}'.`);
95
105
  console.error("Run `sdtk --help` for usage.");
96
106
  return 2;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "sdtk-kit",
3
- "version": "1.3.1",
3
+ "version": "1.4.0",
4
4
  "description": "Install all five SDTK toolkits in one command. Meta-package for sdtk-spec-kit, sdtk-code-kit, sdtk-ops-kit, sdtk-design-kit, and sdtk-wiki-kit.",
5
5
  "type": "commonjs",
6
6
  "bin": {
@@ -30,7 +30,7 @@
30
30
  "sdtk-code-kit": "^0.3.0",
31
31
  "sdtk-ops-kit": "^0.2.4",
32
32
  "sdtk-design-kit": "^0.3.2",
33
- "sdtk-wiki-kit": "^0.2.0"
33
+ "sdtk-wiki-kit": "^0.3.0"
34
34
  },
35
35
  "engines": {
36
36
  "node": ">=18.13.0"
@@ -0,0 +1,32 @@
1
+ "use strict";
2
+
3
+ const { execSync } = require("child_process");
4
+
5
+ const UPDATE_CMD = "npm install -g sdtk-kit@latest";
6
+
7
+ function cmdUpdate(argv) {
8
+ const checkOnly = argv.includes("--check-only");
9
+
10
+ if (checkOnly) {
11
+ console.log("Planned update command:");
12
+ console.log(` ${UPDATE_CMD}`);
13
+ console.log("\nThis will update all five SDTK toolkit CLIs to the latest published versions.");
14
+ console.log("After updating, run `sdtk init --runtime <runtime> --force` in each project");
15
+ console.log("to refresh managed skills and project files to the new version.");
16
+ return 0;
17
+ }
18
+
19
+ console.log(`Running: ${UPDATE_CMD}\n`);
20
+ try {
21
+ execSync(UPDATE_CMD, { stdio: "inherit" });
22
+ console.log("\nUpdate complete.");
23
+ console.log("Run `sdtk --version` to confirm new versions.");
24
+ console.log("Run `sdtk init --runtime <runtime> --force` in each project to refresh managed files.");
25
+ return 0;
26
+ } catch (err) {
27
+ process.stderr.write(`sdtk update failed: ${err.message}\n`);
28
+ return 1;
29
+ }
30
+ }
31
+
32
+ module.exports = { cmdUpdate };