skills-ws
Version:
87 agent skills for AI coding assistants — marketing, growth, web3, dev, design & operations. Built for OpenClaw, Claude Code, Cursor, and Codex.
53 lines (41 loc) • 1.4 kB
Markdown
```solidity
// SPDX-License-Identifier: MIT
pragma solidity 0.8.36; // pin EXACTLY (matches foundry.toml/§1); no floating caret in production
import {ERC20} from "@openzeppelin/contracts/token/ERC20/ERC20.sol";
import {Ownable} from "@openzeppelin/contracts/access/Ownable.sol";
/// @title MyToken — A custom ERC20 token
/// @author <Your Name>
/// @notice Use this for demonstration purposes
contract MyToken is ERC20, Ownable {
// Type declarations
struct UserInfo { uint128 balance; uint128 lastClaim; }
enum Status { Active, Paused, Deprecated }
// State variables (constants → immutables → storage)
uint256 public constant MAX_SUPPLY = 1_000_000e18;
address public immutable treasury;
mapping(address => UserInfo) public users;
uint256 public totalClaimed;
// Events
event Claimed(address indexed user, uint256 amount);
// Errors
error ExceedsMaxSupply();
error AlreadyClaimed();
// State
Status public status;
// Modifiers
modifier whenActive() {
require(status == Status.Active, "Not active");
_;
}
constructor(address _treasury) ERC20("MyToken", "MTK") Ownable(msg.sender) {
treasury = _treasury;
}
// External functions
// Public functions
// Internal functions
// Private functions
// View/pure functions last
}
```
---