[BUG] Slash-command skill invocations (/plugin:skill) don't update plugin "last used"
Preflight Checklist
- [x] I have searched existing issues and this hasn't been reported yet
- [x] This is a single bug report (please file separate reports for different bugs)
- [x] I am using the latest version of Claude Code
What's Wrong?
Invoking a plugin's skill via its slash command (/plugin-name:skill-name) does not update that plugin's "last used" timestamp. Because of this, /plugin keeps showing the plugin under "not used in N days", and the startup tip ("You have N plugins you haven't used in a while... review them with /plugin") keeps firing, even though a skill from that plugin was invoked the same day.
Invoking the same skill via the Skill tool does appear to count. Only the slash-command path is missed. So a plugin whose skills you only ever trigger by slash command will permanently read as "unused".
What Should Happen?
Invoking a plugin's skill via slash command should count as using that plugin: the "not used in N days" counter should reset and the plugin should drop out of the "Not used recently" list / startup tip.
Error Messages/Logs
# ~/.claude/plugins/.last_inuse_sweep re-ran AFTER a slash-command skill invocation
# without crediting it (sweep timestamp advanced; plugin day-count did not reset):
$ cat ~/.claude/plugins/.last_inuse_sweep
2026-08-04T11:44:17.148Z
# Session transcript logs the invocation as a slash command with ZERO Skill tool_use events:
$ grep -o "<command-name>/my-plugin:my-skill</command-name>" session.jsonl
<command-name>/my-plugin:my-skill</command-name>
$ grep -c '"name":"Skill"' session.jsonl
0
Steps to Reproduce
- Install a plugin from a marketplace that provides a skill (e.g.
my-pluginprovidingmy-skill). - Leave it unused long enough that
/pluginflags it under "Not used recently" (2+ weeks over 10+ sessions). - Invoke one of its skills via slash command:
/my-plugin:my-skill. - Open
/plugin.
Observed: the plugin still shows "not used in N days" (N unchanged), and the startup "unused plugins" tip still appears on the next session. Confirmed the sweep ran after the invocation (.last_inuse_sweep timestamp is later than the invocation) without resetting the count. Invoking the same skill via the Skill tool instead does reset it.
Claude Model
Opus
Is this a regression?
I don't know
Last Working Version
_No response_
Claude Code Version
2.1.221
Platform
Anthropic API
Operating System
macOS
Terminal/Shell
iTerm2
Additional Information
Likely cause: the last-used attribution keys off skill_activated / Skill-tool events and doesn't fire on the slash-command handler path, so /plugin:skill invocations never advance the timestamp. Sweep state lives in ~/.claude/plugins/.last_inuse_sweep; per-plugin usage appears to be tracked separately (not in installed_plugins.json, which only holds installedAt/lastUpdated).