agents/skills/evm/economic-design-audit/SKILL.md
Trigger Pattern MONETARY_PARAMETER flag (required) - Inject Into Breadth agents (merged via M6 hierarchy)
npx skillsauth add plamentsv/plamen economic-design-auditInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Trigger Pattern: MONETARY_PARAMETER flag (required) Inject Into: Breadth agents (merged via M6 hierarchy)
For every monetary parameter setter (rate, rebase, supply, mint, burn, emission, inflation, peg, price cap/floor, fee, reward rate) in the protocol:
| Parameter | Setter | Min Value | Max Value | Enforced? | Impact at Min | Impact at Max | |-----------|--------|-----------|-----------|-----------|---------------|---------------|
For each parameter: substitute min and max into ALL consuming functions. Tag: [BOUNDARY:param=val -> outcome]
List all economic invariants the protocol must maintain: | Invariant | Parameters Involved | Can Admin Break It? | Functions That Assume It |
For each setter: can changing this parameter break an invariant that user-facing functions depend on? If yes -> finding.
For protocols with multiple monetary parameters that interact: | Parameter A | Parameter B | Interaction | Can A*B Produce Extreme Output? |
Check: can two independently-valid parameter settings combine to create an extreme or invalid economic state? (Rule 14 constraint coherence)
For every fee-related computation (fee calculation, fee deduction, fee distribution):
Pick 3 representative fee rates (e.g., 1% = 100 BPS, 5% = 500 BPS, 10% = 1000 BPS) and trace through the actual code formula:
| Fee Param | Value | Formula | Input Amount | Expected Output | Actual Output | Match? | |-----------|-------|---------|-------------|----------------|---------------|--------| | {fee_bps} | 100 | {code formula} | 1e18 | {expected} | {computed} | YES/NO | | {fee_bps} | 500 | {code formula} | 1e18 | {expected} | {computed} | YES/NO | | {fee_bps} | 1000 | {code formula} | 1e18 | {expected} | {computed} | YES/NO |
Tag: [BOUNDARY:fee_bps={val} → effective_rate={computed_rate}]
Red flags:
amount * MAX / (MAX - fee) charges effective rate of fee/(MAX-fee), not fee/MAX. At 5% this is 5.26%, not 5%. Document whether this is intentional.mulDivUp or equivalent) favors the protocol.uint256 math at 1e18 scale, do intermediate products overflow or lose precision? Check mulDiv ordering.For every fee computation, trace the base amount (the value the fee is computed on) through ALL subsequent code paths:
| Fee Site | Base Amount Variable | Modified After Fee? | Modified How | Fee Recomputed? | Overcharge? | |----------|---------------------|--------------------:|-------------|-----------------|-------------|
Methodology:
amount, depositAmount)fee = amount * feeRate / MAX, then amount is reduced to leftover (e.g., remaining allocation), the user paid fee on amount but only leftover was processed - overcharge of fee * (1 - leftover/amount)For protocols with multiple fee types:
| Fee A | Fee B | A Output Feeds B Input? | Combined Effective Rate | Independent Rate Sum | Discrepancy? | |-------|-------|------------------------|------------------------|---------------------|-------------|
If the protocol uses share-based accounting (ERC4626 vaults, LP tokens):
For protocols with emission/inflation/rebase mechanics:
| Section | Required | Completed? | |---------|----------|------------| | 1. Parameter Boundary Analysis | YES | Y/N/? | | 2. Economic Invariant Identification | YES | Y/N/? | | 3. Rate/Supply Interaction Matrix | IF >1 monetary param | Y/N(N/A)/? | | 4. Fee Formula Verification at Normal Values | IF fee parameters detected | Y/N(N/A)/? | | 5. Emission/Inflation Sustainability | IF emission/rebase detected | Y/N(N/A)/? |
development
Prepare Solidity projects for a security audit — test coverage, test quality, NatSpec docs, code hygiene, dependency health, best-practice enforcement, deployment readiness, and project documentation checks. Generates a scored Audit Readiness Report and optionally runs static analysis. Trigger on: "prepare for audit", "audit readiness", "pre-audit check", "audit prep", "NatSpec check", or any request to review a Solidity codebase before a security review.
development
Launch the Plamen deterministic Web3 security audit pipeline
development
Run the Plamen smart-contract audit wizard in Codex
testing
Launch the Plamen deterministic L1 infrastructure audit pipeline