email-formatting
Markdown formatting conventions for email summary documents — heading depth, list style, line length, emoji policy, and a…
Reference vocabulary for memory-safety vulnerabilities in native C/C++ code — bug-class taxonomy, common arithmetic patterns that lead to corruption, dispatch-family discipline, type-confusion idioms, use-after-free patterns, and exploitability factors. Read when analyzing,
$ npx -y skills add provos/ironcurtain --skill memory-safety-c-cpp --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
/memory-safety-c-cppContext preview
The summary Claude sees to decide when to auto-load this skill.
Reference vocabulary for memory-safety vulnerabilities in native C/C++ code — bug-class taxonomy, common arithmetic patterns that lead to corruption, dispatch-family discipline, type-confusion idioms, use-after-free patterns, and exploitability factors. Read when analyzing,
name: memory-safety-c-cpp description: Reference vocabulary for memory-safety vulnerabilities in native C/C++ code — bug-class taxonomy, common arithmetic patterns that lead to corruption, dispatch-family discipline, type-confusion idioms, use-after-free patterns, and exploitability factors. Read when analyzing, hypothesizing, designing harnesses for, or triaging findings against C/C++ code with sanitizer support (ASAN/UBSAN/TSAN/MSan). Not applicable to managed runtimes (JVM, .NET) or scripting languages — those have their own skills.
Reference vocabulary for native C/C++ code with sanitizer support. Catalogs the bug classes, patterns, and exploitability factors a memory-safety investigation needs to reason about.
Identifiers below are the canonical IDs to use when naming a bug class in any artifact. Map each to the oracle that catches it and the root-cause CWE.
| Bug class | Oracle | Root-cause CWE | Where it lives | | ---------------------- | -------------------------------------------------------------------- | -------------- | -------------------------------------------------------------------------------------------------------------------------- | | `heap_overflow` | ASAN `heap-buffer-overflow` | CWE-122 | Read or write past a heap allocation | | `stack_overflow` | ASAN `stack-buffer-overflow` | CWE-121 | Read or write past a stack frame buffer | | `out_of_bounds_read` | ASAN OOB-read | CWE-125 | Generic OOB load — distinct from heap/stack only by site | | `out_of_bounds_write` | ASAN OOB-write | CWE-787 | Generic OOB store | | `use_after_free` | ASAN `heap-use-after-free` | CWE-416 | Pointer dereferenced after the allocation it pointed to was freed | | `double_free` | ASAN `attempting double-free` | CWE-415 | `free()` called twice on the same allocation | | `integer_overflow` | UBSAN `signed-integer-overflow` / `unsigned-integer-overflow` | CWE-190 | Arithmetic produces a value outside the type's range | | `type_confusion` | ASAN OOB or UBSAN `vptr` | CWE-843 | A value is interpreted as a different type than it was created with — frequently across vtable / dispatch-table boundaries | | `format_string` | ASAN OOB / UBSAN | CWE-134 | Attacker-controlled bytes reach the format-spec argument of a `printf`-family call | | `null_deref` | SIGSEGV (caught by ASAN as `SEGV on unknown address 0x000000000000`) | CWE-476 | Dereference of a pointer the attacker can force to NULL | | `uninitialized_memory` | MSan `use-of-uninitialized-value` | CWE-457 | Read of memory before it was written | | `race_condition` | TSAN `data race` | CWE-362 | Concurrent unsynchronized access (a TOCTOU is a special case where the racing accesses are check-then-use) | | `memory_leak` | LSan / ASAN leak report | CWE-401 | Heap allocation lost without `free()` |
**CWE precision rule.** Always cite the _root-cause_ CWE, not the _consequence_ CWE. An integer overflow that leads to an undersized heap allocation and a subsequent OOB write is CWE-190 (the arithmetic bug), not CWE-122 (the consequence). A `strncpy` using the wrong size constant is CWE-806 (buffer access using size of source buffer), not CWE-120 (generic buffer overflow).
These are the high-yield sites to look for whenever the surface processes attacker-controlled lengths, counts, offsets, or indices. Each is a _pattern_, not a procedure — the same pattern fires across many surfaces (parsers, codecs, compression, RPC framing, allocator wrappers).
A secure\* runtime for autonomous AI agents, where security policy is derived from a human-readable constitution. _\*When someone writes "secure," you should immediately be skeptical. What do we mean by secure?_
Markdown formatting conventions for email summary documents — heading depth, list style, line length, emoji policy, and a…
Reference for Gmail's search query syntax — operators like is:sent, newer_than:, from:, has:attachment, label:, and how they…
Canonical shape of the .workflow/emails/emails.json file passed between the fetch and summarize states — required fields (sender,…
Tone and length conventions for email summaries — voice, verb tense, what to include vs omit, and target sentence count. Read…
Reference vocabulary for designing instrumented harnesses that drive vulnerability discovery — design classes (trigger-driven vs…
Reference vocabulary for interpreting vulnerability findings — detector-vs-impact distinction, severity anchoring on demonstrated…