Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Guide for the C -fbounds-safety language extension. Covers the language model, pointer annotations, adopting bounds-safety in existing C code, compiler build settings and modes, and runtime debugging of bounds violations.
.claude/skills/superagents-lab-c-bounds-safety/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-02 | ✗→✓ | ▲ Improved | -9% | 0% |
| case-04 | ✗→✓ | ▲ Improved | -25% | 0% |
| case-06 | ✗→✓ | ▲ Improved | -29% | 0% |
| case-11 | ✗→✓ | ▲ Improved | -41% | 0% |
| case-12 | ✗→✓ | ▲ Improved | -43% | 0% |
When helping with -fbounds-safety adoption or code changes, ask clarifying questions about the user's codebase and goals before suggesting changes. For complex tasks involving multiple files or non-trivial annotation decisions, use plan mode to propose an approach before implementing.
-fbounds-safety Language Extension-fbounds-safety is a C language extension that prevents out-of-bounds memory access by enforcing bounds safety at the language level. It inserts automatic bounds checks at runtime, rejects unsafe pointer operations at compile time, and requires programmers to provide bounds annotations so the compiler can guarantee safety. Out-of-bounds accesses become deterministic traps instead of exploitable vulnerabilities.
You MUST have fully read the following three documents (via the Read tool) at the start of an adoption task, and re-read them via the Read tool before any source-modifying step in the adoption workflow unless their content is verifiably fresh in your active context:
-fbounds-safety in an existing C project (full and header-only modes).-fbounds-safety: pointer kinds, annotations, and the rules that govern them.For compiler flags, Xcode build settings, soft trap mode, and ptrcheck.h configuration, read build-settings.md.
For debugging bounds violations at runtime — trap behavior, LLDB commands, wide pointer inspection, watchpoints, crash log analysis, and soft trap debugging, read runtime-debugging.md.
| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-10 | pass→pass | 13,943 | 4,936 | -65% | 1 | 1 | 0% | 2,198 | 1,385 | -37% | 0 | 0 | — |
case-01 | fail→fail | 10,636 | 10,137 | -5% | 1 | 1 | 0% | 2,109 | 1,729 | -18% | 0 | 0 | — |
case-02 | fail→pass | 14,233 | 11,965 | -16% | 1 | 1 | 0% | 2,660 | 2,420 | -9% | 0 | 0 | — |
case-03 | pass→pass | 11,927 | 3,600 | -70% | 1 | 1 | 0% | 2,069 | 1,019 | -51% | 0 | 0 | — |
case-04 | fail→pass | 9,703 | 5,032 | -48% | 1 | 1 | 0% | 1,684 | 1,268 | -25% | 0 | 0 | — |
case-05 | pass→pass | 11,361 | 1,753 | -85% | 1 | 1 | 0% | 1,910 | 725 | -62% | 0 | 0 | — |
case-06 | fail→pass | 9,068 | 3,533 | -61% | 1 | 1 | 0% | 1,470 | 1,037 | -29% | 0 | 0 | — |
case-07 | pass→pass | 12,101 | 3,114 | -74% | 1 | 1 | 0% | 1,964 | 922 | -53% | 0 | 0 | — |
case-08 | pass→pass | 6,943 | 8,341 | +20% | 1 | 1 | 0% | 1,104 | 1,786 | +62% | 0 | 0 | — |
case-09 | pass→pass | 4,478 | 7,746 | +73% | 1 | 1 | 0% | 755 | 1,697 | +125% | 0 | 0 | — |
case-11 | fail→pass | 9,096 | 3,155 | -65% | 1 | 1 | 0% | 1,543 | 914 | -41% | 0 | 0 | — |
case-12 | fail→pass | 9,926 | 2,942 | -70% | 1 | 1 | 0% | 1,774 | 1,005 | -43% | 0 | 0 | — |
case-13 | fail→pass | 10,116 | 1,745 | -83% | 1 | 1 | 0% | 1,694 | 716 | -58% | 0 | 0 | — |
case-14 | pass→pass | 8,509 | 2,829 | -67% | 1 | 1 | 0% | 1,364 | 976 | -28% | 0 | 0 | — |
case-15 | fail→pass | 15,238 | 12,836 | -16% | 1 | 1 | 0% | 2,921 | 2,298 | -21% | 0 | 0 | — |
case-16 | pass→pass | 12,857 | 12,296 | -4% | 1 | 1 | 0% | 2,454 | 1,720 | -30% | 0 | 0 | — |
case-17 | fail→pass | 9,004 | 3,618 | -60% | 1 | 1 | 0% | 1,545 | 992 | -36% | 0 | 0 | — |
case-18 | fail→pass | 9,699 | 2,233 | -77% | 1 | 1 | 0% | 1,726 | 821 | -52% | 0 | 0 | — |
case-19 | pass→pass | 3,266 | 2,401 | -26% | 1 | 1 | 0% | 552 | 843 | +53% | 0 | 0 | — |
case-20 | pass→pass | 3,954 | 4,019 | +2% | 1 | 1 | 0% | 784 | 1,085 | +38% | 0 | 0 | — |
case-21 | pass→pass | 6,503 | 3,528 | -46% | 1 | 1 | 0% | 1,085 | 964 | -11% | 0 | 0 | — |
case-22 | pass→pass | 4,319 | 5,818 | +35% | 1 | 1 | 0% | 757 | 1,452 | +92% | 0 | 0 | — |
DecimalAI ran this skill against gemini-3.6-flash twice over the same eval suite — once with the skill loaded and once without — and compared the two runs case by case. 22 cases were attempted. The headline lift of +41 percentage points is the difference between those two pass rates over the 22 comparable cases.
Without the skill loaded, the model failed this case. With it loaded, the same prompt on the same model passed. This is one improved case from the latest verified run; every case, including any that regressed, is in the table above.
Other measured skills in the registry, with their headline benchmark lift.