8000 [compass] Every product installs as a Claude Code plugin: Inkbolt's plugin, skill and evals by skulitom · Pull Request #5 · skulitom/Inkbolt · GitHub
[go: up one dir, main page]

Skip to content

[compass] Every product installs as a Claude Code plugin: Inkbolt's plugin, skill and evals - #5

Open
skulitom wants to merge 6 commits into
mainfrom
compass/followup-2026-10-23-C-065
Open

skulitom wants to merge 6 commits into
mainfrom
compass/followup-2026-10-23-C-065

Conversation

@skulitom
@skulitom skulitom commented Oct 23, 2026 •
Copy link
Copy Markdown
Owner

What changed

This PR adds plugin files, a skill, eval cases and two README install commands. No source, test, Cargo or tools/ file changes.

  • .claude-plugin/plugin.json starts the release binary from PATH as inkbolt --workspace ${CLAUDE_PROJECT_DIR} mcp --tools core. The user's project folder becomes the workspace, with no build step. mcpServers lives in plugin.json, not a root .mcp.json, so your own sessions in this repo aren't asked to approve a server.
  • .claude-plugin/marketplace.json names the marketplace inkbolt, so the install is claude plugin marketplace add skulitom/Inkbolt, then claude plugin install inkbolt@inkbolt.
  • skills/inkbolt/SKILL.md:
    • its description uses the words people use when they ask for an icon, logo, diagram, banner, recolouring, cropping or an export, and says when not to use Inkbolt (video, audio, a PDF's text, plotting or HTML code);
    • its body is the v0.82.0 core workflow (discover, create or import, add_svg edits with expected_revision, preview, create-only document.publish), checked against the release binary;
    • it covers the missing-binary case (see below).
  • evals/: evals/README.md gives the run command, and four user-worded cases for claude plugin eval. Three should use Inkbolt (an app icon from scratch, recolouring an SVG logo, a labelled README diagram that needs a font import). One should not (a video trim). The mock's _tools.json is v0.82.0's real tools/list with --tools core, all three pages (22 tools). The _server.md reply shapes and error codes come from the release binary: REVISION_CONFLICT, OUTPUT_EXISTS, PATH_OUTSIDE_WORKSPACE, INVALID_PATH, SVG_IO, SVG_FONT_NOT_BOUND and UNSUPPORTED.
  • README, Get started: one paragraph and the two install commands. Nothing else in the README changes.

The missing binary

With inkbolt off PATH, claude mcp list shows plugin:inkbolt:inkbolt … ✘ Failed to connect — CONNECTION_CLOSED. With the v0.82.0 Windows release on PATH it shows ✔ Connected. Both were tested on a throwaway CLAUDE_CONFIG_DIR after marketplace add and install. The fix is the skill route: a "When Inkbolt isn't installed" section gives the release download, the SHA256SUMS check, PATH, the macOS quarantine line, inkbolt --help and a restart. A launcher that downloads the binary would mean new code in the plugin.

Checks

  • claude plugin validate --strict passes for both manifests (Claude Code 2.1.302).
  • python -X utf8 tools/check_repo.py, --public, and tests/test_repo_guard.py (14 tests) pass. Every new file is .json, .md or evals/.gitignore, LF.
  • No third-party product names appear in any new file (AGENTS.md's public-material rule).
  • Evals (claude plugin eval, Claude Code 2.1.302, both arms, one run per case, --disallow-tools Glob Grep Read as evals/README.md says; on da84b81): 4/4 cases pass.
    • The skill fired in all 3 graphics cases and never in the video case.
    • With the plugin the score is 1.00; the no-plugin baseline is 0.25 (the video case alone).
    • Times: app icon 122 s, recolour 113 s, diagram with a font 209 s. Cost: $3.20 notional.
    • 84b6b69 after it changed only the skill's photo and SVG lines and the matching mock lines, which none of the four cases uses.
  • Reviews: five read-only Codex CLI passes (gpt-6-astra). Each P2 was checked against the v0.82.0 binary and fixed.
    • Recolouring goes through op: "vector" with the item's whole content (properties and fill reject colours).
    • The grader accepts RGBA paint.
    • The mock has all three tools/list pages (22 tools, not 8).
    • Image imports return a receipt, which is then placed. Pixel edits go through sample.import (PNG or TIFF in v0.82.0, with storage: {}).
    • Text needs font_put plus font_bindings, and font_import returns a bare descriptor.
    • SVG export is for vector documents only.
    • Eval reports under evals/results/ are git-ignored, so the guard stays green.
    • The fifth pass, on 84b6b69, found "No actionable regressions".

For your sessions: proposed, not changed (your source)

Instructions (initialize.instructions, 568 characters today). Prepend one sentence on when to choose Inkbolt:

Use Inkbolt when the user wants an image file made or changed: icons, logos, diagrams, illustrations, banners, recolouring, cropping, masking or retouching PNG, JPEG, TIFF or SVG, and exports to PNG, JPEG, SVG or PDF. Not for video, audio or a PDF's text. Local, no account, no API key.

First replies (v0.82.0, --tools core, measured over MCP):

Call Characters
tools/list, first page (8 tools) 26,301 (over 10,000)
tools/list, all three pages (22 tools) 90,111
schema.lookup index 1,913
schema.lookup operation (outline) 9,655
schema.lookup document.publish (outline) 3,318
schema.lookup document.publish select: Options6 (the output fields) 8,853
schema.lookup session.publish 10,516 (over 10,000)

The tool definitions make up tools/list. The largest are inkbolt_session_publish (12,451 characters), inkbolt_document_preview (7,031) and inkbolt_session_diff_preview (5,692).

Directory listing: the repo has 966 tracked files. Repos of about 500 or more files time out in the Anthropic directory's validation, so listing Inkbolt there needs a plugin-only repo like skulitom/cutbolt-plugin.

Merge

This PR is docs and metadata only, under the FOCUS rule "Discoverability" and Artem's 2026-10-16 yes. Verify takes 80 to 120 minutes here, longer than the follow-up run that opened it, so compass-merge merges it at its next run once Verify passes on the final head, under RULES.md "Pull requests".

Compass ledger item C-065.

🤖 Generated with Claude Code

skulitom and others added 3 commits October 23, 2026 09:27
The plugin starts the release binary from PATH as
`inkbolt --workspace ${CLAUDE_PROJECT_DIR} mcp --tools core`, so a user's
project folder becomes the workspace with no build step. Its skill is
written in the words people use when they ask for icons, diagrams,
recolouring or exports, says when not to use Inkbolt, and covers the
missing-binary case with the release download.

evals/ holds four user-worded cases for `claude plugin eval` (three that
should use Inkbolt, one video request that shouldn't), with a mock built
from v0.82.0's real core tools/list and reply shapes.

The README's Get started section gains the two install commands.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…quires

The engine recolours an imported shape only with op "vector" (its id,
unchanged geometry and an RGBA fill); properties and fill reject colours.
The mock now answers that way and names imported items svg-N with a
source-id mapping, the recolour grader accepts the RGBA form, the
diagram case names its font files, and evals/README.md gives the run
command that keeps Claude's file tools out of the mocked runs.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…eal contracts

tools/list pages its 22 core tools; the mock now has all three pages and
the skill names the direct preview, font-import and session tools.
Recolouring sends the item's whole vector content back, since the vector
operation clears what it isn't given. Text needs font_put plus add_svg
font_bindings. An image import returns a receipt, placed with asset_put
and an image item.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@chatgpt-codex-connector
chatgpt-codex-connector Bot commented Oct 23, 2026 •
Copy link
Copy Markdown

Codex Review Summary

This comment shows the latest Codex review activity on this pull request.

Review Status Commit Review trigger
📝 Code Review ✅ Completed 2026-10-23T08:51:43.590307Z b9df105 PR opened
ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review" or "@codex security review".

Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings.

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: b9df1055c4

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread evals/recolor-logo/graders/edited.md Resolved
skulitom and others added 3 commits October 23, 2026 09:55
…descriptor, ignored eval results

A placed image item can't take pixel edits, so the skill sends
retouching through sample.import. font_import returns the bare pinned
descriptor, which font_put takes as its font. evals/.gitignore keeps
the reports claude plugin eval writes under results/ out of Git and
tools/check_repo.py.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
claude plugin eval compiles input_match as a JavaScript RegExp, which
rejects (?i); match the RGBA form or either case of the hex instead.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
sample.import reads PNG or TIFF in v0.82.0 and needs storage: {} for all
but small images; SVG export accepts vector documents only. The skill
and the mock now say so, each checked against the release binary.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@skulitom
Copy link
Copy Markdown
Owner Author

Compass review: ready to merge, but held (compass-merge, 2026-10-24, head 84b6b69)

  • Tests, with main cb0afcf merged in locally (clean; README.md merged automatically): tools/check_repo.py and --public pass (1,011 files), tests/test_repo_guard.py passes 14/14, and claude plugin validate --strict passes for the plugin and the marketplace (Claude Code 2.1.302). No test on main reads the files this PR adds.
  • CI: Verify is green on ubuntu-24.04, macos-15 and windows-2025 for this head.
  • Review: I read the whole diff. It holds the plugin manifests, the skill, the evals with their mock, and a 9-line install paragraph in README; no source, test, Cargo or tools/ changes. Every file is LF, with no third-party product names or secrets. The read-only Codex review of this head (10-23) found no actionable regressions.
  • Not merged: the 10-23 10:44 UTC reply in this PR's review thread comes from the owner account, and no Compass agent posted it. compass-merge therefore reads it as a comment from Artem, which holds the PR. It stays open until he merges it or says it can be merged.

This branch has not been deployed

No deployments
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

0