skills/aave-risk-assessor/SKILL.md
This skill should be used when the user asks about "health factor", "liquidation risk", "aave risk", "will I be liquidated", "safe to borrow", "my account health", "collateral risk", "liquidation price", or wants to assess the risk of their AAVE V3 position. Calculates health factor, LTV ratios, liquidation thresholds, and provides risk level assessments for positions on Ethereum and Arbitrum.
npx skillsauth add 0xweaksheep/aave_farmore aave-risk-assessorInstall 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.
Assess risk metrics for AAVE V3 positions including Health Factor, LTV ratios, and liquidation risk.
Runtime Compatibility: This skill uses
AskUserQuestionfor interactive prompts. IfAskUserQuestionis not available in your runtime, collect the same parameters through natural language conversation instead.
Calculate and interpret risk metrics for AAVE V3 positions:
This skill should be invoked when users say:
The Health Factor is a numeric representation of position safety:
HF = (Σ Collateral_i × LiquidationThreshold_i) / TotalDebt
| Health Factor | Risk Level | Description | Recommended Action | |---------------|------------|-------------|-------------------| | > 2.0 | Safe | Position is well-collateralized | Normal operation | | 1.5 - 2.0 | Moderate | Position is healthy but monitor | Continue monitoring | | 1.2 - 1.5 | High | Position is at risk | Consider adding collateral or repaying debt | | 1.0 - 1.2 | Critical | Position is near liquidation | Urgent: Add collateral or repay immediately | | < 1.0 | Liquidation | Position can be liquidated | Position is being or will be liquidated |
function getRiskLevel(healthFactor: number): RiskLevel {
if (healthFactor > 2.0) return 'safe';
if (healthFactor >= 1.5) return 'moderate';
if (healthFactor >= 1.2) return 'high';
if (healthFactor >= 1.0) return 'critical';
return 'liquidation';
}
type RiskLevel = 'safe' | 'moderate' | 'high' | 'critical' | 'liquidation';
const riskLevelMessages: Record<RiskLevel, string> = {
safe: 'Your position is well-collateralized.',
moderate: 'Your position is healthy, but continue monitoring.',
high: 'Your position is at risk. Consider adding collateral or repaying debt.',
critical: 'Warning: Your position is near liquidation! Add collateral or repay immediately.',
liquidation: 'Your position is eligible for liquidation.'
};
interface RiskAssessment {
// Core metrics
healthFactor: string; // Current health factor (e.g., "1.85")
maxLTV: string; // Maximum LTV allowed (e.g., "0.80")
currentLTV: string; // Current LTV ratio (e.g., "0.45")
liquidationThreshold: string; // Liquidation threshold (e.g., "0.825")
liquidationPenalty: string; // Liquidation penalty (e.g., "0.05")
// eMode status
eModeStatus: boolean; // Whether eMode is enabled
eModeCategory?: number; // eMode category ID if enabled
// Risk classification
riskLevel: 'safe' | 'moderate' | 'high' | 'critical' | 'liquidation';
// Additional metrics
totalCollateralUSD: string; // Total collateral value in USD
totalDebtUSD: string; // Total debt value in USD
availableBorrowsUSD: string; // Available borrowing power in USD
}
If not provided in context, ask the user for their wallet address.
Input validation:
^0x[a-fA-F0-9]{40}$If not specified, ask which chain to check: Ethereum or Arbitrum.
Use the Pool contract to get user account data:
import { createPublicClient, http, parseAbi } from 'viem';
import { mainnet, arbitrum } from 'viem/chains';
const POOL_ADDRESSES = {
1: '0x87870Bca3F3fD6335C3F4ce8392D69350B4fA4E2', // Ethereum
42161: '0x794a61358D6845594F94dc1DB02A252b5b4814aD' // Arbitrum
};
const poolAbi = parseAbi([
'function getUserAccountData(address user) view returns (uint256 totalCollateralBase, uint256 totalDebtBase, uint256 availableBorrowsBase, uint256 currentLiquidationThreshold, uint256 ltv, uint256 healthFactor)'
]);
Format the output with clear risk indicators:
## AAVE Position Risk Assessment
### Risk Summary
| Metric | Value | Status |
|--------|-------|--------|
| Health Factor | {healthFactor} | {riskEmoji} {riskLevel} |
| Total Collateral | ${totalCollateralUSD} | - |
| Total Debt | ${totalDebtUSD} | - |
| Available to Borrow | ${availableBorrowsUSD} | - |
Risk Emojis:
| Asset | LTV | Liquidation Threshold | Liquidation Penalty | |-------|-----|----------------------|---------------------| | USDC | 77% | 80% | 5% | | USDT | 75% | 80% | 5% | | DAI | 77% | 80% | 5% | | WETH | 80% | 82.5% | 5% | | WBTC | 73% | 78% | 7.5% |
| Asset | LTV | Liquidation Threshold | Liquidation Penalty | |-------|-----|----------------------|---------------------| | USDC | 80% | 85% | 5% | | USDT | 75% | 80% | 5% | | DAI | 75% | 80% | 5% | | WETH | 80% | 82.5% | 5% | | WBTC | 73% | 78% | 7.5% |
references/health-factor.md - Detailed Health Factor calculationreferences/risk-thresholds.md - Complete risk parameters by assettools
Foundational EVM integration for AAVE-related scripts using viem. Use when user asks to read balances, read/write contracts, send transactions, or set up typed viem clients for Ethereum and Arbitrum.
testing
Security baseline for AAVE integration and execution scripts. Use when user asks for AAVE security review, pre-trade checks, liquidation safety, allowance minimization, or execution hardening.
tools
This skill should be used when the user asks to "supply to aave", "deposit to aave", "lend on aave", "borrow from aave", "take loan on aave", "repay aave loan", "pay back aave", "withdraw from aave", "remove collateral", "aave lending", "earn yield on aave", or mentions AAVE V3 operations including supply, borrow, repay, or withdraw on Ethereum or Arbitrum.
data-ai
This skill should be used when the user needs to interact with AAVE V3 protocol contracts directly, read on-chain data, get reserve configurations, fetch current APY rates, simulate position changes, or execute protocol operations programmatically. Provides low-level access to AAVE Pool contracts, UI Pool Data Provider, and quote generation for supply, borrow, repay, and withdraw operations on Ethereum and Arbitrum.