@softspark/ai-toolkit 4.32.3 → 4.33.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/CHANGELOG.md +61 -0
- package/README.md +17 -26
- package/app/.claude-plugin/plugin.json +1 -1
- package/app/ARCHITECTURE.md +1 -1
- package/app/claude-app/skills/ai-toolkit-rules/SKILL.md +8 -1
- package/app/rules/common/security.md +2 -1
- package/app/rules/common/testing.md +6 -0
- package/app/skills/api-patterns/SKILL.md +37 -11
- package/app/skills/api-patterns/reference/error-contracts.md +88 -0
- package/app/skills/review/SKILL.md +5 -0
- package/app/skills/security-patterns/SKILL.md +2 -2
- package/app/skills/security-patterns/reference/input-validation.md +69 -1
- package/app/skills/testing-patterns/SKILL.md +19 -0
- package/benchmarks/ecosystem-doctor-snapshot.json +13 -13
- package/kb/procedures/sop-post-release-testing.md +159 -58
- package/kb/procedures/sop-release-verification.md +43 -16
- package/kb/procedures/sop-release.md +9 -2
- package/kb/reference/architecture-overview.md +3 -3
- package/kb/reference/dsh-compatibility.md +85 -13
- package/kb/reference/language-rules.md +7 -1
- package/kb/reference/skills-catalog.md +2 -2
- package/llms-full.txt +309 -96
- package/manifest.json +3 -3
- package/package.json +2 -2
- package/scripts/ecosystem_tools.json +5 -5
- package/scripts/install_steps/dsh.py +506 -53
|
@@ -3,9 +3,9 @@ title: "AI Toolkit - DSH Compatibility"
|
|
|
3
3
|
category: reference
|
|
4
4
|
service: ai-toolkit
|
|
5
5
|
tags: [dsh, deepseek-harness, subscriptions, lifecycle, compatibility]
|
|
6
|
-
version: "1.
|
|
6
|
+
version: "1.8.0"
|
|
7
7
|
created: "2026-08-31"
|
|
8
|
-
last_updated: "2026-09-
|
|
8
|
+
last_updated: "2026-09-06"
|
|
9
9
|
description: "Compatibility contract for project skills and the explicit SoftSpark package lifecycle in DeepSeek Harness."
|
|
10
10
|
---
|
|
11
11
|
|
|
@@ -15,14 +15,14 @@ description: "Compatibility contract for project skills and the explicit SoftSpa
|
|
|
15
15
|
|
|
16
16
|
ai-toolkit supports DeepSeek Harness as an explicit developer-preview target. The integration is maintained by SoftSpark as a community compatibility layer. DeepSeek AI has not endorsed it.
|
|
17
17
|
|
|
18
|
-
The
|
|
18
|
+
The 4.33.0 lifecycle targets DSH `0.1.2-rc.1`, with the exact package pair below. Other upstream prereleases require their own qualification. Historical marker roundtrips from 2026-09-01 used DSH `0.1.1-rc.2`; version-specific evidence is recorded under Qualification below.
|
|
19
19
|
|
|
20
20
|
## Project vs Profile Outputs
|
|
21
21
|
|
|
22
22
|
| Surface | Command | Managed output | Explicit non-output |
|
|
23
23
|
|---|---|---|---|
|
|
24
24
|
| Project install | `ai-toolkit install --local --editors dsh` | `CLAUDE.md`, `.claude/settings.local.json`, `.claude/constitution.md`, detected language rules, other generic local outputs, and the DSH-specific one-level `.agents/skills/<name>/SKILL.md` catalog with bundled resources | No `$DSH_HOME` writes, npm package changes, profile changes, preset changes, or credential reads |
|
|
25
|
-
| DSH profile | `ai-toolkit dsh install --profile web` | Two exact npm dependencies
|
|
25
|
+
| DSH profile | `ai-toolkit dsh install --profile web` | Two exact npm dependencies, the scoped Claude SDK override and missing profile initialization files, the released `softspark-orchestrator` preset, and ai-toolkit ownership state | No project files, provider login, API keys, unrelated plugins, or user presets |
|
|
26
26
|
|
|
27
27
|
DSH is excluded from `--editors all`, auto-detection, default profiles, and default editor selection. Naming `dsh` without `--local` is not a supported project install route.
|
|
28
28
|
|
|
@@ -50,13 +50,31 @@ The DSH profile defaults to `web` when `--profile` is omitted. `DSH_HOME` select
|
|
|
50
50
|
|
|
51
51
|
| Component | Reviewed version | Role |
|
|
52
52
|
|---|---:|---|
|
|
53
|
-
| DeepSeek Harness | `0.1.
|
|
53
|
+
| DeepSeek Harness | `0.1.2-rc.1` | Profile host and plugin manager |
|
|
54
54
|
| pnpm | `>=11.7.0,<12.0.0` | Package manager used by the DSH plugin command |
|
|
55
|
-
| `@softspark/dsh-codex` | `1.
|
|
56
|
-
| `@softspark/dsh-orchestrator` | `
|
|
55
|
+
| `@softspark/dsh-codex` | `1.5.0` | Codex parent provider through local `codex app-server` |
|
|
56
|
+
| `@softspark/dsh-orchestrator` | `2.0.0` | Claude Code and GitHub Copilot Gemini delegation bundle plus released preset |
|
|
57
|
+
| Claude Agent SDK | `0.3.263` | Exact profile override for the DSH Claude provider's bundled CLI |
|
|
57
58
|
|
|
58
59
|
Install and update use exact package arguments with `--save-exact`. Arbitrary DSH prereleases and unpinned SoftSpark packages are outside this contract.
|
|
59
60
|
|
|
61
|
+
Install and update also configure the exact profile selector
|
|
62
|
+
`@deepseek-ai/dsh-subagent-claude-code@0.1.2-rc.1>@anthropic-ai/claude-agent-sdk`
|
|
63
|
+
to `0.3.263`. DSH's original SDK `0.3.241` embeds Claude Code `2.1.241`, which
|
|
64
|
+
current models reject even when the standalone Claude command is up to date.
|
|
65
|
+
The override is applied through pnpm's JSON configuration API. Unrelated
|
|
66
|
+
settings and overrides are preserved; an incompatible SDK override or an
|
|
67
|
+
explicit non-hoisted package layout fails with guidance before modification.
|
|
68
|
+
The installed SDK's actual package metadata is checked before state is committed.
|
|
69
|
+
|
|
70
|
+
Upgrade the DSH runtime to `0.1.2-rc.1` before running this release's profile
|
|
71
|
+
update. Ownership records for the earlier exact package pair remain valid and
|
|
72
|
+
are migrated by `ai-toolkit dsh update`. On failure, rollback uses the versions
|
|
73
|
+
recorded before the operation. The optional `dsh-file-preview` and
|
|
74
|
+
`dsh-process-console` UI bundles are separate profile additions; their `2.0.0`
|
|
75
|
+
line targets the new DSH client APIs, and the toolkit preserves them as unrelated
|
|
76
|
+
dependencies.
|
|
77
|
+
|
|
60
78
|
The reviewed DSH tag declares `pnpm@11.7.0`. The isolated cold-install environment used Corepack pnpm `11.24.0`, so the lifecycle accepts stable pnpm releases from `11.7.0` through the end of major 11. Before it creates the lifecycle lock or changes a profile, it resolves exact DSH and pnpm command paths from the minimal child `PATH`, records their command and resolved-file identities, and runs their version probes with a five-second bound. Missing, nonzero, timed-out, malformed, or unsupported pnpm probes fail with no package, preset, state, or lifecycle artifact.
|
|
61
79
|
|
|
62
80
|
## Subscription and Authentication Boundaries
|
|
@@ -111,6 +129,17 @@ The DSH record stores the canonical DSH home, profile, exact package versions, p
|
|
|
111
129
|
|
|
112
130
|
The published npm packages own their installed code. The canonical preset source is `@softspark/dsh-orchestrator/agent-presets/softspark-orchestrator` inside the exact installed package. ai-toolkit copies and verifies that tree. It does not reconstruct the preset.
|
|
113
131
|
|
|
132
|
+
Missing profile initialization files are created exclusively under pinned
|
|
133
|
+
directories using the qualified DSH profile schema before invoking the external
|
|
134
|
+
configuration command. A file appearing concurrently is never adopted as owned,
|
|
135
|
+
even when its bytes match. The transaction snapshots `pnpm-workspace.yaml` bytes, mode and file identity in
|
|
136
|
+
addition to package state. Ordinary failures restore that prestate through the
|
|
137
|
+
same guarded file restoration used for the profile manifest. Default profile
|
|
138
|
+
files created during initialization are removed only while their recorded
|
|
139
|
+
identities still match. Unexpected settings changes or ambiguous failed
|
|
140
|
+
external writes remain preserved behind a recovery marker. Configuration
|
|
141
|
+
contents are never copied into lifecycle state, receipts, or error messages.
|
|
142
|
+
|
|
114
143
|
Mutations first take a nonblocking exclusive POSIX `flock` on the already pinned `DSH_HOME` directory descriptor, then claim the bounded canonical lifecycle lock and use the shared state lock with compare-and-swap publication. Directory locking is independent of the replaceable lock filename. It remains held across sentinel scans, package and preset mutation, normal canonical-lock release, or recovery-sentinel creation plus file and directory `fsync`. A competing lifecycle must acquire the same directory lock before it can scan recovery state or claim the canonical name. The immutable prerequisite record is revalidated after lock acquisition and before every package mutation or package rollback. A replaced or removed executable, or a new earlier `pnpm` PATH shadow, blocks the command. The verified pnpm command directory is placed first in the child PATH so DSH's literal `pnpm` lookup resolves to the probed command. Install, update, and uninstall verify the profile manifest, package trees, preset identity, and unrelated dependencies before and after each external package-manager command. Rollback restores the immutable pre-operation target. It does not reinterpret concurrent bytes as owned data.
|
|
115
144
|
|
|
116
145
|
Each DSH plugin add, update, remove, or rollback command has a 300-second process bound, separate from the short prerequisite probe. This bound accommodates cold package resolution without promising registry or network latency. Every mutation starts DSH in a dedicated POSIX session and process group. A timeout or interruption signals the complete group, escalates from `SIGTERM` to `SIGKILL` when needed, and waits for confirmed group exit before rollback. If exit cannot be confirmed, package rollback is blocked and deterministic inspection steps are reported. Child stdout and stderr remain suppressed from user-facing errors.
|
|
@@ -144,8 +173,17 @@ The first native target also excludes DSH hook bridging, MCP bridging, arbitrary
|
|
|
144
173
|
|
|
145
174
|
`ai-toolkit dsh doctor` is read-only. It reports the DSH runtime version, pnpm availability and version, package pins, package-tree and preset ownership, state consistency, lifecycle lock recovery artifacts, staging paths, and recovery markers. A recovery marker keeps `Recovery needed: yes` visible until the operator resolves the named paths.
|
|
146
175
|
|
|
176
|
+
Doctor also checks the required SDK override and installed SDK version. It
|
|
177
|
+
queries pnpm directly only when the profile directory exists. It never uses
|
|
178
|
+
`dsh plugin` for inspection, because that command initializes missing profiles.
|
|
179
|
+
|
|
147
180
|
`ai-toolkit dsh uninstall --yes` removes only the recorded SoftSpark packages, preset, and profile state. Drift or ownership ambiguity stops removal. Unrelated profile dependencies, patch files, presets, and state keys remain unchanged.
|
|
148
181
|
|
|
182
|
+
Successful uninstall retains the scoped SDK compatibility setting and the
|
|
183
|
+
profile's pnpm layout. They are runtime prerequisites for a later reinstall,
|
|
184
|
+
not ownership of the user's entire profile. Failed operations restore their
|
|
185
|
+
pre-operation configuration unless concurrent edits make that unsafe.
|
|
186
|
+
|
|
149
187
|
## Verification
|
|
150
188
|
|
|
151
189
|
Run the static and isolated checks without modifying a regular DSH profile:
|
|
@@ -163,11 +201,45 @@ ai-toolkit dsh doctor --profile web
|
|
|
163
201
|
ai-toolkit dsh uninstall --profile web --dry-run --yes
|
|
164
202
|
```
|
|
165
203
|
|
|
166
|
-
|
|
204
|
+
### Historical qualification, 2026-09-01
|
|
205
|
+
|
|
206
|
+
The earlier DSH `0.1.1-rc.2` package pair completed real-profile qualification
|
|
207
|
+
with a task-specific `DSH_HOME`, exact published package artifacts, and native
|
|
208
|
+
vendor logins. The pre-tag candidate and registry package produced successful
|
|
209
|
+
child and parent markers through `subagent_claude_code` and
|
|
210
|
+
`subagent_gemini_copilot`. No provider API key was supplied or handled; the
|
|
211
|
+
isolated processes stopped and the unrelated profile fixture remained intact.
|
|
212
|
+
|
|
213
|
+
### DSH 0.1.2-rc.1 qualification
|
|
214
|
+
|
|
215
|
+
On 2026-09-06, the installed 4.33.0 candidate completed install, doctor,
|
|
216
|
+
update, doctor, a controlled second-package failure with real pnpm rollback,
|
|
217
|
+
doctor and uninstall against the published Codex 1.5.0/orchestrator 2.0.0
|
|
218
|
+
pair. Rollback preserved the manifest, pnpm settings, ownership state and
|
|
219
|
+
unrelated preset byte for byte. Doctor reported the exact package versions,
|
|
220
|
+
Claude SDK 0.3.263 and no recovery requirement. Uninstall removed the managed
|
|
221
|
+
packages, preset and profile ownership while retaining the unrelated preset
|
|
222
|
+
and runtime SDK prerequisite. Both state roots were disposable; HOME stayed
|
|
223
|
+
unchanged.
|
|
224
|
+
|
|
225
|
+
The composed web host returned the Claude and Gemini child markers through
|
|
226
|
+
the Codex parent. Browser checks covered cancellation, restart, the native
|
|
227
|
+
child transcript and preservation of the parent session. The DSH package
|
|
228
|
+
verification records retain those runtime results and their separate exact
|
|
229
|
+
registry signature/provenance checks.
|
|
230
|
+
|
|
231
|
+
The toolkit candidate also passed 1,989 Bats and 354 Python tests. An
|
|
232
|
+
unmounted disposable container passed global install, status, doctor, local
|
|
233
|
+
installation for all editors, repeated installation, eject and the official
|
|
234
|
+
Claude 2.1.263 plugin validator. Exact published toolkit artifact results are
|
|
235
|
+
recorded on the 4.33.0 release page after publication.
|
|
167
236
|
|
|
168
237
|
## Preview and Upstream Drift
|
|
169
238
|
|
|
170
|
-
DeepSeek Harness
|
|
239
|
+
DeepSeek Harness is a developer preview with compatibility-breaking changes.
|
|
240
|
+
On 2026-09-06, npm `latest` pointed to `0.1.2-rc.1`. GitHub also listed
|
|
241
|
+
`0.1.3-alpha.1`, but that exact CLI version was absent from npm. It is outside
|
|
242
|
+
this lifecycle contract.
|
|
171
243
|
|
|
172
244
|
Use the registry doctor to detect documentation, capability-marker, and local version changes. A new upstream version requires source review, focused fixture updates, isolated real-profile qualification, and explicit pin changes before support moves.
|
|
173
245
|
|
|
@@ -175,9 +247,9 @@ Use the registry doctor to detect documentation, capability-marker, and local ve
|
|
|
175
247
|
|
|
176
248
|
- [DeepSeek Harness documentation](https://deepseek-harness.github.io/deepseek-harness/)
|
|
177
249
|
- [DeepSeek Harness releases](https://github.com/deepseek-ai/deepseek-harness/releases)
|
|
178
|
-
- [Reviewed DSH 0.1.
|
|
179
|
-
- [Reviewed DSH package-manager declaration](https://github.com/deepseek-ai/deepseek-harness/blob/dsh-v0.1.
|
|
180
|
-
- [Reviewed DSH CLI profile and plugin contract](https://github.com/deepseek-ai/deepseek-harness/blob/dsh-v0.1.
|
|
181
|
-
- [Reviewed DSH skill discovery contract](https://github.com/deepseek-ai/deepseek-harness/blob/dsh-v0.1.
|
|
250
|
+
- [Reviewed DSH 0.1.2-rc.1 release](https://github.com/deepseek-ai/deepseek-harness/releases/tag/dsh-v0.1.2-rc.1)
|
|
251
|
+
- [Reviewed DSH package-manager declaration](https://github.com/deepseek-ai/deepseek-harness/blob/dsh-v0.1.2-rc.1/package.json)
|
|
252
|
+
- [Reviewed DSH CLI profile and plugin contract](https://github.com/deepseek-ai/deepseek-harness/blob/dsh-v0.1.2-rc.1/apps/cli/reference/README.md)
|
|
253
|
+
- [Reviewed DSH skill discovery contract](https://github.com/deepseek-ai/deepseek-harness/blob/dsh-v0.1.2-rc.1/docs/subsystems/skills.md)
|
|
182
254
|
- [PATH: kb/reference/manifest-install.md]
|
|
183
255
|
- [PATH: kb/history/completed/dsh-native-install-target-plan.md]
|
|
@@ -5,7 +5,7 @@ service: ai-toolkit
|
|
|
5
5
|
tags: [rules, languages, coding-style, testing, patterns, security]
|
|
6
6
|
version: "2.2.0"
|
|
7
7
|
created: "2026-04-07"
|
|
8
|
-
last_updated: "2026-09-
|
|
8
|
+
last_updated: "2026-09-06"
|
|
9
9
|
description: "Reference for the language-specific rules system: 13 per-language rule sets shipped as knowledge skills, plus common rules installed as Claude Code path-scoped project rules."
|
|
10
10
|
---
|
|
11
11
|
|
|
@@ -78,6 +78,12 @@ app/rules/
|
|
|
78
78
|
|
|
79
79
|
## Rule Categories
|
|
80
80
|
|
|
81
|
+
The common security rules distinguish safe, actionable failure messages from
|
|
82
|
+
private diagnostics. Common testing rules cover API error contracts and prohibit
|
|
83
|
+
overlapping runners that reset a shared database. The `api-patterns` skill carries
|
|
84
|
+
the focused error-contract guidance; the `review` checklist checks the same
|
|
85
|
+
failure boundaries. These are content rules, not new hooks or runtime permissions.
|
|
86
|
+
|
|
81
87
|
| Category | Filename | Content |
|
|
82
88
|
|----------|----------|---------|
|
|
83
89
|
| `coding-style` | `coding-style.md` | Naming, formatting, idiomatic constructs, linter config |
|
|
@@ -5,7 +5,7 @@ service: ai-toolkit
|
|
|
5
5
|
tags: [skills, domain-knowledge, catalog, task-skills, hybrid-skills]
|
|
6
6
|
version: "1.5.0"
|
|
7
7
|
created: "2026-03-23"
|
|
8
|
-
last_updated: "2026-
|
|
8
|
+
last_updated: "2026-09-06"
|
|
9
9
|
description: "Complete skills catalog with task, hybrid, and knowledge skills. Includes Codex adaptation notes, effort levels, skill-scoped hooks, executable scripts, security auditor, and persona presets."
|
|
10
10
|
---
|
|
11
11
|
|
|
@@ -123,7 +123,7 @@ Hybrid skills combine slash-command invocation with domain knowledge that agents
|
|
|
123
123
|
| Skill | Directory | Domain |
|
|
124
124
|
|-------|-----------|--------|
|
|
125
125
|
| **app-builder** | `skills/app-builder/` | Full-stack application architecture |
|
|
126
|
-
| **api-patterns** | `skills/api-patterns/` |
|
|
126
|
+
| **api-patterns** | `skills/api-patterns/` | API design, versioning, actionable error contracts and safe retries; focused `reference/error-contracts.md` |
|
|
127
127
|
| **database-patterns** | `skills/database-patterns/` | Schema design, indexing, query optimization |
|
|
128
128
|
| **flutter-patterns** | `skills/flutter-patterns/` | Flutter/Dart architecture, state management |
|
|
129
129
|
| **ecommerce-patterns** | `skills/ecommerce-patterns/` | E-commerce: catalog, cart, checkout, payments |
|