From 5ddf43b5dbca0bf31e73dad02af35aa8877e857f Mon Sep 17 00:00:00 2001 From: Fernando Celmer Date: Sat, 15 Aug 2026 23:29:24 -0300 Subject: [PATCH 1/9] =?UTF-8?q?=E2=9A=99=EF=B8=8F=20FEATURE-#34:=20Add=20s?= =?UTF-8?q?killsRefresh=20to=20ServeArgsOptions?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/core-client/process-args.ts | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/core-client/process-args.ts b/src/core-client/process-args.ts index e16debe..b760de3 100644 --- a/src/core-client/process-args.ts +++ b/src/core-client/process-args.ts @@ -8,6 +8,7 @@ export interface ServeArgsOptions { workspace: boolean; autoApprove: boolean; mcpServers: string[]; + skillsRefresh?: boolean; resolveSetting: (value: string) => string; } @@ -26,6 +27,9 @@ export function buildServeArgs(options: ServeArgsOptions): string[] { if (!options.skills) { args.push("--no-skills"); } + if (options.skillsRefresh) { + args.push("--skills-refresh"); + } if (options.delegation) { args.push("--delegate"); } From 105251de549892b52b2afdb93d003e57b32744cf Mon Sep 17 00:00:00 2001 From: Fernando Celmer Date: Sat, 15 Aug 2026 23:29:24 -0300 Subject: [PATCH 2/9] =?UTF-8?q?=E2=9A=99=EF=B8=8F=20FEATURE-#34:=20Add=20C?= =?UTF-8?q?hatController.reloadSkills=20for=20a=20one-shot=20--skills-refr?= =?UTF-8?q?esh?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/features/chat/chat.controller.ts | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/features/chat/chat.controller.ts b/src/features/chat/chat.controller.ts index 4723aff..6fdf001 100644 --- a/src/features/chat/chat.controller.ts +++ b/src/features/chat/chat.controller.ts @@ -16,6 +16,7 @@ import { FORWARDED_NOTIFICATIONS, PostMessage, ResolveSetting } from "./chat.typ export class ChatController { private client: RpcClient | undefined; + private pendingSkillsRefresh = false; constructor( private readonly context: vscode.ExtensionContext, @@ -158,8 +159,10 @@ export class ChatController { workspace: settings.workspace, autoApprove: settings.autoApprove, mcpServers: settings.mcpServers, + skillsRefresh: this.pendingSkillsRefresh, resolveSetting: (value) => this.resolveSetting(value), }); + this.pendingSkillsRefresh = false; const apiKey = await this.context.secrets.get(API_KEY_SECRET); const auth = this.readAuthFor(settings.provider); const env = spawnEnvForApiKey(apiKey, providerApiKeyEnvNames(auth)); @@ -227,4 +230,9 @@ export class ChatController { this.dispose(); void this.startConnection(); } + + reloadSkills(): void { + this.pendingSkillsRefresh = true; + this.reload(); + } } From be2ce2dbc30a22a96c6447869db66bb847e2dc72 Mon Sep 17 00:00:00 2001 From: Fernando Celmer Date: Sat, 15 Aug 2026 23:29:24 -0300 Subject: [PATCH 3/9] =?UTF-8?q?=E2=9A=99=EF=B8=8F=20FEATURE-#34:=20Add=20r?= =?UTF-8?q?eloadSkills=20to=20the=20WebviewMessage=20union?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/vscode/webview/messages.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/src/vscode/webview/messages.ts b/src/vscode/webview/messages.ts index 498bed0..b72fe4c 100644 --- a/src/vscode/webview/messages.ts +++ b/src/vscode/webview/messages.ts @@ -20,6 +20,7 @@ export type WebviewMessage = | { type: "toggleMemory"; next: boolean } | { type: "manageMcpServers" } | { type: "reload" } + | { type: "reloadSkills" } | { type: "installCli" } | { type: "updateCli" } | { type: "openSettings" } From d49bc085c836cda31036dd77a73544237b82badf Mon Sep 17 00:00:00 2001 From: Fernando Celmer Date: Sat, 15 Aug 2026 23:29:25 -0300 Subject: [PATCH 4/9] =?UTF-8?q?=E2=9A=99=EF=B8=8F=20FEATURE-#34:=20Route?= =?UTF-8?q?=20reloadSkills=20to=20ChatController?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/vscode/sidebar/chatSidebarProvider.ts | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/vscode/sidebar/chatSidebarProvider.ts b/src/vscode/sidebar/chatSidebarProvider.ts index 124047a..206365c 100644 --- a/src/vscode/sidebar/chatSidebarProvider.ts +++ b/src/vscode/sidebar/chatSidebarProvider.ts @@ -141,6 +141,9 @@ export class ChatViewProvider implements vscode.WebviewViewProvider { case "reload": this.chat.reload(); break; + case "reloadSkills": + this.chat.reloadSkills(); + break; case "installCli": this.chat.installCli(); break; From 0b04e563523d1f00bc82f8b1efb7dfb12e478fda Mon Sep 17 00:00:00 2001 From: Fernando Celmer Date: Sat, 15 Aug 2026 23:29:25 -0300 Subject: [PATCH 5/9] =?UTF-8?q?=E2=9A=99=EF=B8=8F=20FEATURE-#34:=20Add=20R?= =?UTF-8?q?eload=20Skills=20menu=20item=20markup?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/vscode/webview/html.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/src/vscode/webview/html.ts b/src/vscode/webview/html.ts index 38f6983..835d071 100644 --- a/src/vscode/webview/html.ts +++ b/src/vscode/webview/html.ts @@ -51,6 +51,7 @@ export function renderChatHtml(options: ChatHtmlOptions): string { Project memory + From bc347c4f418d8d6418b6141277556f2937b383e8 Mon Sep 17 00:00:00 2001 From: Fernando Celmer Date: Sat, 15 Aug 2026 23:29:25 -0300 Subject: [PATCH 6/9] =?UTF-8?q?=E2=9A=99=EF=B8=8F=20FEATURE-#34:=20Track?= =?UTF-8?q?=20menu-reload-skills=20element=20ref?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- media/dom.js | 1 + 1 file changed, 1 insertion(+) diff --git a/media/dom.js b/media/dom.js index b07ba02..7753e11 100644 --- a/media/dom.js +++ b/media/dom.js @@ -34,6 +34,7 @@ const menuDelegationCheck = document.getElementById("menu-delegation-check"); const menuMemory = document.getElementById("menu-memory"); const menuMemoryCheck = document.getElementById("menu-memory-check"); const menuMcp = document.getElementById("menu-mcp"); +const menuReloadSkills = document.getElementById("menu-reload-skills"); const menuReload = document.getElementById("menu-reload"); const menuSettings = document.getElementById("menu-settings"); const statusDot = document.getElementById("status-dot"); From 022a1c73a2a47e139935edf840eb336c21d309c8 Mon Sep 17 00:00:00 2001 From: Fernando Celmer Date: Sat, 15 Aug 2026 23:29:25 -0300 Subject: [PATCH 7/9] =?UTF-8?q?=E2=9A=99=EF=B8=8F=20FEATURE-#34:=20Wire=20?= =?UTF-8?q?Reload=20Skills=20menu=20click?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- media/menu.js | 1 + 1 file changed, 1 insertion(+) diff --git a/media/menu.js b/media/menu.js index dfd1fe0..9e8cdb8 100644 --- a/media/menu.js +++ b/media/menu.js @@ -25,6 +25,7 @@ onMenuClick(menuSkills, () => vscode.postMessage({ type: "toggleSkills", next: ! onMenuClick(menuDelegation, () => vscode.postMessage({ type: "toggleDelegation", next: !delegationEnabled })); onMenuClick(menuMemory, () => vscode.postMessage({ type: "toggleMemory", next: !memoryEnabled })); onMenuClick(menuMcp, () => vscode.postMessage({ type: "manageMcpServers" })); +onMenuClick(menuReloadSkills, () => vscode.postMessage({ type: "reloadSkills" })); onMenuClick(menuReload, () => vscode.postMessage({ type: "reload" })); onMenuClick(menuSettings, () => vscode.postMessage({ type: "openSettings" })); From 9d981eea431594adf351508eff8f67fc9c29399e Mon Sep 17 00:00:00 2001 From: Fernando Celmer Date: Sat, 15 Aug 2026 23:29:25 -0300 Subject: [PATCH 8/9] =?UTF-8?q?=E2=9A=99=EF=B8=8F=20FEATURE-#34:=20Declare?= =?UTF-8?q?=20menuReloadSkills=20global=20for=20ESLint?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- eslint.config.mjs | 1 + 1 file changed, 1 insertion(+) diff --git a/eslint.config.mjs b/eslint.config.mjs index 0f7fb55..d8270b3 100644 --- a/eslint.config.mjs +++ b/eslint.config.mjs @@ -81,6 +81,7 @@ export default tseslint.config( menuMemoryCheck: "writable", menuProvider: "writable", menuReload: "writable", + menuReloadSkills: "writable", menuSessions: "writable", menuSettings: "writable", menuSkills: "writable", From 0e33c7715806888a75e87d63fa030ef3e60eaf37 Mon Sep 17 00:00:00 2001 From: Fernando Celmer Date: Sun, 16 Aug 2026 00:10:12 -0300 Subject: [PATCH 9/9] =?UTF-8?q?=F0=9F=AA=B2=20BUG-#34:=20Clear=20pendingSk?= =?UTF-8?q?illsRefresh=20on=20startConnection's=20early-return=20paths?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/features/chat/chat.controller.ts | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/features/chat/chat.controller.ts b/src/features/chat/chat.controller.ts index 6fdf001..259b116 100644 --- a/src/features/chat/chat.controller.ts +++ b/src/features/chat/chat.controller.ts @@ -31,10 +31,12 @@ export class ChatController { async startConnection(): Promise { if (!readSettings().provider) { + this.pendingSkillsRefresh = false; this.post({ type: "needsSetup" }); return; } if (!(await this.hasCli())) { + this.pendingSkillsRefresh = false; this.post({ type: "cliMissing", command: this.resolveSetting(readSettings().command) }); return; }