solidity-development
Solidity smart contract development workflow. Use when modifying smart contracts in apps/eth-contracts/contracts/.
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
Manual Installation
- Download SKILL.md from GitHub
- Place it in
.claude/skills/solidity-development/SKILL.mdinside your project - Restart your AI agent — it will auto-discover the skill
How solidity-development Compares
| Feature / Agent | solidity-development | Standard Approach |
|---|---|---|
| Platform Support | Not specified | Limited / Varies |
| Context Awareness | High | Baseline |
| Installation Complexity | Unknown | N/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 classificationRelated Skills
typescript-development
TypeScript/JavaScript development workflow for apps/ directory. Use when modifying TypeScript code in xrpl-grpc-server or JavaScript in eth-contracts.
go-development
Go development workflow including verification commands and self-review checklist. Use when modifying Go code in internal/, pkg/, or cmd/ directories.
bch-development
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
How to run watch, keygen, and sign wallet CLI commands. Use when executing wallet commands or testing wallet functionality.
shell-scripts
Shell script development workflow. Use when modifying files in scripts/ directory or any *.sh files.
openspec-propose
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
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
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
Implement tasks from an OpenSpec change. Use when the user wants to start implementing, continue implementation, or work through tasks.
mockery
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
Makefile development workflow. Use when modifying Makefile or files in make/ directory.
label-context-mapping
Maps GitHub labels to Skills and Context documents. Use when creating issues (github-issue-creation) or working on issues (fix-issue command).