CtrlK
BlogDocsLog inGet started
Tessl Logo

acsl-annotation-assistant

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-assistant
What are skills?

89

Does it follow best practices?

Validation for skill structure

SKILL.md
Review
Evals

Evaluation results

100%

Annotating a Ring Buffer Library for Embedded Systems

Memory safety function contracts

Criteria
Without context
With context

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

100%

8%

Formally Specifying a String Processing Utility

Loop invariant and variant annotations

Criteria
Without context
With context

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

100%

Specifying a Numeric Utilities Module with Multiple Cases

Behaviors, predicates, and axiomatic definitions

Criteria
Without context
With context

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

Evaluated
Agent
Claude Code

Table of Contents

Is this your skill?

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.