@hasna/skills 0.8.1 → 0.8.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.
package/README.md CHANGED
@@ -324,6 +324,48 @@ are explicitly changed or a new session starts.
324
324
 
325
325
  ## Executable skills
326
326
 
327
+ For a selected local executable that declares `runtime.env`, prepare a binding
328
+ template using the configured Skills and Secrets clients:
329
+
330
+ ```bash
331
+ skills run --target local --selection-profile default \
332
+ --secret-bindings-template --json your-skill@1.0.0 > bindings.json
333
+ # Fill each empty entry in bindings with its reviewed vault key, never its value.
334
+ skills run --target local --selection-profile default \
335
+ --secret-bindings ./bindings.json --input '{"requested":"work"}' \
336
+ --json your-skill@1.0.0
337
+ ```
338
+
339
+ The template contains no credential values and does not execute the skill or
340
+ read the declared secrets. Keep the reviewed file in your private configuration,
341
+ outside the skill bundle and agent discovery directories. It uses
342
+ `hasna.skills-secret-bindings.v1` and binds the exact Skills authority, workspace,
343
+ profile ID and revision, canonical skill name, version and bundle digest, plus
344
+ the current station ID (`HASNA_STATION`, otherwise the hostname), canonical
345
+ working directory and independently configured Secrets `/v1` authority. Its
346
+ `bindings` object maps each declared environment name to one vault key. Changing
347
+ any bound field requires reviewing a fresh template. These are explicit local
348
+ execution grants; selection sync does not distribute or implicitly approve them.
349
+
350
+ The CLI validates the complete binding before fetching values through
351
+ `@hasna/secrets`. It resolves current values for each run, checks returned keys
352
+ and expiry, and injects only the declared variables into the child process.
353
+ Missing, extra, stale or mismatched bindings refuse execution; a failing vault
354
+ read never falls back to an ambient value or a local vault. Wrapping `skills run`
355
+ in `secrets exec` alone does not bind a declared variable. Runtime controls such
356
+ as `PATH`, `NODE_OPTIONS` and `SKILLS_INPUT_JSON` cannot be credential names.
357
+ Bindings require an explicit local target and a fresh API selection; they cannot
358
+ be used with cached, cloud or legacy remote execution. No S3 deployment is required.
359
+
360
+ Run receipts retain references and scope, never resolved values or captured
361
+ output. Returned child output redacts literal, JSON-escaped, base64 and URL-encoded
362
+ forms of injected values. This limits accidental disclosure; local execution
363
+ has the calling user's filesystem and network access and is not a sandbox for
364
+ hostile code. Review the exact executable and grant only the credentials its
365
+ effects require. Cloud admission and cloud credential delivery remain separate.
366
+ SDK callers use `resolveSelectedRun`, `prepareSelectedSecretBindings` and
367
+ `executeSelectedLocal(selected, { secretBindings })` through `@hasna/skills/sdk`.
368
+
327
369
  ```bash
328
370
  skills capabilities --json
329
371
  skills run --target cloud --selection-profile default \