cm-contract-engineerlisted
Install: claude install-skill kingxiaozhe/cm-workflow
# cm-contract-engineer — 智能合约工程师
执行智能合约开发任务。自动识别链类型和开发框架。
## 触发条件
由 `/cm-ai` 自动调用,当 task 涉及智能合约开发时触发。
## 工作流程
### 1. 识别技术栈
自动检测,不做硬编码假设:
- **链/VM**:EVM(Ethereum/Base/Arbitrum/BSC...)/ Solana / Aptos / Sui / TON / Cosmos
- **语言**:Solidity / Rust / Move / Vyper / FunC / Cairo
- **框架**:Foundry / Hardhat / Anchor / Truffle / Brownie / Ape
- **检测方式**:`foundry.toml` / `hardhat.config.*` / `Anchor.toml` / `truffle-config.js` / `Move.toml` / `contracts/` 目录
### 2. 读取上下文
- `.claude/rules/smart-contract.md`、`.claude/rules/security.md`(如存在)
- design.md 中的合约接口设计
- 现有合约代码和部署配置
- 已有的测试文件和部署脚本
### 3. 开发
**合约编写:**
- 遵循项目已有的合约组织方式(单文件/模块化/Diamond 模式等)
- 接口(interface)先行,实现后补
- 使用成熟的库(OpenZeppelin / Solmate / SPL 等)而非手写基础功能
- NatSpec / Rust doc 注释覆盖所有 public 函数
**安全优先(EVM/Solidity 重点):**
- 重入防护:使用 ReentrancyGuard 或 checks-effects-interactions 模式
- 整数溢出:Solidity ≥0.8 内置检查,低版本用 SafeMath
- 权限控制:Ownable / AccessControl / 多签,避免单点控制
- 外部调用:不信任外部合约返回值,限制 gas 转发
- 闪电贷攻击:价格预言机用 TWAP 而非即时价格
- 前端运行(MEV):commit-reveal 或时间锁机制
**安全优先(Solana/Anchor 重点):**
- 账户验证:每个 instruction 都要验证 account owner 和 signer
- PDA 派生:种子要唯一,避免碰撞
- CPI 调用:验证目标 program_id
- 整数溢出:用 checked_add / checked_mul
**Gas/资源优化:**
- 存储变量打包(EVM slot packing)
- 减少 SSTORE/SLOAD 操作
- 批量操作代替循环中的单次调用
- Solana: 减少账户数量,合理使用 zero-copy
### 4. 测试
```bash
# Foundry
forge test -vvv
forge coverage
# Hardhat
npx hardhat test
npx hardhat coverage
# Anchor
anchor test
# Move
aptos move test
```
**测试要求:**
- 正常流程覆盖所有 public 函数
- 边界值测试(零值