Foundatio
FoundatioFx/Foundatio
A skill your agent uses when working with Foundatio infrastructure abstractions for .NET -- caching, queuing, messaging, file storage, distributed locking, or background jobs.
Help users backfill the Ethereum block archive (headers, bodies, receipts) over devp2p with Nethereum (.NET) — ParallelBlockBackfiller, BackwardBlockWalker header skeletons, IBlockSource streaming…
$ npx skills add Nethereum/Nethereum --skill devp2p-full-sync -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install Nethereum/Nethereum devp2p-full-sync --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/Nethereum/Nethereum.git skills-src && mkdir -p .claude/skills && cp -r skills-src/plugins/nethereum-skills/skills/devp2p-full-sync .claude/skills/devp2p-full-sync && rm -rf skills-srcUse ~/.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/
Install the "devp2p-full-sync" agent skill from https://github.com/Nethereum/Nethereum/tree/master/plugins/nethereum-skills/skills/devp2p-full-sync into .claude/skills/devp2p-full-sync/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "devp2p-full-sync", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/Nethereum/Nethereum/tree/master/plugins/nethereum-skills/skills/devp2p-full-syncType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add Nethereum/Nethereum --skill devp2p-full-sync -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install Nethereum/Nethereum devp2p-full-sync --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/Nethereum/Nethereum.git skills-src && mkdir -p .agents/skills && cp -r skills-src/plugins/nethereum-skills/skills/devp2p-full-sync .agents/skills/devp2p-full-sync && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "devp2p-full-sync" agent skill from https://github.com/Nethereum/Nethereum/tree/master/plugins/nethereum-skills/skills/devp2p-full-sync into .agents/skills/devp2p-full-sync/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "devp2p-full-sync", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add Nethereum/Nethereum --skill devp2p-full-sync -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install Nethereum/Nethereum devp2p-full-sync --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/Nethereum/Nethereum.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/plugins/nethereum-skills/skills/devp2p-full-sync .cursor/skills/devp2p-full-sync && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "devp2p-full-sync" agent skill from https://github.com/Nethereum/Nethereum/tree/master/plugins/nethereum-skills/skills/devp2p-full-sync into .cursor/skills/devp2p-full-sync/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "devp2p-full-sync", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/Nethereum/Nethereum.git --path plugins/nethereum-skills/skills/devp2p-full-sync--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add Nethereum/Nethereum --skill devp2p-full-sync -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install Nethereum/Nethereum devp2p-full-sync --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/Nethereum/Nethereum.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/plugins/nethereum-skills/skills/devp2p-full-sync .gemini/skills/devp2p-full-sync && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "devp2p-full-sync" agent skill from https://github.com/Nethereum/Nethereum/tree/master/plugins/nethereum-skills/skills/devp2p-full-sync into .gemini/skills/devp2p-full-sync/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "devp2p-full-sync", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install Nethereum/Nethereum devp2p-full-syncInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add Nethereum/Nethereum --skill devp2p-full-sync -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/Nethereum/Nethereum.git skills-src && mkdir -p .github/skills && cp -r skills-src/plugins/nethereum-skills/skills/devp2p-full-sync .github/skills/devp2p-full-sync && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "devp2p-full-sync" agent skill from https://github.com/Nethereum/Nethereum/tree/master/plugins/nethereum-skills/skills/devp2p-full-sync into .github/skills/devp2p-full-sync/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "devp2p-full-sync", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add Nethereum/Nethereum --skill devp2p-full-sync -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install Nethereum/Nethereum devp2p-full-sync --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/Nethereum/Nethereum.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/plugins/nethereum-skills/skills/devp2p-full-sync .opencode/skills/devp2p-full-sync && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "devp2p-full-sync" agent skill from https://github.com/Nethereum/Nethereum/tree/master/plugins/nethereum-skills/skills/devp2p-full-sync into .opencode/skills/devp2p-full-sync/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "devp2p-full-sync", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
devp2p-full-syncHelp users backfill the Ethereum block archive (headers, bodies, receipts) over devp2p with Nethereum (.NET) — ParallelBlockBackfiller, BackwardBlockWalker header skeletons, IBlockSource streaming…
Devp2p Full Sync is an agent skill from Nethereum/Nethereum. Help users backfill the Ethereum block archive (headers, bodies, receipts) over devp2p with Nethereum (.NET) — ParallelBlockBackfiller, BackwardBlockWalker header skeletons, IBlockSource streaming, and reorg handling. Use this skill whenever the user mentions full sync, block backfill, downloading blocks/headers/bodies/receipts over devp2p, Phase 1 sync, ParallelBlockBackfiller, TipBandBodyFollowService, or handling a chain reorg while syncing.
Its SKILL.md is about 2.1k 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. It works with .NET and Ethereum. The repository describes itself as: Ethereum .Net cross platform integration library. The licence is MIT.
Read from SKILL.md and the folder at commit 229f278. It shows what the files ask for, not the result of running them.
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.
Shell commands in SKILL.md call:
dotnetFrom the folder's file list and the shell code blocks in SKILL.md.
Links to these hosts (documentation or services it may open):
docs.nethereum.comFrom URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Devp2p Full Sync loads about 2.1k tokens when it runs. Until then it costs about 116 tokens; SKILL.md has 914 words of instructions outside code blocks.
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.
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.
The full file from Nethereum/Nethereum at commit 229f278, republished under its MIT licence (© Nethereum). 914 words, ~2,146 tokens.
.claude/skills/devp2p-full-sync/SKILL.md (or your agent's skills folder).Once your node can connect to peers (devp2p-peer-connect) and is wired up as a SyncNode (devp2p-run-a-node), it needs the actual chain data: headers, bodies, and receipts for every block. This is Phase 1 of Nethereum's snap-first sync — downloading and verifying the block archive from [genesis..pivot] — and it's useful on its own even outside a full snap-sync run, for backfilling history behind an already snap-synced head.
dotnet add package Nethereum.DevP2P.SyncYou need an IChainStoreBundle to persist into, an IPeerPool with at least one connected peer, and an IFetchRequestScheduler to fan requests across that pool.
Phase 1 downloads three things per block — headers, bodies (transactions + uncles), and receipts — and verifies every one of them cryptographically before it's trusted:
TransactionsHash and UnclesHash.ReceiptHash.A peer that returns bad data doesn't corrupt your archive — a mismatch is detected and the request is retried against another peer. This is the same trustless-fetch principle behind Phase 2 in snap sync (devp2p-snap-sync): never persist what you can't verify.
ParallelBlockBackfiller runs a concurrent pipeline — header producer/loader, body fetcher, receipt fetcher, and a persistence drain — over a shared BlockTaskQueue:
Task<BackfillResult> BackfillAsync(ulong startBlock, ulong endBlock, CancellationToken ct);
Task<BackfillResult> BackfillAsync(ulong startBlock, ulong endBlock, IBodyFillCursor cursor, CancellationToken ct);
Task<BackfillResult> BackfillAsync(ulong startBlock, ulong endBlock, bool headersFromStore, CancellationToken ct);The headersFromStore: true overload is the one you reach for when headers are already persisted (laid down by a header skeleton, or by a previous partial run) and only bodies/receipts are missing:
var pool = new OnePeerPool(); // your IPeerPool with a connected peer
var worker = new ServingWorker(chain); // your IPeerRequestWorker implementation
var backfiller = new ParallelBlockBackfiller(scheduler, pool, worker, bundle);
using var cts = new CancellationTokenSource(TimeSpan.FromSeconds(30));
var result = await backfiller.BackfillAsync(3, 7, headersFromStore: true, cts.Token);
// result.Ran == true
// result.BlocksWritten == 5, result.TransactionsWritten == 5, result.ReceiptsWritten == 5
// bundle.Metadata.GetLastFetchedBody() advances to 7BlocksWritten/TransactionsWritten/ReceiptsWritten tell you exactly what landed; bundle.Metadata.GetLastFetchedBody() is the durable cursor Phase 1 advances only over the contiguous persisted prefix — so a crash mid-fill leaves the cursor pointing at real, complete data, never past a gap.
The headersFromStore: true path assumes headers are already in the store. BackwardBlockWalker is what lays that skeleton down: it walks the chain backward from a trusted-tip hash anchor, validating the parent-hash chain as it goes, and optionally persisting bodies too. BlockTaskQueue — the producer/consumer queue underneath the backfiller — caps concurrent in-flight requests per peer per stage via maxInFlightPerPeer (default 1; the backfiller itself uses 4, so a fast peer can pipeline across the round trip instead of idling waiting for one response before sending the next request).
Phase 1's archive backfill and the "keep the live tip fresh" job are deliberately separate concerns: TipBandBodyFollowService fills [execution-head+1 .. trusted-tip] with bodies and receipts so the block executor never starves waiting on the history drain to catch up. It's driven the same way as a bounded backfill, but against an IBodyFillCursor anchored at the execution head rather than a fixed [start, end] range:
var service = new TipBandBodyFollowService(scheduler, pool, bundle, activations);
var cursor = new ExecutionHeadBodyFillCursor(bundle);
await service.FillOnceAsync(backfiller, cursor, ct);
// cursor advances to the trusted tip independently of bundle.Metadata's archive body cursorThe archive cursor (bundle.Metadata.GetLastFetchedBody()) does not move when you drive the tip band this way — the two cursors track different things on purpose, so a slow archive backfill can never stall block execution at the tip.
IBlockSourceA follower doesn't call the backfiller directly in most cases — it consumes an IBlockSource, a chain-agnostic abstraction (defined in Nethereum.CoreChain) that streams blocks and reports when the source diverges from what was previously seen (a reorg or a bad peer). Two DevP2P-backed implementations exist:
DevP2PBlockSource — a multi-peer source (built on the pool + scheduler) that a follower pulls from, reporting chain breaks so the caller can auto-rewind.PushedBlockSource — accepts blocks pushed to it (e.g. from a broadcast peer bridge) rather than pulling.Note: these two types are named in the README's type table (role description, no method signature block); no tagged doc-example test covers constructing or streaming from either. Check
src/Nethereum.CoreChain/Sync/IBlockSource.csdirectly for the current interface shape before relying on it as stable.
Phase 1 validates the parent-hash chain as it fetches, so a peer serving a block whose parent doesn't match what was already fetched is detected immediately rather than silently corrupting the archive. At the streaming layer, DevP2PBlockSource reports this as a chain break so the follower can auto-rewind to the last common ancestor and re-fetch forward — the same "verify before persist, never trust a single peer" discipline Phase 1 applies to bodies and receipts applies here to chain continuity itself.
| Symptom | Cause | Fix |
|---|---|---|
BackfillAsync(headersFromStore: true) waits forever without progress | The header skeleton hasn't reached the requested startBlock yet — the filler correctly waits rather than falsely declaring failure | Confirm BackwardBlockWalker's descent has reached startBlock, or increase how long you wait |
bundle.Metadata.GetLastFetchedBody() doesn't move even though blocks are being written | You're driving TipBandBodyFollowService, whose cursor is intentionally separate from the archive cursor | This is expected — check the tip-band cursor (ExecutionHeadBodyFillCursor), not the archive one |
| Backfill throws on a mismatched body/receipt | A peer returned data that doesn't match the header's commitment — this is the trustless-fetch check working as intended | The scheduler retries against another peer; if it persists, suspect a malicious or badly-synced peer |
| Archive cursor jumps unexpectedly on restart after a crash | It shouldn't — Phase 1 only advances the cursor over the contiguous persisted prefix | If you see this, it's worth filing — this is a documented invariant, not expected behavior |
| I want to… | Use |
|---|---|
| Fill a bounded, known range of blocks | ParallelBlockBackfiller.BackfillAsync(start, end, ct) |
| Fill bodies/receipts over headers already in the store | BackfillAsync(start, end, headersFromStore: true, ct) |
| Keep the live tip fed without waiting on history | TipBandBodyFollowService.FillOnceAsync |
| Consume blocks as a stream with reorg handling | IBlockSource (DevP2PBlockSource pulling, or PushedBlockSource for a push model) |
| Lay the header skeleton itself, backward from a trusted tip | BackwardBlockWalker |
For full documentation, see: https://docs.nethereum.com/docs/devp2p/guide-full-sync
© Nethereum, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
Just SKILL.md in plugins/nethereum-skills/skills/devp2p-full-sync of Nethereum/Nethereum.
Open the folder on GitHubat commit 229f278
Devp2p Full Sync 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.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Devp2p Full Sync this skillNethereum/Nethereum | 2.3k | — | ~2.1k | Automated safety check: Pass | MIT | |
| FoundatioFoundatioFx/Foundatio | 2.1k | — | ~3.9k | Automated safety check: Pass | Apache-2.0 | |
| NEAR Intents Swap Integrationinternet-court/internet-court-skill | 6.4k | 2 repos | ~939 | Automated safety check: Pass | Custom licence | |
| Aspnet Corefanslead/ReverseProxy.Store | 163 | 2 repos | ~1.4k | Automated safety check: Pass | Apache-2.0 | |
| .NET API Compatibility DesignAaronontheweb/dotnet-skills | 1.2k | 2 repos | ~2.7k | Automated safety check: Pass | MIT | |
| Msal Auth Code FlowAzureAD/microsoft-authentication-library-for-dotnet | 1.5k | — | ~917 | Automated safety check: Pass | MIT |
FoundatioFx/Foundatio
A skill your agent uses when working with Foundatio infrastructure abstractions for .NET -- caching, queuing, messaging, file storage, distributed locking, or background jobs.
internet-court/internet-court-skill
Builds cross-chain token swaps and bridge flows with the NEAR Intents 1Click API: quotes, deposit addresses, per-chain deposits and status polling.
fanslead/ReverseProxy.Store
Build, review, refactor, or architect ASP.NET Core web applications using current official guidance for .NET web development.
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.
AzureAD/microsoft-authentication-library-for-dotnet
Authorization Code Flow for web applications using MSAL.NET confidential client to sign in users and access APIs on their behalf
querylenshq/ef-querylens
Comprehensive C and .NET development skill for TSP projects.
Nethereum/Nethereum
Help users batch multiple calls into a single UserOperation and sponsor gas with paymasters using Nethereum Account Abstraction.
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.
Nethereum/Nethereum
Encode and decode Ethereum ABI data with Nethereum. An agent skill from Nethereum/Nethereum.
Nethereum/Nethereum
Fetch contract ABIs from Sourcify, Etherscan, and 4Byte Directory using the composite ABIInfoStorage pattern (.NET/C).
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…
Nethereum/Nethereum
Validate and format Ethereum addresses with Nethereum. An agent skill from Nethereum/Nethereum.
Categories
Help users backfill the Ethereum block archive (headers, bodies, receipts) over devp2p with Nethereum (.NET) — ParallelBlockBackfiller, BackwardBlockWalker header skeletons, IBlockSource streaming…. Devp2p Full Sync is an agent skill from Nethereum/Nethereum.NET) — ParallelBlockBackfiller, BackwardBlockWalker header skeletons, IBlockSource streaming, and reorg handling.
Devp2p Full Sync fits situations like: the user mentions full sync; downloading blocks/headers/bodies/receipts over devp2p; parallelBlockBackfiller; tipBandBodyFollowService.
Run `npx skills add Nethereum/Nethereum --skill devp2p-full-sync -a claude-code`. Or copy the skill folder (plugins/nethereum-skills/skills/devp2p-full-sync in Nethereum/Nethereum) into .claude/skills/devp2p-full-sync in your project. Claude Code loads it when a task matches its description.
Run `npx skills add Nethereum/Nethereum --skill devp2p-full-sync -a codex`. Or copy the skill folder (plugins/nethereum-skills/skills/devp2p-full-sync in Nethereum/Nethereum) into .agents/skills/devp2p-full-sync in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add Nethereum/Nethereum --skill devp2p-full-sync -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/devp2p-full-sync, .gemini/skills/devp2p-full-sync, .github/skills/devp2p-full-sync and .opencode/skills/devp2p-full-sync in your project.
Going by SKILL.md and its folder, Devp2p Full Sync needs the command-line tools its instructions call (dotnet).
SKILL.md names 1 domain. As links in the text: docs.nethereum.com. This is read from the text; nothing was executed.
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.
Devp2p Full Sync is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 2.1k tokens (SKILL.md is roughly 8.6k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.
Skills that share tags, products or a category with Devp2p Full Sync: Foundatio (FoundatioFx/Foundatio, 2.1k stars), NEAR Intents Swap Integration (internet-court/internet-court-skill, 6.4k stars), Aspnet Core (fanslead/ReverseProxy.Store, 163 stars) and .NET API Compatibility Design (Aaronontheweb/dotnet-skills, 1.2k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
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.