Skip to content

Skillscript

v0.38.0 Breaking

This release includes breaking changes for platform teams planning a safe upgrade.

✓ No known CVEs patched
Read the diff → Tool health → What is this tool? →

✓ No known CVEs patched in this version

Topics

agents dsl llm mcp skills workflow

Summary

AI summary

Four new pipe filters (head, tail, lines, pluck) add string‑slice and object‑projection capabilities.

Full changelog

Upgrade impact: none (additive). Four new pipe filters, a lint false-positive removed, and a discovery surface widened — no behavior change to existing skills.

Pipe filters — line-slice family + pluck (Perry build spec; each cleared the project's "a real authored skill demonstrated the gap" bar):

  • head:"N" / tail:"N" / lines:"M-N" — line-slice a string (one shared impl). Split on \n, CRLF-tolerant, and a terminal newline's trailing empty line is dropped (so tail:"1" of "a\nb\n" is "b", not ""); lines:"M-N" is a 1-indexed inclusive range. Never throws — a bad / negative / out-of-range count clamps to what exists or yields "". Security payoff: file_read(spool) -> L then ${L|tail:"N"} tails a log fs-read-only, with no tail/grep shell-binary allowlist grant and no unsafe=true; a file_read help cross-reference now points authors to it.
  • pluck:"field" — project one field from each element of an array of objects → the array of field values (emitted as a JSON-array string, so it composes with in / not in / |length / |contains, all JSON-string-of-array tolerant). Omits an element whose field is absent/null or that isn't an object; single-level field only. Turns a hand-rolled dedup-by-id loop into a clean projection. Current idiom binds the projection then membership-tests ($set IDS = "${SEEN|pluck:"id"}" then if ${M.id} not in ${IDS}:); an inline filter chain on the in RHS is a pending grammar extension.
  • Both operate on the stringified input (the filter layer is type-blind); pluck additionally content-parses and throws on non-array input.

approved= no longer flags as unknown-connector-arg. The mutation-gate auth kwarg is popped by the runtime before the connector sees args, so validating it against the tool's input schema was a false positive that directly contradicted unconfirmed-mutation's "add approved=" remediation. timeout= and approved= are now a named reserved-dispatch-kwarg set, exempt from arg validation.

observed_output_shape now rides runtime_capabilities({tool}). The last-observed return shape was surfaced only in skill_preflight (which needs a skill already referencing the tool); it now also attaches to the tool fetch authors reach for to answer "what does this return?", and the tool description advertises it.

Weekly OSS security release digest.

The CVE patches and breaking changes that affected production tools this week. One email, every Sunday.

No spam, unsubscribe anytime.

Share this release

Track Skillscript

Get notified when new releases ship.

Sign up free

About Skillscript

All releases →

Related context

Earlier breaking changes

  • v0.35.0 Editing `# Deadline:` on an approved skill drops it to Draft (signature invalidates).

Beta — feedback welcome: [email protected]