Skip to content

feat(studio): Skills surface + controller skills routes - #974

Closed
jtenniswood wants to merge 1 commit into
studio/S08from
studio/S09
Closed

jtenniswood wants to merge 1 commit into
studio/S08from
studio/S09

Conversation

@jtenniswood

Copy link
Copy Markdown

Stack 9/21 — Studio: Skills surface + controller skills routes

The skills surface and, in the same diff, the controller route family that serves it — so each managed-mode write path is reviewed next to the UI that calls it.

  • Skills browse/detail (folder skills browsable, inline SKILL.md), two-step creation, zip/folder upload (skill-upload +tests, fflate), enable/disable with the .disabled holding area, delete; learned-skills panel over PR 5's learned-skills client.
  • One name gate: skill-upload reuses controller-security.mjs's validSkillName — the same validator the controller enforces server-side (deliberately a single shared gate, from PR 3).
  • local-controller.mjs grows its /skills* routes (upload/create/body/files/enable-disable/delete into the pinned .mecatl/skills dir).
  • The skills e2e spec row joins workspace.spec.ts; user-docs gains the skills section; llms regen.

Demo at this stack point: browse/create/upload/enable/disable skills in managed mode; read-only list in external mode (the proxy's 409 table has covered these routes since PR 3).

Part of the stacked landing of #618.

🤖 Generated with Claude Code

Skills browse/detail with provenance (folder skills browsable, SKILL.md
inline), two-step creation, zip/folder upload, enable/disable with the
.disabled holding area, and delete — all controller-mediated in managed
mode, read-only in external mode. skill-upload reuses controller-security's
validSkillName, deliberately the ONE name gate shared by browser and
controller.

local-controller.mjs grows its /skills* route family in the same diff as the
surface that calls it (upload/create/body/files/enable-disable/delete into
the pinned .mecatl/skills dir); the learned-skills panel reads the
learned-skills transport landed with the harness tier. fflate lands with its
consumer; the skills e2e spec row joins workspace.spec.ts.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@jtenniswood jtenniswood added enhancement New feature or request ui WebUI Applies to the WebUI interface labels Sep 2, 2026
@jhrozek jhrozek closed this Sep 12, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

enhancement New feature or request ui WebUI Applies to the WebUI interface

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants