Skip to content

Skillscript

v0.35.0 Feature

This release adds 3 notable features for engineering teams evaluating rollout.

✓ 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

Affected surfaces

breaking_upgrade

ReleasePort's take

Moderate signal
editorial:auto 8d

Skillscript v0.35.0 adds whole‑run wall‑clock deadlines and real cancellation support across the runtime, connector API, and execution results.

Why it matters: A new `# Deadline: N` frontmatter entry enforces per‑run time limits; editing it on an approved skill resets its status to Draft (severity 70).

Summary

AI summary

Updates seconds, fallback, and leak-prevention across a mixed release.

Changes in this release

Breaking High

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

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

Source: llm_adapter@2026-07-18

Confidence: high

Feature Medium

Adds whole‑run wall‑clock deadline via `# Deadline: N` frontmatter.

Adds whole‑run wall‑clock deadline via `# Deadline: N` frontmatter.

Source: llm_adapter@2026-07-18

Confidence: high

Feature Medium

Implements real cancellation of ops (SIGKILL for shell, AbortSignal for connectors).

Implements real cancellation of ops (SIGKILL for shell, AbortSignal for connectors).

Source: llm_adapter@2026-07-18

Confidence: high

Feature Medium

Introduces `onAbort` hook for effects that outlive the call, with bounded cleanup budget.

Introduces `onAbort` hook for effects that outlive the call, with bounded cleanup budget.

Source: llm_adapter@2026-07-18

Confidence: high

Feature Medium

Adds operator‑level deadline ceiling `SKILLSCRIPT_MAX_DEADLINE_SECONDS` enforced on all runs.

Adds operator‑level deadline ceiling `SKILLSCRIPT_MAX_DEADLINE_SECONDS` enforced on all runs.

Source: llm_adapter@2026-07-18

Confidence: high

Feature Medium

Records uncertain effects in `uncertain_effects` when a deadline aborts mid‑flight.

Records uncertain effects in `uncertain_effects` when a deadline aborts mid‑flight.

Source: llm_adapter@2026-07-18

Confidence: high

Feature Low

Introduces `unbounded-no-deadline` lint (tier‑3 advisory) for effectful skills lacking a deadline.

Introduces `unbounded-no-deadline` lint (tier‑3 advisory) for effectful skills lacking a deadline.

Source: llm_adapter@2026-07-18

Confidence: high

Feature Low

Updates `help({topic:

Updates `help({topic:

Source: llm_adapter@2026-07-18

Confidence: low

Feature Low

Propagates remaining deadline to composed children; children can only tighten it.

Propagates remaining deadline to composed children; children can only tighten it.

Source: granite4.1:30b@2026-07-18-audit

Confidence: low

Feature Low

Exceeding the deadline raises an uncatchable `RunDeadlineExceeded` error, returning a partial result flagged `deadline_exceeded`.

Exceeding the deadline raises an uncatchable `RunDeadlineExceeded` error, returning a partial result flagged `deadline_exceeded`.

Source: granite4.1:30b@2026-07-18-audit

Confidence: low

Feature Low

Registry refuses registration of connectors declaring `effectBoundary: "outlives-call"` without an `onAbort` implementation.

Registry refuses registration of connectors declaring `effectBoundary: "outlives-call"` without an `onAbort` implementation.

Source: granite4.1:30b@2026-07-18-audit

Confidence: low

Feature Low

Updates help documentation to include `# Deadline:` frontmatter, operator ceiling, and lint code descriptions.

Updates help documentation to include `# Deadline:` frontmatter, operator ceiling, and lint code descriptions.

Source: granite4.1:30b@2026-07-18-audit

Confidence: low

Full changelog

Upgrade impact: none (additive). Everything here is opt-in: a skill without # Deadline: and a runtime without SKILLSCRIPT_MAX_DEADLINE_SECONDS behave exactly as before (per-op timeouts only). Editing a # Deadline: on an already-approved skill does drop it to Draft (the value is in the signing hash — see below), so a re-approve is needed after such an edit.

Promotes skillscript's leaky per-op timeout into a single propagating wall-clock deadline that bounds a whole run — and everything it composes — with real cancellation, not race-and-abandon. An approver signing a bounded skill now gets both halves they assumed: the run is time-bounded, and in-flight work is actually stopped.

  • # Deadline: N frontmatter. An absolute wall-clock budget (seconds) for the entire run. Set once at the root, propagated by remaining to every composed child (a child inherits the shared instant and can only tighten it, never loosen). Exceeding it terminates the run via an uncatchable RunDeadlineExceeded — op (fallback:) trailers and target else: blocks do not catch it, so a fallback-laden skill can't cascade to a looks-complete result past the bound. The run returns a partial result flagged deadline_exceeded with whatever completed.
  • Real cancellation. A shell(...) op is killed by process-group SIGKILL (the child truly stops). A $ connector.tool dispatch receives an AbortSignal on its ctx.signal — a connector that forwards it to its fetch/RPC genuinely cancels; one that ignores it degrades to today's behavior. Proven end-to-end: a non-responding MCP call + # Deadline: 2 returns at ~2s instead of hanging forever.
  • Bounded cleanup for effects that outlive the call (onAbort). A connector whose effect keeps running after call() returns (a robot motion, a long job) declares effectBoundary: "outlives-call" + an onAbort(budgetMs) hook; on an in-flight cut the runtime aborts the call, then gives onAbort a bounded reserve slice (min(1000ms, remaining)) to issue a real safety-stop — and the whole run still returns within the deadline. The registry hard-refuses to register an outlives-call connector without onAbort (leak-prevention).
  • Operator deadline ceiling (SKILLSCRIPT_MAX_DEADLINE_SECONDS). A hard maximum on every run — enforced even when a skill declares no # Deadline:, on both the server/MCP path and the skillfile execute CLI. A skill's own # Deadline: can only make the bound tighter, never exceed it. The guard against an untrusted (agent) author evading the time bound by simply omitting the deadline. Unset = no ceiling.
  • Uncertain-effect log. An external dispatch cut mid-flight is recorded as uncertain_effects: [{ ..., reason: "issued, outcome uncertain", retry: false }] — aborting stops the client, but the request may already have reached the backend, so the runtime doesn't claim success or failure. Safe default: every shell and $ connector.tool records; only ops the runtime can provably rule out an external effect for are excluded — data_read, json_parse, execute_skill, and $ llm (a prompt→text completion lands nothing external). A connector tool's name can't downgrade it (get_status still records — per-tool read-exclusion is a later effect_class annotation, not a name guess). Surfaced on the execute_skill return envelope and the durable trace record (deadline_exceeded + uncertain_effects), so an autonomous cron/event fire — which has no live caller — still leaves the "a mutation may have landed" signal in the record.
  • # Deadline: is in the approval signing hash. Unlike # Tags:/# Status: (carved out), editing a # Deadline: changes the canonical form → invalidates the signature → drops the skill to Draft. Deliberate: the deadline is the safety envelope the approver signed off on, so any change to it (even tightening) re-approves. The mirror of the # Tags: carve-out.
  • unbounded-no-deadline lint (tier-3 advisory). Nudges a skill that dispatches an effectful op ($ / shell / notify) but declares no # Deadline:.
  • Discoverability. help({topic:"frontmatter"}) documents # Deadline: + the operator ceiling; help({topic:"lint-codes"}) covers unbounded-no-deadline; the adopter playbook gains a deadlines & cancellation section; the README lists SKILLSCRIPT_MAX_DEADLINE_SECONDS as an operator control.

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

Beta — feedback welcome: [email protected]