@vike-io/cli 0.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (56) hide show
  1. package/CHANGELOG.md +23 -0
  2. package/LICENSE +21 -0
  3. package/README.md +98 -0
  4. package/package.json +73 -0
  5. package/scripts/postinstall.js +20 -0
  6. package/skills/vike-alerts-setup/SKILL.md +75 -0
  7. package/skills/vike-alerts-webhook/SKILL.md +84 -0
  8. package/skills/vike-core/SKILL.md +67 -0
  9. package/skills/vike-cross-venue-perps/SKILL.md +52 -0
  10. package/skills/vike-defi-positions/SKILL.md +59 -0
  11. package/skills/vike-fund-holdings/SKILL.md +53 -0
  12. package/skills/vike-hl-top-traders/SKILL.md +52 -0
  13. package/skills/vike-hl-trader-profile/SKILL.md +65 -0
  14. package/skills/vike-options-flow/SKILL.md +49 -0
  15. package/skills/vike-perp-funding-arb/SKILL.md +53 -0
  16. package/skills/vike-perp-screener/SKILL.md +49 -0
  17. package/skills/vike-perp-spread-arb/SKILL.md +38 -0
  18. package/skills/vike-polymarket-market-detail/SKILL.md +42 -0
  19. package/skills/vike-polymarket-markets/SKILL.md +44 -0
  20. package/skills/vike-polymarket-screener/SKILL.md +59 -0
  21. package/skills/vike-polymarket-smart-money/SKILL.md +58 -0
  22. package/skills/vike-polymarket-trader/SKILL.md +55 -0
  23. package/skills/vike-router/SKILL.md +53 -0
  24. package/skills/vike-smart-money-discovery/SKILL.md +74 -0
  25. package/skills/vike-token-holders/SKILL.md +45 -0
  26. package/skills/vike-token-research/SKILL.md +55 -0
  27. package/skills/vike-token-search/SKILL.md +40 -0
  28. package/skills/vike-token-transfers/SKILL.md +43 -0
  29. package/skills/vike-wallet-balances/SKILL.md +60 -0
  30. package/skills/vike-wallet-counterparties/SKILL.md +48 -0
  31. package/skills/vike-wallet-discover/SKILL.md +49 -0
  32. package/skills/vike-wallet-ens/SKILL.md +41 -0
  33. package/skills/vike-wallet-label-provenance/SKILL.md +65 -0
  34. package/skills/vike-wallet-pnl-history/SKILL.md +58 -0
  35. package/skills/vike-wallet-portfolio/SKILL.md +61 -0
  36. package/skills/vike-wallet-summary/SKILL.md +35 -0
  37. package/skills/vike-web-fetch/SKILL.md +55 -0
  38. package/skills/vike-web-research/SKILL.md +58 -0
  39. package/skills/vike-web-search/SKILL.md +60 -0
  40. package/src/auth.js +55 -0
  41. package/src/commands/alerts.js +118 -0
  42. package/src/commands/auth.js +43 -0
  43. package/src/commands/doctor.js +87 -0
  44. package/src/commands/init.js +50 -0
  45. package/src/commands/labels.js +48 -0
  46. package/src/commands/options.js +24 -0
  47. package/src/commands/perp.js +59 -0
  48. package/src/commands/polymarket.js +74 -0
  49. package/src/commands/schema.js +31 -0
  50. package/src/commands/token.js +77 -0
  51. package/src/commands/wallet.js +106 -0
  52. package/src/commands/web.js +41 -0
  53. package/src/format.js +83 -0
  54. package/src/index.js +44 -0
  55. package/src/mcp-client.js +94 -0
  56. package/src/util.js +25 -0
@@ -0,0 +1,74 @@
1
+ ---
2
+ name: vike-smart-money-discovery
3
+ description: Multi-signal smart money discovery — find wallets currently accumulating a token, ranked by realized PnL track record. Use when the user asks "is smart money buying X" / "find smart money on Y chain" / "any alpha wallets in Z".
4
+ allowed-tools: Bash(vike:*)
5
+ ---
6
+
7
+ # vike-smart-money-discovery
8
+
9
+ Composite playbook — combines wallet leaderboards + token-side buyer list + label inspection.
10
+
11
+ ## Workflow
12
+
13
+ ### A. Top realized-PnL wallets on a chain
14
+
15
+ ```bash
16
+ vike wallet discover --sort pnl --window 90d --chain ethereum --size 20 --json
17
+ ```
18
+
19
+ Keep only rows where:
20
+ - `realized_pnl_usd > 100_000` (real conviction, not noise)
21
+ - `tx_count > 20` (not a single lucky trade)
22
+ - `label` is empty OR not a known CEX (these are real wallets, not exchanges)
23
+
24
+ That set = your "smart money universe" for the next step.
25
+
26
+ ### B. Cross-reference with a specific token
27
+
28
+ If the user asks about a specific token, resolve it first:
29
+
30
+ ```bash
31
+ vike token search <symbol> --chain <chain> --limit 3 --json
32
+ ```
33
+
34
+ Then list its recent buyers:
35
+
36
+ ```bash
37
+ vike token transfers <addr> --tab bought --period 7d --chain <chain> --json
38
+ ```
39
+
40
+ **Intersect** the buyer addresses with your smart-money universe from step A. Any overlap = a smart-money wallet currently accumulating this token.
41
+
42
+ ### C. Profile each match
43
+
44
+ For every overlap address, run:
45
+
46
+ ```bash
47
+ vike wallet summary <addr> --json
48
+ ```
49
+
50
+ Report:
51
+ - Address
52
+ - Known label (if any)
53
+ - 90d realized PnL
54
+ - 7d net flow on this token
55
+ - 30d total volume
56
+
57
+ ## Verdict template
58
+
59
+ > **Smart-money take on $TOKEN:** N of top-20 90d-PnL wallets (>$100k realized) bought $TOKEN in the last 7 days. Strongest names: `<addr1> (+$X PnL, label?)`, `<addr2> ...`. Aggregate net flow into $TOKEN from this cohort: $Y. **Read: accumulation / churn / no-signal.**
60
+
61
+ ## Anti-patterns
62
+
63
+ - Don't accept any wallet labeled as a CEX (binance/coinbase/bybit/etc.) as "smart money" — they're aggregators.
64
+ - Don't lower the PnL threshold to <$50k just to find more matches; below that, signal-to-noise is poor.
65
+ - Single-token wallets (`unique_tokens < 3`) are usually airdrop-flippers, not strategic.
66
+
67
+ ## Cost note
68
+
69
+ 3 calls per discovery: 1× `wallet discover`, 1× `token transfers`, then 1× `wallet summary` per match (cap at 5).
70
+
71
+ ## Pairs well with
72
+
73
+ - `vike-token-research` for the price/flow context
74
+ - `vike-perp-funding-arb` if the token has a perp listing (positioning bias)
@@ -0,0 +1,45 @@
1
+ ---
2
+ name: vike-token-holders
3
+ description: Top holders of an ERC-20 token by cumulative net inflow USD, with known labels. Use when the user asks "top holders of X" / "who holds the most of token Y" / "is whale Z holding token A".
4
+ allowed-tools: Bash(vike:*)
5
+ ---
6
+
7
+ # vike-token-holders
8
+
9
+ ## Command
10
+
11
+ ```bash
12
+ vike token holders <token_address> [--chain ethereum|bsc|base] [--limit N] [--json]
13
+ ```
14
+
15
+ ## Examples
16
+
17
+ ```bash
18
+ # Resolve symbol first if needed:
19
+ vike token search PEPE --chain ethereum --limit 1 --json
20
+ # Then holders:
21
+ vike token holders 0x6982508145454ce325ddbe47a25d4ec3d2311933 --limit 20
22
+ ```
23
+
24
+ ## Output columns
25
+
26
+ `wallet`, `net_flow_usd` (lifetime), `volume_usd` (lifetime), `tx_count`, `first_seen`, `last_active`, `entity`, `wallet_type`
27
+
28
+ ## Reading
29
+
30
+ - **Sorted descending by `net_flow_usd`** — the biggest accumulators are at the top
31
+ - A row with `entity = "Binance"` is a CEX hot/cold wallet — these aggregate millions of retail holders, not single discretionary positions
32
+ - `first_seen` earlier than the token's launch month = wallet was active before this token existed; probably an aggregator
33
+ - Two wallets with similar `net_flow_usd` but very different `tx_count`: low-tx = single buy-and-hold; high-tx = active trader
34
+
35
+ ## Anti-patterns
36
+
37
+ - "Top holders" here means cumulative net inflow over all time — NOT current on-chain balance (which would require querying the contract directly). A wallet that bought $10M and sold $9M shows `net_flow_usd = $1M`, even if current balance is zero. **Always call this out** when reporting top holders.
38
+ - Don't list `tx_count = 1` whales as "smart money" without context — could be an airdrop receiver who never sold.
39
+ - For BSC tokens, pass `--chain bsc` explicitly; default is ethereum.
40
+
41
+ ## Pairs well with
42
+
43
+ - `vike labels <addr>` — drill into any holder's full label cascade
44
+ - `vike token transfers <addr>` — see who's currently buying/selling in last 24h
45
+ - `vike wallet summary <addr>` — full activity profile of any holder
@@ -0,0 +1,55 @@
1
+ ---
2
+ name: vike-token-research
3
+ description: Full token research playbook — search → transfers → chart → flow direction → buyer/seller verdict. Use when the user asks "research <token>" or "what's happening with <token>".
4
+ allowed-tools: Bash(vike:*)
5
+ ---
6
+
7
+ # vike-token-research
8
+
9
+ Multi-call token research workflow.
10
+
11
+ ## Steps
12
+
13
+ 1. **Resolve address** (skip if user already gave one)
14
+ ```bash
15
+ vike token search <symbol> --chain <chain> --limit 3 --json
16
+ ```
17
+ Pick the highest-volume match; capture the address.
18
+
19
+ 2. **Recent buyers + sellers** (parallel calls)
20
+ ```bash
21
+ vike token transfers <addr> --tab bought --period 24h --chain <chain> --json
22
+ vike token transfers <addr> --tab sold --period 24h --chain <chain> --json
23
+ ```
24
+
25
+ 3. **Price action**
26
+ ```bash
27
+ vike token chart <addr> --interval 30 --json
28
+ ```
29
+
30
+ ## Verdict heuristics
31
+
32
+ After step 2, classify direction-of-pressure:
33
+
34
+ | Buyer count vs seller count (24h) | Verdict |
35
+ |---|---|
36
+ | Buyers > 2× sellers and net inflow > $1M | **Accumulation** |
37
+ | Sellers > 2× buyers and net outflow > $1M | **Distribution** |
38
+ | Roughly even (within 1.5×) | **Churn / range-bound** |
39
+ | Both very low | **Illiquid — skip the read** |
40
+
41
+ Cross-check against the chart: distribution + falling price = bearish; accumulation + flat price = stealth bid (interesting).
42
+
43
+ ## Anti-patterns
44
+
45
+ - Don't run `transfers --period 30d` first — use 24h to see what's happening *now*; 30d for context only if needed.
46
+ - Don't quote the first row of `token search` blindly — if the symbol has cross-chain collisions (`FUN`, `BEAM`, `LDO`), inspect `chain` + `address` for each result before picking.
47
+
48
+ ## Cost note
49
+
50
+ Step 1: cheap. Step 2: 2× cheap. Step 3: cheap. Total ≈ 4 calls.
51
+
52
+ ## Pairs well with
53
+
54
+ - `vike-smart-money-discovery` to find which smart wallets are involved
55
+ - `vike-perp-funding-arb` if the token has a perp listing (BTC/ETH/SOL/major alts)
@@ -0,0 +1,40 @@
1
+ ---
2
+ name: vike-token-search
3
+ description: Resolve a token symbol or name into the canonical contract address + chain + metadata. Use this BEFORE any other token command — most tools need the address, not the symbol.
4
+ allowed-tools: Bash(vike:*)
5
+ ---
6
+
7
+ # vike-token-search
8
+
9
+ Symbol/name → address resolver.
10
+
11
+ ## Command
12
+
13
+ ```bash
14
+ vike token search <query> [--chain ethereum|bsc|base] [--limit N] [--json]
15
+ ```
16
+
17
+ ## Example
18
+
19
+ ```bash
20
+ vike token search PEPE --chain ethereum --limit 5
21
+ # → symbol name address chain
22
+ # PEPE Pepe 0x6982508145454ce325ddbe47a25d4ec3d2311933 ethereum
23
+ # PEPE2 ... 0x... ethereum
24
+ ```
25
+
26
+ ## When to use
27
+
28
+ - Any time the user mentions a token by symbol — always confirm the address before downstream calls.
29
+ - The default chain is **ethereum**; if the user asks "what's the address of CAKE", default to **bsc** if the symbol is bsc-native.
30
+
31
+ ## Anti-patterns
32
+
33
+ - Do not hardcode addresses you "remember" — symbols collide across chains and tokens. Always resolve.
34
+ - If `--limit 1` returns the wrong token, increase to 5-10 and pick the highest-volume / canonical match. The first row is not always the canonical one.
35
+
36
+ ## Pairs well with
37
+
38
+ - `vike token transfers <address>` after resolution
39
+ - `vike token chart <address>`
40
+ - `vike-token-research` for a full multi-call report
@@ -0,0 +1,43 @@
1
+ ---
2
+ name: vike-token-transfers
3
+ description: Top buyers or top sellers of a specific token over a window. Use when the user asks "who bought X" / "who sold X" / "is whale Y buying Z".
4
+ allowed-tools: Bash(vike:*)
5
+ ---
6
+
7
+ # vike-token-transfers
8
+
9
+ ## Command
10
+
11
+ ```bash
12
+ vike token transfers <token_address>
13
+ [--tab bought|sold]
14
+ [--period 1h|24h|7d|30d]
15
+ [--chain ethereum|bsc|base|all]
16
+ [--json]
17
+ ```
18
+
19
+ ## When to use
20
+
21
+ - "Who's accumulating X?" → `--tab bought --period 24h`
22
+ - "Who's dumping X?" → `--tab sold --period 24h`
23
+ - "Smart money on X this week" → `--tab bought --period 7d`, then cross-reference labels
24
+
25
+ ## Output columns
26
+
27
+ Each row is one wallet: `address`, `qty`, `usd_value`, `label` (if known), `tx_count`.
28
+
29
+ ## Reading tips
30
+
31
+ - The same wallet appearing in both `bought` and `sold` lists for the same period = market maker / churn (not a signal).
32
+ - High `usd_value` with low `tx_count` = a single large discretionary trade. Worth investigating with `vike wallet summary <address>`.
33
+ - Many small transfers from labeled exchanges = retail flow via that CEX (Binance, Coinbase, etc.).
34
+
35
+ ## Anti-patterns
36
+
37
+ - Don't request `--chain all` unless you really need cross-chain — it's slower and returns more rows.
38
+ - 1h period is sparse for low-liquidity tokens. Use 24h as the default starting window.
39
+
40
+ ## Pairs well with
41
+
42
+ - `vike wallet summary <addr>` to profile any interesting buyer/seller
43
+ - `vike token chart <addr>` to correlate flows with price action
@@ -0,0 +1,60 @@
1
+ ---
2
+ name: vike-wallet-balances
3
+ description: Current ERC-20 token balances for a wallet across major EVM chains (eth, bsc, base, arbitrum, polygon, optimism). Dust filtered. Use when the user asks "what does this wallet hold" / "current portfolio of X" / "show top holdings".
4
+ allowed-tools: Bash(vike:*)
5
+ ---
6
+
7
+ # vike-wallet-balances
8
+
9
+ ## Command
10
+
11
+ ```bash
12
+ vike wallet balances <address>
13
+ [--chains eth,bsc,base,arbitrum,polygon,optimism] (default = all 6)
14
+ [--min-usd 1] (filter dust below this)
15
+ [--json]
16
+ ```
17
+
18
+ ## Example
19
+
20
+ ```bash
21
+ vike wallet balances 0xd8da6bf26964af9d7eed9e03e53415d37aa96045 --chains eth,arbitrum
22
+ ```
23
+
24
+ ## Output
25
+
26
+ ```json
27
+ {
28
+ "address": "0x...",
29
+ "total_usd": 123456.78,
30
+ "chains_scanned": ["eth", "bsc", "base", "arbitrum", "polygon", "optimism"],
31
+ "holdings": [
32
+ { "chain": "eth", "symbol": "WETH", "name": "Wrapped Ether", "address": "0xc02a...", "balance": "12.34", "usd_value": 26345.67, "usd_price": 2134.94 },
33
+ { "chain": "arbitrum", "symbol": "USDC", "address": "0xaf88...", "balance": "5000.00", "usd_value": 5000.00, "usd_price": 1.0 },
34
+ ...
35
+ ]
36
+ }
37
+ ```
38
+
39
+ Holdings sorted by `usd_value` descending.
40
+
41
+ ## Reading
42
+
43
+ - `total_usd` = sum across all chains scanned. Wallet might still hold value on chains not scanned (e.g. zkSync, Linea) — say so when relevant.
44
+ - Stablecoin-heavy wallet → likely waiting for a buy / parked dry powder
45
+ - WETH/WBTC + LSTs (stETH, wstETH, rETH) → "saver" wallet, low-risk
46
+ - 50+ random tokens → airdrop farmer
47
+ - Empty `holdings` array → either no balance OR the address hasn't been indexed yet (very new wallets)
48
+
49
+ ## Anti-patterns
50
+
51
+ - This is ERC-20 only — does NOT include native ETH/BNB/MATIC (would need separate calls; not in our current tool surface). Mention this when reporting "total holdings".
52
+ - Don't combine with `defi_positions` totals naively — there's overlap (e.g. aUSDC shows in `balances`, the Aave deposit shows in `defi_positions`; you'd double-count).
53
+ - For wallets with 100+ tokens, the response is large — use `--min-usd 100` or higher to focus on meaningful holdings.
54
+
55
+ ## Pairs well with
56
+
57
+ - `vike defi <addr>` — protocol positions (Aave/Uniswap LP/Lido) alongside spot balances
58
+ - `vike wallet pnl-history <addr>` — how the wallet got to its current state
59
+ - `vike labels <addr>` — institutional context
60
+ - `vike wallet ens <addr>` — friendly identifier
@@ -0,0 +1,48 @@
1
+ ---
2
+ name: vike-wallet-counterparties
3
+ description: Find the top trading partners of a wallet — who it sent to and received from, ranked by combined USD volume. Use when the user asks "who does this wallet trade with" / "main counterparties of X" / "find connections between wallets".
4
+ allowed-tools: Bash(vike:*)
5
+ ---
6
+
7
+ # vike-wallet-counterparties
8
+
9
+ ## Command
10
+
11
+ ```bash
12
+ vike wallet counterparties <address>
13
+ [--chain ethereum|bsc|base]
14
+ [--window 24h|7d|30d|90d|180d|all]
15
+ [--limit N] (max 50)
16
+ [--json]
17
+ ```
18
+
19
+ ## Example
20
+
21
+ ```bash
22
+ vike wallet counterparties 0xd8da6bf26964af9d7eed9e03e53415d37aa96045 --window 30d
23
+ ```
24
+
25
+ ## Output columns
26
+
27
+ `wallet`, `total_volume_usd`, `sent_usd`, `received_usd`, `tx_count`, `first_seen`, `last_seen`, `entity`, `wallet_type`
28
+
29
+ ## Reading
30
+
31
+ - **Sent + Received roughly equal** = active trading partner (DEX router, MM, regular counterparty)
32
+ - **Sent >> Received** = wallet pays this counterparty (deposit address, contract call)
33
+ - **Received >> Sent** = wallet receives from this counterparty (funding source, employer, airdrop)
34
+ - `entity = "Binance"` (CEX) on the top row = the wallet deposits to / withdraws from that exchange
35
+ - `wallet_type = "dex"` = router contracts (Uniswap, 1inch, Curve routers) — typical for active traders
36
+ - Unlabeled top counterparty with high volume = potentially related wallet worth investigating with `vike labels`
37
+
38
+ ## Anti-patterns
39
+
40
+ - Don't claim two wallets are "controlled by the same person" from counterparties alone — many people deposit to the same Binance address. Pair with `vike-wallet-clustering` (deferred) or manual investigation.
41
+ - Window matters: a 24h view captures recent activity but misses long-standing relationships. Default to 30d, expand to `all` for full history.
42
+ - For tokens with high churn (memecoins), top counterparties will be dominated by Uniswap routers; filter mentally for non-DEX rows for human counterparties.
43
+
44
+ ## Pairs well with
45
+
46
+ - `vike labels <addr>` — drill into any interesting counterparty's full label cascade
47
+ - `vike wallet summary <addr>` — total activity of any counterparty
48
+ - `vike wallet balances <addr>` — see what tokens that counterparty currently holds
@@ -0,0 +1,49 @@
1
+ ---
2
+ name: vike-wallet-discover
3
+ description: Rank wallets by volume / inflow / outflow / pnl / net_flow / tx_count across a time window. Use when the user asks "top wallets on X" / "best traders by PnL" / "biggest buyers last 7d".
4
+ allowed-tools: Bash(vike:*)
5
+ ---
6
+
7
+ # vike-wallet-discover
8
+
9
+ ## Command
10
+
11
+ ```bash
12
+ vike wallet discover
13
+ [--window 24h|7d|30d|90d|all]
14
+ [--sort volume|inflow|outflow|net_flow|tx_count|pnl]
15
+ [--order asc|desc]
16
+ [--chain ethereum|bsc]
17
+ [--size N] # max 20
18
+ [--json]
19
+ ```
20
+
21
+ ## When to use
22
+
23
+ | Question | Flags |
24
+ |---|---|
25
+ | "Top whales by volume this week" | `--sort volume --window 7d` |
26
+ | "Biggest accumulators last 30d" | `--sort net_flow --window 30d --order desc` |
27
+ | "Top realized-PnL traders all-time" | `--sort pnl --window all` |
28
+ | "Wallets dumping the most this 24h" | `--sort outflow --window 24h` |
29
+ | "Most active traders last 7d" | `--sort tx_count --window 7d` |
30
+
31
+ ## Output columns
32
+
33
+ `address`, `label` (when known), `volume_usd`, `inflow_usd`, `outflow_usd`, `net_flow_usd`, `tx_count`, `realized_pnl_usd`.
34
+
35
+ ## Reading tips
36
+
37
+ - Labeled wallets first — `label = "binance_cold_t1"` means it's a CEX hot/cold wallet, not a discretionary trader.
38
+ - Always filter mentally for unlabeled wallets first if the user wants "real traders" (not exchanges).
39
+ - For PnL sort, realized PnL only — open positions are NOT counted. Use `vike perp top-traders` for HL perps PnL (which includes unrealized).
40
+
41
+ ## Anti-patterns
42
+
43
+ - `--size > 20` is silently clamped to 20. Run a second call with offset (not currently supported — limit applies hard) if you need more.
44
+ - `--sort pnl` is only meaningful on `--window 30d` or longer; 24h PnL is noise.
45
+
46
+ ## Pairs well with
47
+
48
+ - `vike wallet summary <address>` to drill into any interesting row
49
+ - `vike-smart-money-discovery` for a composite multi-signal read
@@ -0,0 +1,41 @@
1
+ ---
2
+ name: vike-wallet-ens
3
+ description: Reverse ENS lookup — turn a 0x address into a human-readable name like `vitalik.eth`. Cheap, single API call. Use whenever you have an address and want to display a friendlier identifier alongside it.
4
+ allowed-tools: Bash(vike:*)
5
+ ---
6
+
7
+ # vike-wallet-ens
8
+
9
+ ## Command
10
+
11
+ ```bash
12
+ vike wallet ens <address> [--json]
13
+ ```
14
+
15
+ ## Example
16
+
17
+ ```bash
18
+ vike wallet ens 0xd8da6bf26964af9d7eed9e03e53415d37aa96045
19
+ # → { "address": "0xd8da...", "ens": "vitalik.eth" }
20
+
21
+ vike wallet ens 0x28c6c06298d514db089934071355e5743bf21d60
22
+ # → { "address": "0x28c6...", "ens": null } (most exchange wallets have no ENS)
23
+ ```
24
+
25
+ ## When to use
26
+
27
+ - Right after any tool returns a wallet address — show ENS as a secondary label
28
+ - When the user pastes an address and asks "who is this"
29
+ - When you're about to display a leaderboard with addresses — enrich each row with ENS if available
30
+
31
+ ## Anti-patterns
32
+
33
+ - Don't replace the address with the ENS name in tool output — show BOTH. The address is canonical; ENS is a display layer that can change ownership.
34
+ - Don't ENS-lookup hundreds of addresses in a leaderboard at once — credits add up. Usually ENS-lookup only the top 5-10 rows the user is likely to act on.
35
+ - A `null` response is normal, not an error. Most wallets don't have ENS.
36
+
37
+ ## Pairs well with
38
+
39
+ - `vike labels <addr>` — combine ENS + labels for the fullest identity view
40
+ - `vike wallet summary <addr>` — ENS + activity profile
41
+ - `vike funds` — pair with ENS lookups on the top entries for richer display
@@ -0,0 +1,65 @@
1
+ ---
2
+ name: vike-wallet-label-provenance
3
+ description: Multi-source label cascade for any ETH wallet — shows what every upstream label provider AND our in-house heuristic classifier says about an address, with consensus entity/type and per-source attribution. Use when the user asks "who is this address" / "what do you know about this wallet" / "is this address labeled".
4
+ allowed-tools: Bash(vike:*)
5
+ ---
6
+
7
+ # vike-wallet-label-provenance
8
+
9
+ The headline differentiator: we don't just show a label, we show **which sources agree** and how confident the consensus is.
10
+
11
+ ## Command
12
+
13
+ ```bash
14
+ vike labels <address> [--json]
15
+ ```
16
+
17
+ ## Example
18
+
19
+ ```bash
20
+ vike labels 0x28C6c06298d514Db089934071355E5743bf21d60 # Binance Hot Wallet 14
21
+ ```
22
+
23
+ ## Output shape
24
+
25
+ ```json
26
+ {
27
+ "address": "0x...",
28
+ "found": true,
29
+ "consensus": {
30
+ "entity": "Binance",
31
+ "wallet_type": "cex",
32
+ "cex_product": "spot",
33
+ "user_subtype": "",
34
+ "risk_flag": "",
35
+ "confidence": "High"
36
+ },
37
+ "sources": [
38
+ { "source": "provider_a", "label": "Binance 14", "entity": "Binance", "category": "CEX" },
39
+ { "source": "provider_b", "label": "Binance Hot Wallet" },
40
+ { "source": "provider_c", "label": "Binance: Hot Wallet 14" },
41
+ { "source": "provider_d", "label": "Binance" },
42
+ { "source": "heuristic:cold_t1", "confidence": 0.94 }
43
+ ],
44
+ "source_count": 5
45
+ }
46
+ ```
47
+
48
+ ## Reading
49
+
50
+ - **5+ sources agree** → very high confidence; ship the label without caveats
51
+ - **2-3 sources agree on same entity** → high confidence
52
+ - **Only 1 source + heuristic** → moderate; mention "labeled by X"
53
+ - **0 sources, only heuristic** → low; mention "predicted by heuristic"
54
+ - **0 sources, no heuristic** → genuinely unknown wallet (most retail addresses)
55
+
56
+ ## Anti-patterns
57
+
58
+ - Don't quote any single provider's category field as "the category" — provider taxonomies vary; the `consensus.wallet_type` is the unified field.
59
+ - A `risk_flag` of `scam` / `sanctioned` / `phishing` is high-stakes — always mention it explicitly, never bury it.
60
+
61
+ ## Pairs well with
62
+
63
+ - `vike wallet summary <addr>` — for the flow metrics of the labeled wallet
64
+ - `vike funds` — find all known fund wallets and their recent flows
65
+ - `vike defi <addr>` — see what protocols this entity is using
@@ -0,0 +1,58 @@
1
+ ---
2
+ name: vike-wallet-pnl-history
3
+ description: Daily net-flow series for a wallet over the last N days — a directional proxy for daily PnL. Use when the user asks "how has wallet X done over time" / "show me daily flows for Y" / "is this wallet trending up or down".
4
+ allowed-tools: Bash(vike:*)
5
+ ---
6
+
7
+ # vike-wallet-pnl-history
8
+
9
+ ## Command
10
+
11
+ ```bash
12
+ vike wallet pnl-history <address>
13
+ [--chain ethereum|bsc|base]
14
+ [--days N] (max 365, default 30)
15
+ [--json]
16
+ ```
17
+
18
+ ## Output
19
+
20
+ ```json
21
+ {
22
+ "address": "0x...",
23
+ "chain": "ethereum",
24
+ "days": 30,
25
+ "total_net_flow_usd": 12345.67,
26
+ "series": [
27
+ { "date": "2026-04-25", "net_flow_usd": +120.50, "gross_volume_usd": 1500, "tx_count": 4, "unique_tokens": 2, "cumulative_net_flow_usd": 120.50 },
28
+ { "date": "2026-04-26", "net_flow_usd": -50.30, "gross_volume_usd": 800, "tx_count": 2, "unique_tokens": 1, "cumulative_net_flow_usd": 70.20 },
29
+ ...
30
+ ]
31
+ }
32
+ ```
33
+
34
+ ## Important caveat
35
+
36
+ **This is NET INFLOW USD, not realized PnL.** True realized PnL requires WAC (weighted-average cost) accounting per token, which we don't do in this fast tool. A wallet that bought $10K and sold $10K of the same token at the SAME price would show $0 here — but if they sold higher, true PnL would be positive (and this tool wouldn't reflect that). Use this for direction + trend, not for tax-grade PnL.
37
+
38
+ For lifetime realized PnL: `vike wallet discover --sort pnl --window all`.
39
+
40
+ ## Reading
41
+
42
+ - `cumulative_net_flow_usd` ramping up = wallet has been accumulating $
43
+ - Big positive day with high `tx_count` = single large buy (deposit / acquisition / token purchase)
44
+ - Big negative day with high `tx_count` = sell-down or large transfer out
45
+ - `unique_tokens > 5` on a single day = farmer / spray-and-pray / airdrop claim
46
+ - All `net_flow_usd` near zero with high `gross_volume_usd` = market-maker / churn
47
+
48
+ ## Anti-patterns
49
+
50
+ - Don't report this as "realized PnL" — it isn't.
51
+ - Big single-day spikes can be legitimate (token unlock, ICO buy, airdrop claim) — don't auto-flag without context
52
+ - A `null` or empty series means the wallet has no activity on the requested chain in the window — surface that honestly
53
+
54
+ ## Pairs well with
55
+
56
+ - `vike wallet summary <addr>` for the aggregate context
57
+ - `vike wallet counterparties <addr>` to see WHO they traded with
58
+ - `vike token chart <addr>` to correlate flow spikes with price action
@@ -0,0 +1,61 @@
1
+ ---
2
+ name: vike-wallet-portfolio
3
+ description: Composite wallet portfolio view — combines ENS + labels + ERC-20 balances + DeFi positions + recent net flow in one report. Use when the user gives a wallet address and asks for a complete picture ("full report on X" / "everything about this wallet" / "wallet snapshot").
4
+ allowed-tools: Bash(vike:*)
5
+ ---
6
+
7
+ # vike-wallet-portfolio
8
+
9
+ Multi-call playbook for a complete wallet snapshot.
10
+
11
+ ## Workflow (run in parallel where possible)
12
+
13
+ ```bash
14
+ ADDR=0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045
15
+
16
+ vike wallet ens $ADDR --json & # cheap, ~1 credit
17
+ vike labels $ADDR --json & # cheap, ~1 credit
18
+ vike wallet summary $ADDR --json & # cheap, ~2 credits
19
+ vike wallet balances $ADDR --json & # multi-chain, ~3 credits
20
+ vike defi $ADDR --json & # multi-chain, ~3 credits
21
+ vike wallet pnl-history $ADDR --days 30 --json &
22
+ wait
23
+ ```
24
+
25
+ ## Report template
26
+
27
+ > **`<ENS or 0x...>` — wallet snapshot**
28
+ > - **Identity:** `<ens.eth>` · `<entity (from labels)>` · `<wallet_type>` (confidence: `<H/M/L>`)
29
+ > - **Total ERC-20:** `$X` across `<chains>`. Top 3 by USD: `<symbol1 $X>`, `<symbol2 $Y>`, ...
30
+ > - **DeFi positions:** `$Y` across `<protocols count>` protocols. Top: `<Aave V3 $X>`, ...
31
+ > - **30d net flow:** `+/-$Z` (cumulative)
32
+ > - **Activity:** `<tx_count>` txns last 30d, `<unique_tokens>` unique tokens traded
33
+ > - **Vibe check:** `<saver / trader / farmer / institutional / inactive / fresh>`
34
+
35
+ ## Vibe-check rubric
36
+
37
+ | Pattern | Label |
38
+ |---|---|
39
+ | `wallet_type = "cex"` or `"market_maker"` | **Institutional** |
40
+ | 80%+ in stablecoins, low tx count | **Saver / dry powder** |
41
+ | 50+ unique tokens 30d, low avg holding USD | **Airdrop farmer** |
42
+ | High tx count, balanced sent/received | **Active trader** |
43
+ | Big DeFi positions, low ERC-20 balance | **DeFi native** |
44
+ | Big ERC-20 holdings, no DeFi | **HODLer** |
45
+ | Zero activity 30d | **Inactive** |
46
+ | First-seen < 30d ago | **Fresh wallet** |
47
+
48
+ ## Cost
49
+
50
+ ~6 parallel calls, ~12 credits total. Use sparingly — only when the user wants the FULL picture, not a single dimension.
51
+
52
+ ## When to use a focused skill instead
53
+
54
+ - "Just labels for X" → `vike-wallet-label-provenance`
55
+ - "What does X hold" → `vike-wallet-balances`
56
+ - "Top counterparties of X" → `vike-wallet-counterparties`
57
+ - "DeFi positions of X" → `vike-defi-positions`
58
+
59
+ ## Pairs well with
60
+
61
+ - `vike-smart-money-discovery` to put the wallet in context vs the broader top-PnL cohort