Skills misra-automotive-c
install
source · Clone the upstream repo
git clone https://github.com/openclaw/skills
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/openclaw/skills "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/budhadityarano/misra-automotive-c" ~/.claude/skills/clawdbot-skills-misra-automotive-c && rm -rf "$T"
manifest:
skills/budhadityarano/misra-automotive-c/SKILL.mdsource content
MISRA Automotive C — Review Skill
Quick Reference
| File | Coverage |
|---|---|
| Mandatory rules — never violate, no deviation allowed |
| Required rules — must comply or raise formal deviation |
| Essential types, fixed-width integers, casts, essential type model |
| No dynamic alloc, volatile, ISR constraints, stack discipline |
| goto, loops, switch, if-else chains, single exit |
| Macros, include guards, #undef, ## operator |
| ASIL A–D relevance for key MISRA C:2012 rules |
When to Activate
Activate this skill when the user:
- Pastes C code and asks for a MISRA review, compliance check, or audit
- Uses trigger words: "misra", "misra check", "misra review", "automotive c", "embedded c review", "iso 26262", "asil"
- Asks "is this MISRA compliant?" or "what rules does this violate?"
Review Workflow — Follow These Steps in Order
Step 1 — Parse the Code
- Read every line of the submitted C code carefully.
- Identify the context: function body, header file, ISR, macro definition, type declaration.
- Note all variable types, control flow paths, preprocessor directives.
Step 2 — Check Mandatory Rules First (load misra-mandatory.md
)
misra-mandatory.mdMandatory rules have zero tolerance — flag every violation immediately. Priority mandatory checks:
- Rule 1.3 — No undefined behaviour
- Rule 2.1 — No unreachable code
- Rule 13.2 — No side effects in expressions where order is unsequenced
- Rule 14.3 — Controlling expressions shall not be invariant
- Rule 15.1 — No
goto - Rule 17.1 — No
features<stdarg.h> - Rule 17.3 — No implicit function declarations
- Rule 17.4 — All exit paths of a non-void function shall have an explicit return
- Rule 21.3 — No
,malloc
,calloc
,reallocfree
Step 3 — Check Required Rules (load misra-required.md
, types-and-casting.md
, control-flow.md
, preprocessor.md
)
misra-required.mdtypes-and-casting.mdcontrol-flow.mdpreprocessor.mdRequired rules must be complied with unless a formal deviation exists. Check:
- Typedef usage for fixed-width types (Rule 4.6 → D.4.6)
- Essential type model violations (Rules 10.1–10.8)
- All switch statements have a
clause (Rule 16.4)default - All
chains end withif-else if
(Rule 15.7)else - Single-entry single-exit preferred (Rule 15.5)
- All struct/union members initialised (Rule 9.1)
- All macros parenthesised (Rule 20.7)
- No function-like macros unless unavoidable (Rule 20.10)
Step 4 — Check Embedded / Memory Rules (load memory-embedded.md
)
memory-embedded.md
used on all hardware-mapped registers and shared ISR variablesvolatile- No dynamic memory allocation (heap) anywhere in safety-critical paths
- No recursion (Rule 17.2)
- Fixed-width integer types used exclusively for hardware registers and protocol fields
- ISR functions: no heavy computation, no blocking calls
Step 5 — Map to ISO 26262 ASIL (load iso26262-mapping.md
)
iso26262-mapping.md- For every rule violation found, report its ASIL classification
- ASIL D violations are highest severity — highlight prominently
- Report ASIL A violations but mark as lower urgency
Step 6 — Generate the Violation Report
Output the report in EXACTLY this format for every violation found:
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ VIOLATION #<N> ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ Rule : MISRA C:2012 Rule <X.Y> Category : Mandatory | Required | Advisory ASIL : A | B | C | D | Not mapped Severity : CRITICAL | HIGH | MEDIUM | LOW Location : Line <N> — <brief description of what the line does> Non-Compliant Code: <exact offending line(s)> Why it violates Rule <X.Y>: <1–3 sentence plain-English explanation of the rule and why this code breaks it> MISRA-Compliant Replacement: <corrected code, complete and ready to use> Explanation of fix: <1–2 sentences explaining what changed and why it is now compliant> ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
After all individual violations, output a summary table:
REVIEW SUMMARY ────────────────────────────────────────────────── Total violations : <N> Mandatory : <N> ← must fix before any safety certification Required : <N> ← must fix or raise formal deviation Advisory : <N> ← recommended to fix ASIL breakdown: ASIL D : <N> ← safety critical, fix immediately ASIL C : <N> ASIL B : <N> ASIL A : <N> Not mapped : <N> Overall compliance status: FAIL | CONDITIONAL | PASS ──────────────────────────────────────────────────
Code Generation Workflow
When asked to generate new automotive/embedded C code (not review existing code):
Always apply these rules unconditionally — no exceptions:
Types:
- Use
,uint8_t
,uint16_t
,uint32_t
,uint64_t
,int8_t
,int16_t
,int32_t
— neverint64_t
,int
,unsigned int
,long
for numeric datachar - Use
(frombool
) for boolean values — never integer flags<stdbool.h> - Always cast explicitly when converting between types — no implicit narrowing
Memory:
- Never use
,malloc
,calloc
, orreallocfree - All variables initialised at declaration point
- Arrays are fixed-size, statically allocated
- Hardware register pointers declared
volatile
Control flow:
- No
goto - All
/if
chains end withelse ifelse - All
statements have aswitchdefault - All loops have a defined maximum iteration count
- Every non-void function has a single explicit
at the end when possiblereturn
Functions:
- All parameters and return types use fixed-width typedefs
- All return values checked by callers
- No recursion
- Maximum one level of pointer indirection unless justified
Macros:
- Function-like macros: all parameters and the whole expression parenthesised
- Prefer
functions over function-like macrosstatic inline - Include guards on every header (
)#ifndef FILENAME_H / #define FILENAME_H / ... / #endif
Escalation Rules
- If the code contains Rule 21.3 violations (dynamic allocation) in any path reachable from a safety function, output a ⚠️ SAFETY CRITICAL banner at the top of the report before any violations.
- If Rule 15.1 (goto) is found, flag it as ASIL D regardless of context.
- If Rule 17.2 (recursion) is found in any function, trace the full call chain if visible and report it.
- If the code appears to be an ISR (function name contains
,ISR
,_IRQ
,_Handler
, or has a_isr
annotation), apply__attribute__((interrupt))
ISR rules with heightened strictness.memory-embedded.md