Skip to content

Add claude (Claude Code) plugin#14

Merged
etiennecoutaud merged 1 commit into
mainfrom
etienne/add-claude
Jun 25, 2026
Merged

Add claude (Claude Code) plugin#14
etiennecoutaud merged 1 commit into
mainfrom
etienne/add-claude

Conversation

@etiennecoutaud

@etiennecoutaud etiennecoutaud commented Jun 25, 2026

Copy link
Copy Markdown
Contributor

What

Adds a proto TOML plugin for Claude Code, so the claude CLI can be pinned and installed as a proto-managed tool like the other entries here.

  • claude/plugin.toml — resolves versions from anthropics/claude-code git tags; installs the single prebuilt binary served from downloads.claude.ai/claude-code-releases/{version}/{platform}/<binary>.
  • claude/README.md — usage + upstream pointers.
  • .prototools — registers the plugin (file:// locator) and pins claude = "2.1.191".

Details

  • Linux uses the static musl build (linux-{arch}-musl/claude) so it runs on both glibc and musl hosts, per repo convention. macOS darwin-{arch}/claude, Windows win32-{arch}/claude.exe. All four CI targets have an upstream artifact.
  • No checksum-url: upstream publishes checksums only inside a per-version manifest.json (keyed JSON), which the TOML plugin format can't parse. Documented in the plugin comment and README.

Verification

Local, on macOS arm64:

proto install claude            # claude 2.1.191 installed
proto bin claude                # .../tools/claude/2.1.191/claude
proto run claude -- --version   # 2.1.191 (Claude Code)
proto run prek -- run --all-files   # all hooks Passed (toml, typos, taplo format + lint)

Cross-platform install is covered by this repo's CI matrix (Linux / macOS x64+arm64 / Windows).

Why

First consumer is the new claude-marketplace repo, whose CI will pin claude via this plugin instead of curl | bash for a reproducible validator version.

Refs: PLAT-1014

Manage the Claude Code CLI as a proto-versioned tool. Resolves versions
from anthropics/claude-code git tags and installs the prebuilt binary
from downloads.claude.ai (static musl on Linux). No checksum-url: upstream
publishes checksums only inside a per-version manifest.json the TOML
format can't parse.
@etiennecoutaud etiennecoutaud requested a review from a team as a code owner June 25, 2026 09:19
@etiennecoutaud etiennecoutaud merged commit f2f44cd into main Jun 25, 2026
5 checks passed
@etiennecoutaud etiennecoutaud deleted the etienne/add-claude branch June 25, 2026 09:29
etiennecoutaud added a commit that referenced this pull request Jun 25, 2026
## What

Switch the `claude` plugin's Linux download from the `musl` build to the
glibc build (`linux-{arch}/claude`).

## Why

The upstream `linux-x64-musl` binary is **not static**: it is
dynamically linked against `/lib/ld-musl-x86_64.so.1`. On a glibc host
(e.g. the `ubuntu-24.04` CI runners) that loader is absent, so executing
it fails with `No such file or directory (os error 2)` (ENOENT from the
missing interpreter).

This surfaced when
[claude-marketplace#1](Genesis-Embodied-AI/claude-marketplace#1)
CI ran `proto run claude -- plugin validate` on ubuntu and failed even
though install succeeded.

```
$ file linux-x64-musl/claude → interpreter /lib/ld-musl-x86_64.so.1   # fails on glibc
$ file linux-x64/claude      → interpreter /lib64/ld-linux-x86-64.so.2 # runs on ubuntu
```

The glibc build runs on standard Linux distros and CI. (The musl build
remains the right choice only on musl/Alpine hosts, which this repo's CI
and consumers are not.)

## Note on the smoke test

`scripts/smoke-test.sh` did not catch this: it asserts `proto bin
claude` is a `-x` file but never executes it, so a binary built for the
wrong libc still passes. The original
[#14](#14) CI
was green for that reason.

Linear: PLAT-1014
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.

2 participants