{"id":"1992ea4c-feee-469a-afed-49639702930f","shortId":"5C8jy7","kind":"skill","title":"rug-checker","tagline":"Solana token rug-pull risk analysis. 10-point on-chain check with visual report. Zero API keys. Read-only. Not financial advice.","description":"# Rug Checker — Agent Skill Definition\n\n## Skill Metadata\n\n| Field | Value |\n|-------|-------|\n| **Slug** | `rug-checker` |\n| **Version** | `0.1.3` |\n| **Author** | Anvil AI |\n| **Category** | DeFi / Security |\n| **Chain** | Solana |\n| **Risk Level** | Read-only (no wallet interactions) |\n\n## Activation Triggers\n\nActivate this skill when the user's message matches any of these patterns:\n\n| Pattern | Example |\n|---------|---------|\n| Rug check / rug pull check | \"Do a rug check on BONK\" |\n| Token safety | \"Is this token safe?\" |\n| Scam check | \"Is this a scam?\" |\n| Token risk analysis | \"What's the risk on this token?\" |\n| Honeypot check | \"Is this a honeypot?\" |\n| Token audit | \"Audit this token\" |\n| LP locked | \"Is the LP locked on this?\" |\n| Mint authority | \"Can they mint more tokens?\" |\n| Token lookup + Solana address | \"What is DezXAZ8z7PnrnRJjz3wXBoRgixCa6xjnB7YaB1pPB263?\" |\n\n> **Note:** If the user asks \"Should I buy [token]?\", redirect: *\"I can't advise on whether to buy — but I can check the on-chain risk factors for you.\"* Then run the analysis.\n\n**Address detection:** If the user provides a base58 string of 32-44 characters, treat it as a Solana token address. If they provide a name/symbol, resolve it first.\n\n## Agent Workflow\n\n### Step 1: Extract the Token\n\nParse the user's message for either:\n- A Solana address (base58, 32-44 chars matching `[1-9A-HJ-NP-Za-km-z]{32,44}`)\n- A token name or symbol (e.g., \"BONK\", \"bonk\", \"Wheelchair Fish\")\n\nIf unclear, ask: *\"Which token would you like me to check? Give me the contract address or token name.\"*\n\n### Step 2: Resolve the Token\n\n```bash\nbash scripts/detect-token.sh <address_or_name>\n```\n\n**Output varies by input type:**\n\n**If given a Solana address:** JSON with `found: true/false`, `address`, `name`, `symbol`, market data.\n\n**If given a name/symbol:** JSON with `ambiguous: true` and a `candidates` array containing up to 5 matches with address, name, symbol, liquidity, and age. **If detect-token returns candidates, you MUST present them to the user and ask which one they mean. NEVER auto-pick a candidate.** Checking the wrong token is worse than not checking at all.\n\nExample candidate response:\n```json\n{\n  \"query\": \"bonk\",\n  \"ambiguous\": true,\n  \"candidates\": [\n    {\"address\": \"DezXAZ8z...\", \"name\": \"Bonk\", \"symbol\": \"BONK\", \"liquidity_usd\": 5000000, \"age\": \"400d\"},\n    {\"address\": \"56Lc5...\", \"name\": \"BonkFork\", \"symbol\": \"BONK\", \"liquidity_usd\": 12000, \"age\": \"3d\"}\n  ]\n}\n```\n\nPresent candidates as a numbered list:\n> I found multiple tokens matching \"bonk\". Which one did you mean?\n> 1. **BONK** (Bonk) — `DezXAZ8z...` — $5.0M liquidity, 400d old\n> 2. **BONK** (BonkFork) — `56Lc5...` — $12K liquidity, 3d old\n\nThen re-run with the confirmed mint address.\n\nIf `found: false` (and not `ambiguous`), tell the user the token couldn't be found and ask them to double-check the address.\n\n### Step 3: Run Risk Analysis\n\n```bash\nbash scripts/analyze-risk.sh <token_address>\n```\n\n**Output:** JSON with 10 risk checks, composite score (0-100), tier (SAFE/CAUTION/WARNING/DANGER/CRITICAL).\n\n### Step 4: Generate Report\n\n```bash\nbash scripts/analyze-risk.sh <address> | bash scripts/format-report.sh\n```\n\nOr pipe the saved JSON:\n\n```bash\nbash scripts/format-report.sh < analysis.json\n```\n\n**Output:** Formatted Markdown report card with visual risk bars, market overview, and links.\n\n### Step 5: Present to User\n\nDisplay the formatted report. Add brief commentary based on the tier:\n\n| Tier | Commentary Template |\n|------|-------------------|\n| 🟢 SAFE (0-15) | \"Low on-chain risk indicators detected. Note: this only covers on-chain factors — team, legal, and market risks are not assessed.\" |\n| 🟡 CAUTION (16-35) | \"Some yellow flags here. Not necessarily a scam, but proceed with caution and do your own research.\" |\n| 🟠 WARNING (36-55) | \"Several risk factors detected. Be careful with this one.\" |\n| 🔴 DANGER (56-75) | \"Significant red flags. This has multiple indicators of a potential rug pull.\" |\n| ⛔ CRITICAL (76-100) | \"Extreme risk. This token has critical safety issues. Strongly avoid.\" |\n\n**Always end with the disclaimer** (it's built into format-report.sh). **Never use language that implies a buy/sell recommendation** (e.g., \"looks solid\", \"good investment\", \"safe bet\").\n\n### Discord v2 Delivery Mode (OpenClaw v2026.2.14+)\n\nWhen running in a Discord channel:\n\n- Send a compact first message with: token, tier, score, and top 3 risk drivers.\n- Keep the first message under ~1200 characters; avoid rendering the full long report first.\n- If Discord components are available, include quick actions:\n  - `Show Full Risk Breakdown`\n  - `Show Data Sources`\n  - `Re-Run Check`\n- If components are unavailable, provide the same options as a numbered list.\n- For long reports, send in short chunks (<=15 lines) to avoid noisy channel spam.\n\n## Error Handling\n\n| Error | Cause | Agent Response |\n|-------|-------|---------------|\n| Exit code 2 from detect-token | Token not found | \"I couldn't find that token. Please check the address — it should be a Solana SPL token mint address (32-44 base58 characters).\" |\n| Exit code 1 from detect-token | API failure | \"I'm having trouble reaching the token APIs right now. Try again in a minute.\" |\n| `composite_score: -1` | All data sources failed | \"All three data sources are down right now. I can't safely analyze this token without data.\" |\n| `rugcheck` unavailable | Rugcheck API down | Analysis proceeds with DexScreener + Solana RPC (degraded but functional). Note this in your response. |\n| `found: true` but name \"Unknown\" | Token exists on-chain but has no DEX listings | \"This token exists on Solana but doesn't appear to be listed on any DEX. It may be too new or a non-tradeable token.\" |\n\n## Data Sources\n\n| Source | What It Provides | Required? |\n|--------|-----------------|-----------|\n| Rugcheck.xyz | Mint/freeze authority, top holders, LP locks, risk flags, insider detection, verification status | Primary (most checks degrade without it) |\n| DexScreener | Price, volume, liquidity, FDV, market cap, token age, name resolution | Secondary (market context) |\n| Solana RPC | On-chain mint/freeze authority verification | Tertiary (fallback verification) |\n\n## Risk Checks (10 points)\n\n| # | Check | Weight | What It Detects |\n|---|-------|--------|----------------|\n| 1 | Mint Authority | 2.0 | Can creator mint unlimited tokens? |\n| 2 | Freeze Authority | 1.5 | Can creator freeze holder wallets? |\n| 3 | Holder Concentration | 1.5 | Are tokens concentrated in few wallets? |\n| 4 | LP Lock Status | 2.0 | Can liquidity be pulled? (classic rug) |\n| 5 | Token Age | 1.0 | How old is the token? |\n| 6 | Liquidity Depth | 1.0 | Is there enough liquidity to trade? |\n| 7 | Rugcheck Flags | 1.0 | Rugcheck.xyz automated risk flags |\n| 8 | Insider Activity | 1.5 | Coordinated wallet networks detected? |\n| 9 | Transfer Fee | 1.0 | Hidden tax on transfers? |\n| 10 | Verification | 0.5 | Listed on Jupiter? |\n\n## Safety\n\n### ⚠️ NOT Financial Advice — This Is Non-Negotiable\n\nThis skill provides **informational risk signals only**. The agent MUST NOT:\n- Recommend buying or selling any token — ever\n- Use language implying a token is a \"good buy\", \"looks solid\", or is \"safe to invest in\"\n- Frame analysis results as investment validation\n- Guarantee any token is safe or unsafe\n- Replace professional financial advice\n- Account for off-chain risks (team, legal, regulatory, market sentiment)\n\nA low risk score means **low on-chain risk indicators were detected** — it does NOT mean the token is a good investment or free from risk.\n\n### 🔒 Read-Only\n\nThis skill:\n- **Never** interacts with any wallet\n- **Never** signs or submits any transaction\n- **Never** requests private keys or seed phrases\n- **Never** sends tokens or funds\n- Only reads publicly available on-chain data and public API endpoints\n\n### 🛡️ No API Keys\n\nAll data sources are free, public APIs. No API keys are stored or transmitted.\n\n## Example Prompts\n\n```\n\"Rug check DezXAZ8z7PnrnRJjz3wXBoRgixCa6xjnB7YaB1pPB263\"\n\"Is BONK safe?\"\n\"Check this token for me: 5smiafTeV4ATT6naUWTwzcsvix4VU9nQ7ReyzKiqpump\"\n\"Is this a rug pull? [address]\"\n\"Analyze the risk on this Solana token\"\n\"Do a safety check on $WIF\"\n```\n\n## Dependencies\n\n- `bash` 4+\n- `curl`\n- `jq`\n- `bc` (for floating-point comparisons)\n- Internet access to: `api.rugcheck.xyz`, `api.dexscreener.com`, `api.mainnet-beta.solana.com`","tags":["rug","checker","cacheforge","skills","cacheforge-ai","agent-skills","ai-agents","clawhub","devops","discord-v2","kubernetes","openclaw"],"capabilities":["skill","source-cacheforge-ai","skill-rug-checker","topic-agent-skills","topic-ai-agents","topic-cacheforge","topic-clawhub","topic-devops","topic-discord-v2","topic-kubernetes","topic-openclaw","topic-prometheus"],"categories":["cacheforge-skills"],"synonyms":[],"warnings":[],"endpointUrl":"https://skills.sh/cacheforge-ai/cacheforge-skills/rug-checker","protocol":"skill","transport":"skills-sh","auth":{"type":"none","details":{"cli":"npx skills add cacheforge-ai/cacheforge-skills","source_repo":"https://github.com/cacheforge-ai/cacheforge-skills","install_from":"skills.sh"}},"qualityScore":"0.454","qualityRationale":"deterministic score 0.45 from registry signals: · indexed on github topic:agent-skills · 8 github stars · SKILL.md body (8,417 chars)","verified":false,"liveness":"unknown","lastLivenessCheck":null,"agentReviews":{"count":0,"score_avg":null,"cost_usd_avg":null,"success_rate":null,"latency_p50_ms":null,"narrative_summary":null,"summary_updated_at":null},"enrichmentModel":"deterministic:skill-github:v1","enrichmentVersion":1,"enrichedAt":"2026-05-18T19:09:04.811Z","embedding":null,"createdAt":"2026-05-18T13:14:38.961Z","updatedAt":"2026-05-18T19:09:04.811Z","lastSeenAt":"2026-05-18T19:09:04.811Z","tsv":"'-1':783 '-100':469,597 '-15':524 '-35':550 '-44':188,224,754 '-55':570 '-75':582 '-9':228 '0':468,523 '0.1.3':43 '0.5':1009 '1':208,227,402,759,925 '1.0':967,976,986,1002 '1.5':937,946,994 '10':11,463,918,1007 '1200':664 '12000':382 '12k':415 '15':711 '16':549 '2':268,411,726,934 '2.0':928,957 '3':453,656,943 '32':187,223,236,753 '36':569 '3d':384,417 '4':473,953,1204 '400d':373,409 '44':237 '5':309,504,964 '5.0':406 '5000000':371 '56':581 '56lc5':375,414 '5smiaftev4att6nauwtwzcsvix4vu9nq7reyzkiqpump':1182 '6':973 '7':983 '76':596 '8':991 '9':999 'a-hj-np-za-km-z':229 'access':1214 'account':1074 'action':680 'activ':60,62,993 'add':512 'address':139,177,196,221,263,284,289,312,363,374,427,451,743,752,1188 'advic':28,1016,1073 'advis':156 'age':317,372,383,899,966 'agent':31,205,722,1030 'ai':46 'alway':608 'ambigu':300,360,433 'analysi':10,102,176,456,810,1058 'analysis.json':489 'analyz':800,1189 'anvil':45 'api':21,764,773,808,1150,1153,1161,1163 'api.dexscreener.com':1217 'api.mainnet-beta.solana.com':1218 'api.rugcheck.xyz':1216 'appear':847 'array':305 'ask':147,250,332,444 'assess':547 'audit':117,118 'author':44,130,874,911,927,936 'auto':339 'auto-pick':338 'autom':988 'avail':677,1143 'avoid':607,666,714 'bar':498 'base':515 'base58':184,222,755 'bash':272,273,457,458,476,477,479,486,487,1203 'bc':1207 'bet':632 'bonk':87,244,245,359,366,368,379,396,403,404,412,1175 'bonkfork':377,413 'breakdown':684 'brief':513 'built':615 'buy':150,160,1034,1048 'buy/sell':624 'candid':304,323,342,355,362,386 'cap':897 'card':494 'care':576 'categori':47 'caus':721 'caution':548,562 'chain':15,50,168,528,538,833,909,1078,1093,1146 'channel':644,716 'char':225 'charact':189,665,756 'check':16,78,81,85,95,111,164,258,343,351,449,465,691,741,887,917,920,1172,1177,1199 'checker':3,30,41 'chunk':710 'classic':962 'code':725,758 'commentari':514,520 'compact':647 'comparison':1212 'compon':675,693 'composit':466,781 'concentr':945,949 'confirm':425 'contain':306 'context':904 'contract':262 'coordin':995 'couldn':439,735 'cover':535 'creator':930,939 'critic':595,603 'curl':1205 'danger':580 'data':293,686,785,790,804,865,1147,1156 'defi':48 'definit':33 'degrad':816,888 'deliveri':635 'depend':1202 'depth':975 'detect':178,320,531,574,729,762,882,924,998,1097 'detect-token':319,728,761 'dex':837,853 'dexscreen':813,891 'dezxaz8z':364,405 'dezxaz8z7pnrnrjjz3wxborgixca6xjnb7yab1ppb263':142,1173 'disclaim':612 'discord':633,643,674 'display':508 'doesn':845 'doubl':448 'double-check':447 'driver':658 'e.g':243,626 'either':218 'end':609 'endpoint':1151 'enough':979 'error':718,720 'ever':1039 'exampl':76,354,1169 'exist':830,841 'exit':724,757 'extract':209 'extrem':598 'factor':170,539,573 'fail':787 'failur':765 'fallback':914 'fals':430 'fdv':895 'fee':1001 'field':36 'financi':27,1015,1072 'find':737 'first':204,648,661,672 'fish':247 'flag':553,585,880,985,990 'float':1210 'floating-point':1209 'format':491,510 'format-report.sh':617 'found':287,392,429,442,733,824 'frame':1057 'free':1109,1159 'freez':935,940 'full':669,682 'function':818 'fund':1139 'generat':474 'give':259 'given':281,295 'good':629,1047,1106 'guarante':1063 'handl':719 'hidden':1003 'hj':231 'holder':876,941,944 'honeypot':110,115 'impli':622,1042 'includ':678 'indic':530,589,1095 'inform':1025 'input':278 'insid':881,992 'interact':59,1118 'internet':1213 'invest':630,1055,1061,1107 'issu':605 'jq':1206 'json':285,298,357,461,485 'jupit':1012 'keep':659 'key':22,1131,1154,1164 'km':234 'languag':620,1041 'legal':541,1081 'level':53 'like':255 'line':712 'link':502 'liquid':315,369,380,408,416,894,959,974,980 'list':390,703,838,850,1010 'lock':122,126,878,955 'long':670,705 'look':627,1049 'lookup':137 'low':525,1086,1090 'lp':121,125,877,954 'm':407,767 'markdown':492 'market':292,499,543,896,903,1083 'match':70,226,310,395 'may':855 'mean':336,401,1089,1101 'messag':69,216,649,662 'metadata':35 'mint':129,133,426,751,926,931 'mint/freeze':873,910 'minut':780 'mode':636 'multipl':393,588 'must':325,1031 'name':240,266,290,313,365,376,827,900 'name/symbol':201,297 'necessarili':556 'negoti':1021 'network':997 'never':337,618,1117,1122,1128,1135 'new':858 'noisi':715 'non':862,1020 'non-negoti':1019 'non-trad':861 'note':143,532,819 'np':232 'number':389,702 'off-chain':1076 'old':410,418,969 'on-chain':13,166,526,536,831,907,1091,1144 'one':334,398,579 'openclaw':637 'option':699 'output':275,460,490 'overview':500 'pars':212 'pattern':74,75 'phrase':1134 'pick':340 'pipe':482 'pleas':740 'point':12,919,1211 'potenti':592 'present':326,385,505 'price':892 'primari':885 'privat':1130 'proceed':560,811 'profession':1071 'prompt':1170 'provid':182,199,696,870,1024 'public':1142,1149,1160 'pull':8,80,594,961,1187 'queri':358 'quick':679 're':421,689 're-run':420,688 'reach':770 'read':24,55,1113,1141 'read-on':23,54,1112 'recommend':625,1033 'red':584 'redirect':152 'regulatori':1082 'render':667 'replac':1070 'report':19,475,493,511,671,706 'request':1129 'requir':871 'research':567 'resolut':901 'resolv':202,269 'respons':356,723,823 'result':1059 'return':322 'right':774,794 'risk':9,52,101,106,169,455,464,497,529,544,572,599,657,683,879,916,989,1026,1079,1087,1094,1111,1191 'rpc':815,906 'rug':2,7,29,40,77,79,84,593,963,1171,1186 'rug-check':1,39 'rug-pul':6 'rugcheck':805,807,984 'rugcheck.xyz':872,987 'run':174,422,454,640,690 'safe':93,522,631,799,1053,1067,1176 'safe/caution/warning/danger/critical':471 'safeti':89,604,1013,1198 'save':484 'scam':94,99,558 'score':467,653,782,1088 'scripts/analyze-risk.sh':459,478 'scripts/detect-token.sh':274 'scripts/format-report.sh':480,488 'secondari':902 'secur':49 'seed':1133 'sell':1036 'send':645,707,1136 'sentiment':1084 'sever':571 'short':709 'show':681,685 'sign':1123 'signal':1027 'signific':583 'skill':32,34,64,1023,1116 'skill-rug-checker' 'slug':38 'solana':4,51,138,194,220,283,748,814,843,905,1194 'solid':628,1050 'sourc':687,786,791,866,867,1157 'source-cacheforge-ai' 'spam':717 'spl':749 'status':884,956 'step':207,267,452,472,503 'store':1166 'string':185 'strong':606 'submit':1125 'symbol':242,291,314,367,378 'tax':1004 'team':540,1080 'tell':434 'templat':521 'tertiari':913 'three':789 'tier':470,518,519,652 'token':5,88,92,100,109,116,120,135,136,151,195,211,239,252,265,271,321,346,394,438,601,651,730,731,739,750,763,772,802,829,840,864,898,933,948,965,972,1038,1044,1065,1103,1137,1179,1195 'top':655,875 'topic-agent-skills' 'topic-ai-agents' 'topic-cacheforge' 'topic-clawhub' 'topic-devops' 'topic-discord-v2' 'topic-kubernetes' 'topic-openclaw' 'topic-prometheus' 'trade':982 'tradeabl':863 'transact':1127 'transfer':1000,1006 'transmit':1168 'treat':190 'tri':776 'trigger':61 'troubl':769 'true':301,361,825 'true/false':288 'type':279 'unavail':695,806 'unclear':249 'unknown':828 'unlimit':932 'unsaf':1069 'usd':370,381 'use':619,1040 'user':67,146,181,214,330,436,507 'v2':634 'v2026.2.14':638 'valid':1062 'valu':37 'vari':276 'verif':883,912,915,1008 'version':42 'visual':18,496 'volum':893 'wallet':58,942,952,996,1121 'warn':568 'weight':921 'wheelchair':246 'whether':158 'wif':1201 'without':803,889 'workflow':206 'wors':348 'would':253 'wrong':345 'yellow':552 'z':235 'za':233 'zero':20","prices":[{"id":"580c4b81-abd5-4900-9063-fe64518a54ee","listingId":"1992ea4c-feee-469a-afed-49639702930f","amountUsd":"0","unit":"free","nativeCurrency":null,"nativeAmount":null,"chain":null,"payTo":null,"paymentMethod":"skill-free","isPrimary":true,"details":{"org":"cacheforge-ai","category":"cacheforge-skills","install_from":"skills.sh"},"createdAt":"2026-05-18T13:14:38.961Z"}],"sources":[{"listingId":"1992ea4c-feee-469a-afed-49639702930f","source":"github","sourceId":"cacheforge-ai/cacheforge-skills/rug-checker","sourceUrl":"https://github.com/cacheforge-ai/cacheforge-skills/tree/main/skills/rug-checker","isPrimary":false,"firstSeenAt":"2026-05-18T13:14:38.961Z","lastSeenAt":"2026-05-18T19:09:04.811Z"}],"details":{"listingId":"1992ea4c-feee-469a-afed-49639702930f","quickStartSnippet":null,"exampleRequest":null,"exampleResponse":null,"schema":null,"openapiUrl":null,"agentsTxtUrl":null,"citations":[],"useCases":[],"bestFor":[],"notFor":[],"kindDetails":{"org":"cacheforge-ai","slug":"rug-checker","github":{"repo":"cacheforge-ai/cacheforge-skills","stars":8,"topics":["agent-skills","ai-agents","cacheforge","clawhub","devops","discord-v2","kubernetes","openclaw","prometheus"],"license":"mit","html_url":"https://github.com/cacheforge-ai/cacheforge-skills","pushed_at":"2026-02-22T20:49:48Z","description":"⚡ SOTA agent skills for OpenClaw — observability, security, code quality, incident response, and more. Built by Anvil AI.","skill_md_sha":"ef808f0a13ad8331c5b9802ea09219d5c144ad84","skill_md_path":"skills/rug-checker/SKILL.md","default_branch":"main","skill_tree_url":"https://github.com/cacheforge-ai/cacheforge-skills/tree/main/skills/rug-checker"},"layout":"multi","source":"github","category":"cacheforge-skills","frontmatter":{"name":"rug-checker","description":"Solana token rug-pull risk analysis. 10-point on-chain check with visual report. Zero API keys. Read-only. Not financial advice."},"skills_sh_url":"https://skills.sh/cacheforge-ai/cacheforge-skills/rug-checker"},"updatedAt":"2026-05-18T19:09:04.811Z"}}