Agent skill

Events

by Nethereum in Nethereum/Nethereum

Filter, query, and decode smart contract events and logs using Nethereum (.NET).

MITAuto-check passedBackend & APIs

Install Events

skills CLI
$ npx skills add Nethereum/Nethereum --skill events -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install Nethereum/Nethereum events --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/Nethereum/Nethereum.git skills-src && mkdir -p .claude/skills && cp -r skills-src/plugins/nethereum-skills/skills/events .claude/skills/events && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
events
GitHub stars
2.3k
Token cost
~1.9k tokens
SKILL.md length
277 words
Files
1
Skills in repo
71
Repo updated
First seen
Licence
MIT

At a glance

Filter, query, and decode smart contract events and logs using Nethereum (.NET).

  • The user asks about event filtering
  • SKILL.md covers Define an Event DTO, Get an Event Handler, Query All Historical Events and Filter by Indexed Parameters, plus 8 more sections
  • Calls dotnet; reaches mainnet.infura.io
  • Listening for contract events

What it does

Events is an agent skill from Nethereum/Nethereum. Filter, query, and decode smart contract events and logs using Nethereum (.NET). Use this skill whenever the user asks about event filtering, log querying, listening for contract events, decoding event logs, Transfer events, Approval events, or any EVM log processing with C or .NET.

Its SKILL.md is about 1.9k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.

It sits in Backend & APIs, covering Smart contracts. It works with .NET, C# and Ethereum. The repository describes itself as: Ethereum .Net cross platform integration library. The licence is MIT.

When your agent uses it

  • The user asks about event filtering
  • Listening for contract events
  • Decoding event logs
  • Transfer events

Example prompts

  • “/events”

Requirements

  • A credential in YOUR_KEY

What it can do on your machine

Read from SKILL.md and the folder at commit 229f278. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    Shell commands in SKILL.md call:

    • dotnet

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    Hosts in commands or code, which the agent is likely to contact:

    • mainnet.infura.io

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

Events loads about 1.9k tokens when it runs. Until then it costs about 73 tokens; SKILL.md has 277 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~73
When it runs · the whole SKILL.md, loaded when a task matches
~1.9k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check passed

The automated check found no risky patterns in SKILL.md.

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.

SKILL.md

The full file from Nethereum/Nethereum at commit 229f278, republished under its MIT licence (© Nethereum). 277 words, ~1,920 tokens.

Download SKILL.mdSave it as .claude/skills/events/SKILL.md (or your agent's skills folder).
name
events
description
Filter, query, and decode smart contract events and logs using Nethereum (.NET). Use this skill whenever the user asks about event filtering, log querying, listening for contract events, decoding event logs, Transfer events, Approval events, or any EVM log processing with C# or .NET.
user-invocable
true

Smart Contract Events

NuGet: Nethereum.Web3

bash
dotnet add package Nethereum.Web3

Define an Event DTO

Map a Solidity event to a C# class using [Event] and [Parameter] attributes. The fourth argument (true) marks indexed (topic) parameters.

csharp
using System.Numerics;
using Nethereum.ABI.FunctionEncoding.Attributes;
using Nethereum.Contracts;

[Event("Transfer")]
public class TransferEventDTO : IEventDTO
{
    [Parameter("address", "_from", 1, true)]
    public string From { get; set; }

    [Parameter("address", "_to", 2, true)]
    public string To { get; set; }

    [Parameter("uint256", "_value", 3, false)]
    public BigInteger Value { get; set; }
}

Nethereum ships TransferEventDTO and ApprovalEventDTO for ERC-20 in Nethereum.Contracts.Standards.ERC20.ContractDefinition.

Get an Event Handler

csharp
var web3 = new Web3("https://mainnet.infura.io/v3/YOUR_KEY");
var contractAddress = "0xYourContractAddress";

// From web3
var transferEvent = web3.Eth.GetEvent<TransferEventDTO>(contractAddress);

// From contract handler
var contractHandler = web3.Eth.GetContractHandler(contractAddress);
var transferEvent = contractHandler.GetEvent<TransferEventDTO>();

Query All Historical Events

csharp
var filterInput = transferEvent.CreateFilterInput(
    BlockParameter.CreateEarliest(),
    BlockParameter.CreateLatest());

var allTransfers = await transferEvent.GetAllChangesAsync(filterInput);

foreach (var transfer in allTransfers)
{
    Console.WriteLine(
        $"From: {transfer.Event.From} To: {transfer.Event.To} Value: {transfer.Event.Value}");
}

Filter by Indexed Parameters

Indexed parameters become topics the node filters server-side.

By sender (first indexed param)
csharp
var filterByFrom = transferEvent.CreateFilterInput(fromAddress);
var results = await transferEvent.GetAllChangesAsync(filterByFrom);
By recipient (second indexed param)

Pass null for the first topic to skip it:

csharp
var filterByTo = transferEvent.CreateFilterInput<string, string>(null, toAddress);
var results = await transferEvent.GetAllChangesAsync(filterByTo);
By both sender and recipient
csharp
var filterBoth = transferEvent.CreateFilterInput(fromAddress, toAddress);
var results = await transferEvent.GetAllChangesAsync(filterBoth);
By arrays of addresses
csharp
var filterFromArray = transferEvent.CreateFilterInput(new[] { addr1, addr2 });

var filterToArray = transferEvent.CreateFilterInput(null, new[] { recipA, recipB });

var filterBothArrays = transferEvent.CreateFilterInput(
    new[] { addr1, addr2 },
    new[] { recipA, recipB });

Live Filter (Poll for New Events)

Install a filter and poll for changes instead of querying history:

csharp
var contractHandler = web3.Eth.GetContractHandler(contractAddress);
var eventFilter = contractHandler.GetEvent<TransferEventDTO>();

var filterId = await eventFilter.CreateFilterAsync();

// ... transactions happen ...

var newEvents = await eventFilter.GetFilterChangesAsync(filterId);
foreach (var evt in newEvents)
{
    Console.WriteLine($"New transfer: {evt.Event.Value}");
}

Decode Events from Transaction Receipt

csharp
var receipt = await web3.Eth.GetTransactionReceipt
    .SendRequestAsync(transactionHash);

var transfers = receipt.DecodeAllEvents<TransferEventDTO>();

foreach (var transfer in transfers)
{
    Console.WriteLine(
        $"From: {transfer.Event.From} To: {transfer.Event.To} Value: {transfer.Event.Value}");
}

From a JArray of logs:

csharp
var decoded = receipt.Logs.DecodeAllEvents<TransferEventDTO>();

Custom Event DTO

csharp
[Event("ItemCreated")]
public class ItemCreatedEventDTO : IEventDTO
{
    [Parameter("uint256", "itemId", 1, true)]
    public BigInteger ItemId { get; set; }

    [Parameter("address", "result", 2, false)]
    public string Result { get; set; }
}

var items = receipt.DecodeAllEvents<ItemCreatedEventDTO>();

Query Events Across All Contracts

csharp
// No contract address -- matches all contracts
var eventForAny = new Event<TransferEventDTO>(web3.Client);
var filterInput = eventForAny.CreateFilterInput();
var allTransfers = await eventForAny.GetAllChangesAsync(filterInput);

// Scoped to one contract
var eventForOne = new Event<TransferEventDTO>(web3.Client, contractAddress);
var results = await eventForOne.GetAllChangesAsync(eventForOne.CreateFilterInput());

Built-in ERC-20 Event DTOs

csharp
using Nethereum.Contracts.Standards.ERC20.ContractDefinition;

// TransferEventDTO - Transfer(address indexed _from, address indexed _to, uint256 _value)
// ApprovalEventDTO - Approval(address indexed _owner, address indexed _spender, uint256 _value)

var transfers = receipt.DecodeAllEvents<TransferEventDTO>();
var approvals = receipt.DecodeAllEvents<ApprovalEventDTO>();

Typed Topic Filtering with FilterInputBuilder

Fluent, lambda-based API for building event filters -- reference indexed properties by name with compile-time checking:

csharp
// Filter by sender
var filter = new FilterInputBuilder<TransferEventDTO>()
    .AddTopic(t => t.From, "0xSenderAddress")
    .Build(contractAddress);

var results = await transferEvent.GetAllChangesAsync(filter);

// OR matching
var filter = new FilterInputBuilder<TransferEventDTO>()
    .AddTopic(t => t.From, new[] { "0xAddr1", "0xAddr2" })
    .Build(contractAddress);

// Multiple indexed params + block range
var filter = new FilterInputBuilder<TransferEventDTO>()
    .AddTopic(t => t.From, "0xFrom")
    .AddTopic(t => t.To, "0xTo")
    .Build(contractAddress, BlockParameter.CreateEarliest(), BlockParameter.CreateLatest());

// Multiple contracts
var filter = new FilterInputBuilder<TransferEventDTO>()
    .AddTopic(t => t.From, "0xSender")
    .Build(new[] { contract1, contract2 });

Key Types

  • Event<T> -- typed event handler, created from web3 or client
  • FilterInputBuilder<T> -- fluent lambda-based filter builder for indexed topics
  • IEventDTO -- marker interface for event DTOs
  • [Event("Name")] -- maps DTO to Solidity event name
  • [Parameter("type", "name", order, indexed)] -- maps DTO property to event parameter
  • EventLog<T> -- wrapper with .Event (decoded DTO), .Log (raw FilterLog)
  • NewFilterInput -- filter configuration with address, topics, block range
  • BlockParameter.CreateEarliest() / BlockParameter.CreateLatest() -- block range bounds

Common Patterns

TaskMethod
Get event handler from web3web3.Eth.GetEvent<T>(address)
Get event handler from contractcontractHandler.GetEvent<T>()
Query historical eventsevent.GetAllChangesAsync(filterInput)
Install live filterevent.CreateFilterAsync()
Poll live filterevent.GetFilterChangesAsync(filterId)
Decode from receiptreceipt.DecodeAllEvents<T>()
Decode from JArray logsreceipt.Logs.DecodeAllEvents<T>()
Filter by first indexed paramevent.CreateFilterInput(value)
Filter by second indexed paramevent.CreateFilterInput<T1,T2>(null, value)
Filter by both indexed paramsevent.CreateFilterInput(val1, val2)
Filter by address arraysevent.CreateFilterInput(new[]{...}, new[]{...})
Cross-contract querynew Event<T>(web3.Client)

© Nethereum, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

Just SKILL.md in plugins/nethereum-skills/skills/events of Nethereum/Nethereum.

Open the folder on GitHubat commit 229f278

Compare with similar skills

Events next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

Events compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Events this skillNethereum/Nethereum2.3k—~1.9kAutomated safety check: PassMIT
.NET API Compatibility DesignAaronontheweb/dotnet-skills1.2k2 repos~2.7kAutomated safety check: PassMIT
Tsp Csharpquerylenshq/ef-querylens225—~1.3kAutomated safety check: PassMIT
Explorer Contract Verificationsablier-labs/evm-monorepo353—~1.9kAutomated safety check: PassCustom licence
XML DocumentationVonage/vonage-dotnet-sdk118—~2.7kAutomated safety check: PassApache-2.0
Developing Smart ContractsLFDT-Lineth/lineth-monorepo126—~1.4kAutomated safety check: PassAGPL-3.0

Similar skills

  • .NET API Compatibility Design

    Aaronontheweb/dotnet-skills

    Applies extend-only design rules to NuGet packages and distributed systems, covering source, binary and wire compatibility and how to deprecate members safely.

    1.2k GitHub starsUsed in 2 repos~2.7k tokens
    Backend & APIsAuto-check passed
  • Tsp Csharp

    querylenshq/ef-querylens

    Comprehensive C and .NET development skill for TSP projects.

    225 GitHub stars~1.3k tokensUpdated 1 mo ago
    Backend & APIsAuto-check passed
  • Explorer Contract Verification

    sablier-labs/evm-monorepo

    Verify smart contracts on Etherscan, Routescan, and Blockscout block explorers.

    353 GitHub stars~1.9k tokensUpdated 13 days ago
    Backend & APIsAuto-check passed
  • XML Documentation

    Vonage/vonage-dotnet-sdk

    Improve XML documentation in the Vonage .NET SDK. An agent skill from Vonage/vonage-dotnet-sdk.

    118 GitHub stars~2.7k tokensUpdated 3 mo ago
    Backend & APIsAuto-check passed
  • Developing Smart Contracts

    LFDT-Lineth/lineth-monorepo

    Solidity smart contract development guidelines for Lineth blockchain.

    126 GitHub stars~1.4k tokensUpdated today
    Backend & APIsAuto-check passed
  • Dotnet 10 Csharp 14

    sketch7/FluentlyHttpClient

    A skill your agent uses when building .NET 10 or C 14 applications; when using minimal APIs, modular monolith patterns, or feature folders; when implementing HTTP resilience, Options pattern…

    121 GitHub stars~2.2k tokensUpdated 19 days ago
    Backend & APIsAuto-check passed

More from Nethereum/Nethereum

All 71 skills in this repo
  • Aa Batching Paymasters

    Nethereum/Nethereum

    Help users batch multiple calls into a single UserOperation and sponsor gas with paymasters using Nethereum Account Abstraction.

    2.3k GitHub stars~1.5k tokensUpdated 2 days ago
    Auto-check passed
  • Aa Bundler

    Nethereum/Nethereum

    Help users run an ERC-4337 bundler using Nethereum — set up in-process or standalone bundlers with mempool, validation, reputation, and JSON-RPC server.

    2.3k GitHub stars~1.2k tokensUpdated 2 days ago
    Auto-check passed
  • Abi Encoding

    Nethereum/Nethereum

    Encode and decode Ethereum ABI data with Nethereum. An agent skill from Nethereum/Nethereum.

    2.3k GitHub stars~1.3k tokensUpdated 2 days ago
    Auto-check passed
  • Abi Retrieval

    Nethereum/Nethereum

    Fetch contract ABIs from Sourcify, Etherscan, and 4Byte Directory using the composite ABIInfoStorage pattern (.NET/C).

    2.3k GitHub stars~1.5k tokensUpdated 2 days ago
    Auto-check passed
  • Account Abstraction

    Nethereum/Nethereum

    Help users implement ERC-4337 Account Abstraction with Nethereum — send UserOperations, use smart accounts, route contract calls through a bundler, enable gasless transactions, or work with AA in…

    2.3k GitHub stars~1.7k tokensUpdated 2 days ago
    Auto-check passed
  • Address Utils

    Nethereum/Nethereum

    Validate and format Ethereum addresses with Nethereum. An agent skill from Nethereum/Nethereum.

    2.3k GitHub stars~1.2k tokensUpdated 2 days ago
    Auto-check passed

Works with

Categories

Questions about Events

What does Events do?

Filter, query, and decode smart contract events and logs using Nethereum (.NET). Events is an agent skill from Nethereum/Nethereum.NET).

When should I use Events?

Events fits situations like: the user asks about event filtering; listening for contract events; decoding event logs; transfer events.

How do I install Events in Claude Code?

Run `npx skills add Nethereum/Nethereum --skill events -a claude-code`. Or copy the skill folder (plugins/nethereum-skills/skills/events in Nethereum/Nethereum) into .claude/skills/events in your project. Claude Code loads it when a task matches its description.

How do I install Events in Codex?

Run `npx skills add Nethereum/Nethereum --skill events -a codex`. Or copy the skill folder (plugins/nethereum-skills/skills/events in Nethereum/Nethereum) into .agents/skills/events in your project. Codex loads it when a task matches its description.

Can I use Events in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add Nethereum/Nethereum --skill events -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/events, .gemini/skills/events, .github/skills/events and .opencode/skills/events in your project.

What does Events need to run?

Going by SKILL.md and its folder, Events needs the command-line tools its instructions call (dotnet). Our summary lists: A credential in YOUR_KEY.

Does Events access the network?

SKILL.md names 1 domain. In commands or code: mainnet.infura.io; the agent is likely to contact it when it follows the instructions. This is read from the text; nothing was executed.

Is Events safe to install?

Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.

What licence does Events use?

Events is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Events use?

About 1.9k tokens (SKILL.md is roughly 7.7k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.

What are the alternatives to Events?

Skills that share tags, products or a category with Events: .NET API Compatibility Design (Aaronontheweb/dotnet-skills, 1.2k stars), Tsp Csharp (querylenshq/ef-querylens, 225 stars), Explorer Contract Verification (sablier-labs/evm-monorepo, 353 stars) and XML Documentation (Vonage/vonage-dotnet-sdk, 118 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Events?

Nethereum (a GitHub organization) maintains it in Nethereum/Nethereum, which has 2,260 GitHub stars. The repository holds 71 skills in this directory. The repository was last updated on October 5, 2026.

Source: Nethereum/Nethereum on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.