Repository navigation
Conversation
The Claude plugin directory check reported "No icon" for the ksail plugin. Add the KSail app icon (1024x1024 PNG from devantler-tech/ksail desktop/resources/icon.png) at .claude-plugin/icon.png, the path the directory reads by convention, so no manifest field is needed and the portable and strict manifests stay identical. Bump ksail to 1.0.1. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The OpenAI plugin directory reads its listing from .codex-plugin/plugin.json: display name, short and long descriptions, category, links, example prompts, brand colours, logo and composer icon. Add one for ksail that repeats the portable manifest (validate-manifests.sh enforces parity), loads the skill and the ksail MCP server, and points both icons at the existing .claude-plugin/icon.png. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
a674cde to
7642deb
Compare
… guard The ksail plugin's listing icon (.claude-plugin/icon.png) is the first image packaged under plugins/, and the guard reported UNKNOWN for it because every file type it does not scan fails closed. That is the intended design: extend the list rather than skip a new kind of file. A raster image is pixels, not prose an agent reads, so it cannot prescribe a gh field. But its name proves nothing, so .png, .jpg, .jpeg and .webp files are skipped only when they are regular, unlinked files whose leading bytes match their format's signature. Text named icon.png, an empty file, a mismatched signature or a symlink stays UNKNOWN. Tests cover each case. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@coderabbitai review |
Action not completed
|
|
Warning Review limit reachedYou've used all free OSS reviews for now. Wait for the free limit to reset to keep reviewing this public repository. Next included review available in 59 minutes. View limit details
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. |
@coderabbitai review |
Action not completed
|
|
|
@cursor review |
Bugbot couldn't run - usage limit reachedBugbot is counted against Cursor usage for this user or team, and this run hit a usage or spend limit. A user or team admin can review and increase usage limits in the Cursor dashboard. (requestId: cbba0178-2273-4bbb-9185-582f5f971801) |
devantler
left a comment
There was a problem hiding this comment.
🤖 Generated by the Agentic Engineer
Self-review (fallback — CodeRabbit, Codex and Cursor Bugbot unavailable)
Reviewed commit: 4acfad9c939d050e3776ee755c5e64887adc1351
- CodeRabbit: free OSS review limit reached for the organization ("Review limit reached", next included review in 59 minutes, this PR, 2026-11-04T23:33:57Z), after an earlier refusal at 23:19Z.
- Codex: usage limit for code reviews reached (#656, 2026-11-04T21:33:52Z); only the maintainer can lift it.
- Cursor Bugbot: "usage limit reached" (this PR, check-run neutral/Error, 2026-11-04T23:36:17Z); only a Cursor admin can lift it.
Independent review of 5e3cd8e..4acfad9c939d050e3776ee755c5e64887adc1351. I ran adversarial fixtures against the guard under bash 5 and macOS bash 3.2 with BSD od: unreadable, FIFO, dangling and directory symlinks, truncated or wrong-magic WebP, uppercase .PNG, and text named .png. Each one stayed UNKNOWN. I also checked every listing field against the OpenAI limits (lengths, category, unique prompts, HTTPS URLs, contrast 13.25:1 and 7.79:1), the icon (1024×1024 RGBA, 49,695 bytes, no text chunks, byte-identical to ksail's desktop/resources/icon.png), validate-manifests, the version-bump and changelog gates, the guard self-test (153/153) and shellcheck -x.
Verdict: no P0/P1 findings
…ilure paths Local review round nits: - The comment claimed more than the check does. Only the leading signature is read; text after it, or in a PNG text chunk, is not inspected, because agents open image files as images. Say so, and say that the skip applies to images anywhere under plugins/. - Cover the untested fail-closed paths: a FIFO named .png, an uppercase .PNG, and an unreadable .png (skipped when running as root, which reads it anyway). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Summary
Gets the
ksailplugin ready for both plugin directories.Claude plugin directory, "No icon": adds the KSail app icon at
plugins/ksail/.claude-plugin/icon.png, the path the directory reads by default. It isdesktop/resources/icon.pngfromdevantler-tech/ksail, a 1024 × 1024 RGBA PNG of 49 KB. The directory accepts square PNGs from 512 to 2048 px and under 2 MB.OpenAI (Codex) plugin directory: adds
plugins/ksail/.codex-plugin/plugin.json. Codex reads that file before.claude-plugin/plugin.json. It repeats the portable manifest, loads./skills/and./.mcp.json, and holds the listing ininterface:KSail, short descriptionCreate Kubernetes clusters, and a long descriptionDeveloper Tools, with capabilitiesInteractive,ReadandWritehttps://ksail.devantler.tech/and supporthttps://github.com/devantler-tech/ksail/issues#143150and#2EC4E6logoandcomposerIconboth pointing at the same iconAll fields are within the directory's final limits (short description 26 of 30 characters, prompts at most 88 of 128).
Version:
ksailgoes from 1.0.0 to 1.0.1 withscripts/bump-plugin-version.sh. The plugin's firstCHANGELOG.mdand the Codex note indocs/installation.mdare added.scripts/guard-gh-json-fields.sh: the icon is the first image packaged underplugins/, and the guard fails closed (UNKNOWN) on any file type it doesn't scan, which failed Test packaged resources. It now skips.png,.jpg,.jpegand.webpfiles, but only when they are regular, unlinked files whose leading bytes match the format's signature. Text namedicon.png, an empty file, a mismatched signature or a symlink stays UNKNOWN, and the self-test covers each case.Directory findings this PR does not change
The local MCP server (
ksail open mcp) stays. The maintainer decided to keep it.ksailis a Go CLI the user installs separately, so bundling a binary for every platform isn't practical.devantler-techneeds Verified status or the plugin must drop its local MCP server..mcp.json. Installs from this marketplace keep the MCP server.Validation
Run locally, all exit 0:
./scripts/validate-manifests.sh, including a negative control: changing only the Codex manifest's version fails withdiffers from plugins/ksail/plugin.json beyond Codex's skills, mcpServers, apps and interface./scripts/check-plugin-version-bump.sh <merge-base> HEAD(ksail 1.0.0 → 1.0.1)bash scripts/plugin-changelog.sh check <merge-base> HEADbash scripts/check-marketplace-version.sh <merge-base> <head>bash scripts/package-discovery.test.shbash scripts/package-boundaries.test.sh./scripts/guard-gh-json-fields.sh(OK across 286 surfaces, icon included), andbash scripts/guard-gh-json-fields.test.shpassing 153 of 153 under both bash 5 and macOS bash 3.2shellcheck -xon both guard files🤖 Generated with Claude Code