Repository navigation
fix(claude): update each listed plugin once - #156
Merged
Merged
Conversation
`claude plugins list` prints one entry per scope and per project, so claude.upgrade planned one `claude plugins update` per entry: 2054 steps for 17 plugins on `claude`. parse_plugin_list now returns each token once in first-seen order. The backlog row is replaced by the open scope question: update still relies on claude's scope auto-detect. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01RMRWKLc4oBDsXjYryqoNxf
4 tasks done
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
claude plugins listprints one entry per scope and per project, soclaude.upgradeplanned oneclaude plugins updateper entry. Onclaude(2026-10-30) the list holds 2054 entries for 17 plugins.parse_plugin_listnow returns eachname@marketplacetoken once, in first-seen order.claude.installalready folded the tokens into a set of base names, so its behaviour is unchanged.updatestill relies onclaude's scope auto-detect, and the two@syncedtokens have noScope:line.Test Plan
parse_lists_a_plugin_installed_in_several_scopes_once: red before the fix (5 tokens returned), green after.plan_updates_a_plugin_listed_in_several_scopes_once: a fakeclaudeprints each plugin at three scopes, and the plan holds 2 steps.parse_yields_each_listed_token_once_in_first_seen_order, 0 to 40 random entries.make test: 1157 nextest passed, 167 pytest passed.Code review
reviewed-sha: b9eae0f
diff-hash: 26ebf714fdaf1aca06f91d302eb026e244038f6dcc60c73dd67fcccafbc23e65
reviewers: 5/5
Steps 2-3 (CLAUDE.md paths, summary) ran inline: root CLAUDE.md is the only one in scope.
No issues found.
Spec alignment
SKIP: no open plan has a spec: line (backlog bug fix, no plan)
🤖 Generated with Claude Code
https://claude.ai/code/session_01RMRWKLc4oBDsXjYryqoNxf