Create ACSL (ANSI/ISO C Specification Language) formal annotations for C/C++ programs. Use this skill when working with formal verification, adding function contracts (requires/ensures), loop invariants, assertions, memory safety annotations, or any ACSL specifications. Supports Frama-C verification and generates comprehensive formal specifications for C/C++ code.
Install with Tessl CLI
npx tessl i github:ArabelaTso/Skills-4-SE --skill acsl-annotation-assistant89
Does it follow best practices?
If you maintain this skill, you can automatically optimize it using the tessl CLI to improve its score:
npx tessl skill review --optimize ./path/to/skillValidation for skill structure
Memory safety function contracts
Multi-line contract syntax
100%
100%
Single-line assertion syntax
100%
100%
Contracts before declarations
100%
100%
\valid for struct pointer
100%
100%
\valid for out pointer
100%
100%
\separated usage
100%
100%
assigns clause on rb_write
100%
100%
assigns clause on rb_read
100%
100%
assigns \nothing / minimal on rb_reset
100%
100%
Return value postcondition — success path
100%
100%
Return value postcondition — failure path
100%
100%
Explanatory comments on non-obvious specs
100%
100%
integer type in quantifiers
100%
100%
Without context: $0.2215 · 2m 7s · 10 turns · 15 in / 4,369 out tokens
With context: $0.7952 · 5m 9s · 22 turns · 4,669 in / 9,063 out tokens
Loop invariant and variant annotations
loop invariant present — count_in_range
100%
100%
loop assigns present — count_in_range
100%
100%
loop variant present — count_in_range
100%
100%
loop invariant present — replace_char
100%
100%
loop assigns present — replace_char
100%
100%
loop variant present — replace_char
100%
100%
Loop annotations before loop header
100%
100%
integer type in loop invariant quantifiers
100%
100%
Function assigns clause — count_in_range
100%
100%
Function assigns clause — replace_char
100%
100%
\valid_read for const pointer
0%
100%
Invariant bounds loop counter
100%
100%
Result postcondition
100%
100%
Without context: $0.1448 · 1m 36s · 10 turns · 17 in / 2,487 out tokens
With context: $0.7154 · 3m 39s · 20 turns · 5,113 in / 8,258 out tokens
Behaviors, predicates, and axiomatic definitions
behavior blocks in safe_divide
100%
100%
complete behaviors — safe_divide
100%
100%
disjoint behaviors — safe_divide
100%
100%
behavior blocks in abs_value
100%
100%
complete behaviors — abs_value
100%
100%
disjoint behaviors — abs_value
100%
100%
Reusable predicate or logic definition
100%
100%
decreases clause on gcd
100%
100%
assigns \nothing on pure functions
100%
100%
\result postcondition — safe_divide zero case
100%
100%
\result postcondition — abs_value
100%
100%
gcd postcondition — divisibility
100%
100%
assumes clause in behaviors
100%
100%
Without context: $0.1640 · 2m 1s · 11 turns · 18 in / 2,843 out tokens
With context: $0.5784 · 6m 16s · 25 turns · 90 in / 10,127 out tokens
Table of Contents
If you maintain this skill, you can claim it as your own. Once claimed, you can manage eval scenarios, bundle related skills, attach documentation or rules, and ensure cross-agent compatibility.