Repository navigation
Description
Problem
claude plugin validate ./ --strict (Claude Code 2.1.310) passes at exit 0 but prints one plugin-directory advisory:
.claude-plugin/plugin.json icon: No icon (ICON_MISSING)… "These plugin directory checks do not change the result below."
The repo rule says plugin validation passes "with no warnings. Any warning is a defect." Because the advisory doesn't change the exit status, just plugin-check stays green while the rule is broken. Nothing records whether this advisory counts as a warning or has been accepted.
Evidence
.claude/CLAUDE.md:84: "just plugin-checkrunsclaude plugin validate ./ --strict, which passes at exit 0 with no warnings. Any warning is a defect."Justfile:263-265: the recipe runsclaude plugin validate ./ --strictand relies on its exit status only..claude-plugin/plugin.json:1-8: noiconfield..claude-plugin/holds onlymarketplace.jsonandplugin.json, with noicon.pngoricon.svg.- Reproduced on
mainatb9d9288: the output shows "⚠ Found 1 plugin directory warning", then "✔ Validation passed", exit 0. First seen during the assembled-branch check for Operator-configurable model preferences per selection tier #472 (PR docs: add operator model preferences per selection tier #473, which changed only the version). - Related, closed: plugin-check fails on CLI 2.1.289: root CLAUDE.md flagged by strict plugin validation #442, an earlier strict-validation warning that plugin-check did catch.
Expected
Either the plugin ships an icon the validator accepts, or the repository records that plugin-directory advisories are outside the "any warning is a defect" rule and why. Either way, the guardrail and the stated rule agree.
Proposed approach
Pick one:
- Add an icon. Add a square PNG (512–2048 px, under 2 MB) at
.claude-plugin/icon.png, or seticoninplugin.json. Choose it deliberately: the validator says the first save or submit to the developer portal sets the listing icon permanently. - Accept the advisory. Amend
.claude/CLAUDE.md:84(and theJustfilecomment) to say plugin-directory advisories don't fail the gate and why, with an ADR if the choice needs recording.
Don't make the gate grep the validator's prose for advisories (anatomy rule 4).
Activity
randomparity commentedon Oct 28, 2026
Scope — issue #474
Tracking metadata: blast radius: plugin metadata and validator comment, one existing image dependency; change hazards: none after explicit identity choice, with no portal write; complexity: S; decompose: one PR; classification: governed-small-change; artifact lane: no-spec; review depth: single-pass; design denominator: not-applicable (no-spec).
Assessment provenance: live issue #474, manifest, Justfile, existing logo, and accepted ADR 0022 at 1a08f22. No persisted WORK:DIVINATION exists. Decision kind: accepted ADR; accepted non-superseded ADR 0022 governs manifest version and strict validation; one independently testable slice, no new architecture or contract.
randomparity commentedon Oct 28, 2026
Outcome: handed off — PR #477 is green and mergeable, awaiting campaign merge.
Branch: feat/existing-plugin-icon-474; base: main.
Validation: real strict and directory-profile plugin validation passed without warnings; shape and base-aware version gates passed. One managed pre-push full local run passed 30 test suites; push wrapper observed 829 seconds. Verify CI passed on Ubuntu (706 seconds) and macOS (1563 seconds); aggregate verify and site build passed; PR deployment skipped.
Review: single-pass consumer-installation gauntlet approved with zero findings and zero suppressions; cumulative review rounds 1/1. Security not triggered; simplification required no edit. No follow-up candidates, deferrals, rejected findings, outstanding notes, or bounty occurrences.
Verified review publication: #477 (comment)
Surprises: none. Completion notes: none. No merge or cleanup performed by the campaign worker.
MERGE-READY: #477 @ 85cc743
randomparity commentedon Oct 28, 2026
outcome: merged via PR #477 at 5965aea; issue closed completed.
verification: exact reviewed head85cc7435f5c2ddc351d890be9212358e8df1ec23 passed four-part merge gate; one full local suite, final Ubuntu/macOS CI passed; strict directory validation warning-free; no merge-helper refresh required.
follow-ups: none. Main-triggered workflows after this merge are unverified.