agents/skills/evm/event-correctness/SKILL.md
Trigger 15 events detected in recon event_definitions.md (optional skill) - Used By breadth agents (assigned to core state or dedicated agent)
npx skillsauth add plamentsv/plamen event-correctnessInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Trigger: >15 events detected in recon event_definitions.md (optional skill) Used By: breadth agents (assigned to core state or dedicated agent) Purpose: Verify emitted event parameters match actual state changes
From {SCRATCHPAD}/emit_list.md, extract every emit statement with:
For EACH emit statement, verify:
| # | Check | Question |
|---|-------|----------|
| 1 | Value accuracy | Does each parameter reflect the ACTUAL post-operation state? (not a stale pre-operation value, not an input parameter that was modified before use) |
| 2 | Index correctness | If the event indexes an entity (ID, address, index), is the index the CORRECT entity? (not off-by-one, not a different entity's ID, not a loop variable after increment) |
| 3 | Ordering | Is the emit placed AFTER all state changes it describes? (not before a conditional that could change the values) |
| 4 | Conditional coverage | If the function has branching logic, does EVERY branch that modifies state emit the appropriate event? (no silent state changes) |
| 5 | Parameter count | Do the emitted parameters match the event definition? (Solidity allows emitting fewer params - missing params default to zero) |
| 6 | Semantic correctness | Does each emitted variable match the SEMANTIC INTENT of the parameter name? If the event parameter is named tokensReceived, is the emitted value the actual tokens received (output), or is it the input amount (e.g., DAI spent)? Compare the parameter name against the variable being emitted - a mismatch between name semantics and actual value is a finding even if types match. |
For events consumed by off-chain systems (indexers, frontends, monitoring):
Findings use IDs [EVT-N]. Include the emit location, the incorrect parameter, and the correct value it should emit.
data-ai
Trigger Pattern Always (run during recon TASK 0, not breadth) - Inject Into Recon agent only (meta_buffer.md enrichment)
data-ai
Trigger Pattern Always (run during recon TASK 0, not breadth) - Inject Into Recon agent only (meta_buffer.md enrichment)
data-ai
Trigger Pattern Always (run during recon TASK 0, not breadth) - Inject Into Recon agent only (meta_buffer.md enrichment)
data-ai
Trigger STABLESWAP_FORK flag (fork-ancestry detects Curve/StableSwap parent via get_d/get_y/ramp_a/StableSwap patterns) - Agent Type general-purpose (standalone niche agent, 1 budget slot)