Agent skill

Execution Client Hardening

by PlamenTSV in PlamenTSV/plamen

L1 trigger - audits execution engine (EVM interpreter, WASM, SVM) for memory corruption, gas mispricing (EXTCODESIZE class), opcode semantics, and VM invariant breaks.

MITAuto-check passedBackend & APIs

Install Execution Client Hardening

skills CLI
$ npx skills add PlamenTSV/plamen --skill execution-client-hardening -a claude-code

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

GitHub CLI
$ gh skill install PlamenTSV/plamen execution-client-hardening --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/PlamenTSV/plamen.git skills-src && mkdir -p .claude/skills && cp -r skills-src/agents/skills/injectable/l1/execution-client-hardening .claude/skills/execution-client-hardening && 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
execution-client-hardening
GitHub stars
303
Token cost
~3.9k tokens
SKILL.md length
1,893 words
Files
1
Skills in repo
87
Repo updated
First seen
Licence
MIT

At a glance

L1 trigger - audits execution engine (EVM interpreter, WASM, SVM) for memory corruption, gas mispricing (EXTCODESIZE class), opcode semantics, and VM invariant breaks.

  • Works in 11 steps: Opcode Coverage Mapping → Gas / Resource Metering → Opcode Semantics → …
  • - audits execution engine (EVM interpreter
  • SKILL.md covers Orchestrator Decomposition Guide, When This Skill Activates, 1. Opcode Coverage Mapping and 2. Gas / Resource Metering, plus 11 more sections
  • Calls git

What it does

Execution Client Hardening is an agent skill from PlamenTSV/plamen. L1 trigger - audits execution engine (EVM interpreter, WASM, SVM) for memory corruption, gas mispricing (EXTCODESIZE class), opcode semantics, and VM invariant breaks.

Its SKILL.md is about 3.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 WebAssembly. The repository describes itself as: Autonomous Web3 security audit agent for Claude Code. The licence is MIT.

When your agent uses it

  • - audits execution engine (EVM interpreter
  • SVM) for memory corruption
  • Gas mispricing (EXTCODESIZE class)
  • Opcode semantics

Example prompts

  • “/execution-client-hardening”

Workflow steps

11 steps, taken from the step headings in SKILL.md.

  1. Opcode Coverage Mapping
  2. Gas / Resource Metering
  3. Opcode Semantics
  4. Precompiles
  5. Memory Safety
  6. Cross-Client Consistency (for forks and alt-clients)
  7. Boundary conditions
  8. Output schema
  9. Known bug exemplars (v0.2 — Round 4 verified)
  10. Unused Configuration Parameter Audit
  11. Fallback if primitives unavailable

What it can do on your machine

Read from SKILL.md and the folder at commit 795962b. 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:

    • git

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

  • Network

    Links to these hosts (documentation or services it may open):

    • eips.ethereum.org
    • blog.ethereum.org
    • ethos.dev
    • usenix.org
    • thecyberexpress.com
    • medium.com

    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

Execution Client Hardening loads about 3.9k tokens when it runs. Until then it costs about 49 tokens; SKILL.md has 1,893 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~49
When it runs · the whole SKILL.md, loaded when a task matches
~3.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 PlamenTSV/plamen at commit 795962b, republished under its MIT licence (© PlamenTSV). 1,893 words, ~3,933 tokens.

Download SKILL.mdSave it as .claude/skills/execution-client-hardening/SKILL.md (or your agent's skills folder).
name
execution-client-hardening
description
L1 trigger - audits execution engine (EVM interpreter, WASM, SVM) for memory corruption, gas mispricing (EXTCODESIZE class), opcode semantics, and VM invariant breaks.

Injectable Skill: Execution Client Hardening

L1 trigger: L1_PATTERN=true AND (core/vm/ OR revm OR interpreter OR opcodes.go OR evm-exec OR svm/ OR move-vm OR wasmi detected in recon subsystem map) Inject Into: depth-state-trace or depth-external Language: Go, Rust, occasionally C++ Finding prefix: [EX-N] Status: v0.1 draft, Round 4 exemplars pending

Orchestrator Decomposition Guide

  • Sections 1, 2: depth-state-trace (VM state transitions)
  • Sections 3, 4: depth-edge-case (opcode semantics)
  • Section 5: depth-external (gas metering)
  • Section 6: depth-consensus-invariant (cross-client consistency)

When This Skill Activates

Recon identifies a VM / execution engine. Covered VMs: EVM (all execution clients), SVM (Solana), Move VM (Aptos, Sui), WASM runtimes (NEAR, Polkadot), custom VMs. Client-vs-client divergence in VM behavior is Critical — historically several Ethereum consensus splits were VM implementation bugs.

1. Opcode Coverage Mapping

Enumerate every opcode / instruction the VM supports. For EVM, consult the latest Yellow Paper + EIPs. For others, the spec document.

OpcodeGas costStack deltaState touchedNotes

This mapping grounds later checks. A new client must implement every opcode; a fork client must not accidentally remove or reprice any opcode.

Tag: [OPCODE-COVERAGE:{missing-or-extra}]

2. Gas / Resource Metering

Every operation must be priced to cover its real cost. Historical bugs: Ethereum Shanghai attacks (2016) — EXTCODESIZE was too cheap relative to disk I/O.

Patterns to check
  • Disk-touching opcodes: SLOAD, SSTORE, EXTCODESIZE, EXTCODECOPY, EXTCODEHASH, BALANCE. Gas cost must reflect the (possibly cold) storage fetch.
  • Recursive opcodes: CALL, DELEGATECALL, CALLCODE, STATICCALL. Gas forwarding (63/64 rule) correctness.
  • Memory-expanding opcodes: MLOAD, MSTORE, RETURNDATACOPY, MCOPY. Memory expansion gas must be computed before the access.
  • Hashing: KECCAK256 cost proportional to input size.
  • Log emission: LOG0-LOG4 cost proportional to data size.
Warm/cold access (EIP-2929)
  • Access list enforcement: first touch is cold (more expensive), subsequent warm
  • Is the access list correctly reset per transaction?
  • On reverted subcalls, does the access list roll back correctly?

Tag: [GAS-MISPRICE:{opcode}:{actual-cost}:{charged-cost}]

3. Opcode Semantics

For each opcode, the semantics must match the spec exactly. Common drift points:

3a. SELFDESTRUCT
  • Pre-Cancun: destroys contract, transfers balance
  • Post-Cancun (EIP-6780): only transfers balance if called in same tx as creation
  • Bug class: incorrect balance accounting (see Optimism OVM_ETH exemplar)
3b. CREATE / CREATE2
  • Address calculation: CREATE = hash(sender, nonce); CREATE2 = hash(0xff, sender, salt, init_code_hash)
  • Collision handling: what happens if the computed address already has code/balance/nonce?
  • Init code size limit (EIP-3860)
3c. RETURNDATACOPY
  • Out-of-bounds access must revert (EIP-211)
  • Returns empty buffer if no return data (not panic)
3d. PUSH0 (EIP-3855)
  • Valid only post-Shanghai. Pre-Shanghai must be invalid.
3e. TLOAD / TSTORE (EIP-1153)
  • Transient storage; resets per transaction
  • Interaction with reverts
3f. MCOPY (EIP-5656)
  • Memory copy, post-Cancun
3g. BLOBHASH / BLOBBASEFEE (EIP-4844)
  • Blob-related

Tag: [OPCODE-SEM:{opcode}:{drift}]

4. Precompiles

Precompiles are native implementations of common functions at fixed addresses.

Check per precompile
  • Is the precompile address correct? (e.g., 0x01 ECRECOVER, 0x02 SHA256, ...)
  • Is the gas cost formula correct? Many precompiles have length-dependent gas.
  • Is the input validated? Precompile panics crash the client.
  • Context-dependent inputs (like Moonbeam's precompile-delegatecall bug): does the precompile care whether it's invoked via CALL vs DELEGATECALL? If yes, is it enforced?

Tag: [PRECOMPILE:{address}:{issue}]

5. Memory Safety

For Go clients, memory safety is largely on the runtime. For Rust clients (reth, revm), unsafe blocks in the VM are a bug source.

Check:

  • Every unsafe in the interpreter hot path
  • Every raw pointer manipulation
  • Every length-based slicing — off-by-one crashes the VM

Interaction with rust-unsafe-audit skill.

5b. Interned/Compacted Identity Coherence

Trigger: The code assigns a compact numeric index or handle to a named entity (a type, account, resource, module, or similar) — typically to avoid storing the full name/key repeatedly — and one or more OTHER structures cache data derived from that entity, keyed by the compact index rather than by the entity's original identity. Common in interning tables, symbol/type caches, and any "intern this name once, refer to it by a small integer afterward" optimization (for example, a Move VM-style loader that interns module/type identities into a numeric table).

Why this is structurally distinct from §8's cache lifecycle set-cover: §8 concerns a SINGLE bounded cache whose OWN entries go stale or grow unbounded. This section concerns MULTIPLE structures that share one index/ handle space, where one structure can be reset/compacted while a SIBLING structure — keyed by the same index space — is not, so a recycled index silently points a stale consumer at a different entity's data. This is an asymmetric-invalidation bug across coupled structures, not a single eviction policy gap, and set-cover on one structure's legs will not catch it.

Methodology:

  1. Enumerate every structure keyed by the index/handle space — not just the primary interning map. Grep for the index type's name (e.g. a TypeIndex, ModuleHandle, or similar newtype) across the codebase and list every map/vector/cache that uses it as a key, not just the one that assigns it.
  2. For every reset / flush / compact / GC path on ANY of those structures, verify that ALL of them are invalidated together, in the SAME atomic step. A reset that clears the primary interning table but leaves a derived cache populated (or vice versa) is the bug.
  3. Check whether index/handle assignment can restart from a low or previously-used value after a partial reset (e.g. a counter reset to 0, or a freelist that recycles slots). If assignment can produce a value that used to belong to a different entity, and any sibling structure still holds an entry under that recycled value, a lookup now silently resolves to the WRONG entity's data instead of erroring.
  4. Trace whether any derived identity is computed by looking up the recycled index in a structure that is NOT part of the reset — e.g. a storage/lookup key, a resource type, or a permission/capability scope derived by indexing into a stale sibling structure. This is the concrete exploitation mechanism: the recycled index doesn't just serve stale bytes, it makes the system compute a DIFFERENT identity than the one the caller intended (structurally analogous to a native-vs-wrapped token mixup, where the same numeric handle is silently resolved against the wrong underlying asset).

Required check: for the primary index/handle-assigning structure and every sibling structure found in step 1, confirm they are reset by the SAME function/transaction boundary, not by independently-triggered paths. Two reset paths that are supposed to stay in lockstep but are invoked from different call sites are a red flag even if both eventually run.

Tag: [IDENTITY-COHERENCE:{index-space}:{structures-affected}]

Severity baseline: High to Critical when the recycled index can be attacker- influenced (attacker controls timing/ordering of the partial reset and the next allocation) and the derived identity affects storage/permission resolution; Medium when reachable only through operator/admin-triggered resets.

6. Cross-Client Consistency (for forks and alt-clients)

If the target is a fork of an upstream execution client:

  1. git diff upstream/main...HEAD -- core/vm/ (or equivalent)
  2. For each modified opcode, cross-check against the reference (EVM reference implementation py_ecc or execution-spec-tests)
  3. For each precompile, test with reference vectors

Tag: [VM-DRIFT:{opcode-or-precompile}]

Show full SKILL.md (770 more words)Show less

7. Boundary conditions

StateTestExpectedObserved
Empty codecontract with 0 bytesspec-defined
Max code size24576 bytes (EIP-170)accepted
Code size + 124577 bytesrejected on CREATE
Gas = 0call with 0 gasout-of-gas
Stack overflow1025 items on stackrevert, not panic
Stack underflowPOP on empty stackrevert, not panic
Memory OOBMLOAD from MAX_U256out-of-gas (memory expansion cost)
SELFDESTRUCT after state changetx does CREATE then SELFDESTRUCTcorrect accounting (post-EIP-6780)

8. Output schema

  • Layer: execution
  • Bug class: gas-misprice / opcode-semantics / precompile / memory-safety / cross-client-drift
  • Preferred evidence tags: [CONFORMANCE-PASS] (execution-spec-tests / Hive) > [DIFF-PASS] (Fluffy-style differential) > [LSP-TRACE]
  • Severity baseline: Critical for cross-client divergence; High for gas mispricing; Medium for precompile bugs without fund loss

9. Known bug exemplars (v0.2 — Round 4 verified)

  1. 2016 Shanghai EXTCODESIZE DoS (block 2283416) — EXTCODESIZE cost ~20 gas but required a disk read of contract code. Attacker invoked it ~50k times per block, forcing 50k disk reads and 20-60s block validation times. Parity unaffected, Geth crawled to a halt. Fix codified as EIP-2929 years later. EF blog; ethos.dev Shanghai attacks. Skill catch point: Section 2 — the gas-per-disk-read ratio is the core invariant. Any opcode where (disk_reads × disk_latency) >> (gas_cost × gas_rate) is a gas-mispricing finding.

  2. Geth RETURNDATACOPY corruption (CVE-2020-26241, Fluffy OSDI '21) — precompile dataCopy did shallow copy of input; subsequent memory write aliased RETURNDATA, causing divergence from other clients. Found via multi-tx differential fuzzing. Fluffy paper. Skill catch point: Section 4 (precompiles) — every opcode that writes to RETURNDATA must fully copy, not alias.

  3. Geth transfer-after-destruct (CVE-2020-26265, Fluffy OSDI '21) — transfer semantics to already-destructed contract diverged between Geth and OpenEthereum. Caused mainnet hard fork event 4 months after disclosure. Skill catch point: Section 3a (SELFDESTRUCT semantics) — model contract lifecycle transitions (create → live → destruct → resurrect) and verify each produces identical output across clients.

  4. Aptos MoveVM integer overflow DoS (October 2022) — MoveVM arithmetic lacked overflow guard; crafted input triggered DoS / chain halt potential. Patched. CyberExpress report. Skill catch point: Section 5 (memory safety / arithmetic) — every VM arithmetic op must use checked_* or explicit modular arithmetic. Every as cast between integer widths is a narrowing-overflow candidate.

  5. Moonbeam precompile CALL/DELEGATECALL confusion ($1M + $50k bounty, pwning.eth, 2022) — Moonbeam's custom precompiles (XC-20, staking, democracy) did not distinguish CALL from DELEGATECALL. A malicious contract could DELEGATECALL the precompile and impersonate msg.sender of the original caller, accessing precompile storage of any user. Immunefi bugfix review. Skill catch point: Section 4 — for every custom precompile, assert context.call_type() != DELEGATECALL at entry. See also cross-environment-semantic-drift.

Critical methodology addition from Round 4 (gas-per-disk-read ratio)

Insert as new Section 2f: The Shanghai lesson has been re-learned multiple times. The core invariant:

For every opcode O:
  worst_case_wall_clock(O) <= gas_cost(O) / target_gas_rate

Where target_gas_rate is the protocol's gas-per-second target (Ethereum: ~10M gas / 12s = 833k gas/s).

Check: for every opcode that touches disk, network, or complex computation, compute worst_case_wall_clock / gas_cost. Any ratio suggesting the opcode can be invoked enough times per block to violate the gas-rate budget is a finding.

Tag: [GAS-RATIO:{opcode}:{worst-ns}:{gas-cost}:{violates?}]

9. Unused Configuration Parameter Audit

A parameter declared in struct Config / Params / ChainSpec that is never read is often a missing enforcement — the developer intended the parameter to cap something but forgot to wire it in. This class hides real resource-bound vulnerabilities.

Methodology:

  1. Find every public field in the protocol's Config / Params / ConsensusParams / ChainConfig struct.
  2. For each field, grep the entire codebase for read sites. Use pre-baked {SCRATCHPAD}/scip/xref_map.md or Grep on .{field_name}. (MCP tools are unavailable in subagent contexts per Claude Code bug #25200.)
  3. A field with ZERO read sites in any validator / enforcer / adjuster is a finding.
  4. A field read only in test / debug / display code is a finding — it means production doesn't enforce it.
  5. Pay special attention to fields with names like max_*, min_*, limit_*, cap_*, ceiling_*, floor_*, bound_* — these are almost always intended as enforcement.
  6. A field read only in ONE branch of a condition may be dead in the hot path.

Required artifact: {SCRATCHPAD}/config_parameter_usage.md:

markdown
| Field | Declared at | Read sites (count) | Enforced? | Notes |
|---|---|---|---|---|
| max_validators | ChainConfig:L42 | 3 | YES | EndBlocker.apply_updates |
| max_difficulty_adjustment_factor | ChainConfig:L51 | 0 | **NO** | **UNUSED — difficulty spike unbounded** |
| min_commit_depth | ChainConfig:L63 | 1 (test only) | **NO** | read only in test_harness.rs |
| max_commitment_txs_per_block | ChainConfig:L89 | 0 | **NO** | **UNUSED — commitment flood possible** |

Every "NO" row is a finding. Severity depends on what the parameter was supposed to bound — parameters that would have capped a resource are Medium to High.

False positives: parameters read only by genesis (legitimately one-time), parameters read transitively through a cloned config struct (grep misses it — verify with SCIP), parameters reserved for future versions (should be commented // reserved, otherwise flag).

Tag: [CONFIG-UNUSED:{field_name}], [CONFIG-TEST-ONLY:{field_name}]

10. Fallback if primitives unavailable

  • Find the opcode dispatch table (switch op in Go, match opcode in Rust)
  • Read each arm
  • Cross-reference against the spec (latest Yellow Paper section)
  • Grep for SELFDESTRUCT, CREATE2, MCOPY individually

Cross-references

  • Related: cross-environment-semantic-drift (L1/L2 semantic differences), consensus-safety-invariants (cross-client divergence is a consensus bug), rust-unsafe-audit (for Rust VMs)
  • Consumed by: depth-state-trace, depth-external, depth-consensus-invariant
  • Severity: docs/l1-mode/severity-matrix.md

© PlamenTSV, 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 agents/skills/injectable/l1/execution-client-hardening of PlamenTSV/plamen.

Open the folder on GitHubat commit 795962b

Compare with similar skills

Execution Client Hardening 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.

Execution Client Hardening compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Execution Client Hardening this skillPlamenTSV/plamen303—~3.9kAutomated safety check: PassMIT
Dtvm Perf ProfileDTVMStack/DTVM157—~1.1kAutomated safety check: PassCustom licence
Dmir Compiler AnalysisDTVMStack/DTVM157—~2.8kAutomated safety check: PassCustom licence
Smart Contract Upgrade Governancesickn33/agentic-awesome-skills47k1 repos~1.4kAutomated safety check: PassMIT
RuView CLI, API and WASMruvnet/RuView97k—~1.2kAutomated safety check: NotesMIT
Fizz Convertpashov/skills1.2k2 repos~3.7kAutomated safety check: PassMIT

Similar skills

  • Dtvm Perf Profile

    DTVMStack/DTVM

    Profile DTVM execution using Linux perf and generate categorized analysis reports.

    157 GitHub stars~1.1k tokensUpdated 20 days ago
    Backend & APIsAuto-check passed
  • Analyze DTVM's dMIR intermediate representation and compilation pipeline.

    157 GitHub stars~2.8k tokensUpdated 20 days ago
    Backend & APIsAuto-check passed
  • Smart Contract Upgrade Governance

    sickn33/agentic-awesome-skills

    Soroban WASM upgrade governance register: executable bytecode hash, timelocked migration delays, and multi-sig authorization quorum.

    47k GitHub starsUsed in 1 repo~1.4k tokens
    Backend & APIsAuto-check passed
  • Covers the RuView `wifi-densepose` command line binary, its Axum REST API and the WebAssembly builds for browsers and ESP32, for embedding or scripting RuView.

    97k GitHub stars~1.2k tokensUpdated today
    Backend & APIsAuto-check: notes
  • Fizz Convert

    pashov/skills

    Convert English-language properties in PROPERTIES.md (produced by the Fizz skill) into Solidity assertions inside the existing fuzz harness, then flip their checkboxes.

    1.2k GitHub starsUsed in 2 repos~3.7k tokens
    Backend & APIsAuto-check passed
  • Spider King

    aoyunyang/spider-king-skill

    Pure-web protocol reverse skill: turn hostile browser clients into browser-free Python collectors.

    507 GitHub stars~7.3k tokensUpdated 1 mo ago
    Backend & APIsAuto-check passed

More from PlamenTSV/plamen

All 87 skills in this repo
  • Audit Prep

    PlamenTSV/plamen

    Prepare Solidity projects for a security audit — test coverage, test quality, NatSpec docs, code hygiene, dependency health, best-practice enforcement, deployment readiness, and project…

    303 GitHub stars~3.7k tokensUpdated 11 days ago
    Auto-check passed
  • Verification Protocol

    PlamenTSV/plamen

    Trigger Pattern Always (used by all verifier agents) - Inject Into security-verifier agents (Phase 5)

    303 GitHub stars~3.5k tokensUpdated 11 days ago
    Auto-check passed
  • Ability Analysis

    PlamenTSV/plamen

    Trigger Pattern Always (Aptos Move) - foundational security check - Inject Into Breadth agents, depth agents

    303 GitHub stars~3.3k tokensUpdated 11 days ago
    Auto-check passed
  • Ability Analysis

    PlamenTSV/plamen

    Trigger Pattern Always (Sui Move) -- foundational security check - Inject Into Breadth agents, depth agents

    303 GitHub stars~3.2k tokensUpdated 11 days ago
    Auto-check passed
  • Account Lifecycle

    PlamenTSV/plamen

    Trigger Pattern ACCOUNTCLOSING flag detected (close/CloseAccount usage) - Inject Into Breadth agents, depth agents

    303 GitHub stars~1.2k tokensUpdated 11 days ago
    Auto-check passed
  • Account Validation

    PlamenTSV/plamen

    Trigger Pattern Always required for Solana audits - Inject Into Breadth agents, depth agents

    303 GitHub stars~1.7k tokensUpdated 11 days ago
    Auto-check passed

Works with

Categories

Questions about Execution Client Hardening

What does Execution Client Hardening do?

L1 trigger - audits execution engine (EVM interpreter, WASM, SVM) for memory corruption, gas mispricing (EXTCODESIZE class), opcode semantics, and VM invariant breaks. Execution Client Hardening is an agent skill from PlamenTSV/plamen. L1 trigger - audits execution engine (EVM interpreter, WASM, SVM) for memory corruption, gas mispricing (EXTCODESIZE class), opcode semantics, and VM invariant breaks.

When should I use Execution Client Hardening?

Execution Client Hardening fits situations like: - audits execution engine (EVM interpreter; SVM) for memory corruption; gas mispricing (EXTCODESIZE class); opcode semantics.

How do I install Execution Client Hardening in Claude Code?

Run `npx skills add PlamenTSV/plamen --skill execution-client-hardening -a claude-code`. Or copy the skill folder (agents/skills/injectable/l1/execution-client-hardening in PlamenTSV/plamen) into .claude/skills/execution-client-hardening in your project. Claude Code loads it when a task matches its description.

How do I install Execution Client Hardening in Codex?

Run `npx skills add PlamenTSV/plamen --skill execution-client-hardening -a codex`. Or copy the skill folder (agents/skills/injectable/l1/execution-client-hardening in PlamenTSV/plamen) into .agents/skills/execution-client-hardening in your project. Codex loads it when a task matches its description.

Can I use Execution Client Hardening 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 PlamenTSV/plamen --skill execution-client-hardening -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/execution-client-hardening, .gemini/skills/execution-client-hardening, .github/skills/execution-client-hardening and .opencode/skills/execution-client-hardening in your project.

What does Execution Client Hardening need to run?

Going by SKILL.md and its folder, Execution Client Hardening needs the command-line tools its instructions call (git).

Does Execution Client Hardening access the network?

SKILL.md names 6 domains. As links in the text: eips.ethereum.org, blog.ethereum.org, ethos.dev, usenix.org, thecyberexpress.com and medium.com. This is read from the text; nothing was executed.

Is Execution Client Hardening 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 Execution Client Hardening use?

Execution Client Hardening 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 Execution Client Hardening use?

About 3.9k tokens (SKILL.md is roughly 16k 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 Execution Client Hardening?

Skills that share tags, products or a category with Execution Client Hardening: Dtvm Perf Profile (DTVMStack/DTVM, 157 stars), Dmir Compiler Analysis (DTVMStack/DTVM, 157 stars), Smart Contract Upgrade Governance (sickn33/agentic-awesome-skills, 47k stars) and RuView CLI, API and WASM (ruvnet/RuView, 97k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Execution Client Hardening?

PlamenTSV (a GitHub user) maintains it in PlamenTSV/plamen, which has 303 GitHub stars. The repository holds 87 skills in this directory. The repository was last updated on September 26, 2026.

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