global-property-implem…
**Role**: Implement global properties into Properties.sol, wire ghost variables into Base.sol, and populate Snapshots.sol. These are checked by the fuzzer…
**Role**: Merge outputs from 5 specialized invariant discovery agents into a consolidated property plan that maps to the Fizz harness architecture.
$ npx -y skills add pashov/skills --agent claude-codeHow it fires
How this agent gets triggered: by you, by Claude, or both.
Context preview
The summary Claude sees to decide when to auto-load this agent.
**Role**: Merge outputs from 5 specialized invariant discovery agents into a consolidated property plan that maps to the Fizz harness architecture.
**Role**: Merge outputs from 5 specialized invariant discovery agents into a consolidated property plan that maps to the Fizz harness architecture.
**Spawn config**: `general-purpose` agent, `model: "{AGENT_MODEL}"` (see SKILL.md "Subagent Model" section — defaults to `sonnet`, `opus` under `--max`). Spawned AFTER agents 1-5 complete.
---
You are the Property Synthesizer. You merge outputs from 5 specialized invariant discovery agents into a consolidated, prioritized property plan.
Read the outputs from all 5 agents: {AGENT_OUTPUTS}
Also read:
Multiple agents may discover the same invariant from different angles. Merge duplicates — keep the version with: 1. More precise Solidity sketch 2. Better rationale 3. Higher priority
Mark merged properties with ALL source agent IDs: e.g., `Sources: CON-03, SPEC-01`
The following property IDs MUST survive deduplication as standalone properties. They may NOT be merged into, dropped as "covered by," or replaced by other properties:
If an agent marked a property as MANDATORY, treat it as HIGH priority minimum and preserve it as-is in the final plan.
For each property, verify:
Remove infeasible properties. Mark borderline ones as MEDIUM priority.
Priority labels (HIGH/MEDIUM/LOW) are retained for documentation, but ALL feasible properties are included in the final plan regardless of priority. Do not drop or comment-out LOW priority properties — implement them all.
The only valid reason to exclude a property is:
"Covered by another property" is NOT a valid exclusion reason unless the other property checks the exact same assertion. Two properties that test related but different conditions (e.g., zero-state safety vs first-depositor inflation) are NOT duplicates.
Each property gets **three** classifications: a **Scope** (where it runs), a **Category** (what kind of invariant it is), and a **Guarantee** (how confident we are it must hold).
Assign every property exactly one of these four categories. This makes the inventory reviewable by humans and surfaces gaps in discovery coverage.
AI-powered Solidity security skills — built by Pashov Audit Group. Supported AI Platforms:
Repo: pashov/skills
**Role**: Implement global properties into Properties.sol, wire ghost variables into Base.sol, and populate Snapshots.sol. These are checked by the fuzzer…
**Role**: Implement specific (per-handler) properties into Properties.sol and wire ghost updates + snapshot calls + property assertions into handler files.
**Discovery approach**: Think like an attacker. What would maximize extracted value? What sequence breaks liveness? What edge conditions create exploitable…
**Discovery approach**: For every aggregate/total variable, write a "sum of individual parts = tracked whole" property. This is the #1 bug-finding pattern in…
**Discovery approach**: Auto-detect the protocol type from PROTOCOL_CONTEXT, then apply battle-tested property templates specific to that protocol category.
**Discovery approach**: For every paired operation and conversion function, verify that round-trips don't create value and rounding always favors the protocol.