redhat-et / redhat-et/ripwire

wrap/skills install has no discovery path for binaries installed via mise/aqua-registry (or any channel outside the curl installer's layout)

Open
#225 0 comments 0 reactions 0 assignees View on GitHub
Dominant language
C++
Stars
2.1k
Forks
125
Avg merge
5h 42m
Merged PRs (30d)
136

Description

`ripwire` is now installable via mise/aqua-registry (https://github.com/aquaproj/aqua-registry/tree/main/pkgs/redhat-et/ripwire), which fetches the binary out of the release tarball and symlinks it onto `PATH` on its own. It does not reproduce the curl installer's layout contract of `/bin/ripwire` + `/share/ripwire/skills/`.

`wrapPrintSkillsLine` (`src/wrap.h:200-219`) only has two live discovery paths — (a) `./skills/install.sh` relative to cwd (a checkout), or (b) `/../share/ripwire/skills/install.sh` (the curl installer's staged copy). Any other install channel — mise/aqua, a distro package, a hand-copied binary — falls to case (c): a dead "clone the repo and run `skills/install.sh`" comment instead of a runnable command. `ripwire wrap claude` for a mise-installed binary never wires up skills, silently.

This will also recur on every future upgrade: skills aren't versioned with the binary once it's outside the curl-installer's own directory, so there's no path that keeps skills in sync with `ripwire --version` short of a full re-clone.

**Two directions worth a maintainer opinion on:**

1. **Embed the skills in the binary itself**, generated at build time (CMake step turning `skills/*/SKILL.md` into a baked-in header, ~384 KB uncompressed today), with a new subcommand (e.g. `ripwire skills install [--codex]`) that writes them to the standard agent skill dirs. Installer-agnostic by construction, and "update skills on upgrade" becomes "re-run the subcommand" since the skills are pinned to that exact binary build. Fits the G3 self-contained / G5 zero-dependency-CLI guardrails — no new install-path convention to maintain per channel.
2. **Extend the aqua-registry package** to also stage `skills/`/`hooks/`/`install.sh` next to the binary in a layout `wrap` can find. Weaker: it only fixes mise/aqua, leaves every other current and future distribution channel with the same gap, and aqua's registry format doesn't obviously support "also drop this sibling directory" for a `github_release` asset.

A third existing option is pointing users at [skillshare](https://github.com/runkids/skillshare) to sync the skills separately, but it currently hard-blocks on ripwire's own skill: it static-analyzes `SKILL.md` files for prompt-injection patterns and flags the illustrative example output in `skills/ripwire-security-scan/SKILL.md` (a fenced code block showing what ripwire's scanner reports for a real finding) as a live CRITICAL injection — see runkids/skillshare#279. Not something this repo can fix, but worth knowing before pointing anyone at it as the interim answer.

Happy to put up a PR for direction (1) if that's the preferred shape — wanted a steer first since it touches CMake and the CLI surface.

Contributor guide

Open the contributing guide

Research direction

Start with wrapPrintSkillsLine in src/wrap.h:200-219 and trace its existing checkout and curl-installer discovery paths. Then inspect the skills/*/SKILL.md files and the CMake build configuration to assess the proposed embedded-skills direction versus aqua-registry staging. Done means a maintainer-approved direction, an installer-independent discovery or installation path, and skills that remain aligned with the binary version.

Written by the indexing model from the issue text.

Assessment

Tech stack
cmake, cpp
Domain
build-system, cli
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Active
Clarity
Mostly clear
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.