eli5
Explain a topic like I'm a 5 year old. Use when the user types /eli5 <topic> or asks for a…
Analyze a blockchain transaction by its hash using TRES Finance MCP and generate a visual flow diagram showing all asset movements, followed by a plain-language explanation of what happened. Use this skill whenever the user provides a transaction hash and asks to "analyze",
$ npx -y skills add anthropics/claude-plugins-community --skill tres-tx-story --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
/tres-tx-storyContext preview
The summary Claude sees to decide when to auto-load this skill.
Analyze a blockchain transaction by its hash using TRES Finance MCP and generate a visual flow diagram showing all asset movements, followed by a plain-language explanation of what happened. Use this skill whenever the user provides a transaction hash and asks to "analyze",
name: tres-tx-story description: > Analyze a blockchain transaction by its hash using TRES Finance MCP and generate a visual flow diagram showing all asset movements, followed by a plain-language explanation of what happened. Use this skill whenever the user provides a transaction hash and asks to "analyze", "explain", "visualize", "diagram", "show me what happened in", or "tell the story of" a transaction. Also trigger when the user pastes a tx hash (long hex string starting with 0x) and asks anything about it. Always use this skill for transaction hash analysis — do not attempt to answer from memory alone.
Fetch a transaction by hash from TRES Finance, render a flow diagram of all asset movements, and explain in plain English what happened.
All calls use the `TRES Finance MCP` server (URL: `https://ai.tres.finance/mcp`).
---
Call `get_viewer` (no arguments) to verify the session.
---
Query the transaction using its hash as the `identifier`:
query GetTransactionByHash($hash: String!, $currency: String) {
transaction(identifier: $hash, currency: $currency, limit: 1) {
results {
id
identifier
platform
timestamp
success
decodedFunctionName
methodId
fromAddress { identifier displayName isInternal customAccountName }
toAddress { identifier displayName isInternal customAccountName }
contract { identifier contractName protocols applications }
classification { activity action functionName }
ledgerSummary
applications
protocols
internalAccounts { id name }
children {
id
amount
balanceFactor
platform
type
fiatValue
nonTaxableType
isInternalTransfer
financialActionGroup
belongsTo { id name identifier }
sender { identifier displayName isInternal customAccountName }
recipient { identifier displayName isInternal customAccountName }
asset {
identifier
symbol: key
assetClass { id symbol verificationStatus }
}
}
}
}
}Variables: `{ "hash": "<user_provided_hash>", "currency": "usd" }`
> **Fallback**: If `identifier` returns 0 results, retry with `identifier_Contains` > using the last 20 characters of the hash. Hashes on some chains may be stored > without the `0x` prefix — strip it and retry if still empty.
---
From the result, extract:
| Field | Purpose | |---|---| | `identifier` | The tx hash | | `platform` | Blockchain (ETHEREUM, SOLANA, etc.) | | `timestamp` | Date/time | | `success` | Did it succeed? | | `decodedFunctionName` | What smart-contract function was called | | `fromAddress` / `toAddress` | Top-level sender → receiver | | `contract.contractName` | Smart contract involved (if any) | | `classification.activity` + `.action` | TRES classification label | | `children[]` | Each sub-transaction (individual token movement) |
For each child sub-transaction, extract:
---
Use the `show_widget` tool (Visualizer) to render an HTML widget containing an inline SVG diagram.
---
**A. Prepare all label strings first**
For every arrow label (token amount + symbol), apply these formatting rules: 1. Format the amount:
2. Truncate the symbol:
3. Measure the full label: `label = amount + " " + symbol`. Count characters. Multiply by 7. That's the pixel width. 4. The available space for a label = the arrow's x-span minus 20px safety margin.
5. If `label_px_width > available_space`, shorten further: abbreviate amount to 1 sig fig, or use symbol-only if still too wide.
**B. Count the arrows and calculate SVG height**
**C. Lay out arrow Y positions**
---
ViewBox width: 640 Left wallet circle: cx=90, cy=node_centre_y, r=46 Contract rect: x=248, y=node_centre_y-55, width=160, height=110, rx=12 Right wallet circle: cx=550, cy=node_centre_y, r=46 Arrow x coordinates: Outflow (left→centre): x1=136, x2=246 midpo
Community-contributed plugins for Claude Cowork and Claude Code.
Repo: anthropics/claude-plugins-community
Explain a topic like I'm a 5 year old. Use when the user types /eli5 <topic> or asks for a…
Write an implementation plan as one interactive HTML page - a tree of claims (why › what ›…
Use the `quickdesign` CLI to generate AI media — UGC promo videos, image edits, product…
Use only when the user explicitly asks for a TestDino audit of Playwright automated test…
Use when the user wants to check TestDino connection status, validate their PAT, discover…
Use when the user wants to manage a manual execution run or update case-level results inside…