TL;DR: memtrace install (0.6.0) lays down the same 18 skills through two channels at once: bare skill dirs under ~/.claude/skills/memtrace-* AND the marketplace plugin memtrace-skills@memtrace. Claude Code loads both. Each skill should then appear twice, and its description gets counted twice in session context.
Not a duplicate of #3: that one was uninstall residue left in settings.json. This is install-time duplication of the skills themselves. Different lifecycle stage, different file, so I'm filing it separately.
Environment
- memtrace 0.6.0 (npm global)
- Claude Code 2.1.165
- macOS 26.4.1, Apple Silicon
- Plugin:
memtrace-skills@memtrace v0.2.0 (18 skills)
What happens
A skill should reach Claude Code through exactly one channel; two channels for the same name means double-counting by construction. The documented path honors that. Its three commands (claude plugin marketplace add, claude plugin install memtrace-skills@memtrace, claude mcp add memtrace) install the skills once, through the plugin.
The all-in-one memtrace install also writes bare skills to ~/.claude/skills/memtrace-*. That is the second channel. Now two live copies of the same 18 skills sit in the same session.
Reproduction
memtrace install
ls -d ~/.claude/skills/memtrace-* | wc -l # 18 bare skill dirs
claude plugin list | grep memtrace-skills # plugin present, same 18 skills
Both channels active at once.
Why it matters
- Each skill should appear twice in Claude Code (the picker, and the eager-loaded skill list).
- The doubled descriptions are expected to cost an estimated 1 to 2k tokens of context per session for zero added capability. That overhead is small per turn but it rides every session.
- Same skill name from two sources is genuinely confusing to reason about.
What we tried
Deleting the bare skills (rm -rf ~/.claude/skills/memtrace-*) cleans it up, and the documented marketplace + plugin + MCP setup keeps working. The fix does not stick, though. The next memtrace install (including the self-update path) recreates the bare skills, so the dedup never survives a reinstall. Verified 2026-06-04.
Suggested fix (any one of)
- Install skills through a single channel (the plugin), and skip the bare-skill writes when the plugin is present.
- Or make the bare-skill layer opt-in behind a flag, with the plugin as the default.
- Or detect an existing
memtrace-skills@memtrace plugin and no-op the bare layer.
Note
The bare skills are not part of the documented setup, so this is memtrace install behavior rather than the prescribed path. There may be a reason the installer wants its own copy that I am not seeing. If not, aligning the all-in-one installer with the single-channel documented setup would clearly close the gap. Happy to send a PR if useful.
TL;DR:
memtrace install(0.6.0) lays down the same 18 skills through two channels at once: bare skill dirs under~/.claude/skills/memtrace-*AND the marketplace pluginmemtrace-skills@memtrace. Claude Code loads both. Each skill should then appear twice, and its description gets counted twice in session context.Not a duplicate of #3: that one was uninstall residue left in
settings.json. This is install-time duplication of the skills themselves. Different lifecycle stage, different file, so I'm filing it separately.Environment
memtrace-skills@memtracev0.2.0 (18 skills)What happens
A skill should reach Claude Code through exactly one channel; two channels for the same name means double-counting by construction. The documented path honors that. Its three commands (
claude plugin marketplace add,claude plugin install memtrace-skills@memtrace,claude mcp add memtrace) install the skills once, through the plugin.The all-in-one
memtrace installalso writes bare skills to~/.claude/skills/memtrace-*. That is the second channel. Now two live copies of the same 18 skills sit in the same session.Reproduction
Both channels active at once.
Why it matters
What we tried
Deleting the bare skills (
rm -rf ~/.claude/skills/memtrace-*) cleans it up, and the documented marketplace + plugin + MCP setup keeps working. The fix does not stick, though. The nextmemtrace install(including the self-update path) recreates the bare skills, so the dedup never survives a reinstall. Verified 2026-06-04.Suggested fix (any one of)
memtrace-skills@memtraceplugin and no-op the bare layer.Note
The bare skills are not part of the documented setup, so this is
memtrace installbehavior rather than the prescribed path. There may be a reason the installer wants its own copy that I am not seeing. If not, aligning the all-in-one installer with the single-channel documented setup would clearly close the gap. Happy to send a PR if useful.