@hasna/skills 0.10.72 → 0.10.73
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/README.md +270 -2
- package/bin/index.js +1687 -1238
- package/bin/mcp.js +116 -35
- package/bin/migrate.js +1 -1
- package/bin/server.js +1 -1
- package/bin/worker.js +1 -1
- package/dist/index.js +947 -696
- package/dist/lib/agent-discovery.d.ts +36 -0
- package/dist/lib/claude-installer-binding.d.ts +65 -0
- package/dist/lib/codex-node-modules.d.ts +11 -0
- package/dist/lib/codex-settings-witness-v1.d.ts +9 -0
- package/dist/lib/codex-settings-witness.d.ts +18 -0
- package/dist/runtime-prerequisites.js +1 -1
- package/dist/sdk/index.js +1056 -820
- package/docs/plugin-admission.md +50 -3
- package/package.json +1 -1
package/docs/plugin-admission.md
CHANGED
|
@@ -195,7 +195,7 @@ plugin dependency declarations refuse because this validator does not resolve
|
|
|
195
195
|
or review unselected external plugins.
|
|
196
196
|
The request may declare `functionHooksEnv: "1"`; without that declaration the
|
|
197
197
|
environment document is preserved unchanged. For a measured Claude 2.1.276,
|
|
198
|
-
2.1.278, 2.1.282, 2.1.287, 2.1.293, 2.1.296 or 2.1.
|
|
198
|
+
2.1.278, 2.1.282, 2.1.287, 2.1.293, 2.1.296, 2.1.299 or 2.1.300 user-scoped install,
|
|
199
199
|
`candidate.settingsMarketplaceSource: "directory"`
|
|
200
200
|
explicitly declares the native settings registration. Skills derives
|
|
201
201
|
`extraKnownMarketplaces[candidate.marketplace].source` from the exact frozen
|
|
@@ -249,6 +249,49 @@ structural refusal checks do not prove hook behavior. Recheck all preimages and
|
|
|
249
249
|
candidate closure immediately before the first native mutation. The validator
|
|
250
250
|
does not claim native install atomicity or crash recovery.
|
|
251
251
|
|
|
252
|
+
The reviewed discovery inputs must bind every current Claude settings and
|
|
253
|
+
registration source: the user settings, both project settings files,
|
|
254
|
+
`known_marketplaces.json` and `installed_plugins.json`. A project
|
|
255
|
+
`.claude/settings.json` or `.claude/settings.local.json` that the reviewed
|
|
256
|
+
sources omit is exempt only when no other expected source (the target settings
|
|
257
|
+
or the user settings) shares its path, and it is either:
|
|
258
|
+
|
|
259
|
+
- absent, with a null preimage; or
|
|
260
|
+
- present, and all of the following hold:
|
|
261
|
+
- its current bytes match its preimage SHA-256; a mismatch refuses with
|
|
262
|
+
`<name> preimage changed`;
|
|
263
|
+
- those exact bytes are strict UTF-8 without a byte-order mark and parse as
|
|
264
|
+
one JSON object within the native JSON witness limits (no comments,
|
|
265
|
+
trailing commas, trailing content or duplicate keys at any depth);
|
|
266
|
+
- none of `enabledPlugins`, `extraKnownMarketplaces`,
|
|
267
|
+
`additionalMarketplaces` or `skillOverrides` is present at any value,
|
|
268
|
+
including `null`, `{}` and `[]`;
|
|
269
|
+
- every top-level key is on the exemption allowlist with its type:
|
|
270
|
+
`permissions` (an object), `outputStyle`, `model`, `theme` and
|
|
271
|
+
`effortLevel` (strings), and `verbose` and `spinnerTipsEnabled` (booleans);
|
|
272
|
+
- `permissions` holds only `allow`, `deny` and `ask` (arrays of strings) and
|
|
273
|
+
`defaultMode` (a string).
|
|
274
|
+
|
|
275
|
+
Anything else keeps the file required, including `env` (Claude reads
|
|
276
|
+
`CLAUDE_CODE_PLUGIN_DIRS` from it), `hooks`, `permissions.additionalDirectories`
|
|
277
|
+
(Claude loads skills, commands and agents from those directories), `__proto__`
|
|
278
|
+
and unknown keys. The allowlist names settings reviewed as not configuring
|
|
279
|
+
plugins, marketplaces, skills, hooks, extra directories or the environment. It
|
|
280
|
+
does not prove that Claude cannot discover anything from the file; a setting
|
|
281
|
+
joins it only after that review.
|
|
282
|
+
|
|
283
|
+
This covers the permissions-only `~/.claude/settings.local.json` that Claude
|
|
284
|
+
writes when it saves a permission rule during a user-scope install, whose
|
|
285
|
+
project path is the Claude home. A present unreviewed file that fails the parse,
|
|
286
|
+
discovery-key or allowlist checks refuses and names the reason. Each exempt file
|
|
287
|
+
is re-checked against its exact preimage (still absent, or the same bytes) after
|
|
288
|
+
discovery and again before the result, so a change, creation or removal in
|
|
289
|
+
between refuses. The live hooks' project check still runs on top; it refuses
|
|
290
|
+
any of the four discovery keys (`additionalMarketplaces` included, because
|
|
291
|
+
Claude 2.1.300 rewrites it into `extraKnownMarketplaces` on every settings read)
|
|
292
|
+
and its other project skill and hook settings. The user settings and both
|
|
293
|
+
registries are never exempt.
|
|
294
|
+
|
|
252
295
|
The optional release manifest witness binds the complete supplied release.json
|
|
253
296
|
file bytes, path and SHA-256 in the request/receipt. Harnesses remains
|
|
254
297
|
responsible for verifying that its release options correspond to every
|
|
@@ -270,8 +313,12 @@ skills hook capture-claude-installer --request /absolute/request.json --json
|
|
|
270
313
|
The UTF-8 request is a bounded JSON object with schema
|
|
271
314
|
`skills.claude-installer-capture/v1`, the exact configured `commandPath`, one
|
|
272
315
|
fixed `operation` (`settings`, `marketplace-registry`, `managed-plugin-registry`,
|
|
273
|
-
`path-bytes`, `discovery-directories`, `plugin-manifest`,
|
|
274
|
-
only that operation's documented inputs. The
|
|
316
|
+
`path-bytes`, `discovery-directories`, `plugin-manifest`, `candidate`, or
|
|
317
|
+
`discovery-binding`), and only that operation's documented inputs. The
|
|
318
|
+
`discovery-binding` operation verifies the stored Claude discovery binding as a
|
|
319
|
+
whole, including witnesses retained under an absent retired plugin-cache
|
|
320
|
+
version; its request and result contract is in the README section
|
|
321
|
+
"Claude installer witness CLI". The result uses
|
|
275
322
|
`skills.claude-installer-capture-result/v1` and contains a Skills producer
|
|
276
323
|
receipt plus the selected existing witness result. Candidate manifests include
|
|
277
324
|
their plugin name, canonical path, `hashMode: "claude-plugin-manifest-v1"`, and
|