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) <noreply@anthropic.com>
This commit is contained in:
deseltrus 2026-03-15 06:54:11 +01:00
parent fe03743b08
commit 0c9cbf6b4c
2 changed files with 15 additions and 4 deletions

View file

@ -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;

View file

@ -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");
}