@hasna/skills 0.10.20 → 0.10.23

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 CHANGED
@@ -459,14 +459,34 @@ skills hook rebind-settings --agent codex \
459
459
  --expected-settings-sha256 <current-settings-sha256> --json
460
460
  ```
461
461
 
462
- The plan proves the preserved original matches the old witness, permits only
463
- supported preference differences, and labels the replacement witness. `--apply`
464
- preserves and reads back the original policy before writing. Claude upgrades to
465
- `claude-settings-v3`; Codex uses `codex-settings-v1` for typed model, effort and
466
- verbosity preferences. Provider mappings, environment, hooks, plugins, skill rules
467
- and all unknown settings stay bound. Runtime hooks never silently upgrade a witness.
468
-
469
- A Codex 0.159.2 native skill and installed-plugin receipt can be captured through the
462
+ The plan proves the preserved original matches every witness being replaced,
463
+ permits only the documented non-discovery differences, and labels the replacement
464
+ witness (the JSON receipt lists them under `replacedWitnesses`). `--apply`
465
+ preserves and reads back the original policy before writing, and never writes the
466
+ native configuration. Claude upgrades to `claude-settings-v3`; Codex uses
467
+ `codex-settings-v2`, which also replaces the narrower automatic
468
+ `plugins`/`marketplaces`/`skills` projection of the same file once the preserved
469
+ original is proved to explain it. That projection is order-sensitive, so it keeps
470
+ failing after Codex re-serializes the file it owns.
471
+
472
+ Existing `codex-settings-v1` witnesses retain their original verifier. New reviews
473
+ use `skills hook witness --kind codex-settings-v2 --path <config.toml> --json`.
474
+ The guarded rebind accepts a raw or v1 witness only when the exact preserved
475
+ configuration proves its original digest and any automatic projection. Without
476
+ that preimage, capture a fresh native catalog and explicitly review all discovery
477
+ inputs before installing a v2 binding; runtime never adopts drift automatically.
478
+
479
+ The Codex v2 witness binds the whole configuration apart from native-owned state
480
+ that is not a discovery input: the `hooks.state` trust ledger Codex rewrites when
481
+ it trusts a hook, table order and other serialization-only differences, retired
482
+ `[[skills.config]]` entries that explicitly disable one skill, and `model`,
483
+ `model_reasoning_effort` and `model_verbosity` at the root or in `[profiles.*]`.
484
+ Every hook declaration, provider mapping, plugin, skill source or enablement,
485
+ project-trust entry, environment setting and unknown field stays bound, and a
486
+ malformed inference selection refuses instead of being adopted. Runtime hooks
487
+ never silently upgrade a witness.
488
+
489
+ A supported Codex native skill and installed-plugin receipt can be captured through the
470
490
  package-owned client into a new private file, then reviewed and passed to
471
491
  `hook install` with `--codex-native-catalog <file>`:
472
492
 
@@ -475,6 +495,11 @@ skills hook native-catalog --cwd /absolute/project --output /private/catalog.jso
475
495
  skills hook install --agent codex --codex-native-catalog /private/catalog.json --json
476
496
  ```
477
497
 
498
+ Codex 0.159.2 and 0.160.0 have measured qualified-name catalog support. Native
499
+ transport, capture and review use one capability registry. Unmeasured releases
500
+ refuse until the native catalog/name-denial and hook-dispatch acceptance tests
501
+ pass; an RPC handshake alone does not establish those semantics.
502
+
478
503
  The capture refuses an existing output file, writes mode `0600`, verifies the
479
504
  exact bytes, and reports only version, directory, count, file path and SHA-256.
480
505
  Its safe catalog shape is `{version,cwd,skills,plugins}`; skills have
@@ -2221,3 +2246,9 @@ assertPortableAuthoringPath(destination, { homeDir: accountHome });
2221
2246
  ```
2222
2247
 
2223
2248
  `homeDir` defaults to the current account home. Missing destination descendants are supported. The check reads configuration without loading plugins, fetching skills, or creating directories; it throws on refusal. It is a pre-write check, not a reservation against concurrent configuration or symlink changes. Call it again immediately before each later write. Native inventory and migration remain available for preserving existing copies.
2249
+
2250
+ Remote Codex plugins can report no installed release version. Fresh discovery can
2251
+ review a cached skill only when its native installed/enabled plugin ID matches
2252
+ Codex's local remote install receipt, its manifest and capability controls are
2253
+ bound, and its exact path is already effectively disabled. This reviews a denied
2254
+ materialization; it does not infer the installed version or enable cached skills.