From 8d658ec775b3b2629a267ac9f208f409a14652b8 Mon Sep 17 00:00:00 2001 From: Grant Doyle Date: Tue, 19 May 2026 11:45:59 -0500 Subject: [PATCH 1/2] =?UTF-8?q?feat:=20skills=20=E2=80=94=20user-authored?= =?UTF-8?q?=20on-demand=20instruction=20bundles,=20model-agnostic?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Adds first-class support for skills using Anthropic's progressive-disclosure pattern, but executed locally through the Databricks AI Gateway so it works across every model (Claude / GPT / Gemini / Llama / Qwen / custom). How it works: - At chat time, an block is injected into the system prompt listing each enabled skill's slug + one-line description. - The model sees the manifest and, when relevant, calls the new built-in load_skill(slug) tool. The renderer reads the corresponding SKILL.md body from disk and returns it as the tool result. The model then has the full instructions for its next turn. - No beta headers, no Anthropic-specific path, no sandboxed container — just regular function tools that every chat-capable model supports. Discovery: - ~/.mason/skills//SKILL.md — user-authored, edited in Settings - ~/.ai-dev-kit/repo/databricks-skills//SKILL.md — auto-discovered, read-only. Forward-compatible with ai-dev-kit's planned skills-only releases; the existing MCP path continues to work in parallel. UI: - Settings → Skills: list discovered skills with source, description, enable toggle. + New Skill opens an editor modal (name, description, markdown body). Edit and delete are user-skill-only. Auto-load toggle mirrors the MCP tools pattern. - + icon → Skills: modal mirroring the Tools modal — quick enable/disable per skill, grouped by source, with counter. Persistence: - ~/.mason/config/skills.json: { disabledSkills: [], autoLoadSkills: true } Format is Anthropic-compatible (YAML frontmatter with name + description, then markdown body), so user-authored skills are portable to other clients. Bumps to 1.4.0 since this is a meaningful new surface. Co-authored-by: Isaac --- .release-please-manifest.json | 2 +- css/app.css | 9 ++ index.html | 54 +++++++ package-lock.json | 4 +- package.json | 2 +- src/app.ts | 268 ++++++++++++++++++++++++++++++++++ src/chat.ts | 71 ++++++++- src/dashboards.ts | 8 + src/main.ts | 181 +++++++++++++++++++++++ src/preload.ts | 7 + src/shared/api.ts | 32 ++++ src/state.ts | 5 + src/tools.ts | 20 ++- src/types/state.d.ts | 19 +++ 14 files changed, 673 insertions(+), 9 deletions(-) diff --git a/.release-please-manifest.json b/.release-please-manifest.json index 945d474..4c313f9 100644 --- a/.release-please-manifest.json +++ b/.release-please-manifest.json @@ -1,3 +1,3 @@ { - ".": "1.3.13" + ".": "1.4.0" } diff --git a/css/app.css b/css/app.css index 0cc49ab..880b41d 100644 --- a/css/app.css +++ b/css/app.css @@ -730,6 +730,15 @@ } .modal-input:focus { border-color: #007aff; } body.dark .modal-input { background: #1e1e1e; border-color: #444; color: #e0e0e0; } + .modal-error { + color: #c00; + font-size: 0.82rem; + margin: -4px 0 12px; + padding: 6px 8px; + background: #fff5f5; + border-radius: 6px; + } + body.dark .modal-error { background: #2e1a1a; color: #ff8888; } .modal-btns { display: flex; gap: 8px; justify-content: flex-end; } .modal-btn { padding: 8px 16px; diff --git a/index.html b/index.html index 55bfb44..f2d485a 100644 --- a/index.html +++ b/index.html @@ -106,6 +106,16 @@

MASON

Tools + +
+
+
Skills
+ +
+
Specialized instruction bundles loaded on-demand when the LLM determines they're relevant. User skills live at ~/.mason/skills/; ai-dev-kit skills are read-only.
+
+
+
+
Auto-load skills
+
When on, new skills are enabled by default
+
+ +
+
Default Model
@@ -332,6 +361,31 @@

Available Tools

+ + + + +