Skip to content

plugin-check passes while claude plugin validate reports an ICON_MISSING advisory #474

Closed

Description

@randomparity

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

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:

  1. Add an icon. Add a square PNG (512–2048 px, under 2 MB) at .claude-plugin/icon.png, or set icon in plugin.json. Choose it deliberately: the validator says the first save or submit to the developer portal sets the listing icon permanently.
  2. Accept the advisory. Amend .claude/CLAUDE.md:84 (and the Justfile comment) 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

  1. added
    status:readytriaged, eligible for work
    risk:daytime-onlyHard to undo or security/public-boundary sensitive; never enters an unattended queue
    effort:SSmall; hours, single sitting
    type:choreMaintenance work; no user-visible behavior change
    area:distributionPlugin packaging, releases, publishing, and external listings
    and removed
    status:readytriaged, eligible for work
    on Oct 25, 2026
  2. randomparity commented on Oct 28, 2026

    @randomparity
    OwnerAuthor

    Scope — issue #474

    • scope identity: plugin-check passes while claude plugin validate reports an ICON_MISSING advisory #474 ; token q474-ccf59292
    • outcome: Resolve the ICON_MISSING directory advisory by reusing the existing adept logo and make the validator comment accurate.
    • completion criteria: Set a supported manifest icon path to docs/assets/adept-logo-grimoire.png; real Claude validation reports no icon advisory or other warnings; correct the Justfile claim that strict promotes every warning; bump plugin version to 7.12.2. Sources: issue plugin-check passes while claude plugin validate reports an ICON_MISSING advisory #474 Expected and approved existing-logo scope, ADR 0022.
    • provenance: Human-run campaign b1585fdb272b-a6e63ed1-282e-48e3-a903-aedeb037fe5c; operator explicitly approved enqueueing plugin-check passes while claude plugin validate reports an ICON_MISSING advisory #474 and selected "Approve existing-logo scope (Recommended)" on 2026-10-27. Approval covers these criteria and the explicitly empty exclusion/owner set. ADR 0022 Accepted (2026-08-19) governs zero-warning strict validation and version policy.
    • exclusions: empty; owners: empty.
    • surface: .claude-plugin/plugin.json (existing icon reference and assigned version 7.12.2), Justfile validator comment; direct dependency docs/assets/adept-logo-grimoire.png reused unchanged. Existing validator owns acceptance. No ownership transition, caller migration, obsolete path, ADR, or migration is needed.
    • ambiguities: empty.
    • interaction: interactive.

    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.

  3. added
    status:in-reviewadversarial review of the branch running; a PR may not be open yet
    status:awaiting-mergegreen + mergeable; human just clicks merge
    and removed
    status:in-reviewadversarial review of the branch running; a PR may not be open yet
    on Oct 28, 2026
  4. randomparity commented on Oct 28, 2026

    @randomparity
    OwnerAuthor

    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

  5. randomparity commented on Oct 28, 2026

    @randomparity
    OwnerAuthor

    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.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    area:distributionPlugin packaging, releases, publishing, and external listingseffort:SSmall; hours, single sittingpriority:P3Low priorityrisk:daytime-onlyHard to undo or security/public-boundary sensitive; never enters an unattended queuetype:choreMaintenance work; no user-visible behavior change

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions