From pow10
NASA Power of 10 Rule 3 — No dynamic memory allocation after initialization. Severity: blocker.
How this skill is triggered — by the user, by Claude, or both
Slash command
/pow10:pow10-rule-03-no-dynamic-memoryThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
**Severity:** blocker
Severity: blocker
After the initialization phase, no heap allocation. All memory comes from fixed-size pools, the stack, or static buffers. Worst-case memory usage must be analyzable at build time.
Heap allocation is nondeterministic: it can fail, fragment, leak, or be used after free. None of these failure modes are statically rule-out-able. Eliminating post-init allocation makes worst-case memory provable.
malloc, new, make([]T, n), [])Allocate at init time. Reuse buffers (object pools, ring buffers, static arrays). Cap input sizes with assertions so worst-case memory is provable. Mark the init/post-init boundary explicitly.
Tag the end of init explicitly so reviewers and tools know where the no-alloc rule kicks in:
int main(void) {
init_pools();
init_drivers();
// pow10:init-end
for (;;) { tick(); }
}
// pow10: allow rule=3 until=YYYY-MM-DD owner=<handle> reason="..."
Creates, edits, and optimizes skills for Claude Code, including drafting, evaluating with test prompts, iterating on performance, and improving skill descriptions for better triggering accuracy.
npx claudepluginhub trevoredris/power-of-10-rules