Verify that interface and class contracts (preconditions, postconditions, invariants) are preserved across program versions. Use when validating refactorings, checking API compatibility, verifying design-by-contract implementations, or ensuring behavioral contracts remain intact after code changes. Automatically detects contract violations, identifies affected methods and classes, and provides actionable guidance for resolving violations while maintaining program correctness.
Install with Tessl CLI
npx tessl i github:ArabelaTso/Skills-4-SE --skill interface-contract-verifier82
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
Verify that formal or structured contracts (preconditions, postconditions, invariants) defined in interfaces and classes are preserved when updating to a new program version.
Extract contracts from both versions:
python scripts/contract_extractor.py --program old_version --output old_contracts.json
python scripts/contract_extractor.py --program new_version --output new_contracts.jsonCompare and verify contract preservation:
python scripts/contract_verifier.py --old old_contracts.json --new new_contracts.json --output report.jsonExamine violations: weakened preconditions, strengthened postconditions, broken invariants.
Requirements before method execution:
def withdraw(amount):
"""Precondition: amount > 0 and amount <= balance"""Guarantees after method execution:
def deposit(amount):
"""Postcondition: balance == old(balance) + amount"""Properties always true for a class:
class BankAccount:
"""Invariant: balance >= 0"""Liskov Substitution Principle:
New version rejects previously valid inputs.
New version guarantees less.
Class invariant no longer holds.
Relax precondition or update callers.
Strengthen implementation to meet original guarantee.
Add checks to maintain invariant in all methods.
c1fb172
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.