From 0c9cbf6b4c4bdfe1de1707a49c456e4d0656ab1e Mon Sep 17 00:00:00 2001 From: deseltrus Date: Sun, 15 Mar 2026 06:54:11 +0100 Subject: [PATCH] fix(ux): differentiate skill diagnostics and improve prefs discoverability Split skill diagnostics into [Skill conflicts] (actual collisions) and [Skill issues] (validation warnings like missing description) so users aren't misled by the label. Add wizard hint to /gsd prefs output. Co-Authored-By: Claude Opus 4.6 (1M context) --- .../src/modes/interactive/interactive-mode.ts | 17 ++++++++++++++--- src/resources/extensions/gsd/commands.ts | 2 +- 2 files changed, 15 insertions(+), 4 deletions(-) diff --git a/packages/pi-coding-agent/src/modes/interactive/interactive-mode.ts b/packages/pi-coding-agent/src/modes/interactive/interactive-mode.ts index 4d098f59c..3f7a37848 100644 --- a/packages/pi-coding-agent/src/modes/interactive/interactive-mode.ts +++ b/packages/pi-coding-agent/src/modes/interactive/interactive-mode.ts @@ -998,9 +998,20 @@ export class InteractiveMode { if (showDiagnostics) { const skillDiagnostics = skillsResult.diagnostics; if (skillDiagnostics.length > 0) { - const warningLines = this.formatDiagnostics(skillDiagnostics, metadata); - this.chatContainer.addChild(new Text(`${theme.fg("warning", "[Skill conflicts]")}\n${warningLines}`, 0, 0)); - this.chatContainer.addChild(new Spacer(1)); + const collisionDiags = skillDiagnostics.filter(d => d.type === "collision"); + const issueDiags = skillDiagnostics.filter(d => d.type !== "collision"); + + if (collisionDiags.length > 0) { + const collisionLines = this.formatDiagnostics(collisionDiags, metadata); + this.chatContainer.addChild(new Text(`${theme.fg("warning", "[Skill conflicts]")}\n${collisionLines}`, 0, 0)); + this.chatContainer.addChild(new Spacer(1)); + } + + if (issueDiags.length > 0) { + const issueLines = this.formatDiagnostics(issueDiags, metadata); + this.chatContainer.addChild(new Text(`${theme.fg("warning", "[Skill issues]")}\n${issueLines}`, 0, 0)); + this.chatContainer.addChild(new Spacer(1)); + } } const promptDiagnostics = promptsResult.diagnostics; diff --git a/src/resources/extensions/gsd/commands.ts b/src/resources/extensions/gsd/commands.ts index 1ebb86f09..781800211 100644 --- a/src/resources/extensions/gsd/commands.ts +++ b/src/resources/extensions/gsd/commands.ts @@ -540,5 +540,5 @@ async function ensurePreferencesFile( await ctx.waitForIdle(); await ctx.reload(); - ctx.ui.notify(`Edit ${path} to update ${scope} GSD skill preferences.`, "info"); + ctx.ui.notify(`Edit ${path} to update ${scope} GSD skill preferences.\nRun /gsd prefs wizard for interactive setup.`, "info"); }