npx claudepluginhub sc30gsw/vcsdd-claude-code --plugin vcsddThis skill uses the workspace's default tool permissions.
- Phase 5 (formal hardening)
Runs VCSDD Phase 5 formal hardening: invokes vcsdd-verifier for proof obligations using Kani/hypothesis/fast-check, Semgrep security checks, and purity boundary audits.
Guides proof-driven development: prove properties via property-based testing, theorem proving, or tactics before coding; enforces zero unproven properties policy.
Guides property-based testing across multiple languages and smart contracts. Use for writing tests, reviewing serialization/validation/parsing code, or achieving stronger coverage than example-based tests.
Share bugs, ideas, or general feedback.
| Tier | Rust | Python | TypeScript |
|---|---|---|---|
| 1 | proptest, cargo-fuzz | hypothesis | fast-check |
| 2 | kani | (manual invariants) | (manual invariants) |
| 3 | kani + CBMC | (escalate to human) | (escalate to human) |
#[cfg(kani)]
mod verification {
use super::*;
#[kani::proof]
fn verify_parse_empty() {
let result = parse("");
assert!(result == Err(ParseError::Empty));
}
#[kani::proof]
#[kani::unwind(10)]
fn verify_parse_roundtrip() {
let input: String = kani::any();
kani::assume(input.len() < 10);
if let Ok(parsed) = parse(&input) {
assert_eq!(serialize(parsed), input);
}
}
}
from hypothesis import given, strategies as st
@given(st.text(min_size=0, max_size=100))
def test_parse_arbitrary(s):
result = parse(s)
if result.is_ok():
assert serialize(result.value) == s
import * as fc from 'fast-check';
test('parse roundtrip', () => {
fc.assert(
fc.property(fc.string({ minLength: 0, maxLength: 100 }), (s) => {
const result = parse(s);
if (result.ok) {
return serialize(result.value) === s;
}
return true; // error cases are valid
})
);
});
Always produce:
verification-report.mdsecurity-report.mdpurity-audit.mdverification/security-results/If required tool is unavailable:
verification-report.mdskipped when it is not requiredskipped block Phase 6