Help us improve
Share bugs, ideas, or general feedback.
From cryptozavr
Use when the user brings a declarative trading strategy (StrategySpec payload, a saved strategy id, or a plain-language "review my strategy" request). This skill runs the validate → explain → backtest → compare/stress → save loop against the Phase-2 MCP tools and packages the findings in a Claude-friendly order.
npx claudepluginhub evgenygurin/cryptozavr --plugin cryptozavrHow this skill is triggered — by the user, by Claude, or both
Slash command
/cryptozavr:strategy-reviewThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
- User pastes or builds a `StrategySpec` payload and asks for a review, critique, or sanity-check.
Guides technical evaluation of code review feedback: read fully, restate for understanding, verify against codebase, respond with reasoning or pushback before implementing.
Share bugs, ideas, or general feedback.
StrategySpec payload and asks for a review, critique, or sanity-check.compare_strategies rather than backtest_strategy alone).Do NOT invoke for:
/cryptozavr:research).backtest_strategy directly.validate_strategy with the raw payload. If valid=False, stop — report issues with location path + message + type, suggest fixes, wait for a new payload.explain_strategy so the user sees their spec in plain text (entry/exit/risk sections). Use this to confirm you both understand the same strategy before spending compute on a backtest.backtest_strategy with the validated payload. Set initial_equity to a round number like 10000 unless the user specifies. Default limit=500; bump to limit=1500 for longer lookbacks if the user cares about multi-month behaviour.metrics.total_return, win_rate, max_drawdown, profit_factor, sharpe_ratio out of the response. Flag any unusual combinations (e.g. high win_rate + negative total_return → fees/slippage eating the edge).stress_test with the default bull/bear/chop scenarios to see whether the edge survives different regimes. If one regime catastrophically loses, call that out — it's a robustness signal.compare_strategies([...specs]) and highlight the per-metric winner using the pivoted comparison dict.save_strategy and record the returned UUID so the user can reference it later.| Question | Tool |
|---|---|
| "Is my spec valid?" | validate_strategy |
| "Explain what this strategy does" | explain_strategy |
| "How well did it perform?" | backtest_strategy |
| "Does it hold up in a downturn?" | stress_test(scenarios=["bear"]) or default 3 scenarios |
| "Which of these three is best?" | compare_strategies |
| "Save this one for later" | save_strategy (returns UUID) |
| "Show me what I've saved" | list_strategies(limit=50) |
| "What's different between v1 and v2?" | diff_strategies(a, b) |
All eight tools are strategy-tagged and phase-2. They are read-only (no balances moved, no orders placed) and idempotent with respect to each other — except save_strategy which persists a row (upsert-by-hash).
total_return < 0 or max_drawdown > 50%, say so first, not last.report.period_start_ms / period_end_ms).BacktestEngine uses 5 bps fees + 10 bps slippage if unset. Tell the user when metrics are sensitive to these — they usually are at high turnover.For non-trivial reviews that bounce through ≥3 tools + interpretation (e.g. "tune my EMA crossover for BTC 1h, try three period pairs, compare, explain"), dispatch the crypto-researcher subagent in a fresh context. Pass it the validated payload, the metric targets, and the rail reminders above. It keeps the main thread clean for the user's follow-up questions.
Present findings in this order:
✅ Spec valid or ❌ Spec invalid: <N> issues.markdown field from explain_strategy verbatim (already formatted).period_start_ms).stress_test was run.compare_strategies was run, one row per strategy × metric.