solidity-deploy
Original:🇺🇸 English
Translated
[AUTO-INVOKE] MUST be invoked BEFORE deploying contracts or writing deployment scripts (*.s.sol). Covers pre-flight checks, forge script commands, post-deployment validation, and verification. Trigger: any task involving forge script, contract deployment, or block explorer verification.
7installs
Added on
NPX Install
npx skill4agent add 0xlayerghost/solidity-agent-kit solidity-deployTags
Translated version includes tags in frontmatterSKILL.md Content
View Translation Comparison →Deployment Workflow
Language Rule
- Always respond in the same language the user is using. If the user asks in Chinese, respond in Chinese. If in English, respond in English.
Pre-deployment Checklist (all must pass)
| Step | Command / Action |
|---|---|
| Format code | |
| Run all tests | |
| Check gas report | |
| Verify config | Manually check |
| Dry-run | |
| Check balance | |
| Gas limit set | Deployment command must include |
Deployment Decision Rules
| Situation | Rule |
|---|---|
| Default deployment | No |
| User requests verification | Add |
| Post-deploy verification | Use |
| Multi-chain deploy | Separate scripts per chain, never batch multiple chains in one script |
| Proxy deployment | Deploy implementation first, then proxy — verify both separately |
Post-deployment Operations (all required)
- Update addresses in and
config/*.jsondeployments/latest.env - Test critical functions: to verify on-chain state is correct
cast call - Record changes in
docs/CHANGELOG.md - Submit PR with deployment transaction hash link
- If verification needed, run separately
forge verify-contract
Key Security Rule
- Never pass private keys directly in commands. Use Foundry Keystore () to manage keys securely.
cast wallet import - Never include in templates. The user must explicitly add it when ready to deploy.
--broadcast
Command Templates
bash
# Dry-run (simulation only, no on-chain execution)
forge script script/Deploy.s.sol:DeployScript \
--rpc-url <RPC_URL> \
--gas-limit 5000000 \
-vvvv
# When user is ready to deploy, instruct them to add:
# --account <KEYSTORE_NAME> --broadcast
# Verify existing contract separately
forge verify-contract <ADDRESS> <CONTRACT> \
--chain-id <CHAIN_ID> \
--etherscan-api-key <API_KEY> \
--constructor-args $(cast abi-encode "constructor(address)" <ARG>)
# Quick on-chain read test after deployment
cast call <CONTRACT_ADDRESS> "functionName()" --rpc-url <RPC_URL>