Skip to content
Security
Skill

/event-correctness

Trigger 15 events detected in recon event_definitions.md (optional skill) - Used By breadth agents (assigned to core state or dedicated agent)

From plugin
plamen
276160 skills12 agents4 commands
Install
$ npx -y skills add PlamenTSV/plamen --skill event-correctness --agent claude-code

How it fires

How this skill gets triggered: by you, by Claude, or both.

  • Fires itselfAuto-invocation. Claude auto-loads it when your prompt matches the work.Auto-invocation is when the right skill fires by itself at the right moment, driven by a FLOW.md router and a hook, instead of you invoking it by name. It is the difference between a skill being installed and a skill actually getting used.Read the full definition →
  • You can call itInvoke it directly when you want it.
  • Slash command/event-correctness

Context preview

The summary Claude sees to decide when to auto-load this skill.

Trigger 15 events detected in recon event_definitions.md (optional skill) - Used By breadth agents (assigned to core state or dedicated agent)

SKILL.md

event-correctness.SKILL.md
name: "event-correctness"
description: "Trigger 15 events detected in recon event_definitions.md (optional skill) - Used By breadth agents (assigned to core state or dedicated agent)"

Skill: EVENT_CORRECTNESS

> **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

Methodology

Step 1: Inventory All Emit Statements

From `{SCRATCHPAD}/emit_list.md`, extract every `emit` statement with:

  • Event name, parameter values passed, source location
  • The state-changing operation(s) that precede the emit

Step 2: Parameter Semantic Check

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. |

Step 3: Off-Chain Impact Assessment

For events consumed by off-chain systems (indexers, frontends, monitoring):

  • If event parameters are wrong → off-chain state diverges from on-chain state
  • Severity: typically LOW-MEDIUM unless financial decisions depend on indexed events

Output

Findings use IDs `[EVT-N]`. Include the emit location, the incorrect parameter, and the correct value it should emit.

Read more
Ships withplamen

Autonomous Web3 security auditor for Claude Code and OpenAI Codex CLI. Orchestrates 18-100 AI agents across 40+ phases to produce audit reports with verified PoC exploits — for smart contracts and L1 node-client infrastructure.

Get the whole plugin