@softspark/ai-toolkit 4.18.0 → 4.19.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.
@@ -138,21 +138,30 @@ ai-toolkit plugin status --editor all # show installed packs with r
138
138
  | `kotlin-pack` | kotlin | 0 | 1 | 0 | Kotlin patterns |
139
139
  | `swift-pack` | swift | 0 | 1 | 0 | Swift patterns |
140
140
  | `ruby-pack` | ruby | 0 | 1 | 0 | Ruby patterns |
141
- | `rtk-pack` | token-reduction | 0 | 0 | 1 | Command rewriting via a checksum-pinned rtk binary fetched at install |
142
-
143
- `rtk-pack` is the first pack to break three assumptions the others share, so it
144
- is the one to read when extending the contract:
145
-
146
- - **It fetches from the network at install time.** `scripts/init.py` downloads a
147
- platform-specific artifact and verifies its SHA-256 against `plugin.json`
148
- before installing anything. A mismatch aborts and leaves nothing behind.
149
- - **It declares platform assets and digests in `plugin.json`.** The manifest
150
- schema tolerates extra keys, so `upstream` and `binary` are additive; nothing
151
- validates them, which means a malformed block fails at install rather than in
152
- `validate.py --strict`.
153
- - **It reports its own health.** `scripts/status.py` is picked up generically by
154
- `plugin status`, replacing what used to be a hardcoded `if name == "memory-pack"`
155
- branch. Any pack can now ship one.
141
+
142
+ Every pack here is content that ships in this repository. None fetches anything
143
+ at install time.
144
+
145
+ **A pack that downloads a binary has been tried once and retired.** `rtk-pack`
146
+ (v4.18.0, removed in v4.19.0) fetched a checksum-pinned artifact in
147
+ `scripts/init.py`, declared platform assets and digests in `plugin.json`, and
148
+ rewrote commands at `PreToolUse`. Read
149
+ `kb/history/completed/rtk-pack-retirement-20260727.md` before proposing another
150
+ pack of that shape; the two defects that killed it were both invisible to
151
+ `validate.py --strict` and to the pack's own status check.
152
+
153
+ What survives from that work and applies to any pack:
154
+
155
+ - **A pack reports its own health.** `scripts/status.py` is picked up
156
+ generically by `plugin status`, replacing what used to be a hardcoded
157
+ `if name == "memory-pack"` branch. A status check must distinguish *installed*
158
+ from *working*, and prove the working part by exercising it rather than by
159
+ checking that files exist.
160
+ - **A pack may declare `supported_editors`.** Without it a pack installs on
161
+ every runtime and silently does nothing on the ones it was never built for.
162
+ - **The manifest schema tolerates extra keys.** Anything additive is unvalidated,
163
+ so a malformed block fails at install time rather than in `validate.py
164
+ --strict`. Do not rely on the schema to catch it.
156
165
 
157
166
  ## Optional Hook Modules
158
167