Skip to content

chore(plugin): prepare iwdp-mcp for the plugin directory - #9

Merged
nnemirovsky merged 5 commits into
mainfrom
chore/directory-listing
Oct 3, 2026
Merged

nnemirovsky merged 5 commits into
mainfrom
chore/directory-listing

Conversation

@nnemirovsky

Copy link
Copy Markdown
Owner

Addresses the plugin directory validation on 7ca767f.

  1. scripts/run.sh fetched whatever release was latest and ran it unchecked. It also never updated a cached binary after a newer release. Now it reads the version from plugin.json, downloads that tag's asset to a temp file, checks it against the release's checksums.txt, and only then installs it as bin/iwdp-mcp-<version>. A mismatch refuses to run. Unsupported OS/arch fails with a message. The "scripts the validator couldn't follow" hold stays by design (a launcher that downloads a binary always goes to a reviewer), but the reviewer now sees a pinned, verified download.
  2. CLAUDE.md moved to .claude/CLAUDE.md (root one is flagged), with notes on the release/plugin version coupling and the validator rules.
  3. PRIVACY.md: first-run GitHub download, localhost-only otherwise, tool results can carry page data (cookies, storage, network).
  4. plugin.json: author, homepage, repository, docs, support, privacy policy, license, keywords.

No version bump: run.sh downloads the release matching plugin.json, and bumping without a tagged release would break startup.

Tested run.sh from a path with a space: first run downloads and verifies v0.5.3, server answers initialize; second run uses the cached binary; a forced checksum miss refuses to run and leaves nothing behind. shellcheck clean.

…ts checksum

run.sh fetched whatever release was latest from the GitHub API and ran it unchecked, once, forever: a later release never replaced the cached binary, and nothing confirmed the download was the file goreleaser built. The plugin directory also holds a plugin whose launcher runs a file it cannot read, so a reviewer will look at exactly this.

The version now comes from .claude-plugin/plugin.json, so each plugin version runs the binary from its own release tag. The download goes to a temp file, is checked against that release's checksums file, and only then is moved into place as bin/iwdp-mcp-<version>. A mismatch or a missing entry refuses to run. Unsupported OS or architecture now fails with a message instead of a 404.
…ory rules

A CLAUDE.md at the plugin root is never loaded as plugin context and the validator warns about it. .claude/CLAUDE.md still loads as project memory.

Also notes that run.sh now needs the tag's release to exist before that plugin version can start, and the validator rules that cause policy holds.
The directory's compliance step asks to confirm the plugin's privacy policy describes the data it handles. This one covers the first-run download from GitHub, that the server otherwise only talks to localhost, and that tool results can carry page data such as cookies and storage.
The validator warned about the missing author. Without explicit links the listing scrapes them from the README, whose first link is the CI badge.
The validator warned that there was none. The portal reads it only on the first save, so it has to land before submitting.
@nnemirovsky
nnemirovsky merged commit e2289e0 into main Oct 3, 2026
5 of 6 checks passed
@nnemirovsky
nnemirovsky deleted the chore/directory-listing branch October 3, 2026 09:26
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant