Skip to content

Skillscript

v0.18.0 Feature

This release adds 1 notable feature 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

Summary

AI summary

Dashboard now expands skill compositions inline, showing called skill contracts without leaving the page.

Full changelog

Reviewer-friendly approval UX. When a human opens a composing skill in
the dashboard to review-and-approve, the body shows
execute_skill(skill_name="get-weather") -> R and inline(skill="voice-rules")
references — but to understand "the whole picture" they previously had
to leave the page and pull up each called skill manually. v0.18.0
collapses that into an inline expansion: click the call site, see the
called skill's contract (Description + Vars + Returns) without leaving
the page.

A. SkillMeta surface completion (prerequisite)

Closes a long-standing gap: SkillMeta declared vars?: string[]
since v0.7, but FilesystemSkillStore.buildMeta() only populated
description. The dashboard composition expansion needs the full
contract (description + vars + returns) — and now everyone calling
skill_metadata MCP gets it.

  • Added returns?: string[] to SkillMeta interface (matches the
    existing vars?: string[] shape)
  • FilesystemSkillStore.buildMeta() now parses the source and
    populates vars + returns from parsed.vars / parsed.returns
  • SqliteSkillStore.metadataRowToMeta() mirrors — source is already
    selected by skillRow(), no extra DB roundtrip
  • skill_metadata MCP tool surfaces them naturally (no MCP-server
    change needed; the interface returns SkillMeta as-is)

B. Dashboard composition expansion (the headline)

New "Composes" section in the skill detail view, between Source and
Triggers. Client-side regex over the skill source finds every
execute_skill(skill_name="X") and inline(skill="X") reference,
deduplicated by (kind, name). Each ref renders collapsed as
→ execute_skill: get-weather (runtime invocation) or
→ inline: voice-rules (compile-time data inline).

Click to expand — lazy-loads the called skill's metadata via
skill_metadata MCP and renders a contract panel:

  • # Description: — intent
  • # Vars: — inputs (the parameter list)
  • # Returns: — outputs (the return signature)
  • Author badge + "Open in detail view →" drill link

For inline (data-only): also fetches the body via skill_read and
renders it under a "Inlined body (bakes at compile)" collapsible —
since the data skill's body literally lands in the host's compiled
artifact at compile time, the reviewer sees what gets baked.

Lazy-load is cached inline (re-collapsing preserves the rendered
panel; re-opening is free). Recursive — each expanded panel can
itself expand its compositions.

Implementation: vanilla JS + native <details> disclosure, no
state framework. Toggle event listener via capture-phase document
delegation since toggle doesn't bubble natively.

Tests

7 new tests in v0.18.0-skillmeta-surface.test.ts covering: description
populated, vars populated (with parser quirk note for bare names in
mixed lists), returns populated, all-three together, omitted-when-absent,
query() per-skill surface. Dashboard SPA logic verified via build +
e2e probe (visual smoke-check on the served app).

1671 tests total. Narrow-core LOC ceiling unchanged at 10500.


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]