@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
@@ -3,17 +3,17 @@ title: "Plugin Pack Conventions"
3
3
  category: reference
4
4
  service: ai-toolkit
5
5
  tags: [plugins, plugin-packs, conventions, manifests, hooks, policy-packs]
6
- version: "1.2.0"
6
+ version: "1.3.0"
7
7
  created: "2026-03-28"
8
- last_updated: "2026-08-18"
9
- description: "Conventions for experimental ai-toolkit plugin packs, policy packs, hook packs, and plugin-creator scaffolding across Claude Code and Codex runtimes."
8
+ last_updated: "2026-08-31"
9
+ description: "Conventions for experimental ai-toolkit plugin packs, policy packs, hook packs, and plugin-creator scaffolding across supported editors."
10
10
  ---
11
11
 
12
12
  # Plugin Pack Conventions
13
13
 
14
14
  ## Purpose
15
15
 
16
- `ai-toolkit` includes experimental plugin packs under `app/plugins/` for Claude Code and optional global Codex layering, and discovers external packs under `~/.softspark/ai-toolkit/plugins/` (see *Where Packs Live*). These internal pack manifests are distinct from the official uploadable Claude app plugin built by `ai-toolkit claude-app export`.
16
+ `ai-toolkit` includes experimental plugin packs under `app/plugins/` for Claude Code, Codex, Cursor, and Gemini global layering, and discovers external packs under `~/.softspark/ai-toolkit/plugins/` (see *Where Packs Live*). These internal pack manifests are distinct from the official uploadable Claude app plugin built by `ai-toolkit claude-app export`.
17
17
 
18
18
  ## Where Packs Live
19
19
 
@@ -69,6 +69,7 @@ app/plugins/<pack-name>/
69
69
  ├── plugin.json
70
70
  ├── README.md
71
71
  ├── hooks/ # optional, executable if present
72
+ ├── mcp/ # optional, pack-local MCP templates
72
73
  ├── rules/ # optional
73
74
  ├── skills/ # optional
74
75
  ├── agents/ # optional
@@ -92,6 +93,14 @@ Required keys:
92
93
  - `skills`
93
94
  - `rules`
94
95
  - `hooks`
96
+ - `mcp` (optional MCP template names)
97
+
98
+ An MCP reference such as `"rag-mcp-legal"` resolves first to the pack-owned
99
+ `mcp/rag-mcp-legal.json`, then to the built-in
100
+ `app/mcp-templates/rag-mcp-legal.json`. Each template must use the same `name`
101
+ as the reference and provide a non-empty `mcpServers` object. A localhost HTTP
102
+ template must also include a `postInstall` warning that the endpoint is
103
+ `unauthenticated`.
95
104
 
96
105
  ## Naming Rules
97
106
 
@@ -111,10 +120,12 @@ Required keys:
111
120
  ## CLI Management
112
121
 
113
122
  ```bash
114
- ai-toolkit plugin list # show all 12 packs with install status
123
+ ai-toolkit plugin list # show all available packs with install status
115
124
  ai-toolkit plugin install --editor claude <name> # Claude Code global target
116
125
  ai-toolkit plugin install --editor codex <name> # Codex global target
117
- ai-toolkit plugin install --editor all --all # install all 12 packs for both runtimes
126
+ ai-toolkit plugin install --editor cursor <name> # Cursor global target
127
+ ai-toolkit plugin install --editor gemini <name> # Gemini CLI global target
128
+ ai-toolkit plugin install --editor all --all # install all available packs for all supported editors
118
129
  ai-toolkit plugin update --editor all --all # update all installed packs
119
130
  ai-toolkit plugin clean <name> # prune data older than 90 days (default)
120
131
  ai-toolkit plugin clean <name> --days 30 # prune data older than 30 days
@@ -125,21 +136,25 @@ ai-toolkit plugin status --editor all # show installed packs with r
125
136
 
126
137
  ### What `plugin install` Does
127
138
 
128
- 1. **Parses** `--editor claude|codex|all` (default: `claude`)
139
+ 1. **Parses** `--editor claude|codex|cursor|gemini|all` (default: `claude`)
129
140
  2. **Copies** plugin-specific hooks to runtime-owned storage: Claude uses `~/.softspark/ai-toolkit/hooks/plugin-<pack>-<hook>.sh`; Codex uses `$CODEX_HOME/ai-toolkit-hooks/plugin-<pack>-<hook>.sh`
130
141
  3. **Copies** shared plugin scripts to `~/.softspark/ai-toolkit/plugin-scripts/<pack>/`
131
142
  4. **Runs** init scripts if present (e.g. `init_db.py` for memory-pack — safe to re-run, preserves data)
132
143
  5. **Claude Code target**: links missing agents/skills into `~/.claude/`, injects plugin-local rules into `~/.claude/CLAUDE.md`, and merges plugin hook entries into `~/.claude/settings.json`
133
144
  6. **Codex target**: bootstraps `$CODEX_HOME/AGENTS.md`, `$HOME/.agents/skills`, `$CODEX_HOME/hooks.json`, and self-contained `$CODEX_HOME/ai-toolkit-hooks`, then layers plugin-specific rules and hooks on top; it does not write `~/AGENTS.md` or `.agents/rules/`
134
- 7. **Records** installed state per runtime in `~/.softspark/ai-toolkit/plugins.json`
145
+ 7. **Cursor target**: writes each pack-owned rule as `~/.cursor/rules/plugin-<pack>-<rule>.mdc` with `alwaysApply: true`; files are exact-hash owned and collisions are rejected
146
+ 8. **Gemini target**: marker-injects each pack-owned rule into `~/.gemini/GEMINI.md` as `plugin-<pack>-<rule>`, preserving all unrelated content
147
+ 9. **Records** installed state per runtime in `~/.softspark/ai-toolkit/plugins.json`
148
+ 10. **MCP assets**: installs `includes.mcp` into the selected editor's global MCP config, rejects unowned same-name entries, and records the exact normalized server configuration under the plugin's ownership state
135
149
 
136
150
  ### What `plugin update` Does
137
151
 
138
- 1. **Removes** existing plugin runtime entries for the selected editor(s) (same as `remove`)
139
- 2. **Reinstalls** from the current source (same as `install`)
140
- 3. **Preserves plugin data** (e.g. memory-pack SQLite database is never deleted)
141
- 4. Shared plugin scripts/hooks are kept if another runtime still has the same pack installed
142
- 5. `--all` updates only currently installed packs for the selected runtime(s)
152
+ 1. **Preflights** MCP and native-rule collisions before changing any plugin state, skill, rule, hook, or script
153
+ 2. **Removes** existing plugin runtime entries for the selected editor(s) (same as `remove`)
154
+ 3. **Reinstalls** from the current source (same as `install`)
155
+ 4. **Preserves plugin data** (e.g. memory-pack SQLite database is never deleted)
156
+ 5. Shared plugin scripts/hooks are kept if another runtime still has the same pack installed
157
+ 6. `--all` updates only currently installed packs for the selected runtime(s)
143
158
 
144
159
  ### What `plugin clean` Does
145
160
 
@@ -151,10 +166,12 @@ ai-toolkit plugin status --editor all # show installed packs with r
151
166
 
152
167
  1. **Claude Code target**: strips plugin hook entries from `~/.claude/settings.json` and removes plugin-local rule sections from `~/.claude/CLAUDE.md`
153
168
  2. **Codex target**: strips only command handlers carrying the exact `AI_TOOLKIT_HOOK_OWNER=ai-toolkit-plugin-<pack>` marker from `$CODEX_HOME/hooks.json`, removes owned `$CODEX_HOME/ai-toolkit-hooks/plugin-<pack>-*` assets, and removes the pack's marker-bounded sections from `$CODEX_HOME/AGENTS.md`
154
- 3. **Claude/shared assets** (`~/.softspark/ai-toolkit/hooks/plugin-*`, `plugin-scripts/<pack>/`) are removed only when no remaining runtime still uses that pack
155
- 4. **Updates** `plugins.json` state per runtime
156
- 5. **Leaves** core agents/skills untouched (they belong to the base install)
157
- 6. **Leaves** plugin data intact (e.g. `memory.db` use `clean` to prune)
169
+ 3. **Cursor/Gemini rules**: removes only exact content recorded in `rule_ownership`; foreign or user-modified files/sections are preserved with a warning
170
+ 4. **Claude/shared assets** (`~/.softspark/ai-toolkit/hooks/plugin-*`, `plugin-scripts/<pack>/`) are removed only when no remaining runtime still uses that pack
171
+ 5. **Updates** `plugins.json` state per runtime
172
+ 6. **Leaves** core agents/skills untouched (they belong to the base install)
173
+ 7. **Leaves** plugin data intact (e.g. `memory.db` — use `clean` to prune)
174
+ 8. **MCP cleanup**: removes only unchanged servers recorded as owned by that plugin; user-created, foreign, or manually changed entries are preserved with a warning
158
175
 
159
176
  ### Data Retention (memory-pack)
160
177
 
@@ -178,7 +195,7 @@ time.
178
195
  links every core skill and agent, so a manifest naming only core assets resolves
179
196
  to nothing: `plugin install` reports `(0 file items)` and no file appears on
180
197
  disk. This is not a subtle degradation — it is a complete no-op, identical on
181
- every profile (`minimal`, `standard`, `strict`) and on both runtimes.
198
+ every profile (`minimal`, `standard`, `strict`) and on every supported editor.
182
199
 
183
200
  Nine packs were removed in v4.20.0 for failing this: `csharp`, `java`, `kotlin`,
184
201
  `ruby`, `rust`, `swift`, `frontend`, `research`, `security`. Every one declared
@@ -3,19 +3,19 @@ title: "Supported Tools Registry"
3
3
  category: reference
4
4
  service: ai-toolkit
5
5
  tags: [editors, platforms, generators, integration, ecosystem]
6
- version: "1.13.0"
6
+ version: "1.15.0"
7
7
  created: "2026-04-23"
8
- last_updated: "2026-08-19"
9
- description: "Human-readable view of scripts/ecosystem_tools.json — the canonical list of tools ai-toolkit integrates with (Claude Code, Claude Chat/Cowork, and 11 editors), their documentation URLs, config paths, our generators, and tracked capability markers."
8
+ last_updated: "2026-09-01"
9
+ description: "Human-readable view of scripts/ecosystem_tools.json: Claude Code, Claude Chat/Cowork, 11 editors, and the explicit developer-preview DSH target."
10
10
  ---
11
11
 
12
12
  # Supported Tools Registry
13
13
 
14
- The canonical data lives in **`scripts/ecosystem_tools.json`** and is consumed by `scripts/ecosystem_doctor.py`. This document is a derived view when the JSON changes, update this table too.
14
+ The canonical data lives in **`scripts/ecosystem_tools.json`** and is consumed by `scripts/ecosystem_doctor.py`. This document is a derived view. Update it whenever the JSON changes.
15
15
 
16
- ## Tool Count: 13
16
+ ## Tool Count: 14
17
17
 
18
- 1 primary runtime (Claude Code) + 1 Claude app target + 11 editor integrations.
18
+ 1 primary runtime, 1 Claude app target, 11 editor integrations, and 1 explicit developer-preview harness target.
19
19
 
20
20
  ---
21
21
 
@@ -58,6 +58,30 @@ The canonical data lives in **`scripts/ecosystem_tools.json`** and is consumed b
58
58
 
59
59
  ---
60
60
 
61
+ ## Explicit Developer-Preview Harness
62
+
63
+ ### DeepSeek Harness
64
+
65
+ | Field | Value |
66
+ |-------|-------|
67
+ | ID | `dsh` |
68
+ | Status | `developer-preview`, `explicit-only`. This is a SoftSpark-maintained community compatibility target. DeepSeek AI has not endorsed it. |
69
+ | Reviewed version | DSH `0.1.1-rc.2`, `@softspark/dsh-codex@1.0.0`, and `@softspark/dsh-orchestrator@1.0.1`. |
70
+ | Docs | https://deepseek-harness.github.io/deepseek-harness/ |
71
+ | Release sources | https://github.com/deepseek-ai/deepseek-harness/releases and the reviewed [DSH 0.1.1-rc.2 release](https://github.com/deepseek-ai/deepseek-harness/releases/tag/dsh-v0.1.1-rc.2) |
72
+ | Reviewed contracts | Tagged [CLI profile and plugin reference](https://github.com/deepseek-ai/deepseek-harness/blob/dsh-v0.1.1-rc.2/apps/cli/reference/README.md) and [skill discovery reference](https://github.com/deepseek-ai/deepseek-harness/blob/dsh-v0.1.1-rc.2/docs/subsystems/skills.md) |
73
+ | Config paths | Project `.agents/skills/*/SKILL.md`; profile `$DSH_HOME/profiles/<profile>/package.json`; installed packages under `$DSH_HOME/profiles/<profile>/node_modules/@softspark/`; preset `$DSH_HOME/.agent-presets/softspark-orchestrator` |
74
+ | Project generator | `scripts/generate_codex_skills.py` emits the shared Codex and DSH `.agents/skills` catalog. `ai-toolkit install --local --editors dsh` makes no `$DSH_HOME` write. |
75
+ | Profile lifecycle | `scripts/install_steps/dsh.py` implements explicit `install`, `update`, `doctor`, and `uninstall` for one named profile. |
76
+ | Selection boundary | Excluded from `--editors all`, auto-detection, defaults, default profiles, and global editor selection. |
77
+ | Authentication | ai-toolkit accepts no provider API key and performs no login. Codex, Claude Code, and GitHub Copilot own authentication. Copilot Gemini usage consumes GitHub AI credits. |
78
+ | State and recovery | State uses `AI_TOOLKIT_HOME`, then `SOFTSPARK_HOME`, then `~/.softspark/ai-toolkit/state.json`. Locks and compare-and-swap publication protect ownership. Doctor reports preserved recovery markers and drift. |
79
+ | Upstream drift | Upstream has newer prereleases, including `0.1.2-alpha.2`. They remain unqualified until source review and isolated real-profile verification complete. Phase 3 real-profile evidence is pending. |
80
+
81
+ See [DSH Compatibility](./dsh-compatibility.md) for commands, topology, subscription boundaries, lifecycle ownership, and limitations.
82
+
83
+ ---
84
+
61
85
  ## Editor Integrations
62
86
 
63
87
  ### Cursor