Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Logs the trades the user tells it about and gives live P&L on demand. The user says something like "bought 500 NEAR at $3.20" or "sold 200 SOL at $145"; the agent appends it to a persistent journal in memory. On "show P&L" it reconstructs each open position, works out the size-weighted average entry, fetches current prices from CoinGecko, and shows cost basis, current value, and profit/loss per token and overall. The journal survives restarts.
.claude/skills/nearai-crypto-trade-journal/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-09 | ✗→✓ | ▲ Improved | -41% | 0% |
| case-16 | ✗→✓ | ▲ Improved | -30% | 0% |
| case-17 | ✗→✓ | ▲ Improved | -31% | 0% |
| case-04 | ✓→✗ | ▼ Worse | 11% | 0% |
| case-05 | ✓→✗ | ▼ Worse | 12% | 0% |
You keep a running journal of the user's trades and give them live P&L whenever they ask.
trades/journal.md with memory_read before writing, then append the new entry with memory_write. Never overwrite the journal from scratch and never drop earlier trades. If the file does not exist, create it with a header line and add the entry.time tool when logging. Get prices from CoinGecko with the http tool when showing P&L. Never guess a price or a date.When the user says something like bought 500 NEAR at $3.20 or sold 200 SOL at $145:
time tool.trades/journal.md with memory_read.[date] | BUY/SELL | [amount] [TOKEN] | @ $[price] | Total: $[amount × price].memory_write.Logged: bought 500 NEAR @ $3.20 on [date].Journal entries live in trades/journal.md:
# Trade Journal
[date] | BUY | 500 NEAR | @ $3.20 | Total: $1600
[date] | SELL | 200 SOL | @ $145 | Total: $29000When the user says show P&L / how am I doing:
trades/journal.md with memory_read.http tool: https://api.coingecko.com/api/v3/simple/price?ids=[ids]&vs_currencies=usd (map symbols to CoinGecko ids yourself — NEAR=near, SOL=solana, BTC=bitcoin, ETH=ethereum, etc.).P&L format:
📊 Live P&L
Token | Avg Entry | Current | Size | Cost Basis | Value | P&L
NEAR | $[X] | $[X] | [X] | $[X] | $[X] | [+/-X]%
...
Total invested: $[X] | Current value: $[X] | Total P&L: $[X] ([+/-X]%)bought [amount] [token] at $[price] / sold [amount] [token] at $[price] — log a tradeshow my trades — show the full journal as a clean tableshow P&L / how am I doing — live P&L across all open positionsshow P&L for [token] — P&L for one token plus its individual trade entries| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-01 | fail→fail | 4,094 | 3,404 | -17% | 1 | 1 | 0% | 748 | 860 | +15% | 0 | 0 | — |
case-02 | fail→fail | 3,688 | 3,836 | +4% | 1 | 1 | 0% | 527 | 1,070 | +103% | 0 | 0 | — |
case-03 | fail→fail | 4,304 | 3,800 | -12% | 1 | 1 | 0% | 644 | 963 | +50% | 0 | 0 | — |
case-04 | pass→fail | 5,460 | 5,686 | +4% | 1 | 1 | 0% | 1,112 | 1,234 | +11% | 0 | 0 | — |
case-09 | fail→pass | 10,392 | 2,074 | -80% | 1 | 1 | 0% | 2,078 | 1,231 | -41% | 0 | 0 | — |
case-05 | pass→fail | 5,516 | 6,828 | +24% | 1 | 1 | 0% | 1,175 | 1,319 | +12% | 0 | 0 | — |
case-06 | pass→pass | 2,958 | 1,778 | -40% | 1 | 1 | 0% | 517 | 1,121 | +117% | 0 | 0 | — |
case-07 | pass→pass | 4,784 | 1,789 | -63% | 1 | 1 | 0% | 860 | 1,129 | +31% | 0 | 0 | — |
case-08 | pass→pass | 4,432 | 1,967 | -56% | 1 | 1 | 0% | 799 | 1,120 | +40% | 0 | 0 | — |
case-10 | pass→fail | 4,421 | 4,340 | -2% | 1 | 1 | 0% | 762 | 1,056 | +39% | 0 | 0 | — |
case-11 | pass→pass | 5,569 | 9,698 | +74% | 1 | 1 | 0% | 1,066 | 2,108 | +98% | 0 | 0 | — |
case-12 | fail→fail | 5,224 | 1,965 | -62% | 1 | 1 | 0% | 1,007 | 1,201 | +19% | 0 | 0 | — |
case-13 | fail→fail | 5,783 | 3,472 | -40% | 1 | 1 | 0% | 919 | 854 | -7% | 0 | 0 | — |
case-14 | fail→fail | 12,528 | 4,055 | -68% | 1 | 1 | 0% | 1,797 | 1,016 | -43% | 0 | 0 | — |
case-15 | fail→fail | 5,172 | 4,339 | -16% | 1 | 1 | 0% | 941 | 866 | -8% | 0 | 0 | — |
case-16 | fail→pass | 9,863 | 2,933 | -70% | 1 | 1 | 0% | 2,004 | 1,398 | -30% | 0 | 0 | — |
case-17 | fail→pass | 9,043 | 1,757 | -81% | 1 | 1 | 0% | 1,658 | 1,146 | -31% | 0 | 0 | — |
case-18 | fail→fail | 8,780 | 5,196 | -41% | 1 | 1 | 0% | 1,624 | 855 | -47% | 0 | 0 | — |
case-19 | pass→fail | 14,558 | 2,644 | -82% | 1 | 1 | 0% | 2,556 | 1,208 | -53% | 0 | 0 | — |
case-20 | pass→pass | 18,304 | 9,834 | -46% | 1 | 1 | 0% | 3,742 | 2,953 | -21% | 0 | 0 | — |
case-21 | pass→pass | 17,003 | 10,076 | -41% | 1 | 1 | 0% | 3,090 | 2,880 | -7% | 0 | 0 | — |
case-22 | fail→fail | 4,451 | 3,599 | -19% | 1 | 1 | 0% | 815 | 1,136 | +39% | 0 | 0 | — |
DecimalAI ran this skill against gemini-3.6-flash twice over the same eval suite — once with the skill loaded and once without — and compared the two runs case by case. 22 cases were attempted, and 11 counted toward the lift figure. The other 11 produced results that are not comparable between the two arms, so they are excluded from the headline rather than averaged into it. The headline lift of -5 percentage points is the difference between those two pass rates over the 11 comparable cases. 4 cases got worse with the skill loaded, and they are included in that figure.
Without the skill loaded, the model failed this case. With it loaded, the same prompt on the same model passed. This is one improved case from the latest verified run; every case, including any that regressed, is in the table above.
Other measured skills in the registry, with their headline benchmark lift.