Agent skill

Evm Maintainer

by RaoFoundation in RaoFoundation/subtensor

Maintain backwards-compatible, versioned EVM precompiles that expose runtime extrinsics, state, constants, and APIs to Solidity.

Apache-2.0Auto-check passedBackend & APIs

Install Evm Maintainer

skills CLI
$ npx skills add RaoFoundation/subtensor --skill evm-maintainer -a claude-code

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

GitHub CLI
$ gh skill install RaoFoundation/subtensor evm-maintainer --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/RaoFoundation/subtensor.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.agents/skills/evm-maintainer .claude/skills/evm-maintainer && 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
evm-maintainer
GitHub stars
391
Token cost
~2.5k tokens
SKILL.md length
1,323 words
Files
5 (incl. references)
Skills in repo
3
Repo updated
First seen
Licence
Apache-2.0

At a glance

Maintain backwards-compatible, versioned EVM precompiles that expose runtime extrinsics, state, constants, and APIs to Solidity.

  • Works in 5 steps: Determine the diff → Review the diff in the context of… → Handle changed functions, state… → …
  • Tasks that involve Smart contracts
  • SKILL.md covers Reference routing, Backwards compatibility, Notes on coding precompiles and Maintenance workflow, plus 5 more sections
  • Instructions only: no scripts, shell commands, URLs or credentials in SKILL.md

What it does

Evm Maintainer is an agent skill from RaoFoundation/subtensor. Maintain backwards-compatible, versioned EVM precompiles that expose runtime extrinsics, state, constants, and APIs to Solidity.

Its SKILL.md is about 2.5k tokens, which your agent loads only when the skill is triggered. The skill folder holds 5 other files, including reference files (for example `references/abi-versioning.md`, `references/coverage-and-testing.md` and `references/exceptions.md`).

It sits in Backend & APIs, covering Smart contracts. It works with Solidity and Rust. The licence is Apache-2.0.

When your agent uses it

  • Tasks that involve Smart contracts

Example prompts

  • “/evm-maintainer”

Workflow steps

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

  1. Determine the diff
  2. Review the diff in the context of current precompiles vs. subtensor functionality
  3. Handle changed functions, state variables and maps, and constants
  4. Handle added functions, state variables and maps, and constants
  5. Update precompile documentation

What it can do on your machine

Read from SKILL.md and the folder at commit 5c6e83e. 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

    No scripts in the folder and no shell commands in SKILL.md.

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

  • Network

    No URLs in SKILL.md.

    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

Evm Maintainer loads about 2.5k tokens when it runs, and up to ~11k if it reads all its reference files. Until then it costs about 36 tokens; SKILL.md has 1,323 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~36
When it runs · the whole SKILL.md, loaded when a task matches
~2.5k
With references · SKILL.md plus every file in references/, read only if the agent opens them
~11k

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 RaoFoundation/subtensor at commit 5c6e83e, republished under its Apache-2.0 licence (© RaoFoundation). 1,323 words, ~2,548 tokens.

Download SKILL.mdSave it as .claude/skills/evm-maintainer/SKILL.md (or your agent's skills folder). This skill also uses 4 other files; get the full folder from GitHub.
name
evm-maintainer
description
Maintain backwards-compatible, versioned EVM precompiles that expose runtime extrinsics, state, constants, and APIs to Solidity.

EVM Precompile Maintainer

You are the maintainer of EVM precompiles. EVM precompiles in subtensor should expose the deterministic functionality available to client applications to EVM smart contracts: extrinsics, state maps and values, runtime constants, and runtime API/RPC results through typed interfaces. Your job is to keep this coverage current without breaking deployed smart contracts that rely on existing ABIs. Read the notes below and then execute the workflow.

Reference routing

  • Before classifying or implementing any precompile change, including an additive function, runtime adaptation, bug fix, deprecation, or disablement, read ABI versioning.
  • Before implementing or reviewing precompile coverage and tests, read Coverage and testing.
  • Before classifying pallet state or runtime constants, or adding, reviewing, or omitting a typed view, read State exposure and use its direct, wrapped, and do-not-expose classifications. Do not override a classification without an explicit human decision.
  • Before flagging or changing an existing view because of its storage cardinality or scan behavior, read Reviewed exceptions. Apply an exception only to the exact function and invariant recorded there.

Backwards compatibility

Treat every released precompile as a permanent public API. Preserve the ability of deployed contracts, including immutable and externally audited wrappers, to keep working across runtime upgrades without changing their source code, bytecode, configured precompile addresses, or calldata.

Compatibility covers observable behavior, not merely the continued existence of a four-byte selector. Preserve the documented meaning of the call whenever that meaning can still be represented honestly and safely.

For each affected released function or view:

  1. Preserve the old interface and meaning through the existing implementation or a bounded adapter whenever possible.
  2. Add a versioned function when the new behavior needs different inputs, outputs, or semantics. Keep the old address and selector routed.
  3. Use soft deprecation, which marks a function as deprecated while preserving its released behavior, by default. Declare deprecation and replacement metadata on the Rust precompile function with the lifecycle annotation described in ABI versioning. Treat the annotated Rust function as the source of truth and generate Solidity lifecycle annotations and registry metadata from it; do not maintain separate hand-written lifecycle data. Never fabricate data or silently reinterpret an old field to avoid a compatibility decision.
  4. If hard deprecation may be necessary, stop and follow the mainnet release warning and lifecycle process in ABI versioning. A general request to update precompiles does not authorize an early compatibility break.
  5. Prove that legacy callers still work and that unrelated precompiles and ABIs are unchanged by following Coverage and testing.

An exposed runtime constant is a view of the value compiled into the current runtime. Preserve its selector, return encoding, units, and documented meaning, but do not freeze its old numeric value when a runtime upgrade legitimately changes the source constant. Preserve the old representation through an honest adapter and add a versioned view if the constant's type, units, or meaning changes.

Notes on coding precompiles

  • Keep every precompile path O(1) in CPU and memory unless the exact path is a human-reviewed exception in Reviewed exceptions.
  • For a state-changing function, use PrecompileHandleExt::try_dispatch_runtime_call and the established precompile patterns where they apply. Construct the highest-level pallet call and dispatch it with the mapped EVM caller as RawOrigin::Signed. This preserves the pallet's ownership, role, rate-limit, freeze-window, and other checks. Do not reproduce the extrinsic's logic, call an internal do_* helper, write its storage directly, or substitute RawOrigin::Root or RawOrigin::None.
  • Expose a state-changing extrinsic only when that highest-level pallet call accepts a non-Root signed origin.
  • An extrinsic that accepts either a signed authority, such as a subnet owner, or Root may expose its signed path. Do not expose an extrinsic that is Root-only or None-only unless a separately approved authorization design is added to the runtime. If the only way to make a proposed operation succeed is to grant the caller a stronger origin, stop and request that design.
  • Replace bulk runtime APIs and storage scans with bounded indexed or cursor-based views. Apply the bound before performing the work; never call an unbounded helper and truncate its result afterward. Preserve the exact reviewed scan exceptions in Reviewed exceptions.
  • Read runtime constants from their authoritative runtime or pallet configuration source. Never duplicate the literal value in precompile code. Group related constants into coherent typed views when that keeps the interface smaller without obscuring their meaning.
  • Follow ABI versioning for every released interface.
  • Treat repository-owned Rust function lifecycle annotations as the source of truth for registry deprecation metadata, replacement selectors, migration messages, and generated Solidity interfaces and @custom:deprecated NatSpec. Do not hand-edit generated Solidity lifecycle data. Operational disablement remains a separate dynamic value and must not be encoded in a function annotation.
  • Do not use Ethereum reserved precompile addresses for subtensor functionality.
  • Assign new Bittensor domain precompiles sequentially from the next unused Bittensor address. Addresses 0x080f through 0x0813 are reserved for Scheduler, Drand, Timestamp, Runtime Configuration, and the Precompile Registry, respectively; treat an address as implemented only once its routing, tests, and runtime registration have shipped. Add routing and tests that lock every implemented address and selector before release.
  • Follow the code style and established patterns in existing precompiles.
  • Represent Substrate account IDs in EVM space as 32-byte public keys.
  • Preserve each released precompile's documented balance units, scaling, precision, and rounding; several existing interfaces expose amounts directly in rao (or alpha). Apply the 10^9 EVM balance conversion only where that specific interface's ABI is defined in 18-decimal EVM units (for example payable msg.value paths), never as a blanket rule. For new functions, document the unit of every amount parameter and return value per ABI, and add a versioned function before changing units.
Show full SKILL.md (393 more words)Show less

Maintenance workflow

Perform this workflow on:

  • Every change to subtensor Rust codebase
  • When explicitly prompted

Step 1 — Determine the diff

Determine the diff between current branch and the most recent main branch (may need to pull it locally if it is outdated). See how this diff affects EVM precompiles:

  • Does it remove or change any functions that precompiles rely on? Does it change function signatures or underlying functionality?
  • Does it add or change any functionality: extrinsics, RPCs, state maps and values, or runtime constants?

Step 2 - Review the diff in the context of current precompiles vs. subtensor functionality

  • All extrinsics that accept a non-Root signed origin, as well as all state variables, maps, and constants should be exposed directly or through type-safe readers to precompile callers for the following pallets:
    • subtensor
    • admin-util
    • balances
    • proxy
    • scheduler
    • drand
    • crowdloan
    • timestamp
    • swap
  • Root-only, None-only, inherent, disabled, and compatibility no-op extrinsics must be inventoried and explicitly classified as not callable through typed EVM precompiles.
  • All deterministic runtime API RPC results for the subtensor pallet should be exposed through typed precompile views. Preserve a similar interface when it is already bounded; redesign bulk results as bounded indexed or cursor-based views when it is not.

Use Coverage and testing to build the inventory and distinguish deployed, partial, proposed, and missing coverage. Use State exposure to classify every state item and runtime constant, and Reviewed exceptions before treating an existing view as incomplete or improperly bounded.

Step 3 - Handle changed functions, state variables and maps, and constants

Apply the backwards-compatibility decision rule above and the detailed ABI versioning process. Preserve released behavior through a bounded adapter and add a versioned function for new behavior. If preservation is impossible, dishonest, unbounded, or unsafe, stop and report the release blocker; do not implement an immediate compatibility break as an ordinary precompile update.

Step 4 - Handle added functions, state variables and maps, and constants

Determine the category under which the new functionality needs to be added and add to the corresponding existing precompile. You may create a new precompile too if the category does not fall into any existing ones.

Step 5 - Update precompile documentation

Update the Solidity interface, generated ABI, NatSpec, registry metadata, SDK copies, and public precompile documentation together. Verify their agreement and ensure unrelated precompile artifacts remain unchanged. Document the meaning, units, type conversion, and runtime-upgrade behavior of exposed constants.

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

Files

SKILL.md and 4 other files (references) in .agents/skills/evm-maintainer of RaoFoundation/subtensor.

  • SKILL.md
  • references/abi-versioning.md
  • references/coverage-and-testing.md
  • references/exceptions.md
  • references/state-exposure.md

Open the folder on GitHubat commit 5c6e83e

Compare with similar skills

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

Evm Maintainer compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Evm Maintainer this skillRaoFoundation/subtensor391—~2.5kAutomated safety check: PassApache-2.0
Feynman Auditor0xiehnnkta/nemesis-auditor2431 repos~11kAutomated safety check: PassMIT
RadarAuditware/radar154—~2.1kAutomated safety check: PassGPL-3.0
Smart Contract Auditforefy/.context1521 repos~5.1kAutomated safety check: PassMIT
Smart Contract Auditelophanto/EloPhanto106—~2.7kAutomated safety check: PassCustom licence
Fizz Convertpashov/skills1.2k2 repos~3.7kAutomated safety check: PassMIT

Similar skills

  • Feynman Auditor

    0xiehnnkta/nemesis-auditor

    Deep business logic bug finder using the Feynman technique. An agent skill from 0xiehnnkta/nemesis-auditor.

    243 GitHub starsUsed in 1 repo~11k tokens
    Backend & APIsAuto-check passed
  • Radar

    Auditware/radar

    Use radar for smart contract security analysis, AST generation, and detection template development.

    154 GitHub stars~2.1k tokensUpdated 1 mo ago
    Backend & APIsAuto-check passed
  • Smart Contract Audit

    forefy/.context

    Comprehensive smart contract security audit framework with multi-expert analysis.

    152 GitHub starsUsed in 1 repo~5.1k tokens
    SecurityAuto-check passed
  • Smart Contract Audit

    elophanto/EloPhanto

    A skill your agent uses when reviewing a Solidity, Vyper, or Rust (Solana/Anchor) smart contract for paid audit work or pre-launch sanity check.

    106 GitHub stars~2.7k tokensUpdated 9 days ago
    SecurityAuto-check passed
  • 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
  • Smart Contract Audit

    greatpie/smart-contract-audit-skill

    Script-backed, out-of-box auditing workflow for Solidity/EVM repositories based on EVMbench detect/patch/exploit methodology.

    101 GitHub stars~1.1k tokensUpdated 7 mo ago
    Backend & APIsAuto-check passed

More from RaoFoundation/subtensor

  • Auditor

    RaoFoundation/subtensor

    Run the domain-focused Auditor persona on the local working tree's diff against a base branch.

    391 GitHub stars~813 tokensUpdated today
    Auto-check passed
  • Skeptic

    RaoFoundation/subtensor

    Run the security-focused Skeptic persona on the local working tree's diff against a base branch.

    391 GitHub stars~660 tokensUpdated today
    Auto-check passed

Works with

Categories

Questions about Evm Maintainer

What does Evm Maintainer do?

Maintain backwards-compatible, versioned EVM precompiles that expose runtime extrinsics, state, constants, and APIs to Solidity. Evm Maintainer is an agent skill from RaoFoundation/subtensor. Maintain backwards-compatible, versioned EVM precompiles that expose runtime extrinsics, state, constants, and APIs to Solidity.

When should I use Evm Maintainer?

Evm Maintainer fits situations like: tasks that involve Smart contracts.

How do I install Evm Maintainer in Claude Code?

Run `npx skills add RaoFoundation/subtensor --skill evm-maintainer -a claude-code`. Or copy the skill folder (.agents/skills/evm-maintainer in RaoFoundation/subtensor) into .claude/skills/evm-maintainer in your project. Claude Code loads it when a task matches its description.

How do I install Evm Maintainer in Codex?

Run `npx skills add RaoFoundation/subtensor --skill evm-maintainer -a codex`. Or copy the skill folder (.agents/skills/evm-maintainer in RaoFoundation/subtensor) into .agents/skills/evm-maintainer in your project. Codex loads it when a task matches its description.

Can I use Evm Maintainer 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 RaoFoundation/subtensor --skill evm-maintainer -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/evm-maintainer, .gemini/skills/evm-maintainer, .github/skills/evm-maintainer and .opencode/skills/evm-maintainer in your project.

What does Evm Maintainer need to run?

SKILL.md names no scripts, command-line tools or credentials: Evm Maintainer is instructions for the agent only.

Does Evm Maintainer access the network?

SKILL.md contains no URLs. Any network use would come from the scripts or tools the agent runs. This is read from the text; nothing was executed.

Is Evm Maintainer 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 Evm Maintainer use?

Evm Maintainer is published under the Apache-2.0 licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Evm Maintainer use?

About 2.5k tokens (SKILL.md is roughly 10k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full. Its references folder adds about 8.8k tokens, read only when the agent opens those files.

What are the alternatives to Evm Maintainer?

Skills that share tags, products or a category with Evm Maintainer: Feynman Auditor (0xiehnnkta/nemesis-auditor, 243 stars), Radar (Auditware/radar, 154 stars), Smart Contract Audit (forefy/.context, 152 stars) and Smart Contract Audit (elophanto/EloPhanto, 106 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Evm Maintainer?

RaoFoundation (a GitHub organization) maintains it in RaoFoundation/subtensor, which has 391 GitHub stars. The repository holds 3 skills in this directory. The repository was last updated on October 10, 2026.

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