@vike-io/cli 0.13.1 → 0.15.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 (59) hide show
  1. package/CHANGELOG.md +28 -0
  2. package/README.md +33 -19
  3. package/package.json +4 -4
  4. package/skills/vike/SKILL.md +144 -192
  5. package/skills/vike-alerts-setup/SKILL.md +37 -6
  6. package/skills/vike-alerts-webhook/SKILL.md +15 -8
  7. package/skills/vike-candles/SKILL.md +9 -2
  8. package/skills/vike-core/SKILL.md +16 -12
  9. package/skills/vike-hl-position-match/SKILL.md +8 -8
  10. package/skills/vike-hl-top-traders/SKILL.md +46 -11
  11. package/skills/vike-perp-funding/SKILL.md +82 -0
  12. package/skills/vike-perp-overview/SKILL.md +69 -0
  13. package/skills/vike-polymarket-market-detail/SKILL.md +2 -1
  14. package/skills/vike-polymarket-markets/SKILL.md +12 -7
  15. package/skills/vike-polymarket-smart-money/SKILL.md +38 -13
  16. package/skills/vike-polymarket-trader/SKILL.md +23 -20
  17. package/skills/vike-smart-money-discovery/SKILL.md +26 -32
  18. package/skills/vike-stream/SKILL.md +98 -0
  19. package/skills/vike-token-holders/SKILL.md +2 -1
  20. package/skills/vike-token-research/SKILL.md +22 -14
  21. package/skills/vike-token-screener/SKILL.md +35 -28
  22. package/skills/vike-token-transfers/SKILL.md +21 -11
  23. package/skills/vike-wallet-balances/SKILL.md +19 -13
  24. package/skills/vike-wallet-batch/SKILL.md +18 -14
  25. package/skills/vike-wallet-compare/SKILL.md +2 -0
  26. package/skills/vike-wallet-counterparties/SKILL.md +5 -1
  27. package/skills/vike-wallet-discover/SKILL.md +17 -10
  28. package/skills/vike-wallet-ens/SKILL.md +8 -4
  29. package/skills/vike-wallet-label-provenance/SKILL.md +25 -16
  30. package/skills/vike-wallet-pnl-history/SKILL.md +4 -1
  31. package/skills/vike-wallet-portfolio/SKILL.md +23 -21
  32. package/skills/vike-wallet-summary/SKILL.md +22 -9
  33. package/skills/vike-wallet-trace/SKILL.md +15 -11
  34. package/skills/vike-wallet-transactions/SKILL.md +3 -1
  35. package/skills.sh.json +17 -15
  36. package/src/auth.js +1 -1
  37. package/src/commands/alerts.js +85 -15
  38. package/src/commands/call.js +32 -0
  39. package/src/commands/candles.js +11 -15
  40. package/src/commands/doctor.js +4 -4
  41. package/src/commands/hl.js +274 -0
  42. package/src/commands/init.js +1 -1
  43. package/src/commands/labels.js +1 -1
  44. package/src/commands/perp.js +10 -9
  45. package/src/commands/polymarket.js +105 -5
  46. package/src/commands/search.js +10 -0
  47. package/src/commands/stream.js +308 -0
  48. package/src/commands/token.js +2 -0
  49. package/src/commands/tool-command.js +27 -0
  50. package/src/commands/wallet.js +24 -3
  51. package/src/index.js +10 -1
  52. package/src/mcp-client.js +37 -16
  53. package/skills/vike-cross-venue-perps/SKILL.md +0 -52
  54. package/skills/vike-hl-trader-profile/SKILL.md +0 -65
  55. package/skills/vike-perp-funding-arb/SKILL.md +0 -53
  56. package/skills/vike-perp-screener/SKILL.md +0 -48
  57. package/skills/vike-perp-spread-arb/SKILL.md +0 -38
  58. package/skills/vike-polymarket-screener/SKILL.md +0 -59
  59. package/skills/vike-router/SKILL.md +0 -54
package/src/mcp-client.js CHANGED
@@ -1,33 +1,49 @@
1
1
  import { requireApiKey, getEndpoint } from './auth.js';
2
+ import { readPackageVersion } from './util.js';
3
+
4
+ // The installed package's own version: npm_package_version is set only under `npm run`.
5
+ export const USER_AGENT = `vike-cli/${readPackageVersion()}`;
2
6
 
3
7
  let _id = 0;
4
8
  function nextId() { return ++_id; }
5
9
 
10
+ // A fetch error can quote a header value (an invalid one, e.g. a key pasted with a newline): never echo the key.
11
+ export function redact(message, apiKey) {
12
+ return apiKey ? String(message).split(apiKey).join('vk_***') : String(message);
13
+ }
14
+
15
+ // fetch, with any error message cleared of the key.
16
+ async function post(endpoint, apiKey, init) {
17
+ try {
18
+ return await fetch(endpoint, init);
19
+ } catch (err) {
20
+ throw Object.assign(new Error(redact(err.message, apiKey)), { name: err.name });
21
+ }
22
+ }
23
+
6
24
  export async function callTool(toolName, args = {}, opts = {}) {
7
25
  const apiKey = opts.apiKey ?? requireApiKey();
8
26
  const endpoint = opts.endpoint ?? getEndpoint();
9
27
  const timeoutMs = opts.timeoutMs ?? 60_000;
10
28
 
11
- const body = {
12
- jsonrpc: '2.0',
13
- id: nextId(),
14
- method: 'tools/call',
15
- params: { name: toolName, arguments: args },
16
- };
29
+ // argsText: the caller's own JSON object text, sent byte for byte (a 77-digit number is not rounded).
30
+ const envelope = JSON.stringify({ jsonrpc: '2.0', id: nextId(), method: 'tools/call' });
31
+ const body = `${envelope.slice(0, -1)},"params":{"name":${JSON.stringify(toolName)},`
32
+ + `"arguments":${opts.argsText ?? JSON.stringify(args)}}}`;
17
33
 
18
34
  const ctrl = new AbortController();
19
35
  const t = setTimeout(() => ctrl.abort(), timeoutMs);
20
36
 
21
37
  let resp;
22
38
  try {
23
- resp = await fetch(endpoint, {
39
+ resp = await post(endpoint, apiKey, {
24
40
  method: 'POST',
25
41
  headers: {
26
42
  'Content-Type': 'application/json',
27
43
  'X-API-KEY': apiKey,
28
- 'User-Agent': `vike-cli/${process.env.npm_package_version ?? 'dev'}`,
44
+ 'User-Agent': USER_AGENT,
29
45
  },
30
- body: JSON.stringify(body),
46
+ body,
31
47
  signal: ctrl.signal,
32
48
  });
33
49
  } catch (err) {
@@ -52,10 +68,15 @@ export async function callTool(toolName, args = {}, opts = {}) {
52
68
 
53
69
  // tools/call returns { content: [{type:'text', text: JSON}], isError }
54
70
  const content = json.result?.content?.[0]?.text;
55
- if (!content) return json.result;
56
- try { return JSON.parse(content); } catch {
57
- return content;
71
+ let parsed = content;
72
+ try { parsed = JSON.parse(content); } catch { /* plain text */ }
73
+ if (json.result?.isError) {
74
+ // An in-band failure ({"error": ...}) is an error in every output mode, so the exit code is 1.
75
+ throw new Error(String(parsed?.error ?? parsed?.[0]?.error ?? content ?? 'tool error'));
58
76
  }
77
+ if (!content) return json.result;
78
+ // raw: the tool's text as sent, so integers above 2^53 survive.
79
+ return opts.raw ? content : parsed;
59
80
  }
60
81
 
61
82
  export async function listTools(opts = {}) {
@@ -67,9 +88,9 @@ export async function listTools(opts = {}) {
67
88
  method: 'tools/list',
68
89
  params: {},
69
90
  };
70
- const resp = await fetch(endpoint, {
91
+ const resp = await post(endpoint, apiKey, {
71
92
  method: 'POST',
72
- headers: { 'Content-Type': 'application/json', 'X-API-KEY': apiKey },
93
+ headers: { 'Content-Type': 'application/json', 'X-API-KEY': apiKey, 'User-Agent': USER_AGENT },
73
94
  body: JSON.stringify(body),
74
95
  });
75
96
  const json = await resp.json();
@@ -82,9 +103,9 @@ export async function ping(opts = {}) {
82
103
  // JSON-RPC "Invalid or missing API key" error (soon HTTP 401), so fail early.
83
104
  const endpoint = opts.endpoint ?? getEndpoint();
84
105
  const apiKey = opts.apiKey ?? requireApiKey();
85
- const resp = await fetch(endpoint, {
106
+ const resp = await post(endpoint, apiKey, {
86
107
  method: 'POST',
87
- headers: { 'Content-Type': 'application/json', 'X-API-KEY': apiKey },
108
+ headers: { 'Content-Type': 'application/json', 'X-API-KEY': apiKey, 'User-Agent': USER_AGENT },
88
109
  body: JSON.stringify({
89
110
  jsonrpc: '2.0', id: nextId(), method: 'initialize', params: {},
90
111
  }),
@@ -1,52 +0,0 @@
1
- ---
2
- name: vike-cross-venue-perps
3
- description: Compare a single perp symbol across all venues — funding, price, spreads. Use when the user asks "where to trade X" / "compare BTC perp across exchanges" / "best venue for ETH long".
4
- allowed-tools: Bash(vike-data:*)
5
- ---
6
-
7
- # vike-cross-venue-perps
8
-
9
- Per-symbol cross-venue analysis.
10
-
11
- ## Steps
12
-
13
- 1. Per-venue funding
14
- ```bash
15
- vike-data perp funding --symbol <SYM> --json
16
- ```
17
- 2. Per-venue spread
18
- ```bash
19
- vike-data perp spreads --symbol <SYM> --json
20
- ```
21
-
22
- ## Report template
23
-
24
- > **`<SYM>` perp — venue comparison**
25
- >
26
- > | Venue | Mark price | Funding (daily %) | Bid-ask edge |
27
- > |---|---|---|---|
28
- > | Binance | ... | ... | ... |
29
- > | Bybit | ... | ... | ... |
30
- > | OKX | ... | ... | ... |
31
- > | Aster | ... | ... | ... |
32
- > | Hyperliquid | ... | ... | ... |
33
- >
34
- > **Best venue to long**: `<X>` (lowest funding paid)
35
- > **Best venue to short**: `<Y>` (highest funding received)
36
- > **Arb edge**: long-short spread = X%/day
37
-
38
- ## Reading
39
-
40
- - Negative funding on venue → shorts pay longs (longs receive). Good place to be long.
41
- - Positive funding → longs pay shorts. Good place to be short.
42
- - A wide divergence (>0.5%/day) between two venues with similar liquidity = arb edge worth quantifying.
43
-
44
- ## Anti-patterns
45
-
46
- - Don't blindly pick the venue with lowest funding without checking liquidity — Hyperliquid funding looks great on small alts but the book might be thin.
47
- - Funding flips frequently; the read here is "as of now", not a forecast.
48
-
49
- ## Pairs well with
50
-
51
- - `vike-perp-funding-arb` for the full opportunity list across all symbols
52
- - `vike-perp-screener` for market overview
@@ -1,65 +0,0 @@
1
- ---
2
- name: vike-hl-trader-profile
3
- description: Profile a single Hyperliquid perp trader — leaderboard rank, recent performance, on-chain identity. Use when the user gives an HL wallet address and asks "is this trader any good" / "profile this address" / "what's this wallet's HL track record".
4
- allowed-tools: Bash(vike-data:*)
5
- ---
6
-
7
- # vike-hl-trader-profile
8
-
9
- Composite profile combining ranking, identity, and trading metrics.
10
-
11
- ## Steps
12
-
13
- ### 1. On-chain identity + balance
14
-
15
- ```bash
16
- vike-data wallet summary <address> --json
17
- ```
18
-
19
- Captures: total volume, inflow/outflow, tx count, unique tokens across ETH/BSC/Base. Tells you if the address is HL-only or also active on spot chains.
20
-
21
- ### 2. HL leaderboard rank
22
-
23
- ```bash
24
- vike-data perp top-traders --window 30d --sort pnl --size 20 --json
25
- vike-data perp top-traders --window 7d --sort pnl --size 20 --json
26
- ```
27
-
28
- Search the returned rows for the address. Report rank if found, "outside top 20" otherwise.
29
-
30
- ### 3. ROI + win rate context
31
-
32
- ```bash
33
- vike-data perp top-traders --sort roi --window 30d --min-trades 10 --size 20 --json
34
- vike-data perp top-traders --sort win_rate --window 30d --min-trades 10 --size 20 --json
35
- ```
36
-
37
- Same address-search; report rank or "not in top 20".
38
-
39
- ## Verdict template
40
-
41
- > **`<address>` — Hyperliquid trader profile (30d)**
42
- > - PnL: `$X` (rank #Y of top 20) or (outside top 20)
43
- > - ROI: `Z%` (rank ...) or (outside top 20)
44
- > - Win rate: `W%` over N trades
45
- > - Spot activity: `<volume_usd>` total across ETH/BSC/Base, `<tokens>` unique
46
- > - Classification: **whale / sharp / volume / one-shot / unverified**
47
-
48
- ## Classification heuristics
49
-
50
- | Pattern | Label |
51
- |---|---|
52
- | Top-20 PnL + high ROI + many trades + low DD | **Sharp** |
53
- | Top-20 PnL + low ROI + huge volume | **Whale** (size matters more than skill) |
54
- | Outside leaderboard + high win rate on <10 trades | **Unverified — too few data points** |
55
- | One big trade dominates PnL | **One-shot** (lucky directional bet) |
56
- | Wallet age < 30d | **Too new — re-check in a month** |
57
-
58
- ## Anti-patterns
59
-
60
- - Don't claim "this is one of the best HL traders" from win rate alone — need volume + trade count for context.
61
- - A wallet outside the top 20 isn't bad — only ~0.01% of HL wallets make top 20 in any window.
62
-
63
- ## Pairs well with
64
-
65
- - `vike-hl-top-traders` for the leaderboard context
@@ -1,53 +0,0 @@
1
- ---
2
- name: vike-perp-funding-arb
3
- description: Find cross-venue funding-rate arbitrage opportunities on perpetual futures. Use when the user asks "any funding arb today" / "where to long-short X for funding" / "highest funding rates".
4
- allowed-tools: Bash(vike-data:*)
5
- ---
6
-
7
- # vike-perp-funding-arb
8
-
9
- Cross-venue funding rates across Binance, Bybit, OKX, Aster, and Hyperliquid.
10
-
11
- ## Commands
12
-
13
- ### A. All arb opportunities (default)
14
-
15
- ```bash
16
- vike-data perp funding --json
17
- ```
18
-
19
- Returns pre-ranked rows where the spread between the highest-funding venue and the lowest is ≥ 0.3% (daily normalized). Each row already includes:
20
- - `symbol`
21
- - `long_exchange`, `long_daily_pct` (pay funding here)
22
- - `short_exchange`, `short_daily_pct` (receive funding here)
23
- - `spread_daily_pct`
24
-
25
- **These are pre-ranked — just cite the top N rows directly. No further sorting needed.**
26
-
27
- ### B. Single symbol per-venue rates
28
-
29
- ```bash
30
- vike-data perp funding --symbol BTC --json
31
- ```
32
-
33
- Returns one row per venue: `{exchange, funding_rate_daily_pct, mark_price, ...}`.
34
-
35
- ## Reading the arb
36
-
37
- ```
38
- spread_daily_pct = 0.42% → ~$420/day per $100k notional, gross
39
- (before fees, slippage, transfer costs)
40
- ```
41
-
42
- A funding arb at 0.4–1% daily is real. > 3% daily on a liquid pair is almost always a halted-trading / venue-mispricing artifact — verify with `vike-data perp spreads --symbol <sym>` to make sure the underlying spot/perp prices are sane.
43
-
44
- ## Anti-patterns
45
-
46
- - Don't quote a daily funding rate as "annualized" without converting (× 365). Some users expect annual; some daily; be explicit.
47
- - Funding flips every 1–8 hours depending on the venue. The number you see is the current-window rate, not a forecast — don't extrapolate without saying so.
48
- - Spread < 0.3% daily is filtered out at the source (not enough to cover fees + execution). Don't try to lower the filter; below that the trade doesn't work.
49
-
50
- ## Pairs well with
51
-
52
- - `vike-perp-spread-arb` to confirm spot/perp basis is sane
53
- - `vike-cross-venue-perps` for the full per-venue picture on one symbol
@@ -1,48 +0,0 @@
1
- ---
2
- name: vike-perp-screener
3
- description: Snapshot the current state of perpetual-futures markets — funding rates, cross-venue spreads, and HL leaderboard in one read. Use when the user asks "what's happening in perps today" / "perp market overview".
4
- allowed-tools: Bash(vike-data:*)
5
- ---
6
-
7
- # vike-perp-screener
8
-
9
- One-shot market overview for perpetuals.
10
-
11
- ## Workflow (3 parallel calls)
12
-
13
- ```bash
14
- vike-data perp funding --json & # top funding-arb opportunities
15
- vike-data perp spreads --json & # top spot-perp price spreads
16
- vike-data perp top-traders --window 1d --sort pnl --size 10 --json &
17
- wait
18
- ```
19
-
20
- ## Report template
21
-
22
- > **Perp market snapshot (last 24h)**
23
- >
24
- > **Top funding arbs (>0.3% daily spread)**
25
- > - `BTC`: long Bybit @ -0.5%/d, short Hyperliquid @ +0.8%/d → spread 1.3%/d
26
- > - ...
27
- >
28
- > **Top cross-venue price spreads (>0.5%)**
29
- > - `SOL`: buy Aster @ 138.20, sell OKX @ 139.05 → 0.61%
30
- > - ...
31
- >
32
- > **Top HL traders last 24h (by PnL)**
33
- > - `0xabc...` +$X, rank #1 — ...
34
- > - ...
35
-
36
- ## When to skip the 3-call screener
37
-
38
- - User asked specifically about one symbol → use `vike-cross-venue-perps` instead.
39
- - User asked about a single trader → use `vike-hl-trader-profile`.
40
-
41
- ## Anti-patterns
42
-
43
- - Don't quote funding rates in 8h chunks when the underlying API returns daily — be consistent (daily %).
44
- - "Top by PnL last 24h" is noise for swing-trader narratives; only useful for "who's hot right now". Use 7d or 30d for skill claims.
45
-
46
- ## Pairs well with
47
-
48
- - `vike-perp-funding-arb` for the funding-only deep dive
@@ -1,38 +0,0 @@
1
- ---
2
- name: vike-perp-spread-arb
3
- description: Cross-venue perp price spread (buy on venue A, sell on venue B). Use when the user asks "any perp arb today" / "price differences across exchanges" / "where's X cheapest".
4
- allowed-tools: Bash(vike-data:*)
5
- ---
6
-
7
- # vike-perp-spread-arb
8
-
9
- ## Command
10
-
11
- ```bash
12
- vike-data perp spreads --json # full matrix, all symbols with spread >= 0.5%
13
- vike-data perp spreads --symbol BTC --json # one specific symbol
14
- ```
15
-
16
- ## Output
17
-
18
- Pre-ranked rows: `symbol`, `buy_exchange`, `buy_price`, `sell_exchange`, `sell_price`, `spread_pct`.
19
-
20
- Outliers (> 400 bps off the cross-venue median) are filtered upstream — typically these are unit-mismatch listings like `1000SHIB` vs `SHIB`, or stale prices.
21
-
22
- ## Reading
23
-
24
- `spread_pct = 0.7%` on a liquid pair = real arb opportunity, **before fees + transfer time**. Realistic net edge:
25
- - 30-60 bps after taker fees
26
- - Cross-venue settlement adds latency — fast inventory rotation matters more than per-trade size
27
- - Always check `vike-perp-funding-arb` for the same symbol — funding can amplify or kill the trade economics
28
-
29
- ## Anti-patterns
30
-
31
- - Quoting a spread as "free money" without mentioning fees / transfer time
32
- - Trading 1000-token-suffix pairs without normalizing — `1000PEPE` on Binance ≠ `PEPE` on Bybit; if the spread looks insane it's probably this
33
- - Treating the buy/sell exchanges as static — the spreads update minute-by-minute; the row you see is current snapshot, not forecast
34
-
35
- ## Pairs well with
36
-
37
- - `vike-perp-funding-arb` (combine for the full carry picture)
38
- - `vike-cross-venue-perps` for one-symbol depth
@@ -1,59 +0,0 @@
1
- ---
2
- name: vike-polymarket-screener
3
- description: Polymarket market screener combining trending markets + smart-money flows + mispricings in one pass. Use when the user asks "give me a Polymarket overview" / "what's happening in prediction markets today".
4
- allowed-tools: Bash(vike-data:*)
5
- ---
6
-
7
- # vike-polymarket-screener
8
-
9
- Composite playbook — 3 parallel calls for a complete prediction-market snapshot.
10
-
11
- ## Workflow
12
-
13
- ```bash
14
- vike-data polymarket markets --category all --limit 10 --json &
15
- vike-data polymarket smart-money --mode flows --hours 24 --json &
16
- vike-data polymarket smart-money --mode mispricings --hours 24 --json &
17
- wait
18
- ```
19
-
20
- ## Report template
21
-
22
- > **Polymarket snapshot (last 24h)**
23
- >
24
- > **Top 5 trending markets by volume**
25
- > - `<question>` (`<category>`) — Yes mid `<m>`, 24h vol `$X` — ends `<date>`
26
- > - ...
27
- >
28
- > **Top 5 smart-money inflows**
29
- > - `<title>` (`<slug>`) — `<smart_wallets>` cohort wallets, net inflow `$X`, latest Yes mid `<m>`
30
- > - ...
31
- >
32
- > **Top 5 mispricings**
33
- > - `<title>` (`<side>`) — cohort avg buy `<p>`, current mid `<m>`, delta `<d>%`, cohort buy `$X`
34
- > - ...
35
-
36
- ## When to use the focused skill instead
37
-
38
- | User asked | Use |
39
- |---|---|
40
- | "What's hot on Polymarket" (just lists) | `vike-polymarket-markets` only |
41
- | "Profile this PM wallet" | `vike-polymarket-trader` |
42
- | "Deep-dive market X" | `vike-polymarket-market-detail` |
43
- | "Smart-money signals" | `vike-polymarket-smart-money` |
44
- | "Full overview" or "give me everything" | This skill |
45
-
46
- ## Cost note
47
-
48
- 3 parallel tool calls = ~5 credits total.
49
-
50
- ## Anti-patterns
51
-
52
- - Don't report all three sections if the user asked a narrower question. Trim aggressively.
53
- - Trending markets sorted by volume include resolved markets that closed earlier today — verify `end_date` if you're recommending a position.
54
- - `mispricings` mode requires `--hours` to be ≥ 6 for stable signal; below that, intraday noise dominates.
55
-
56
- ## Pairs well with
57
-
58
- - `vike-polymarket-trader` — drill into any interesting wallet
59
- - `vike-polymarket-market-detail` — drill into any flagged market
@@ -1,54 +0,0 @@
1
- ---
2
- name: vike-router
3
- description: Entry point — decide which vike skill to use. Read this first when the user asks anything about on-chain analytics, perps, prediction markets, wallets, or tokens.
4
- allowed-tools: Bash(vike-data:*)
5
- ---
6
-
7
- # vike-router
8
-
9
- Route the user's question to the right `vike-*` skill.
10
-
11
- ## Routing table
12
-
13
- | User asks about ... | Use skill |
14
- |---|---|
15
- | Token by symbol/name → address | `vike-token-search` |
16
- | Token holders / who bought / sold | `vike-token-transfers` |
17
- | Token price chart / DEX OHLCV by contract address | `vike-token-research` |
18
- | Generic token research (everything) | `vike-token-research` |
19
- | Single wallet's metrics | `vike-wallet-summary` |
20
- | Top wallets / leaderboard | `vike-wallet-discover` |
21
- | "Find smart money on X" | `vike-smart-money-discovery` |
22
- | Perp funding rates / arb opportunities | `vike-perp-funding-arb` |
23
- | Cross-venue perp price spreads | `vike-perp-spread-arb` |
24
- | Top Hyperliquid perp traders | `vike-hl-top-traders` |
25
- | Match an HL share card → wallet (reverse-lookup) | `vike-hl-position-match` |
26
- | Profile a single HL perp trader | `vike-hl-trader-profile` |
27
- | HL market overview (vol/OI/funding) | `vike-perp-screener` |
28
- | Compare a symbol across all perp venues | `vike-cross-venue-perps` |
29
- | Historical candles (Hyperliquid perp/spot, Polymarket outcome token) | `vike-candles` |
30
- | Create / list / edit alerts | `vike-alerts-setup` |
31
- | Auth / setup / "I just installed it" | `vike-core` |
32
-
33
- ## Quick command map
34
-
35
- ```
36
- vike-data token search | transfers | screener | holders
37
- vike-data wallet summary | discover
38
- vike-data perp funding | spreads | top-traders
39
- vike-data candles hl <symbol> | polymarket <token_id>
40
- vike-data alerts list | channels | create | edit | delete
41
- vike-data init | doctor | schema | whoami | login | logout
42
- ```
43
-
44
- ## Bias
45
-
46
- - If unsure between two skills, prefer the **task skill** (specific workflow) over the **per-tool skill** (single command).
47
- - If the user wants raw data, use the per-tool skill with `--json`.
48
- - If the user is exploring, lead with `vike-data schema --pretty` to show what's available.
49
-
50
- ## Cost note
51
-
52
- Cheap (free-tier safe): `token search`, `wallet summary`, `alerts list`, `schema`, `doctor`, `whoami`.
53
-
54
- Heavier (count against quota): `wallet discover` (full pages), `perp top-traders` (large filters), `token transfers` (long periods).