From 435c5b32895b0770396e00a99eaa3b5cafdcb0dd Mon Sep 17 00:00:00 2001 From: GRayHook Date: Wed, 17 Jun 2026 12:55:47 +0700 Subject: [PATCH] =?UTF-8?q?Phase=2011:=20list=20and=20clear=20tracked=20sk?= =?UTF-8?q?ills=20=E2=80=94=20SPEC=20=C2=A77.1.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Show tracked skill names with sources on list; clear skills array without resetting session toggle. Co-authored-by: Cursor --- src/commands.ts | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) diff --git a/src/commands.ts b/src/commands.ts index 02de8d5..5b4085b 100644 --- a/src/commands.ts +++ b/src/commands.ts @@ -108,6 +108,14 @@ async function handleSkillReinjectCommand( handleGlobalToggle(trimmed, ctx); return; } + if (subcommand === "list") { + showTrackedSkillsList(ctx, deps); + return; + } + if (subcommand === "clear") { + handleClearTrackedSkills(ctx, deps); + return; + } if (ctx.hasUI) { ctx.ui.notify(`skill-reinject: unknown subcommand "${subcommand}"`, "warning"); @@ -154,3 +162,26 @@ function handleGlobalToggle(args: string, ctx: ExtensionCommandContext): void { } ctx.ui.notify(`skill-reinject: global ${action}`, "info"); } + +function showTrackedSkillsList(ctx: ExtensionCommandContext, deps: SkillReinjectCommandDeps): void { + if (!ctx.hasUI) { + return; + } + if (deps.state.skills.length === 0) { + ctx.ui.notify("skill-reinject: no tracked skills", "info"); + return; + } + const lines = deps.state.skills.map( + (skill) => `- ${skill.name} [${skill.sources.join(", ")}]`, + ); + ctx.ui.notify(`tracked skills (${deps.state.skills.length}):\n${lines.join("\n")}`, "info"); +} + +function handleClearTrackedSkills(ctx: ExtensionCommandContext, deps: SkillReinjectCommandDeps): void { + deps.state.skills = []; + deps.persistState(); + if (!ctx.hasUI) { + return; + } + ctx.ui.notify("skill-reinject: cleared tracked skills", "info"); +}