[BUG] Slash-command skill invocations (/plugin:skill) don't update plugin "last used"

Status Open
Reported on v2.1.221
Maintainer reply None cached
Activity 0 comments · opened Aug 4, 2026

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

  1. Install a plugin from a marketplace that provides a skill (e.g. my-plugin providing my-skill).
  2. Leave it unused long enough that /plugin flags it under "Not used recently" (2+ weeks over 10+ sessions).
  3. Invoke one of its skills via slash command: /my-plugin:my-skill.
  4. 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).

View original on GitHub ↗