@wipcomputer/wip-ai-devops-toolbox 1.9.48 → 1.9.50

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/CHANGELOG.md CHANGED
@@ -31,6 +31,67 @@
31
31
 
32
32
 
33
33
 
34
+
35
+ ## 1.9.50 (2026-03-20)
36
+
37
+ # Release Notes: wip-ai-devops-toolbox v1.9.50
38
+
39
+ **wip-release: require product update doc on every release.**
40
+
41
+ ## What changed
42
+
43
+ New quality gate in wip-release: checks that `ai/dev-updates/product-update/*-product-update.md` was modified since the last release tag. Same pattern as dev-updates, roadmap, and readme-first checks.
44
+
45
+ The product update doc is a human-readable test guide. Each release entry has: what changed, how it's supposed to work, and how to test. New entries go at the top. Additive only.
46
+
47
+ ## Why
48
+
49
+ Three repos now have product update docs but nothing enforced keeping them current. Without the gate, the docs will drift immediately (same problem we had with TECHNICAL.md).
50
+
51
+ ## Issues closed
52
+
53
+ - #220
54
+
55
+ ## How to verify
56
+
57
+ ```bash
58
+ wip-release patch --dry-run
59
+ # Should warn if product update doc not modified since last release
60
+ ```
61
+
62
+ ## 1.9.49 (2026-03-20)
63
+
64
+ # Release Notes: wip-ai-devops-toolbox v1.9.49
65
+
66
+ **TECHNICAL.md audit: 2 weeks of undocumented features now documented.**
67
+
68
+ ## What changed
69
+
70
+ Full TECHNICAL.md audit covering v1.9.15 through v1.9.48. Two passes. Key additions:
71
+
72
+ - **wip-release quality gates:** Technical docs gate, interface coverage gate, product docs auto-sync, all skip flags documented.
73
+ - **deploy-public.sh:** Full 8-step pipeline including GitHub Packages publishing, repo URL rewrite, co-author sync.
74
+ - **wip-license-guard:** Now documented as both CLI and Claude Code PreToolUse hook (guard.mjs). Enforcement details.
75
+ - **wip-branch-guard:** Worktree requirement on branches, non-repo file passthrough, workflow teaching messages.
76
+ - **wip-repos claude:** Cross-repo CLAUDE.md ecosystem generator fully documented.
77
+ - **Source code table:** Missing files added (guard.mjs, claude.mjs, mcp-server.mjs).
78
+ - **Log paths:** Fixed stale /tmp/ references to ~/.ldm/logs/.
79
+
80
+ ## Why
81
+
82
+ 15 releases shipped without TECHNICAL.md updates. Agents reading the docs were missing critical features: release gates, license enforcement hooks, deploy pipeline details.
83
+
84
+ ## Issues closed
85
+
86
+ - #218
87
+
88
+ ## How to verify
89
+
90
+ ```bash
91
+ grep "Interface coverage" TECHNICAL.md # new gate
92
+ grep "guard.mjs" TECHNICAL.md # license-guard hook
93
+ grep "GitHub Packages" TECHNICAL.md # deploy pipeline
94
+ ```
34
95
 
35
96
  ## 1.9.48 (2026-03-20)
36
97
 
package/SKILL.md CHANGED
@@ -5,7 +5,7 @@ license: MIT
5
5
  interface: [cli, module, mcp, skill, hook, plugin]
6
6
  metadata:
7
7
  display-name: "WIP AI DevOps Toolbox"
8
- version: "1.9.48"
8
+ version: "1.9.50"
9
9
  homepage: "https://github.com/wipcomputer/wip-ai-devops-toolbox"
10
10
  author: "Parker Todd Brooks"
11
11
  category: dev-tools
package/TECHNICAL.md CHANGED
@@ -88,26 +88,43 @@ open -W ~/Applications/LDMDevTools.app --args visibility-audit
88
88
 
89
89
  ```bash
90
90
  # Daily backup at midnight, branch protection audit at 1 AM, visibility audit at 2 AM
91
- 0 0 * * * open -W ~/Applications/LDMDevTools.app --args backup >> /tmp/ldm-dev-tools/cron.log 2>&1
92
- 0 1 * * * open -W ~/Applications/LDMDevTools.app --args branch-protect >> /tmp/ldm-dev-tools/cron.log 2>&1
93
- 0 2 * * * open -W ~/Applications/LDMDevTools.app --args visibility-audit >> /tmp/ldm-dev-tools/cron.log 2>&1
91
+ 0 0 * * * open -W ~/Applications/LDMDevTools.app --args backup >> ~/.ldm/logs/cron.log 2>&1
92
+ 0 1 * * * open -W ~/Applications/LDMDevTools.app --args branch-protect >> ~/.ldm/logs/cron.log 2>&1
93
+ 0 2 * * * open -W ~/Applications/LDMDevTools.app --args visibility-audit >> ~/.ldm/logs/cron.log 2>&1
94
94
  ```
95
95
 
96
- Logs: `/tmp/ldm-dev-tools/`
96
+ Logs: `~/.ldm/logs/`
97
97
 
98
98
  ### wip-release
99
99
 
100
- One-command release pipeline. Version bump, changelog, SKILL.md sync, npm publish, GitHub release. All in one shot. Release notes live on the branch so you review them in the PR before they go live.
100
+ One-command release pipeline. Version bump, changelog, SKILL.md sync, npm publish, GitHub release, website skill publish. All in one shot.
101
101
 
102
102
  ```bash
103
- wip-release patch --notes="description of what was built and why"
104
- wip-release minor # auto-detects RELEASE-NOTES-v{version}.md
105
- wip-release major --dry-run
103
+ wip-release patch # auto-detects RELEASE-NOTES-v{version}.md
104
+ wip-release minor --dry-run
105
+ wip-release major
106
106
  ```
107
107
 
108
- **Release notes convention:** Write `RELEASE-NOTES-v{version}.md` (e.g. `RELEASE-NOTES-v1-6-0.md`) on your feature branch. It shows up in the PR diff for review. On release, wip-release auto-detects the file and uses it as the GitHub release body. One file, renamed each release. Warns when notes are missing, too short, or look like changelog entries instead of narrative.
108
+ **Release notes are mandatory.** Write `RELEASE-NOTES-v{version}.md` (dashes, not dots) on your feature branch. Commit it with the code. The PR diff shows both code and notes for review. On release, wip-release auto-detects the file.
109
109
 
110
- **Source:** Pure JavaScript, no build step. [`tools/wip-release/cli.js`](tools/wip-release/cli.js) (entry point), [`tools/wip-release/core.mjs`](tools/wip-release/core.mjs) (main logic). Zero dependencies.
110
+ **Quality gates (all run before release):**
111
+ - **Release notes:** Must come from a file (--notes flag removed). Three sources: RELEASE-NOTES file, ai/dev-updates/, or --notes-file. Blocks changelog-format entries ("fix: ...", "add: ..."). Must reference at least one GitHub issue (#XX).
112
+ - **Product docs:** Warns if roadmap, readme-first, or dev-updates are stale. Auto-updates version/date in `ai/product/plans-prds/roadmap.md` and `ai/product/readme-first-product.md` before commit.
113
+ - **Technical docs:** When source files (.mjs, .js, .ts) changed since last tag, checks that SKILL.md or TECHNICAL.md was also updated. Warns on patch, blocks on minor/major. Skip: `--skip-tech-docs-check`.
114
+ - **Interface coverage (toolbox repos):** Scans `tools/*/` for actual interfaces (CLI, Module, MCP, OC Plugin, Skill, CC Hook). Compares against README.md and SKILL.md coverage table. Reports: missing from table, detected but not marked, marked but not detected. Warns on patch, blocks on minor/major. Skip: `--skip-coverage-check`.
115
+ - **Stale branches:** Warns (patch) or blocks (minor/major) if merged branches exist on remote.
116
+ - **Worktree guard:** Blocks releases from linked worktrees. Must run from main working tree. Skip: `--skip-worktree-check`.
117
+ - **Dogfood cooldown:** Writes `.last-release` marker. Branch guard blocks `npm install -g` for 5 minutes.
118
+
119
+ **Post-release automation:**
120
+ - Post-merge branch rename (--merged-YYYY-MM-DD)
121
+ - Stale worktree prune from `_worktrees/`
122
+ - Skill publish to wip.computer/install/{name}.txt
123
+ - Product docs version sync
124
+
125
+ **All 7 CLIs support `--version` and `-v`.**
126
+
127
+ **Source:** Pure JavaScript, no build step. [`tools/wip-release/cli.js`](tools/wip-release/cli.js) (entry point), [`tools/wip-release/core.mjs`](tools/wip-release/core.mjs) (main logic), [`tools/wip-release/mcp-server.mjs`](tools/wip-release/mcp-server.mjs) (MCP server). Zero dependencies.
111
128
 
112
129
  [README](tools/wip-release/README.md) ... [SKILL.md](tools/wip-release/SKILL.md) ... [Reference](tools/wip-release/REFERENCE.md)
113
130
 
@@ -179,14 +196,24 @@ wip-file-guard --list
179
196
 
180
197
  ### deploy-public.sh
181
198
 
182
- Private-to-public repo sync. Copies everything except `ai/` from your working repo to the public mirror. Creates a PR, merges it. One script for all repos.
199
+ Private-to-public repo sync. The full pipeline:
183
200
 
184
- **Source:** Plain shell. [`scripts/deploy-public.sh`](scripts/deploy-public.sh)
201
+ 1. Rsyncs all files except `ai/` from private to public repo clone
202
+ 2. Rewrites repository URL from private to public in package.json
203
+ 3. Creates a branch, commits with co-authors, pushes, creates PR
204
+ 4. Merges PR (--merge, never squash)
205
+ 5. Creates matching GitHub release on public repo (pulls notes from private repo's release)
206
+ 6. Publishes to npm from public repo clone
207
+ 7. Publishes to GitHub Packages from public repo clone (uses `gh auth token`)
208
+ 8. Cleans stale branches on public repo
185
209
 
186
210
  ```bash
187
211
  bash scripts/deploy-public.sh /path/to/private-repo wipcomputer/public-repo
212
+ bash scripts/deploy-public.sh /path/to/private-repo wipcomputer/public-repo --dry-run
188
213
  ```
189
214
 
215
+ **Source:** Plain shell. [`scripts/deploy-public.sh`](scripts/deploy-public.sh) and [`tools/deploy-public/deploy-public.sh`](tools/deploy-public/deploy-public.sh)
216
+
190
217
  ### wip-repos
191
218
 
192
219
  Repo manifest reconciler. Makes `repos-manifest.json` the single source of truth for repo organization. Like prettier for folder structure. Move folders around all day; on sync, everything snaps back to where the manifest says. Also generates cross-repo CLAUDE.md ecosystem sections.
@@ -270,13 +297,24 @@ wip-license-guard init --from-standard # apply WIP Computer defaults
270
297
  wip-license-guard readme-license # audit/fix license blocks across all repos
271
298
  ```
272
299
 
273
- **Source:** Pure JavaScript, no build step. [`tools/wip-license-guard/cli.mjs`](tools/wip-license-guard/cli.mjs) (CLI), [`tools/wip-license-guard/core.mjs`](tools/wip-license-guard/core.mjs) (logic). Zero dependencies.
300
+ **Claude Code Hook:** Also wired as a PreToolUse hook (`guard.mjs`). On `ldm install`, registers in `~/.claude/settings.json`. Blocks `git commit` and `git push` when license compliance fails. Only checks repos with `.license-guard.json`. Repos without config silently pass.
301
+
302
+ **Source:** Pure JavaScript, no build step. [`tools/wip-license-guard/cli.mjs`](tools/wip-license-guard/cli.mjs) (CLI), [`tools/wip-license-guard/core.mjs`](tools/wip-license-guard/core.mjs) (logic), [`tools/wip-license-guard/guard.mjs`](tools/wip-license-guard/guard.mjs) (CC hook). Zero dependencies.
274
303
 
275
304
  [README](tools/wip-license-guard/README.md) ... [SKILL.md](tools/wip-license-guard/SKILL.md)
276
305
 
277
306
  ### wip-branch-guard
278
307
 
279
- Blocks all writes on main branch. The enforcement layer for forced worktrees. PreToolUse hook that catches Write, Edit, and destructive Bash commands. Resolves the repo from the file path, not the CWD, so it works when Claude Code opens in a different directory.
308
+ Blocks all writes on main branch. The enforcement layer for required worktrees. PreToolUse hook that catches Write, Edit, and destructive Bash commands. Resolves the repo from the file path, not the CWD. If a file is outside any git repo (e.g. `~/.claude/plans/`), the guard allows edits immediately. Only protects files within git repos.
309
+
310
+ **Features:**
311
+ - **Workflow teaching:** Error messages include the full 8-step dev process (worktree, branch, commit, push, PR, merge, wip-release, deploy-public). Agents learn the workflow from the error, not just that they're blocked.
312
+ - **Worktree path warning:** Warns when `git worktree add` creates outside `_worktrees/`. Suggests `ldm worktree add`.
313
+ - **Dogfood cooldown:** After `wip-release`, blocks `npm install -g` for 5 minutes. Forces dogfooding via the install prompt.
314
+ - **Worktree requirement on branches:** On any non-main branch, edits blocked if not inside a worktree. Separate error message directs agents to create a worktree properly.
315
+ - **Dangerous flag blocking:** `--no-verify` and `git push --force` blocked on any branch.
316
+ - **Shared state allowlist:** CLAUDE.md, SHARED-CONTEXT.md, daily logs, `~/.ldm/logs/` always writable on main.
317
+ - **Non-repo passthrough:** Files outside any git repo allowed immediately.
280
318
 
281
319
  ```bash
282
320
  wip-branch-guard --check # report current branch status
@@ -284,8 +322,6 @@ wip-branch-guard --check # report current branch status
284
322
 
285
323
  **Source:** Pure JavaScript, no build step. [`tools/wip-branch-guard/guard.mjs`](tools/wip-branch-guard/guard.mjs). Zero dependencies.
286
324
 
287
- [INSTALL.md](tools/wip-branch-guard/INSTALL.md)
288
-
289
325
  ## Source Code
290
326
 
291
327
  All implementation source is committed in this repo. No closed binaries, no mystery boxes.
@@ -296,14 +332,14 @@ All implementation source is committed in this repo. No closed binaries, no myst
296
332
  | LDM Dev Tools jobs | Shell | `tools/ldm-jobs/backup.sh`, `branch-protect.sh`, `visibility-audit.sh` | None. Runnable standalone or via `.app` wrapper. |
297
333
  | wip-release | JavaScript (ESM) | `tools/wip-release/cli.js`, `core.mjs`, `mcp-server.mjs` | None. What you see is what runs. |
298
334
  | wip-license-hook | TypeScript | `tools/wip-license-hook/src/**/*.ts`, `mcp-server.mjs` | `cd tools/wip-license-hook && npm install && npm run build` |
299
- | wip-license-guard | JavaScript (ESM) | `tools/wip-license-guard/cli.mjs`, `core.mjs` | None. What you see is what runs. |
335
+ | wip-license-guard | JavaScript (ESM) | `tools/wip-license-guard/cli.mjs`, `core.mjs`, `guard.mjs` | None. What you see is what runs. |
300
336
  | wip-repo-permissions-hook | JavaScript (ESM) | `tools/wip-repo-permissions-hook/core.mjs`, `cli.js`, `guard.mjs`, `mcp-server.mjs` | None. What you see is what runs. |
301
337
  | post-merge-rename.sh | Shell | `scripts/post-merge-rename.sh` | None. |
302
338
  | wip-file-guard | JavaScript (ESM) | `tools/wip-file-guard/guard.mjs` | None. What you see is what runs. |
303
339
  | wip-branch-guard | JavaScript (ESM) | `tools/wip-branch-guard/guard.mjs` | None. What you see is what runs. |
304
340
  | wip-universal-installer | JavaScript (ESM) | `tools/wip-universal-installer/detect.mjs`, `install.js` | None. What you see is what runs. |
305
341
  | deploy-public.sh | Shell | `scripts/deploy-public.sh` | None. |
306
- | wip-repos | JavaScript (ESM) | `tools/wip-repos/core.mjs`, `cli.mjs`, `mcp-server.mjs` | None. What you see is what runs. |
342
+ | wip-repos | JavaScript (ESM) | `tools/wip-repos/core.mjs`, `cli.mjs`, `mcp-server.mjs`, `claude.mjs` | None. What you see is what runs. |
307
343
  | wip-repo-init | JavaScript (ESM) | `tools/wip-repo-init/init.mjs` | None. What you see is what runs. |
308
344
  | wip-readme-format | JavaScript (ESM) | `tools/wip-readme-format/format.mjs` | None. What you see is what runs. |
309
345
 
@@ -0,0 +1,31 @@
1
+ # Release Notes: wip-ai-devops-toolbox v1.9.49
2
+
3
+ **TECHNICAL.md audit: 2 weeks of undocumented features now documented.**
4
+
5
+ ## What changed
6
+
7
+ Full TECHNICAL.md audit covering v1.9.15 through v1.9.48. Two passes. Key additions:
8
+
9
+ - **wip-release quality gates:** Technical docs gate, interface coverage gate, product docs auto-sync, all skip flags documented.
10
+ - **deploy-public.sh:** Full 8-step pipeline including GitHub Packages publishing, repo URL rewrite, co-author sync.
11
+ - **wip-license-guard:** Now documented as both CLI and Claude Code PreToolUse hook (guard.mjs). Enforcement details.
12
+ - **wip-branch-guard:** Worktree requirement on branches, non-repo file passthrough, workflow teaching messages.
13
+ - **wip-repos claude:** Cross-repo CLAUDE.md ecosystem generator fully documented.
14
+ - **Source code table:** Missing files added (guard.mjs, claude.mjs, mcp-server.mjs).
15
+ - **Log paths:** Fixed stale /tmp/ references to ~/.ldm/logs/.
16
+
17
+ ## Why
18
+
19
+ 15 releases shipped without TECHNICAL.md updates. Agents reading the docs were missing critical features: release gates, license enforcement hooks, deploy pipeline details.
20
+
21
+ ## Issues closed
22
+
23
+ - #218
24
+
25
+ ## How to verify
26
+
27
+ ```bash
28
+ grep "Interface coverage" TECHNICAL.md # new gate
29
+ grep "guard.mjs" TECHNICAL.md # license-guard hook
30
+ grep "GitHub Packages" TECHNICAL.md # deploy pipeline
31
+ ```
@@ -0,0 +1,24 @@
1
+ # Release Notes: wip-ai-devops-toolbox v1.9.50
2
+
3
+ **wip-release: require product update doc on every release.**
4
+
5
+ ## What changed
6
+
7
+ New quality gate in wip-release: checks that `ai/dev-updates/product-update/*-product-update.md` was modified since the last release tag. Same pattern as dev-updates, roadmap, and readme-first checks.
8
+
9
+ The product update doc is a human-readable test guide. Each release entry has: what changed, how it's supposed to work, and how to test. New entries go at the top. Additive only.
10
+
11
+ ## Why
12
+
13
+ Three repos now have product update docs but nothing enforced keeping them current. Without the gate, the docs will drift immediately (same problem we had with TECHNICAL.md).
14
+
15
+ ## Issues closed
16
+
17
+ - #220
18
+
19
+ ## How to verify
20
+
21
+ ```bash
22
+ wip-release patch --dry-run
23
+ # Should warn if product update doc not modified since last release
24
+ ```
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@wipcomputer/wip-ai-devops-toolbox",
3
- "version": "1.9.48",
3
+ "version": "1.9.50",
4
4
  "type": "module",
5
5
  "description": "The complete AI DevOps toolkit for AI-assisted development teams.",
6
6
  "license": "MIT",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@wipcomputer/deploy-public",
3
- "version": "1.9.48",
3
+ "version": "1.9.50",
4
4
  "description": "Private-to-public repo sync. Excludes ai/ folder, creates PR, merges, cleans up branches.",
5
5
  "bin": {
6
6
  "deploy-public": "./deploy-public.sh"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@wipcomputer/post-merge-rename",
3
- "version": "1.9.48",
3
+ "version": "1.9.50",
4
4
  "description": "Post-merge branch renaming. Appends --merged-YYYY-MM-DD to preserve history.",
5
5
  "bin": {
6
6
  "post-merge-rename": "./post-merge-rename.sh"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@wipcomputer/wip-branch-guard",
3
- "version": "1.9.48",
3
+ "version": "1.9.50",
4
4
  "description": "PreToolUse hook that blocks all writes on main branch. Forces agents to work on branches or worktrees.",
5
5
  "type": "module",
6
6
  "main": "guard.mjs",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@wipcomputer/wip-file-guard",
3
- "version": "1.9.48",
3
+ "version": "1.9.50",
4
4
  "type": "module",
5
5
  "description": "Hook that blocks destructive edits to protected identity files. For Claude Code CLI and OpenClaw.",
6
6
  "main": "guard.mjs",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@wipcomputer/wip-license-guard",
3
- "version": "1.9.48",
3
+ "version": "1.9.50",
4
4
  "description": "License compliance for your own repos. Ensures correct copyright, dual-license blocks, and LICENSE files.",
5
5
  "type": "module",
6
6
  "bin": {
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@wipcomputer/wip-license-hook",
3
- "version": "1.9.48",
3
+ "version": "1.9.50",
4
4
  "description": "License rug-pull detection and dependency license compliance for open source projects",
5
5
  "type": "module",
6
6
  "main": "dist/cli/index.js",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@wipcomputer/wip-readme-format",
3
- "version": "1.9.48",
3
+ "version": "1.9.50",
4
4
  "description": "Reformat any repo's README to follow the WIP Computer standard. Agent-first, human-readable.",
5
5
  "type": "module",
6
6
  "bin": {
@@ -388,6 +388,20 @@ function checkProductDocs(repoPath) {
388
388
  }
389
389
  }
390
390
 
391
+ // 4. Product update doc: modified since last tag
392
+ const productUpdateDir = join(aiDir, 'dev-updates', 'product-update');
393
+ if (existsSync(productUpdateDir)) {
394
+ const puFiles = readdirSync(productUpdateDir).filter(f => f.endsWith('.md'));
395
+ if (puFiles.length > 0) {
396
+ const anyModified = puFiles.some(f =>
397
+ fileModifiedSinceLastTag(repoPath, `ai/dev-updates/product-update/${f}`)
398
+ );
399
+ if (!anyModified) {
400
+ missing.push('ai/dev-updates/product-update/ (product update doc not updated since last release)');
401
+ }
402
+ }
403
+ }
404
+
391
405
  return { missing, ok: missing.length === 0, skipped: false };
392
406
  }
393
407
 
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@wipcomputer/wip-release",
3
- "version": "1.9.48",
3
+ "version": "1.9.50",
4
4
  "type": "module",
5
5
  "description": "One-command release pipeline. Bumps version, updates changelog + SKILL.md, publishes to npm + GitHub.",
6
6
  "main": "core.mjs",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@wipcomputer/wip-repo-init",
3
- "version": "1.9.48",
3
+ "version": "1.9.50",
4
4
  "description": "Scaffold the standard ai/ directory structure in any repo",
5
5
  "type": "module",
6
6
  "bin": {
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@wipcomputer/wip-repo-permissions-hook",
3
- "version": "1.9.48",
3
+ "version": "1.9.50",
4
4
  "type": "module",
5
5
  "description": "Repo visibility guard. Blocks repos from going public without a -private counterpart.",
6
6
  "main": "core.mjs",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@wipcomputer/wip-repos",
3
- "version": "1.9.48",
3
+ "version": "1.9.50",
4
4
  "type": "module",
5
5
  "description": "Repo manifest reconciler. Single source of truth for repo organization. Like prettier for folder structure.",
6
6
  "main": "core.mjs",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@wipcomputer/universal-installer",
3
- "version": "1.9.48",
3
+ "version": "1.9.50",
4
4
  "type": "module",
5
5
  "description": "The Universal Interface specification for agent-native software. Teaches your AI how to build repos with every interface: CLI, Module, MCP Server, OpenClaw Plugin, Skill, Claude Code Hook.",
6
6
  "main": "detect.mjs",