@softspark/ai-toolkit 4.29.2 → 4.30.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 (42) hide show
  1. package/CHANGELOG.md +82 -0
  2. package/README.md +44 -18
  3. package/app/.claude-plugin/plugin.json +1 -1
  4. package/app/ARCHITECTURE.md +2 -2
  5. package/app/mcp-templates/README.md +7 -2
  6. package/app/mcp-templates/rag-mcp-legal.json +11 -0
  7. package/app/mcp-templates/rag-mcp.json +11 -0
  8. package/app/surface.json +1 -0
  9. package/benchmarks/ecosystem-doctor-snapshot.json +29 -17
  10. package/bin/ai-toolkit.js +8 -0
  11. package/kb/history/completed/dsh-integration-plan-superseded.md +322 -0
  12. package/kb/history/completed/dsh-native-install-target-plan.md +331 -0
  13. package/kb/procedures/ecosystem-sync-sop.md +7 -5
  14. package/kb/procedures/maintenance-sop.md +1 -1
  15. package/kb/procedures/release-verification-sop.md +35 -5
  16. package/kb/reference/architecture-overview.md +24 -5
  17. package/kb/reference/cli-reference.md +1 -1
  18. package/kb/reference/dsh-compatibility.md +183 -0
  19. package/kb/reference/manifest-install.md +112 -5
  20. package/kb/reference/mcp-templates.md +11 -4
  21. package/kb/reference/plugin-pack-conventions.md +35 -18
  22. package/kb/reference/supported-tools-registry.md +30 -6
  23. package/llms-full.txt +1110 -50
  24. package/llms.txt +3 -0
  25. package/manifest.json +2 -2
  26. package/package.json +2 -2
  27. package/scripts/codex_skill_adapter.py +673 -34
  28. package/scripts/config_resolver.py +80 -14
  29. package/scripts/doctor.py +98 -20
  30. package/scripts/ecosystem_tools.json +51 -1
  31. package/scripts/generate_codex_skills.py +22 -20
  32. package/scripts/install.py +30 -13
  33. package/scripts/install_steps/ai_tools.py +97 -33
  34. package/scripts/install_steps/dsh.py +5063 -0
  35. package/scripts/install_steps/install_state.py +1645 -57
  36. package/scripts/mcp_editors.py +5 -2
  37. package/scripts/plugin.py +2495 -163
  38. package/scripts/plugin_mcp.py +279 -0
  39. package/scripts/plugin_rules.py +389 -0
  40. package/scripts/plugin_schema.py +139 -23
  41. package/scripts/uninstall.py +47 -4
  42. package/scripts/validate.py +421 -0
package/CHANGELOG.md CHANGED
@@ -7,6 +7,88 @@ Versioning follows [Semantic Versioning](https://semver.org/).
7
7
 
8
8
  ---
9
9
 
10
+ ## v4.30.2 - Portable Linux release gates (2026-09-02)
11
+
12
+ ### Fixed
13
+
14
+ - **File-mode checks are cross-platform.** DSH package and plugin asset tests now
15
+ read POSIX modes through Python `stat.S_IMODE` instead of the macOS-only
16
+ `stat -f` syntax.
17
+ - **Malformed ownership diagnostics are consistent.** Invalid `packages` and
18
+ `package_trees` records now fail with ownership-specific errors at the shared
19
+ state-validation boundary on both macOS and Linux.
20
+
21
+ ### Changed
22
+
23
+ - **First published release of the 4.30 feature set.** Public tags `v4.30.0` and
24
+ `v4.30.1` failed their Linux GitHub Actions gates before npm publication.
25
+ Version `4.30.2` includes both portability corrections; neither earlier npm
26
+ artifact exists.
27
+
28
+ ---
29
+
30
+ ## v4.30.1 - Linux-portable DSH recovery diagnostics (2026-09-01)
31
+
32
+ ### Fixed
33
+
34
+ - **Interrupted preset relocation keeps an actionable error.** A
35
+ `KeyboardInterrupt` has an empty string representation on Linux; recovery
36
+ output now normalizes it to an explicit interrupted message before naming the
37
+ preserved path.
38
+ - **Recovery verification failures are never silent.** Package-preset hash
39
+ failures are included in deterministic recovery diagnostics while ownership
40
+ state restoration still runs.
41
+ - **Recovery tests use platform-independent seams.** Backup restore and package
42
+ source verification injections now exercise the same secure helpers on macOS
43
+ and Linux.
44
+
45
+ ### Changed
46
+
47
+ - **First published release of the 4.30 feature set.** The public `v4.30.0` tag
48
+ failed its GitHub Actions gate before npm publication. Version `4.30.1`
49
+ contains the same DSH and MCP features plus this cross-platform correction;
50
+ no `4.30.0` npm artifact exists.
51
+
52
+ ---
53
+
54
+ ## v4.30.0 - Managed DSH and plugin-owned MCP (2026-09-01)
55
+
56
+ ### Added
57
+
58
+ - **Explicit DSH project target.** Added `install --local --editors dsh` for the
59
+ managed `.agents/skills` surface without implicit selection or `$DSH_HOME`
60
+ mutation.
61
+ - **Managed DSH profile lifecycle.** Added `ai-toolkit dsh
62
+ install|update|doctor|uninstall --profile web` with exact DSH `0.1.1-rc.2`,
63
+ dsh-codex `1.0.0`, dsh-orchestrator `1.0.1`, preset ownership, dry-run, and
64
+ read-only diagnostics.
65
+ - **Plugin-owned MCP and native rules.** Plugin packs can deliver MCP templates
66
+ and owned rule surfaces to Claude, Codex, Cursor, and Gemini.
67
+ - **RAG MCP templates.** Added `rag-mcp` and `rag-mcp-legal` with concrete
68
+ localhost defaults and unauthenticated-endpoint warnings. The built-in MCP
69
+ catalogue now contains 28 templates.
70
+
71
+ ### Changed
72
+
73
+ - **DSH remains explicit-only.** It stays outside editor defaults,
74
+ auto-detection, and `--editors all`; vendor CLIs retain authentication
75
+ ownership and no provider API key is accepted.
76
+ - **Plugin lifecycle is transactional.** Install, update, and removal coordinate
77
+ MCP settings, rules, hook/script assets, and ownership state with pinned-path
78
+ CAS and last-consumer cleanup.
79
+ - **Test count.** Increased from 1675 to 1920.
80
+
81
+ ### Fixed
82
+
83
+ - **Cold DSH installs fail safely.** Added pnpm preflight, bounded probe and
84
+ mutation timeouts, full process-tree termination, exact executable identity,
85
+ directory-level lifecycle locking, and durable recovery gates.
86
+ - **Concurrent plugin edits are preserved.** Atomic quarantine and rollback no
87
+ longer overwrite concurrent bytes, modes, inodes, marker sections, or
88
+ user-added assets.
89
+
90
+ ---
91
+
10
92
  ## v4.29.2 — The Codex dry-run stops hiding a surface (2026-08-21)
11
93
 
12
94
  ### Fixed
package/README.md CHANGED
@@ -1,26 +1,33 @@
1
1
  # ai-toolkit
2
2
 
3
- > Professional-grade AI coding toolkit with multi-platform support. Machine-enforced safety, 109 skills, 44 agents, expanded lifecycle hooks, persona presets, experimental opt-in plugin packs, and benchmark tooling works with Claude Code, Claude Chat/Cowork, Cursor, Devin, Copilot, Gemini, Cline, Roo/Zoo Code, Aider, Augment, Google Antigravity, Codex CLI, and opencode.
3
+ > AI coding toolkit with machine-enforced safety, 109 skills, 44 agents, lifecycle hooks, persona presets, opt-in plugin packs, and benchmark tooling. DSH is available as a separate explicit developer-preview target.
4
4
 
5
5
  [![CI](https://github.com/softspark/ai-toolkit/actions/workflows/ci.yml/badge.svg)](https://github.com/softspark/ai-toolkit/actions/workflows/ci.yml)
6
6
  [![License: Apache 2.0](https://img.shields.io/badge/License-Apache_2.0-blue.svg)](LICENSE)
7
7
  [![Skills](https://img.shields.io/badge/skills-109-brightgreen)](app/skills/)
8
8
  [![Agents](https://img.shields.io/badge/agents-44-blue)](app/agents/)
9
- [![Tests](https://img.shields.io/badge/tests-1675%20passing-success)](tests/)
10
-
11
- ## What's New in v4.29.2
12
-
13
- **v4.29.2** makes `install --dry-run` tell the truth about Codex hooks:
14
-
15
- - Selecting `codex` always installs Codex lifecycle hooks -- `.codex/hooks.json`
16
- plus the scripts under `.codex/hooks/` -- at every profile. The dry-run branch
17
- listed only agents and skills, so the preview silently omitted a whole surface,
18
- and the one you are asked to review and trust with `/hooks`.
19
- - Both previews now name it: project installs announce
20
- `.codex/hooks.json + .codex/hooks/`, global installs add
21
- `$CODEX_HOME/ai-toolkit-hooks/` next to `$CODEX_HOME/hooks.json`.
22
- - Four tests pin the preview against what the live install actually writes, so a
23
- surface cannot go missing from the dry-run again. Test count: 1671 -> 1675.
9
+ [![Tests](https://img.shields.io/badge/tests-1920%20passing-success)](tests/)
10
+
11
+ ## What's New in v4.30.2
12
+
13
+ **v4.30.2** publishes the managed DSH and plugin-owned MCP release with Linux-portable recovery gates:
14
+
15
+ - `install --local --editors dsh` emits the managed `.agents/skills` surface,
16
+ while `ai-toolkit dsh install|update|doctor|uninstall --profile web` owns the
17
+ exact DSH `0.1.1-rc.2`, dsh-codex `1.0.0`, dsh-orchestrator `1.0.1`, and preset
18
+ lifecycle. DSH remains explicit-only and never handles vendor credentials.
19
+ - Plugin packs can ship MCP templates and native rules for Claude, Codex, Cursor,
20
+ and Gemini. Two localhost RAG templates are included, bringing the built-in MCP
21
+ catalogue to 28.
22
+ - Cross-file plugin operations and DSH package mutations now use ownership CAS,
23
+ pinned paths, process-tree teardown, durable recovery gates, and conservative
24
+ rollback that preserves concurrent or user-authored data.
25
+ - Recovery verification and interrupted preset relocation now emit deterministic,
26
+ non-empty diagnostics on both macOS and Linux. File-mode assertions and malformed
27
+ ownership diagnostics also use the same portable contract. The public `v4.30.0`
28
+ and `v4.30.1` workflows stopped before npm publication; neither registry artifact
29
+ was created.
30
+ - Test count: 1675 -> 1920.
24
31
 
25
32
  ## Table of Contents
26
33
 
@@ -74,6 +81,23 @@ ai-toolkit install --local --editors cursor,aider # + specific editors
74
81
  ai-toolkit update --local # auto-detects editors
75
82
  ```
76
83
 
84
+ ### DSH Developer Preview
85
+
86
+ DSH has separate project and profile ownership:
87
+
88
+ ```bash
89
+ # Generic local outputs plus DSH-specific .agents/skills. No DSH_HOME write.
90
+ ai-toolkit install --local --editors dsh
91
+
92
+ # Explicit profile lifecycle.
93
+ ai-toolkit dsh install --profile web
94
+ ai-toolkit dsh update --profile web
95
+ ai-toolkit dsh doctor --profile web
96
+ ai-toolkit dsh uninstall --profile web --yes
97
+ ```
98
+
99
+ DSH is excluded from `--editors all`, auto-detection, and defaults. Its only DSH-specific project output is `.agents/skills`; the normal `--local` Claude files, detected language rules, and other generic project outputs still apply. Project and profile `--dry-run` commands are read-only. The reviewed pins are DSH `0.1.1-rc.2`, `@softspark/dsh-codex@1.0.0`, and `@softspark/dsh-orchestrator@1.0.1`. Codex, Claude Code, and GitHub Copilot own their logins. ai-toolkit accepts no provider API keys, and GitHub AI credits apply to the Copilot Gemini route. Isolated pre-tag and exact-registry post-release qualification completed both Claude Code and Copilot Gemini marker roundtrips through the Codex parent. See [DSH Compatibility](kb/reference/dsh-compatibility.md).
100
+
77
101
  ### Plugin Management
78
102
 
79
103
  ```bash
@@ -151,6 +175,7 @@ See [CLI Reference](kb/reference/cli-reference.md) for all commands and options.
151
175
  | Google Antigravity | Project `.agents/{rules,workflows,skills,agents,hooks}/`; user `~/.gemini/config/{skills,agents,hooks}/`; opt-in native plugin export | ✅ | project + user |
152
176
  | Codex CLI | Project: `AGENTS.md` + `.agents/skills/*` + `.codex/{agents,hooks}/` + `.codex/{hooks.json,config.toml}`; user: `$CODEX_HOME/{AGENTS.md,agents,hooks.json,config.toml}` + `$HOME/.agents/skills/*` | ✅ | project + user |
153
177
  | opencode | `AGENTS.md` + `.opencode/{agents,commands,plugins,skills}/*` + `opencode.{json,jsonc}` | ✅ | project + global (`~/.config/opencode/`) |
178
+ | DeepSeek Harness | Project `.agents/skills/*`; explicit profile packages and `$DSH_HOME/.agent-presets/softspark-orchestrator` | no bridge | project + explicit named profile |
154
179
 
155
180
  > Claude Code is always installed (primary platform). Other editors are selected with `--editors`; the Claude app uses the separate `claude-app export` flow because its customization store is UI/plugin-managed, except for MCP servers, which `ai-toolkit mcp install --editor claude-app --scope global` writes straight to `claude_desktop_config.json`. The **Hooks** column marks platforms with lifecycle enforcement. Platforms marked — receive guidance without blocking hooks.
156
181
 
@@ -188,7 +213,7 @@ ai-toolkit/
188
213
  │ └── ARCHITECTURE.md # Full system design
189
214
  ├── kb/ # Reference docs, procedures, plans
190
215
  ├── scripts/ # Validation, install, evaluation scripts
191
- ├── tests/ # Bats and Python test suite (1659 tests)
216
+ ├── tests/ # Bats and Python test suite
192
217
  └── CHANGELOG.md
193
218
  ```
194
219
 
@@ -222,7 +247,7 @@ ai-toolkit/
222
247
 
223
248
  **70 language rules** — 13 languages + common, 5 categories each. Auto-detected or explicit `--lang`. See [Language Rules](kb/reference/language-rules.md).
224
249
 
225
- **26 MCP templates** — Ready-to-use configs for GitHub, PostgreSQL, Slack, Jira, Sentry, and more. See [MCP Templates](kb/reference/mcp-templates.md).
250
+ **28 MCP templates** — Ready-to-use configs for GitHub, PostgreSQL, Slack, Jira, Sentry, general RAG, and Polish legal RAG. See [MCP Templates](kb/reference/mcp-templates.md).
226
251
 
227
252
  See [Unique Features](kb/reference/unique-features.md) for detailed descriptions of all differentiators.
228
253
 
@@ -316,6 +341,7 @@ Need multi-agent coordination?
316
341
  | Codex CLI Compatibility | [kb/reference/codex-cli-compatibility.md](kb/reference/codex-cli-compatibility.md) |
317
342
  | opencode Compatibility | [kb/reference/opencode-compatibility.md](kb/reference/opencode-compatibility.md) |
318
343
  | GitHub Copilot Compatibility | [kb/reference/copilot-compatibility.md](kb/reference/copilot-compatibility.md) |
344
+ | DSH Compatibility | [kb/reference/dsh-compatibility.md](kb/reference/dsh-compatibility.md) |
319
345
  | Maintenance SOP | [kb/procedures/maintenance-sop.md](kb/procedures/maintenance-sop.md) |
320
346
 
321
347
  ---
@@ -3,7 +3,7 @@
3
3
  "name": "ai-toolkit",
4
4
  "displayName": "AI Toolkit",
5
5
  "description": "Professional-grade engineering skills, agents, rules, and lifecycle guardrails for Claude Code, Claude Chat, and Cowork.",
6
- "version": "4.29.2",
6
+ "version": "4.30.2",
7
7
  "author": {
8
8
  "name": "SoftSpark",
9
9
  "url": "https://github.com/softspark"
@@ -348,8 +348,8 @@ Lead Session (You)
348
348
 
349
349
  ## Extension Points
350
350
 
351
- ### MCP Templates (26)
352
- `app/mcp-templates/` ships 26 ready-to-use MCP server config templates (filesystems, databases, GitHub, Slack, etc.). Opt-in via `ai-toolkit install --modules mcp-templates` or activated automatically with `--profile strict|full`.
351
+ ### MCP Templates (28)
352
+ `app/mcp-templates/` ships 28 ready-to-use MCP server config templates (filesystems, databases, GitHub, Slack, RAG, etc.). Opt-in via `ai-toolkit install --modules mcp-templates` or activated automatically with `--profile strict|full`.
353
353
 
354
354
  ### Language Rules (68 files, 13 languages)
355
355
  `app/rules/` contains per-language coding rules. Supported languages: TypeScript, Python, Go, Rust, Java, Kotlin, Swift, Dart, C#, PHP, C++, Ruby, and common (shared). Auto-detected from project files via `--auto-detect` or selected with `--modules rules-<lang>`.
@@ -4,7 +4,7 @@ Ready-to-use MCP (Model Context Protocol) server configurations for Claude Code
4
4
 
5
5
  ## What are these?
6
6
 
7
- Each JSON file contains a preconfigured MCP server definition that can be merged into your `.mcp.json` (project-level) or `~/.claude/settings.json` (global). Templates use `${ENV_VAR}` placeholders for secrets -- set the corresponding environment variables before use.
7
+ Each JSON file contains a preconfigured MCP server definition that can be merged into your `.mcp.json` (project-level) or an editor-native global configuration such as `~/.claude.json`. Templates use `${ENV_VAR}` placeholders for secrets -- set the corresponding environment variables before use.
8
8
 
9
9
  ## Quick start
10
10
 
@@ -31,7 +31,7 @@ ai-toolkit mcp remove github
31
31
 
32
32
  1. Open the template file (e.g., `github.json`)
33
33
  2. Copy the `mcpServers` block
34
- 3. Merge it into your `.mcp.json` or `~/.claude/settings.json`
34
+ 3. Merge it into your `.mcp.json` or install it through the CLI into the editor-native global configuration
35
35
 
36
36
  Example -- adding GitHub to `.mcp.json`:
37
37
 
@@ -78,8 +78,13 @@ Example -- adding GitHub to `.mcp.json`:
78
78
  | `datadog` | Datadog monitoring and metrics |
79
79
  | `grafana` | Grafana dashboards and alerting |
80
80
  | `jira` | Jira multi-instance routing, ADF, caching, comment templates |
81
+ | `rag-mcp` | General knowledge-base RAG over HTTP MCP (localhost port 8081 by default) |
82
+ | `rag-mcp-legal` | Polish legal RAG over HTTP MCP (localhost port 8082 by default) |
81
83
  | `custom-template` | Empty template for custom servers |
82
84
 
85
+ The two RAG endpoints are unauthenticated by design. Keep their default
86
+ localhost binding, use a VPN, or place them behind a restricted reverse proxy.
87
+
83
88
  ## Contributing a new template
84
89
 
85
90
  1. Create `app/mcp-templates/<name>.json` following this structure:
@@ -0,0 +1,11 @@
1
+ {
2
+ "name": "rag-mcp-legal",
3
+ "description": "Dedicated Polish legal RAG for statutes, contracts, firm knowledge and matter documents via HTTP MCP",
4
+ "mcpServers": {
5
+ "rag-mcp-legal": {
6
+ "type": "http",
7
+ "url": "http://localhost:8082/mcp/sse"
8
+ }
9
+ },
10
+ "postInstall": "Run make up-legal from the rag-mcp repository before connecting. The default endpoint is http://localhost:8082/mcp/sse. It is unauthenticated by design: keep it on localhost or behind a trusted VPN/reverse-proxy network boundary, never expose it directly to an untrusted network. Edit the installed editor config for a protected non-default deployment."
11
+ }
@@ -0,0 +1,11 @@
1
+ {
2
+ "name": "rag-mcp",
3
+ "description": "Multi-tenant RAG over knowledge bases — semantic, hybrid, CRAG and multi-hop search via HTTP MCP",
4
+ "mcpServers": {
5
+ "rag-mcp": {
6
+ "type": "http",
7
+ "url": "http://localhost:8081/mcp/sse"
8
+ }
9
+ },
10
+ "postInstall": "Make sure the rag-mcp server is running on the configured URL (default http://localhost:8081). The /mcp/sse endpoint is unauthenticated by design — restrict access at the network/proxy layer (localhost, VPN, or a reverse-proxy IP allowlist). Edit the installed editor config for a protected non-default deployment. See https://github.com/softspark/rag-mcp for setup."
11
+ }
package/app/surface.json CHANGED
@@ -265,6 +265,7 @@
265
265
  "cursor-mdc",
266
266
  "cursor-rules",
267
267
  "doctor",
268
+ "dsh",
268
269
  "eject",
269
270
  "evaluate",
270
271
  "gemini-md",
@@ -1,5 +1,5 @@
1
1
  {
2
- "last_run": "2026-08-21T18:54:11Z",
2
+ "last_run": "2026-09-01T07:58:08Z",
3
3
  "schema_version": 1,
4
4
  "tools": {
5
5
  "aider": {
@@ -24,7 +24,7 @@
24
24
  }
25
25
  },
26
26
  "augment": {
27
- "docs_hash": "fda8f5ca2c114b30",
27
+ "docs_hash": "83f1458d1a2060e9",
28
28
  "headings": [
29
29
  "Admin",
30
30
  "Auggie CLI",
@@ -51,7 +51,7 @@
51
51
  "Auggie CLI": true,
52
52
  "MCP": true,
53
53
  "Next Edit": false,
54
- "Notification": false,
54
+ "Notification": true,
55
55
  "PostToolUse": false,
56
56
  "PreToolUse": false,
57
57
  "SKILL.md": false,
@@ -66,7 +66,7 @@
66
66
  }
67
67
  },
68
68
  "claude-app": {
69
- "docs_hash": "73b44d89c7b771d9",
69
+ "docs_hash": "273703f5030fd2ab",
70
70
  "headings": [
71
71
  "Add global and folder instructions",
72
72
  "Availability",
@@ -108,7 +108,7 @@
108
108
  }
109
109
  },
110
110
  "claude-code": {
111
- "docs_hash": "1666675fbb24aaad",
111
+ "docs_hash": "eea5867f24e1ed91",
112
112
  "headings": [
113
113
  "Core concepts",
114
114
  "Documentation Index",
@@ -133,7 +133,7 @@
133
133
  "LSP servers": false,
134
134
  "MCP server": true,
135
135
  "MessageDisplay": false,
136
- "Notification": false,
136
+ "Notification": true,
137
137
  "PermissionDenied": false,
138
138
  "PermissionRequest": false,
139
139
  "PostCompact": false,
@@ -174,10 +174,10 @@
174
174
  "userConfig": false,
175
175
  "workflows": true
176
176
  },
177
- "version": "2.1.238 (Claude Code)"
177
+ "version": "2.1.252 (Claude Code)"
178
178
  },
179
179
  "cline": {
180
- "docs_hash": "a0753bb220f610ba",
180
+ "docs_hash": "13a2b874f0e0173c",
181
181
  "headings": [
182
182
  "API Reference",
183
183
  "Best Practices",
@@ -224,7 +224,7 @@
224
224
  }
225
225
  },
226
226
  "codex-cli": {
227
- "docs_hash": "61d85bae5c0cf885",
227
+ "docs_hash": "f7df4a0b9f583a2e",
228
228
  "headings": [
229
229
  "API",
230
230
  "API Reference",
@@ -363,10 +363,10 @@
363
363
  "plugin marketplace": false,
364
364
  "sandbox": true
365
365
  },
366
- "version": "codex-cli 0.148.0"
366
+ "version": "codex-cli 0.151.0"
367
367
  },
368
368
  "cursor": {
369
- "docs_hash": "189e666436c73107",
369
+ "docs_hash": "8665fb50dce5f322",
370
370
  "headings": [
371
371
  "Agent",
372
372
  "CLI",
@@ -375,6 +375,7 @@
375
375
  "Cursor Documentation",
376
376
  "Customize",
377
377
  "Get Started",
378
+ "Grok Bot",
378
379
  "Integrations",
379
380
  "Models",
380
381
  "More resources",
@@ -397,8 +398,19 @@
397
398
  "subagents": true
398
399
  }
399
400
  },
401
+ "dsh": {
402
+ "docs_hash": "265ff3799848801e",
403
+ "headings": [],
404
+ "markers": {
405
+ "Agent Preset": false,
406
+ "Developer preview": false,
407
+ "dsh plugin": false,
408
+ "profiles": false,
409
+ "skills": true
410
+ }
411
+ },
400
412
  "gemini-cli": {
401
- "docs_hash": "547969f433375d0c",
413
+ "docs_hash": "02285d342536bdeb",
402
414
  "headings": [
403
415
  "Breadcrumbs",
404
416
  "Directory actions",
@@ -436,10 +448,10 @@
436
448
  "settings.json": false,
437
449
  "tools": true
438
450
  },
439
- "version": "0.55.1"
451
+ "version": "0.57.0"
440
452
  },
441
453
  "github-copilot": {
442
- "docs_hash": "a313606be316fada",
454
+ "docs_hash": "fd80b4ec446cec3f",
443
455
  "headings": [
444
456
  "About Copilot auto model selection",
445
457
  "About Copilot automations",
@@ -476,7 +488,7 @@
476
488
  }
477
489
  },
478
490
  "google-antigravity": {
479
- "docs_hash": "8cbf9aaffb6b57bf",
491
+ "docs_hash": "9fe532d247c3e361",
480
492
  "headings": [],
481
493
  "markers": {
482
494
  "AGENTS.md": false,
@@ -503,7 +515,7 @@
503
515
  }
504
516
  },
505
517
  "opencode": {
506
- "docs_hash": "3e9f45631e71a28c",
518
+ "docs_hash": "154885af5c7de582",
507
519
  "headings": [
508
520
  "Add features",
509
521
  "Ask questions",
@@ -565,7 +577,7 @@
565
577
  }
566
578
  },
567
579
  "windsurf": {
568
- "docs_hash": "8bf9d2e8b6d36350",
580
+ "docs_hash": "4a3e8dc19dfdedd6",
569
581
  "headings": [
570
582
  "Accounts",
571
583
  "Advanced",
package/bin/ai-toolkit.js CHANGED
@@ -83,6 +83,7 @@ const COMMANDS = {
83
83
  'remove-mcp': 'Remove injected MCP servers by source name from ~/.mcp.json and all editor configs',
84
84
  validate: 'Verify toolkit integrity',
85
85
  doctor: 'Check install health, hooks, and artifact drift',
86
+ dsh: 'Manage the explicit DeepSeek Harness profile integration',
86
87
  eject: 'Export standalone config (no symlinks, no toolkit dependency)',
87
88
  benchmark: 'Benchmark toolkit (--my-config to compare your setup vs defaults vs ecosystem)',
88
89
  'benchmark-ecosystem': 'Generate ecosystem benchmark snapshot (GitHub metadata + offline fallback)',
@@ -307,6 +308,7 @@ function showHelp() {
307
308
  console.log(' --modules <list> Install specific modules (e.g. core,agents,rules-typescript)');
308
309
  console.log(' --lang <list> Explicitly select language rules (e.g. typescript, go,python)');
309
310
  console.log(' --editors <list> Install editor configs: cursor,windsurf,cline,roo,aider,augment,copilot,antigravity,codex,opencode (or "all")');
311
+ console.log(' dsh (explicit project target; requires --local; excluded from "all")');
310
312
  console.log(' Default with --local: auto-detect from existing project files');
311
313
  console.log(' --auto-detect Detect project languages and install matching rule modules');
312
314
  console.log(' --list, --dry-run Dry-run: show what would be applied');
@@ -378,6 +380,11 @@ function showHelp() {
378
380
  console.log(' Remove from .mcp.json or native editor configs');
379
381
  console.log('\nOptions for doctor:');
380
382
  console.log(' --fix Auto-repair detected issues');
383
+ console.log('\nOptions for dsh:');
384
+ console.log(' dsh install --profile web [--dry-run]');
385
+ console.log(' dsh update --profile web [--dry-run]');
386
+ console.log(' dsh doctor --profile web');
387
+ console.log(' dsh uninstall --profile web [--dry-run] [--yes]');
381
388
  console.log('\nOptions for stats:');
382
389
  console.log(' --summary Show aggregated product telemetry (usage coverage, top skills, unused catalog)');
383
390
  console.log(' --json Emit raw stats, or machine-readable telemetry when combined with --summary');
@@ -718,6 +725,7 @@ const SPECIAL_HANDLERS = {
718
725
  'sync': handleSync,
719
726
  'mcp': handleMcp,
720
727
  'config': handleConfig,
728
+ 'dsh': (args) => run(path.join(TOOLKIT_DIR, 'scripts', 'install_steps', 'dsh.py'), args),
721
729
  'projects': (args) => run(scriptPath('projects_cli.py'), args),
722
730
  'plugin': (args) => run(scriptPath('plugin.py'), args),
723
731
  'remove-rule': handleRemoveRule,