# Aio Patch Compile

> Apply tools/pipeline/patches.json + bun build --compile → patched claude binary at dist/<arch>/claude. Default: current host arch only (fast inner-loop ~1.2s). Opt-in --target=all (4 platforms) or csv list (e.g. --target=darwin-arm64,linux-amd64). If cli.js for a target arch is not yet extracted, transitively calls extract first. Strict by default (fails fast on MISSING patches).

- Skill: `aiocean/aio-patch-compile` (Agent Skill, multi-file: 3 files)
- Install (CLI): `npx skillmds@latest add aiocean/aio-patch-compile`
- Raw SKILL.md: https://api.skillmd.com/api/skills/aiocean/aio-patch-compile/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: DevOps & Infra
- Author: aiocean (https://skillmd.com/u/aiocean)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/aiocean/aio-patch-compile

---


# aio-patch-compile — apply patches + bun build

## Goal

Produce one or more patched claude binaries at `dist/<arch>/claude`. Inner loop after editing `tools/pipeline/patches.json` or any `tools/pipeline/sources/*.js` file.

## Usage

```
/aio-claude-toolkit:aio-patch-compile                                   # current host arch only (default)
/aio-claude-toolkit:aio-patch-compile --target=all                       # all 4 platforms
/aio-claude-toolkit:aio-patch-compile --target=darwin-arm64,linux-amd64  # csv list
STRICT=0 /aio-claude-toolkit:aio-patch-compile                           # ALLOW missing patches (NOT recommended)
```

## Behavior

For each target arch in the list:
1. If `dist/<arch>/cli.js` does NOT exist → transitively run `ARCH=<arch> ./tools/extract.sh` first
2. Run `ARCH=<arch> ./tools/build.sh` which: inlines `sources/*.js`, applies `patches.json` (strict by default), bun-compiles → `dist/<arch>/claude`

## Requires

- Walk-up must find a scaffolded project
- `bun` (>= 1.3 for stable cross-compile)
- `python3` (for patch + inline scripts)
- `tools/pipeline/patches.json` populated (NOT empty) — compile fails fast on empty patches

## Drift recovery

If compile reports MISSING patches (anchors not found in cli.js), Claude version likely shifted:
- Read `.aio-patch-setup` to see the tested-against Claude version
- Use `/aio-claude-toolkit:aio-patch-anchor find <fragment>` to locate new anchor
- Update `tools/pipeline/patches.json` `old` field with new anchor text
- Re-run compile

See `docs/repatching-playbook.md` (step-by-step re-anchoring recipe) and `docs/patches.md` (anchor selection strategy).

## Implementation

Invokes `${CLAUDE_PLUGIN_ROOT}/skills/aio-patch-compile/scripts/compile.sh "$@"`.

