ExecuTorch Binary Size Reduction
pytorch/executorch
Measures and shrinks the ExecuTorch runtime binary by building a size test, analyzing it with bloaty and landing each reduction as its own pull request.
Contributor guide for reading clang optimization remarks while editing ripwire's own C++, deciding between a source change and a build change such as LTO or PGO.
$ npx skills add redhat-et/ripwire --skill ripwire-opt-remarks -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install redhat-et/ripwire ripwire-opt-remarks --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/redhat-et/ripwire.git skills-src && mkdir -p .claude/skills && cp -r skills-src/skills/ripwire-opt-remarks .claude/skills/ripwire-opt-remarks && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "ripwire-opt-remarks" agent skill from https://github.com/redhat-et/ripwire/tree/main/skills/ripwire-opt-remarks into .claude/skills/ripwire-opt-remarks/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "ripwire-opt-remarks", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/redhat-et/ripwire/tree/main/skills/ripwire-opt-remarksType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add redhat-et/ripwire --skill ripwire-opt-remarks -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install redhat-et/ripwire ripwire-opt-remarks --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/redhat-et/ripwire.git skills-src && mkdir -p .agents/skills && cp -r skills-src/skills/ripwire-opt-remarks .agents/skills/ripwire-opt-remarks && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "ripwire-opt-remarks" agent skill from https://github.com/redhat-et/ripwire/tree/main/skills/ripwire-opt-remarks into .agents/skills/ripwire-opt-remarks/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "ripwire-opt-remarks", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add redhat-et/ripwire --skill ripwire-opt-remarks -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install redhat-et/ripwire ripwire-opt-remarks --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/redhat-et/ripwire.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/skills/ripwire-opt-remarks .cursor/skills/ripwire-opt-remarks && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "ripwire-opt-remarks" agent skill from https://github.com/redhat-et/ripwire/tree/main/skills/ripwire-opt-remarks into .cursor/skills/ripwire-opt-remarks/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "ripwire-opt-remarks", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/redhat-et/ripwire.git --path skills/ripwire-opt-remarks--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add redhat-et/ripwire --skill ripwire-opt-remarks -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install redhat-et/ripwire ripwire-opt-remarks --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/redhat-et/ripwire.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/skills/ripwire-opt-remarks .gemini/skills/ripwire-opt-remarks && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "ripwire-opt-remarks" agent skill from https://github.com/redhat-et/ripwire/tree/main/skills/ripwire-opt-remarks into .gemini/skills/ripwire-opt-remarks/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "ripwire-opt-remarks", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install redhat-et/ripwire ripwire-opt-remarksInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add redhat-et/ripwire --skill ripwire-opt-remarks -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/redhat-et/ripwire.git skills-src && mkdir -p .github/skills && cp -r skills-src/skills/ripwire-opt-remarks .github/skills/ripwire-opt-remarks && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "ripwire-opt-remarks" agent skill from https://github.com/redhat-et/ripwire/tree/main/skills/ripwire-opt-remarks into .github/skills/ripwire-opt-remarks/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "ripwire-opt-remarks", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add redhat-et/ripwire --skill ripwire-opt-remarks -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install redhat-et/ripwire ripwire-opt-remarks --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/redhat-et/ripwire.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/skills/ripwire-opt-remarks .opencode/skills/ripwire-opt-remarks && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "ripwire-opt-remarks" agent skill from https://github.com/redhat-et/ripwire/tree/main/skills/ripwire-opt-remarks into .opencode/skills/ripwire-opt-remarks/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "ripwire-opt-remarks", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
ripwire-opt-remarksContributor guide for reading clang optimization remarks while editing ripwire's own C++, deciding between a source change and a build change such as LTO or PGO.
The skill's rule is that a remark is an observation, not a defect. In the pass it came from, about 1.1 M remarks across `src/` produced no justified source edit and two justified build changes, LTO and then PGO. So on this codebase the usual answer to a remark is a compiler flag rather than a diff, and the skill tells you to budget attention that way.
Step 0 is to profile first, building with `-DRIPWIRE_PROFILE=ON` and reading the hottest scopes, since remarks in files that cost about a millisecond of a roughly 2.7 s cold profile can be dismissed on arithmetic. Step 1 collects remarks with `scripts/optremarks.sh` and `scripts/optremarks.py --hot --top 40`, where `--hot` uses a literal `HOT_FILES` list that `test/optremarkshotcheck.sh` checks against the tree. It is for contributors working on ripwire itself, not for people running it.
4 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit 60dd3b3. It shows what the files ask for, not the result of running them.
Pre-approves these tools, so the agent can use them without asking each time:
BashReadEditFrom allowed-tools in the SKILL.md frontmatter.
Shell commands in SKILL.md call:
cmakepython3From the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md.
From URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Ripwire Optimization Remarks Triage loads about 3.1k tokens when it runs. Until then it costs about 71 tokens; SKILL.md has 1,676 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check noted patterns worth knowing about, such as sudo or a known installer.
allowed-tools: Bash, Read, EditAutomated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.
The full file from redhat-et/ripwire at commit 60dd3b3, republished under its Apache-2.0 licence (© redhat-et). 1,676 words, ~3,134 tokens.
.claude/skills/ripwire-opt-remarks/SKILL.md (or your agent's skills folder).Nearest neighbours: • A measured slow operation, any codebase → ripwire-perf-target. Do that FIRST; remarks are the second question, not the first. • Maintenance risk / complexity in a subsystem → ripwire-fresh-eyes. Different axis entirely.
Full record of the pass this skill came from, with every number: docs/OPTREMARKS.md.
A remark is an observation, not a defect. Clang is reporting a decision, usually the right one.
The pass that produced this skill read ~1.1 M remarks over src/. Zero of them justified a source
edit. Two justified a BUILD change (LTO, then PGO), and the best-looking source-level candidate was
implemented, verified to do exactly what the remark asked, measured, and reverted. Budget your
attention accordingly: on this codebase, the answer to a remark is far more often a compiler flag
than a diff.
cmake -S . -B build_prof -DRIPWIRE_PROFILE=ON && cmake --build build_prof -j 6
./build_prof/ripwire . --no-cache 2>&1 >/dev/null | sed -n '/hottest scopes/,/PROF_TSV/p'On this codebase the answer is stable and counterintuitive: PageRank is ~1 ms of a ~2.7 s cold CPU
profile, the build-model sorts are ~1.7 ms, and ~29% sits in two phases now living in
src/ingest_sidecap.h (captureTagsFacts, captureSideFacts) that spend it calling tree-sitter. So a remark in
src/pagerank.cpp, src/infra/sortutil.h or src/infra/radixSort.inl is dismissible on arithmetic before
you read it. Re-derive this table if you touch the pipeline; do not trust this paragraph forever.
scripts/optremarks.sh --passes 'inline|loop-vectorize|slp-vectorizer|licm|gvn|.*unswitch|loop-idiom'
python3 scripts/optremarks.py --hot --top 40--hot narrows to a literal list (HOT_FILES) rather than a heuristic, so what the report calls
"hot" stays reviewable. That list once went stale silently — the ingest split moved the hot phases
into src/ingest_*.h sections of the same TU, every listed path still existed, and --hot quietly
fell to 0.2% coverage of that TU. test/optremarkshotcheck.sh now gates the list against the tree
(docs/OPTREMARKS.md §8). If you split or rename a hot file, run that gate: it will tell you which
files you now owe a decision on, and COLD_FILES is where a deliberate exclusion goes, with its
reason.
Never in build/ — CMake refuses it by name, because build/ripwire is the binary every gate and
bench number is measured against. Never with a build type: RIPWIRE_ARCH_FLAGS is already -O2, and
Release would define NDEBUG and blind the degrade-path gates. Run wide once to learn which
classes fire (src/main.cpp unfiltered exceeds 800 MB of YAML), then narrow.
Missed inline NoDefinition, callee in another TU that you own the build of.
Meaning: the definition is not visible, full stop — not a cost-model opinion.
Confirmed here: 831 of 1,437 distinct NoDefinition sites in the ingest translation unit name a
tree-sitter C accessor (ts_node_child_by_field_name, ts_node_is_null, ts_node_type, …), each a
two-line function compiled into a separate C object, inside the phases that are ~29% of a cold run.
Fix pattern: make the definition available — link-time optimization, not a source edit.
Measured: -DRIPWIRE_LTO=ON, four interleaved A/Bs (9/21/21/31 runs per arm) → cold 1–6% faster,
warm 0–3%, every cold statistic in every run favouring LTO; output byte-identical, build time
+2.6×. Now the default (-DRIPWIRE_LTO=OFF for a fast edit loop). Note the shape of that claim:
four runs put the cold median anywhere from −0.8% to −5.9%, so the honest number is the range and the
unanimous direction, not the best run.
Tell it from noise: if the callee is libc (fopen, fread, stat) the same remark is worthless —
inlining a syscall wrapper saves nothing. The class is only interesting when the callee is tiny and
yours to build.
Missed gvn LoadClobbered … clobbered by call, in bulk, in one function.
Meaning: fires per load per pass; 90,971 of them in this record. Useless individually.
Fix pattern: there isn't one for a single site. Its value is aggregate — a dense cluster in one
function means that function is call-bound, and that is how the NoDefinition finding above was
located. Read it as a heat map, never as a work item.
loop-vectorize early-exit family: TooManyUncountableEarlyExits,
PotentiallyFaultingEarlyExitLoop, CantComputeNumberOfIterations, UnsupportedUncountableLoop,
LoopContainsUnsupportedSwitch, WritesInEarlyExitLoop.
Confirmed here: hundreds, concentrated in src/docparse.h, src/arch.h, src/lexical.h,
src/graph.h, src/infra/radixSort.inl:402. Every one is a scanner that breaks on a delimiter. A
loop whose trip count depends on the bytes it is reading is uncountable by construction. There is
nothing to fix without changing the algorithm.
Missed inline NeverInline naming __clang_call_terminate. 275 in the hot set. The
exception-landing-pad helper; noinline is deliberate and it never runs on a hot path. Filter first,
every time.
Missed loop-vectorize MissedDetails. Always paired with an Analysis row that gives the actual
reason. Read the Analysis row; the Missed row carries no information of its own.
Missed gvn LoadClobbered … in favor of store … clobbered by store on a histogram.
Confirmed here: src/infra/radixSort.inl:411-413, the 4×-unrolled counting loop — the compiler
cannot prove digit0 != digit1, so each ++hist[pass][d] reloads. Real, and it has a textbook fix
(private per-lane histograms, summed after). Dismissed on the profile, not on the analysis: the
sorts are 1.7 ms. Note the shape — "the remark is right and the fix is known and it still is not
worth doing" is a legitimate, common verdict.
Missed licm LoadWithLoopInvariantAddressInvalidated + gvn LoadClobbered on an address-escaped
struct in a call-heavy loop.
Confirmed here: src/ingest_sidecap.h:1428, for( uint16_t ci = 0; ci < match.capture_count; ++ci ) over
match.captures[ci]. match had its address taken by ts_query_cursor_next_match, so every
accessor call in the body clobbers it: the trip count and the capture base were reloaded on every
iteration, inside the single hottest own-code loop in the tool.
Fix pattern (the textbook one): hoist to locals before the loop —
const uint16_t captureCount = match.capture_count; const TSQueryCapture* const captures = match.captures;
What happened: the remark moved exactly as predicted (from the inner loop's line to the hoist's
line — the load became per-match instead of per-capture). The wall clock did not:
| baseline | hoisted | |
|---|---|---|
| run 1, cold median | 166.6 ms | 165.6 ms (−0.6%) |
| run 2, arms swapped | 243.7 ms | 257.6 ms (+5.7%) |
Direction flips between runs ⇒ noise. Reverted. The reason: the reload sits immediately beside an opaque call that costs orders of magnitude more. This is the most useful entry in this file — if you are about to hoist a load out of a loop whose body calls into another translation unit, expect this outcome and measure before you commit to the diff.
Missed inline TooCostly on libc++ (basic_string::push_back, vector::push_back,
unordered_dense::table::…). The cost model declining to inline into a large caller. Occasionally
worth chasing; every hot-set instance here was in src/docparse.h (document extraction, off the
default path) or one-shot setup in buildGraph. Dismissed on location, not on principle — check
where yours is before you copy this verdict.
inline/TooCostly and loop-vectorize/VectorizationNotBeneficial are the same complaint: the
cost model is guessing at hotness with no data. Chasing them one site at a time is nearly always a
loss — but you can just give the cost model the data.
Confirmed here: scripts/pgobuild.sh (-DRIPWIRE_PGO=generate → train → llvm-profdata merge →
-DRIPWIRE_PGO=use, on top of -DRIPWIRE_LTO=ON). Measured cold 14–25% faster than a non-LTO build (6–16% over the LTO default), warm 5–10% —
several times LTO's own effect — with the largest gain on a corpus that appears in no training run,
which is what rules out train-on-test. Output byte-identical, determinism gate green.
The lesson to carry: when a whole remark CLASS is the cost model rather than a fact about your
code, look for a build-level answer before you rewrite a single loop.
And where it will NOT help: the cold path gained 2–3× more than the warm one, because cold is a
branchy call-heavy walk over tree-sitter's parse tree while warm runs mostly in structures already
hand-tuned for cache locality under G2 (the CSR triple, the SoA symbol tables, dynamic_map's
B+tree, the radix sorts). A profile has little to discover in code whose layout is already the
optimization — so expect cost-model remarks in G2-shaped code to stay dismissed even after PGO.
A remark that does not move a measured number does not justify a diff. On this codebase that bar is harder than it sounds: a cold run is ~160 ms and run-to-run spread is wide.
# interleaved A/B — A,B,A,B,… so thermal drift and background load hit both arms equally.
# Report median AND min, >= ~20 runs per arm, and REPEAT THE WHOLE A/B at least twice.Two failure modes this bar exists for, both hit during the pass that wrote this file:
bench/perfgate.sh (median of 5, cold + warm; ledger mode since 2026-08-08 — it prints the medians and
appends them to bench/PROFILE.md, no pass/fail against a budget) is the committed harness for the
whole-pipeline number; use RIPWIRE_BIN= to point it at each arm and read the two printed medians off
stdout. For a change inside one phase, -DRIPWIRE_PROFILE=ON gives per-phase medians that a 160 ms wall
clock cannot resolve.
Then, before you keep it:
t=$(mktemp -d); ./build/ripwire <dir> >"$t/a"; ./build/ripwire <dir> >"$t/b"; diff -q "$t/a" "$t/b" # determinism is a contract (outputs outside <dir>)
python3 test/pargates.py . ./build/ripwire -j 6Never answer a vectorization remark with -ffast-math / -ffp-contract changes. src/pagerank.cpp
is compiled -fno-fast-math on purpose — the reduction must not reassociate — and anything that makes
output depend on optimization level is a bug even when the ranking still looks right.
size-info, asm-printer, prologepilog, stack-frame-layout,
regalloc and hotcoldsplit are per-function-per-pass bookkeeping. They are most of the volume and
none of the signal. Narrow with --passes after the first look.third_party/ remarks. The vendored tree-sitter core and sixteen grammars are C you do
not own. scripts/optremarks.py drops them (and toolchain headers) by default; keep it that way.src/lexical.h's BM25 loops looked like the
best remaining candidate until the --for profile showed lexicalScores at 0.886 ms of a 95 ms run
— and the scanField re-tokenizer the LICM remarks point at does not execute at all on a warm cache.© redhat-et, Apache-2.0. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
Just SKILL.md in skills/ripwire-opt-remarks of redhat-et/ripwire.
Open the folder on GitHubat commit 60dd3b3
Ripwire Optimization Remarks Triage next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Ripwire Optimization Remarks Triage this skillredhat-et/ripwire | 2.4k | — | ~3.1k | Automated safety check: Notes | Apache-2.0 | |
| ExecuTorch Binary Size Reductionpytorch/executorch | 5.1k | — | ~793 | Automated safety check: Pass | Custom licence | |
| Cppcrazyguitar/cppcheatsheet | 290 | — | ~1.8k | Automated safety check: Pass | MIT | |
| x86 C and C++ Performance Patternsintel/intel-performance-skills | 332 | — | ~903 | Automated safety check: Pass | Custom licence | |
| Cpp Prodavila7/claude-code-templates | 32k | 8 repos | ~467 | Automated safety check: Pass | MIT | |
| Interval Profiling Performance AnalyzerArabelaTso/Skills-4-SE | 253 | — | ~1.7k | Automated safety check: Notes | Apache-2.0 |
pytorch/executorch
Measures and shrinks the ExecuTorch runtime binary by building a size test, analyzing it with bloaty and landing each reduction as its own pull request.
crazyguitar/cppcheatsheet
Comprehensive C/C++ programming reference covering everything from C11-C23 and C++11-C++23, system programming, CUDA GPU computing, debugging tools, Rust interop, and advanced topics.
intel/intel-performance-skills
Spots and fixes known x86 C and C++ performance problems from source or profiler output, such as false sharing, missing restrict and narrow SIMD.
davila7/claude-code-templates
Write idiomatic C++ code with modern features, RAII, smart pointers, and STL algorithms.
ArabelaTso/Skills-4-SE
Profile programs at the function/method level to identify performance hotspots, bottlenecks, and optimization opportunities.
nwjs/chromium.src
Surgically injects trace macros (TRACEEVENT) into Chromium C++ files to expose "black box" latency gaps, resolves headers, and compiles the browser using a self-healing loop.
redhat-et/ripwire
Rules for writing and converting formatted output in ripwire's C++ source with its emit helpers, keeping every printed byte identical to the old printf output.
redhat-et/ripwire
Checks whether a working-tree diff or a pull request is safe to merge: blast radius, tests to run, contract breaks, branch conflicts and stranded work.
redhat-et/ripwire
Answers call-graph questions that combine several conditions, such as complex functions that reach a target or untested symbols near main, using ripwire's graph-query mode.
redhat-et/ripwire
Produces a short brief for handing a code subsystem to a teammate or fresh session, using ripwire to rank symbols, expand bodies and surface design docs.
redhat-et/ripwire
Answers questions about a named symbol, such as its callers, what it calls, the path between two symbols or the downstream impact of changing it, using the ripwire CLI.
redhat-et/ripwire
Maps an unfamiliar repo or subsystem with the ripwire CLI before reading files, climbing an escalation ladder only until you are oriented.
Works with
Categories
Contributor guide for reading clang optimization remarks while editing ripwire's own C++, deciding between a source change and a build change such as LTO or PGO. The skill's rule is that a remark is an observation, not a defect.1 M remarks across `src/` produced no justified source edit and two justified build changes, LTO and then PGO.
Ripwire Optimization Remarks Triage fits situations like: reading -Rpass-missed output such as loop not vectorized or will not be inlined; deciding whether a remark deserves a source change or LTO or PGO; working through opt-record YAML while contributing to ripwire's C++.
Run `npx skills add redhat-et/ripwire --skill ripwire-opt-remarks -a claude-code`. Or copy the skill folder (skills/ripwire-opt-remarks in redhat-et/ripwire) into .claude/skills/ripwire-opt-remarks in your project. Claude Code loads it when a task matches its description.
Run `npx skills add redhat-et/ripwire --skill ripwire-opt-remarks -a codex`. Or copy the skill folder (skills/ripwire-opt-remarks in redhat-et/ripwire) into .agents/skills/ripwire-opt-remarks in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add redhat-et/ripwire --skill ripwire-opt-remarks -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/ripwire-opt-remarks, .gemini/skills/ripwire-opt-remarks, .github/skills/ripwire-opt-remarks and .opencode/skills/ripwire-opt-remarks in your project.
Going by SKILL.md and its folder, Ripwire Optimization Remarks Triage needs the command-line tools its instructions call (cmake and python3). Our summary lists: A checkout of the ripwire repository; clang and CMake to build with remark output; Python 3 for scripts/optremarks.py. Its frontmatter pre-approves these tools: Bash, Read, Edit.
SKILL.md contains no URLs. Any network use would come from the scripts or tools the agent runs. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found notes only (pre-approves every shell command (allowed-tools: bash)), nothing it rates as a warning. It is not a guarantee. Review the folder before installing.
Ripwire Optimization Remarks Triage is published under the Apache-2.0 licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 3.1k tokens (SKILL.md is roughly 13k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.
Skills that share tags, products or a category with Ripwire Optimization Remarks Triage: ExecuTorch Binary Size Reduction (pytorch/executorch, 5.1k stars), Cpp (crazyguitar/cppcheatsheet, 290 stars), x86 C and C++ Performance Patterns (intel/intel-performance-skills, 332 stars) and Cpp Pro (davila7/claude-code-templates, 32k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
redhat-et (a GitHub organization) maintains it in redhat-et/ripwire, which has 2,419 GitHub stars. The repository holds 19 skills in this directory. The repository was last updated on October 8, 2026.
Source: redhat-et/ripwire on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.