Frontend UX rules for Ethereum dApps that prevent the most common AI agent UI bugs. Mandatory patterns for onchain buttons, approval flows, address UX, USD context, RPC reliability, theming, and pre-publish metadata.
SkillScore74Maintained
Automatic
◆Frontend / UI pack
Last verified 8/24/2026
What it changes
Passed 17 of 23 test cases with the skill, and 15 of 23 without it.
Without skill65%
With skill74%
Checks it passed that the model alone missed
The component uses distinct loading state variables for each separate action button.
The handler includes a post-confirmation cooldown period before re-enabling the button.
2 fixed15 passed either way6 still failing0 broke
Pass-rate lift
+9 pp
Tokens
+30%
Agent turns
0%
Response time
-12%
Model gemini-3.6-flashMeasured 8/24/2026v117 of 23 cases passed with skill
Tokens, turns and time describe resource use, not a dollar price.
See it in action
One of 2 test cases the skill fixed. Same model, same prompt, with and without the skill.
1 of 2
Prompt
I'm writing an ERC20 staking card in React with two separate action buttons on the same card: 'Approve Allowance' and 'Deposit Tokens'. I am planning to use a single shared `const [loading, setLoading] = useState(false)` state variable for the whole card. Write the state logic and React button code for this component.
What was checked, without and with the skill
Checked
Without skill
With skill
The component uses distinct loading state variables for each separate action button.
Missed
Passed
Each button handler clears its loading state in a finally block.
Passed
Passed
case-04 · gemini-3.6-flash · 8/24/2026 · answers are capped and redacted
What's inside
The instructions your model reads when the skill loads.
SKILL.md181 linessingle file
Frontend UX Rules
What You Probably Got Wrong
"The button works." A clickable button is not enough. It must disable immediately, show a clear pending state, and stay locked until onchain confirmation.
"Addresses are just strings." Address UX needs validation, safe formatting, copy support, explorer linking, and ENS/name handling where available.
"Token amounts are clear." Raw token values without USD context force users to guess risk and value. Show dollar context anywhere amounts matter.
Rule 1: Every Button Interacting Onchain Needs Its Own Pending State
Any button that triggers an onchain transaction must:
Disable immediately on click
Show spinner + action text (Approving..., Staking...)
Stay disabled until chain state confirms completion