solidity-development

Solidity smart contract development workflow. Use when modifying smart contracts in apps/eth-contracts/contracts/.

125 stars

Best use case

solidity-development is best used when you need a repeatable AI agent workflow instead of a one-off prompt.

Solidity smart contract development workflow. Use when modifying smart contracts in apps/eth-contracts/contracts/.

Teams using solidity-development should expect a more consistent output, faster repeated execution, less prompt rewriting.

When to use this skill

  • You want a reusable workflow that can be run more than once with consistent structure.

When not to use this skill

  • You only need a quick one-off answer and do not need a reusable workflow.
  • You cannot install or maintain the underlying files, dependencies, or repository context.

Installation

Claude Code / Cursor / Codex

$curl -o ~/.claude/skills/solidity-development/SKILL.md --create-dirs "https://raw.githubusercontent.com/hiromaily/go-crypto-wallet/main/.claude/skills/solidity-development/SKILL.md"

Manual Installation

  1. Download SKILL.md from GitHub
  2. Place it in .claude/skills/solidity-development/SKILL.md inside your project
  3. Restart your AI agent — it will auto-discover the skill

How solidity-development Compares

Feature / Agentsolidity-developmentStandard Approach
Platform SupportNot specifiedLimited / Varies
Context Awareness High Baseline
Installation ComplexityUnknownN/A

Frequently Asked Questions

What does this skill do?

Solidity smart contract development workflow. Use when modifying smart contracts in apps/eth-contracts/contracts/.

Where can I find the source code?

You can find the source code on GitHub using the link provided at the top of the page.

Related Guides

SKILL.md Source

# Solidity Development Workflow

Workflow for Solidity smart contract changes in the `apps/eth-contracts/` Foundry project.

## Prerequisites

**Use `git-workflow` Skill** for branch management, commit conventions, and PR creation.

## Applicable Directories

| Path | Description |
|------|-------------|
| `apps/eth-contracts/contracts/` | Smart contract source files |
| `apps/eth-contracts/script/` | Foundry deployment scripts |
| `apps/eth-contracts/test/` | Foundry test files (`*.t.sol`) |

## Toolchain

| Tool | Version | Role |
|------|---------|------|
| Foundry (`forge`) | 1.6.0-nightly | Compile, test, deploy |
| Solidity | `^0.8.34` | Smart contract language |
| OpenZeppelin Contracts | `^5.6.1` | ERC-20 / standard base contracts |
| bun | primary | npm package manager |
| solhint | `^6.0.3` | Solidity linter |
| dprint | `^0.52.0` | JS/TS formatter |

> **Note**: `forge` is installed at `~/.foundry/bin/forge` (may not be in PATH). Run with full path or add `~/.foundry/bin` to `PATH`.

## Setup (first time)

```bash
cd apps/eth-contracts

# 1. Install forge-std (Foundry testing/scripting library)
forge install foundry-rs/forge-std

# 2. Install npm dependencies (@openzeppelin/contracts, solhint, dprint)
bun install
```

## Verification Commands

```bash
cd apps/eth-contracts

forge build          # Compile all contracts (artifacts → out/)
forge test -v        # Run Foundry unit tests
bun run lint         # Solidity lint via solhint (must exit 0, zero errors)
bun run fmt          # Format JS/TS files via dprint (must exit 0)
```

## Deployment (local)

```bash
cd apps/eth-contracts
export PRIVATE_KEY=0x<deployer-private-key>
forge script script/DeployHYC.s.sol --rpc-url http://localhost:8545 --broadcast
# → outputs contract address, tx hash, gas usage
```

Compatible with both `anvil` and `geth` nodes at `http://localhost:8545`.

## Self-Review Checklist

### Code Quality

- [ ] Named imports used (`import {Foo} from "..."`) — no global imports
- [ ] NatSpec tags present (`@title`, `@author`, `@notice`, `@param`) on contracts and public functions
- [ ] Explicit visibility on all functions (constructors exempt in Solidity ≥0.8)
- [ ] Gas optimization considered
- [ ] Events emitted for state changes

### Security

- [ ] No reentrancy vulnerabilities
- [ ] No hardcoded private keys or sensitive values — use env vars
- [ ] `.env` added to `.gitignore`
- [ ] Access control properly implemented
- [ ] Integer overflow protection (Solidity ≥0.8 has built-in checks)

### Testing

- [ ] Foundry test file (`test/*.t.sol`) covers all acceptance criteria
- [ ] `forge test` passes with zero failures
- [ ] `bun run lint` exits 0 with zero solhint errors

## ABI / Go Bindings

After contract changes, if Go bindings are needed:

```bash
# 1. Compile
cd apps/eth-contracts
forge build

# 2. Regenerate Go bindings (if target ABI changed)
make gen-abi
```

## Related Chain Context

- ETH (Ethereum)
- ERC-20 token standard
- Local nodes: `anvil`, `geth` at `http://localhost:8545`

## Related Skills

- `git-workflow` - Branch, commit, PR workflow
- `github-issue-creation` - Task classification

Related Skills

typescript-development

125
from hiromaily/go-crypto-wallet

TypeScript/JavaScript development workflow for apps/ directory. Use when modifying TypeScript code in xrpl-grpc-server or JavaScript in eth-contracts.

go-development

125
from hiromaily/go-crypto-wallet

Go development workflow including verification commands and self-review checklist. Use when modifying Go code in internal/, pkg/, or cmd/ directories.

bch-development

125
from hiromaily/go-crypto-wallet

Bitcoin Cash (BCH) API implementation rules. Critical pattern for embedding Bitcoin struct and overriding BCH-specific methods. Use when working on BCH-related code in internal/infrastructure/api/btc/bch/.

wallet-cli

125
from hiromaily/go-crypto-wallet

How to run watch, keygen, and sign wallet CLI commands. Use when executing wallet commands or testing wallet functionality.

shell-scripts

125
from hiromaily/go-crypto-wallet

Shell script development workflow. Use when modifying files in scripts/ directory or any *.sh files.

openspec-propose

125
from hiromaily/go-crypto-wallet

Propose a new change with all artifacts generated in one step. Use when the user wants to quickly describe what they want to build and get a complete proposal with design, specs, and tasks ready for implementation.

openspec-explore

125
from hiromaily/go-crypto-wallet

Enter explore mode - a thinking partner for exploring ideas, investigating problems, and clarifying requirements. Use when the user wants to think through something before or during a change.

openspec-archive-change

125
from hiromaily/go-crypto-wallet

Archive a completed change in the experimental workflow. Use when the user wants to finalize and archive a change after implementation is complete.

openspec-apply-change

125
from hiromaily/go-crypto-wallet

Implement tasks from an OpenSpec change. Use when the user wants to start implementing, continue implementation, or work through tasks.

mockery

125
from hiromaily/go-crypto-wallet

Mock generation workflow for go-crypto-wallet. Activate whenever a developer asks to generate a mock for a new interface, add test coverage that requires a mock, or replace a manually-written test stub for a ports interface. Claude MUST use `make mockery` — never write mock struct code by hand.

makefile-update

125
from hiromaily/go-crypto-wallet

Makefile development workflow. Use when modifying Makefile or files in make/ directory.

label-context-mapping

125
from hiromaily/go-crypto-wallet

Maps GitHub labels to Skills and Context documents. Use when creating issues (github-issue-creation) or working on issues (fix-issue command).