К основному содержанию
скилл Claude Code CX Codex Cursor

solidity-security — скилл для Claude Code: аудит и установка

Скилл помогает писать и проверять Solidity-контракты с учётом типовых уязвимостей. Пригодится для аудита, DeFi и подготовки к профессиональной проверке.

Установить в Claude Code · Через маркетплейс плагинов Все способы и платформы ↓
/plugin marketplace add wshobson/agents
/plugin install blockchain-web3@claude-code-workflows
Открыть на GitHub

Что делает solidity-security

solidity-security разбирает практики безопасной разработки Solidity-контрактов. Он помогает искать проблемы с повторным входом, переполнением и контролем доступа, а также проверять известные векторы атак и расход газа без потери защиты.

Подробные паттерны и рабочие примеры находятся в references/details.md. В исходных материалах есть тесты Hardhat на защиту от reentrancy, overflow и несанкционированного вывода, а также пример документированного контракта с паттерном Checks-Effects-Interactions.

Скилл доступен для Claude Code, Codex и Cursor. Ставьте его, если пишете или ревьюите Solidity; для задач вне смарт-контрактов он не нужен.

Какие задачи решает

  • проверить контракт на reentrancy
  • найти ошибки переполнения чисел
  • проверить контроль доступа к функциям
  • подготовить Solidity-код к аудиту
  • разобрать типовые векторы атак

Примеры запросов агенту

  • Проверь этот Solidity-контракт на reentrancy и проблемы с контролем доступа.
  • Напиши Hardhat-тесты для защиты от overflow и несанкционированного вывода.
  • Подготовь контракт к профессиональному аудиту и укажи, что исправить.

Как установить solidity-security

1Через маркетплейс плагинов

/plugin marketplace add wshobson/agents
/plugin install blockchain-web3@claude-code-workflows

2Через Skills CLI (Vercel)

npx skills add wshobson/agents --skill solidity-security -a claude-code

3Вручную: положить файлы

~/.claude/skills/solidity-security/SKILL.md

Папка скилла целиком; для одного проекта — .claude/skills/solidity-security/

Похожие

git-guardrails-claude-code Matt Pocock Скилл ставит хук Claude Code, который останавливает опасные Git-команды до их запуска. Нужен, если агент не должен делать push или удалять изменения. Claude Code 499 069установок java-springboot официальный github Задаёт практики разработки Spring Boot-приложений: от структуры проекта до тестов и безопасности. Пригодится, когда Copilot пишет или проверяет Java-код. GitHub Copilot 21 272установок sql-code-review официальный github Проверяет SQL-код на проблемы безопасности, производительности и поддержки. Пригодится перед ревью запросов или схемы базы данных. GitHub Copilot 14 060установок postgresql-code-review официальный github Проверяет SQL и схему на ошибки, характерные для PostgreSQL. Пригодится перед ревью миграций, функций и запросов с JSONB. GitHub Copilot 12 608установок make-repo-contribution официальный github Скилл проверяет правила репозитория перед issue, веткой, коммитом или PR и помогает пройти процесс контрибьюции без пропуска обязательных шагов. GitHub Copilot 11 073установок agent-governance официальный github Добавляет шаблоны политик и проверок для ИИ-агентов с доступом к API, базам данных и файловой системе. Нужен, когда действия агента требуется ограничивать и журналировать. GitHub Copilot 9 623установок

Вопросы о solidity-security

Как установить solidity-security в Claude Code?

Выполните npx skills add wshobson/agents --skill solidity-security -a claude-code. Файл скилла появится в ~/.claude/skills/solidity-security/SKILL.md.

Что делает solidity-security?

Скилл помогает писать и аудировать Solidity-контракты, искать reentrancy, переполнения и ошибки контроля доступа. Он также подсказывает безопасные паттерны и тесты Hardhat.

Какие тесты есть в solidity-security?

В материалах есть примеры Hardhat-тестов для защиты от reentrancy, integer overflow и несанкционированного вывода средств.

Исходный текст

SKILL.md · MIT
---
name: solidity-security
description: Master smart contract security best practices to prevent common vulnerabilities and implement secure Solidity patterns. Use when writing smart contracts, auditing existing contracts, or implementing security measures for blockchain applications.
---

# Solidity Security

Master smart contract security best practices, vulnerability prevention, and secure Solidity development patterns.

## When to Use This Skill

- Writing secure smart contracts
- Auditing existing contracts for vulnerabilities
- Implementing secure DeFi protocols
- Preventing reentrancy, overflow, and access control issues
- Optimizing gas usage while maintaining security
- Preparing contracts for professional audits
- Understanding common attack vectors

## Detailed patterns and worked examples

Detailed pattern documentation lives in `references/details.md`. Read that file when the navigation tier above is insufficient.

## Testing for Security

```javascript
// Hardhat test example
const { expect } = require("chai");
const { ethers } = require("hardhat");

describe("Security Tests", function () {
  it("Should prevent reentrancy attack", async function () {
    const [attacker] = await ethers.getSigners();

    const VictimBank = await ethers.getContractFactory("SecureBank");
    const bank = await VictimBank.deploy();

    const Attacker = await ethers.getContractFactory("ReentrancyAttacker");
    const attackerContract = await Attacker.deploy(bank.address);

    // Deposit funds
    await bank.deposit({ value: ethers.utils.parseEther("10") });

    // Attempt reentrancy attack
    await expect(
      attackerContract.attack({ value: ethers.utils.parseEther("1") }),
    ).to.be.revertedWith("ReentrancyGuard: reentrant call");
  });

  it("Should prevent integer overflow", async function () {
    const Token = await ethers.getContractFactory("SecureToken");
    const token = await Token.deploy();

    // Attempt overflow
    await expect(token.transfer(attacker.address, ethers.constants.MaxUint256))
      .to.be.reverted;
  });

  it("Should enforce access control", async function () {
    const [owner, attacker] = await ethers.getSigners();

    const Contract = await ethers.getContractFactory("SecureContract");
    const contract = await Contract.deploy();

    // Attempt unauthorized withdrawal
    await expect(contract.connect(attacker).withdraw(100)).to.be.revertedWith(
      "Ownable: caller is not the owner",
    );
  });
});
```

## Audit Preparation

```solidity
contract WellDocumentedContract {
    /**
     * @title Well Documented Contract
     * @dev Example of proper documentation for audits
     * @notice This contract handles user deposits and withdrawals
     */

    /// @notice Mapping of user balances
    mapping(address => uint256) public balances;

    /**
     * @dev Deposits ETH into the contract
     * @notice Anyone can deposit funds
     */
    function deposit() public payable {
        require(msg.value > 0, "Must send ETH");
        balances[msg.sender] += msg.value;
    }

    /**
     * @dev Withdraws user's balance
     * @notice Follows CEI pattern to prevent reentrancy
     * @param amount Amount to withdraw in wei
     */
    function withdraw(uint256 amount) public {
        // CHECKS
        require(amount <= balances[msg.sender], "Insufficient balance");

        // EFFECTS
        balances[msg.sender] -= amount;

        // INTERACTIONS
        (bool success, ) = msg.sender.call{value: amount}("");
        require(success, "Transfer failed");
    }
}
```

© Seth Hobson · MIT · wshobson/agents

Смотрите также

Спонсоры проекта

Компании, которые помогают держать аналитику открытой