2a9f57c505
The composer's "Use skill: X" pill only checked the draft text and the workspace-name collision - it happily re-offered a skill the session had already loaded (skill_view), edited (skill_manage), or that the user had invoked via its /name command. Clicking it would re-inject the full SKILL.md into a context that already carries it. The draft provider now scans the session transcript (per-runtime $sessionStates mirror, $messages for the active session) for skill_view/skill_manage tool calls naming the skill - exact or qualified (category/name, plugin:name), from parsed args or hydrated argsText - and for user turns starting with the skill's slash command, and stands down on a hit. The scan only runs when the draft actually matched a skill, so ordinary typing pays nothing.