Foundry Deploy Fixtures
aviggiano/security
Create or refactor Foundry deployment fixtures for Solidity tests.
Creates or extends a Diffyscan verification config for a deployed contract or deployment.
$ npx skills add lidofinance/diffyscan --skill new-config -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install lidofinance/diffyscan new-config --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/lidofinance/diffyscan.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.claude/skills/new-config .claude/skills/new-config && 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 "new-config" agent skill from https://github.com/lidofinance/diffyscan/tree/main/.claude/skills/new-config into .claude/skills/new-config/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "new-config", 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/lidofinance/diffyscan/tree/main/.claude/skills/new-configType 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 lidofinance/diffyscan --skill new-config -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install lidofinance/diffyscan new-config --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/lidofinance/diffyscan.git skills-src && mkdir -p .agents/skills && cp -r skills-src/.claude/skills/new-config .agents/skills/new-config && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "new-config" agent skill from https://github.com/lidofinance/diffyscan/tree/main/.claude/skills/new-config into .agents/skills/new-config/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "new-config", 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 lidofinance/diffyscan --skill new-config -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install lidofinance/diffyscan new-config --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/lidofinance/diffyscan.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/.claude/skills/new-config .cursor/skills/new-config && 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 "new-config" agent skill from https://github.com/lidofinance/diffyscan/tree/main/.claude/skills/new-config into .cursor/skills/new-config/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "new-config", 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/lidofinance/diffyscan.git --path .claude/skills/new-config--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 lidofinance/diffyscan --skill new-config -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install lidofinance/diffyscan new-config --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/lidofinance/diffyscan.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/.claude/skills/new-config .gemini/skills/new-config && 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 "new-config" agent skill from https://github.com/lidofinance/diffyscan/tree/main/.claude/skills/new-config into .gemini/skills/new-config/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "new-config", 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 lidofinance/diffyscan new-configInstalls 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 lidofinance/diffyscan --skill new-config -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/lidofinance/diffyscan.git skills-src && mkdir -p .github/skills && cp -r skills-src/.claude/skills/new-config .github/skills/new-config && 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 "new-config" agent skill from https://github.com/lidofinance/diffyscan/tree/main/.claude/skills/new-config into .github/skills/new-config/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "new-config", 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 lidofinance/diffyscan --skill new-config -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install lidofinance/diffyscan new-config --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/lidofinance/diffyscan.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/.claude/skills/new-config .opencode/skills/new-config && 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 "new-config" agent skill from https://github.com/lidofinance/diffyscan/tree/main/.claude/skills/new-config into .opencode/skills/new-config/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "new-config", 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.
new-configCreates or extends a Diffyscan verification config for a deployed contract or deployment.
New Config is an agent skill from lidofinance/diffyscan. Creates or extends a Diffyscan verification config for a deployed contract or deployment. Use for adding addresses, pinning GitHub sources and dependencies, or setting up a chain in configs/. Existing failing runs belong to debug-diff; explorer adapter code belongs to add-explorer.
Its SKILL.md is about 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, covering Smart contracts and Deployment. It works with GitHub and Solidity. The repository describes itself as: Diffyscan detects deployment drift by comparing GitHub source with explorer-verified source and on-chain bytecode across EVM networks. The licence is MIT.
3 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit 9fd6833. 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:
uvFrom the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md. Its commands use uv, which can reach the network depending on how they are called.
From URLs in SKILL.md, links to its own repository left out.
Names these keys or tokens, usually read from environment variables:
ETHERSCAN_EXPLORER_TOKENGITHUB_API_TOKENFrom names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
New Config loads about 1k tokens when it runs. Until then it costs about 73 tokens; SKILL.md has 437 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 lidofinance/diffyscan at commit 9fd6833, republished under its MIT licence (© lidofinance). 437 words, ~1,009 tokens.
.claude/skills/new-config/SKILL.md (or your agent's skills folder).Create a reproducible config covering the requested deployment. Run commands from the repository root.
Read configuration and a nearby config under configs/<project>/<mainnet|testnet>/. Confirm the chain, addresses and names, expected GitHub commit, source root, and explorer/RPC selection from deployment records and the user's context. Ask for information that cannot be established; do not invent a commit or shrink the requested contract set.
Use add-explorer if the host needs routing or API support. Check current official explorer documentation before choosing an endpoint; an old config does not establish current API availability.
Use YAML unless another format is requested. Quote addresses and hexadecimal values. Follow project naming and include:
contracts: deployed address to explorer contract name;explorer_hostname or explorer_hostname_env_var (the explicit hostname takes precedence);explorer_chain_id when the chosen API needs it;github_repo: url, full commit SHA, and relative_root;dependencies: import-prefix mappings pinned to full commits, or {} for repository config tests.network is optional descriptive metadata. Add other optional fields only when needed. Store credential environment-variable names, not secrets. Set explorer_token_env_var to an available token variable, or confirm the ETHERSCAN_EXPLORER_TOKEN fallback is available. The runtime loads an explorer token and GITHUB_API_TOKEN even for adapters that do not send the explorer token. Bytecode comparison also needs the configured RPC URL; confirm its chain.
Read bytecode comparison before adding manual overrides. Prefer explorer constructor metadata when it describes the deployment; manual calldata is not required for every constructor. Set only one of constructor_args and constructor_calldata per address. Key libraries by their definition file; the mapping applies to every contract in the config. Use deployment_from for a constructor that depends on its caller and extra_sources for required GitHub files missing from the explorer source set.
For proxies, distinguish proxy and implementation addresses and confirm requested scope from deployment records and on-chain state. Obtain missing calldata from the creation trace and exact creation-bytecode boundary, then ABI-decode it. An address substring is not a reliable boundary; matching addresses across chains alone do not establish identical calldata.
If constructor metadata is missing, follow calldata recovery before writing an override.
Apply validate-config, then run the requested verification when credentials are available:
uv run diffyscan path/to/config.yaml --json -E -GRead JSON output: check status, errors, contract coverage and enabled comparisons as well as the exit code. Caches help repeated diagnosis; omit -E when fresh explorer evidence is needed. For a failed run use debug-diff; for explained exceptions use allowed-diffs.
Keep unverified contracts visible as unresolved scope. Do not comment them out, disable comparison, or accept proxy immutables merely to obtain a passing run. Report config paths, deployment/source evidence, checks performed and unresolved verification.
© lidofinance, 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 .claude/skills/new-config of lidofinance/diffyscan.
Open the folder on GitHubat commit 9fd6833
New Config 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 |
|---|---|---|---|---|---|---|
| New Config this skilllidofinance/diffyscan | 142 | — | ~1k | Automated safety check: Pass | MIT | |
| Foundry Deploy Fixturesaviggiano/security | 144 | — | ~634 | Automated safety check: Pass | MIT | |
| function Object() { [native code] } Patternsccashwell/evm-cortex | 131 | — | ~1.7k | Automated safety check: Pass | MIT | |
| Test Fixturesccashwell/evm-cortex | 131 | — | ~1.9k | Automated safety check: Pass | MIT | |
| Foundry Differential Testsaviggiano/security | 144 | — | ~613 | Automated safety check: Pass | MIT | |
| Cross Chain Securityccashwell/evm-cortex | 131 | — | ~1.7k | Automated safety check: Pass | MIT |
aviggiano/security
Create or refactor Foundry deployment fixtures for Solidity tests.
ccashwell/evm-cortex
Constructor and initializer patterns for deploying Solidity contracts.
ccashwell/evm-cortex
A skill your agent uses when setting up test environments for Solidity protocols.
aviggiano/security
Create Foundry differential tests comparing production Solidity contracts against an independent reference model.
ccashwell/evm-cortex
Cross-chain security patterns for multi-chain Solidity deployments and bridge interactions.
lidofinance/staking-modules
Update the current-branch GitHub PR title, description, and labels with gh CLI using this repository's PR template.
lidofinance/diffyscan
Adds or repairs Diffyscan explorer API routing and response adapters for a new host, chain or payload format.
lidofinance/diffyscan
Adds, reviews or tightens Diffyscan alloweddiffs rules for explained source or bytecode differences, including replacing any wildcards with granular rules.
lidofinance/diffyscan
Reviews an existing Diffyscan YAML or JSON config for load errors, runtime prerequisites, pinned sources, address mappings and broad exceptions.
lidofinance/diffyscan
Diagnoses failed or incomplete Diffyscan runs, unexpected source or bytecode differences, compilation failures and explorer or RPC errors.
Categories
Creates or extends a Diffyscan verification config for a deployed contract or deployment. New Config is an agent skill from lidofinance/diffyscan. Creates or extends a Diffyscan verification config for a deployed contract or deployment.
New Config fits situations like: adding addresses; pinning GitHub sources and dependencies; setting up a chain in configs/.
Run `npx skills add lidofinance/diffyscan --skill new-config -a claude-code`. Or copy the skill folder (.claude/skills/new-config in lidofinance/diffyscan) into .claude/skills/new-config in your project. Claude Code loads it when a task matches its description.
Run `npx skills add lidofinance/diffyscan --skill new-config -a codex`. Or copy the skill folder (.claude/skills/new-config in lidofinance/diffyscan) into .agents/skills/new-config 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 lidofinance/diffyscan --skill new-config -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/new-config, .gemini/skills/new-config, .github/skills/new-config and .opencode/skills/new-config in your project.
Going by SKILL.md and its folder, New Config needs the command-line tools its instructions call (uv) and credentials named ETHERSCAN_EXPLORER_TOKEN and GITHUB_API_TOKEN. Our summary lists: A credential in ETHERSCAN_EXPLORER_TOKEN; A credential in GITHUB_API_TOKEN.
SKILL.md contains no URLs. Its commands use uv, which can reach the network depending on how they are called. 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.
New Config is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 1k tokens (SKILL.md is roughly 4k 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 New Config: Foundry Deploy Fixtures (aviggiano/security, 144 stars), function Object() { [native code] } Patterns (ccashwell/evm-cortex, 131 stars), Test Fixtures (ccashwell/evm-cortex, 131 stars) and Foundry Differential Tests (aviggiano/security, 144 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
lidofinance (a GitHub organization) maintains it in lidofinance/diffyscan, which has 142 GitHub stars. The repository holds 5 skills in this directory. The repository was last updated on October 6, 2026.
Source: lidofinance/diffyscan on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.