A Claude Code skill that ports an upstream command-line tool to jailbroken iOS and ships it the way OwnGoal Studio does: one arm64 build, packaged for both roothide and rootless bootstraps, released from GitHub Actions, and served by the OwnGoal Studio APT repository.
It is the distilled procedure behind codex, grok and fastfetch: what is fixed by contract, what breaks when you cross-compile against the iPhoneOS SDK, and what a command-line process can and cannot do on a device.
| path | what it is |
|---|---|
SKILL.md |
the skill: the packaging contract, a step-by-step workflow, and an iOS porting playbook (header shim, SDK traps, IOKit/Metal/MobileGestalt facts learned on real devices) |
template/ |
a ready-to-copy packaging repo: makefile, scripts/ for CMake and Cargo projects, packaging/, GitHub workflows (release + daily upstream follow), Pages redirect, package manifest |
template/scripts/rebase-patches.sh |
make rebase-patches REF=<sha>: re-targets patches/ at a new upstream commit when the daily upstream follow stops applying, lists the rejects to fix by hand, then rewrites and re-verifies the patch set |
AGENTS.md (CLAUDE.md links to it) |
notes for agents working on this repository |
git clone https://github.com/OwnGoalStudio/platformize-bin-ios ~/.claude/skills/platformize-bin-iosThen ask Claude Code to "build X for jailbroken iOS" or "package X like codex/grok/fastfetch". The skill triggers on those phrases and on "add X to owngoalpackages".
- A packaging repo, never a fork: pinned upstream sha +
patches/. - One arm64 binary;
iphoneos-arm64is the rootless layout (/var/jb),iphoneos-arm64eis roothide (unprefixed). The architecture names the layout, not the CPU. - No bootstrap path hardcoded in source; derive it from the executable's own path. No libvroot.
- Sign with
ldidand the three entitlements that make a CLI work on a jailbroken device; test by installing, never by copying a binary over. CLAUDE.mdis a symlink toAGENTS.md.- Review for sensitive information before every upload or publish by having
an agent read the diff, the payload and
stringsof the binary. No scanner. - Release first, then add to the APT manifest; its build fails otherwise.
- Every repo follows upstream daily and packages only the newest stable
version; when a patch stops applying,
make rebase-patches REF=<sha>.
cp -R template/ <repo>/ && cd <repo>
mv packaging/PROGRAM.entitlements packaging/<program>.entitlements
# CMake: mv scripts/build-ios.cmake.sh scripts/build-ios.sh && rm scripts/build-ios.cargo.sh configuration/upstream.cargo.env
# Cargo: mv scripts/build-ios.cargo.sh scripts/build-ios.sh && mv configuration/upstream.cargo.env configuration/upstream.env && rm scripts/build-ios.cmake.sh
chmod +x scripts/*.sh
grep -rn fastfetch makefile scripts packaging configuration .github docs manifest.json # every hit is a rename
make checkSKILL.md lists the exact edits in order.
MIT.