cheetah-strategy
CHEETAH v7.0.0 โ Multi-signal confluence sniper, senpi_runtime_helpers migration. Plumbing-only flip from openclaw-CLI subprocess + mcporter subprocess to in-process SenpiClient (direct HTTPS for MCP, direct HTTP POST to runtime /signals, long-lived producer_daemon). Thesis preserved verbatim from v6.1: refuses to trade unless ALL major signals align โ SM consensus, velocity, acceleration, dual price confirmation, volume spike, quality-trader alignment, rank climb. Score 10/15 floor, score-scaled leverage (3x/5x/7x/8x), FEE_OPTIMIZED_LIMIT entries AND exits, held-asset dedup, post-close cooldown.
What this skill does
# ๐ CHEETAH v7.2.0 โ Multi-Signal Confluence Sniper
**SM commits. Quality traders commit. Price confirms. Volume commits. All at once. Cheetah pounces once. The runtime DSL ratchets to lock the win.**
## v7.2.0 (2026-06-01) โ DSL exit overhaul: disable time cuts, let winners run
**Entries are fine. Exits were the bottleneck.** A 100-trade-by-score
analysis on the live wallet showed win rate scaling cleanly with score โ
40.0% @ score 10, 41.7% @ score 11 (n=84), 50.0% @ score 12, 55.6% @ score
13 โ confirming the accuracy filter works. But **Avg ROE was negative across
EVERY score bracket** (โ1.90% / โ0.35% / โ0.20% / โ0.12%).
| Score | Trades | Win rate | Avg ROE |
|---|---:|---:|---:|
| 10 | 5 | 40.0% | โ1.90% |
| 11 | 84 | 41.7% | โ0.35% |
| 12 | 2 | 50.0% | โ0.20% |
| 13 | 9 | 55.6% | โ0.12% |
**Diagnosis: "death by a thousand cuts."** The tight Phase 2 locks plus the
60m/90m time-cuts made it mechanically impossible to hold for a big win โ
Cheetah took the full brunt of โ15% stops / โ5% chops but was forced to give
up every +15% / +30% runner. The two big HYPE longs that actually paid
(+13.9%, +8.9%) only landed because they hit the **12h hard timeout** โ not a
trailing stop, not a 60m dead_weight_cut. When forced to hold, the position
printed.
**Fix (mirrors the live deploy):**
- `weak_peak_cut` โ **disabled** (was 90m @ 3.0 โ chopping winners-in-waiting)
- `dead_weight_cut` โ **disabled** (was 60m โ forcing exits before trenders accelerate)
- `hard_timeout` โ **kept** (12h fail-safe โ the one cut that captured the winners)
- Phase 2 ladder already widened to the "let winners run" shape (T0 +10% / lock 0 โ +100% / lock 85) on 2026-05-21
Together this removes the glass ceiling so heavy trenders can run. NO change
to scoring, MIN_SCORE, leverage tiers, margin, cooldowns, or risk gates โ
exit-mechanics only. Hypothesis test; re-evaluate after ~50 more trades.
## v7.1.1 (2026-05-11) โ positions parser fix (patch)
Live verification of v7.1.0 found `positions_map` was STILL empty even though the widened filter returned the full 25-trader pool. Root cause: `leaderboard_get_trader_positions` actually returns
```
{ "data": { "positions": { "trader_id": ..., "rank": ..., "positions": [...] } } }
```
โ the per-trader positions array is nested one level deeper than the schema guide documents. The v7.0/v7.1 parser looked at `data.positions` expecting a list, got a dict, hit `if not isinstance(positions, list): continue` and silently skipped every trader.
v7.1.1 parser handles BOTH shapes:
- list-direct (matches schema guide)
- nested-dict `{trader_id, rank, positions: [...]}` (actual prod response)
Plus a `POSITIONS_SHAPE_WARN` log line for any future schema drift.
NO change to scoring components, MIN_SCORE, leverage tiers, margin, cooldowns, or DSL. Same thesis. Now the +3 QUALITY_TRADER bonus can actually fire when the per-asset overlap exists.
## v7.1.0 (2026-05-11) โ quality-trader filter widened (patch)
Post-migration diagnostic on the live wallet revealed `quality-cache.json` was always empty (`positions_map = {}`). Root cause: `discovery_get_top_traders(time_frame=WEEKLY, consistency=[ELITE,RELIABLE], open_position_filter=True, limit=8)` returned **zero traders** under the current platform regime. With no quality-trader pool, the +3 `QUALITY_TRADER` scoring bonus never fires; candidates cap at score 8 (needs 4-of-4 secondary confluence to reach the MIN_SCORE=10 floor without that bonus), and that 4-of-4 only hits in strong-trending regimes.
Filter changes (live-verified):
- `time_frame: WEEKLY โ MONTHLY` โ broader history, more traders accumulate ELITE/RELIABLE labels
- `consistency: [ELITE, RELIABLE] โ [ELITE, RELIABLE, STREAKY]` โ slight loosen at the lower end
- `limit: 8 โ 25` โ wider pool surfaces more per-asset overlap
- `open_position_filter` dropped โ the per-trader `leaderboard_get_trader_positions` fetch already filters flat traders implicitly via empty position arrays
NO change to scoring components, weights, MIN_SCORE, leverage tiers, margin, cooldowns, or DSL. Same thesis, wider input.
Telemetry: producer now emits a `QT_POOL_WARN` log line whenever the trader pool is unhealthily small (< QT_POOL_SIZE / 2) or positions_map ends up empty. Future regressions surface in one grep instead of post-hoc archaeology.
## v6.0 thesis (preserved from v5.x)
Refuse to trade unless ALL major signals align simultaneously:
| Component | Signal | Pts |
|---|---|---|
| SM consensus | pct_of_top_traders โฅ 10%, traders โฅ 25 | +4 (hard gate) |
| Velocity | 15m contrib โฅ 1.0 OR 1h contrib โฅ 3.0 | +2 (hard gate) |
| Accelerating | 15m > 1h > 0 (SM building) | +2 |
| Dual price | 4h move โฅ 2% AND 1h aligned same direction | +2 |
| Volume | current โฅ 2x 6h avg | +1 |
| Quality trader | โฅ 1 ELITE/RELIABLE positioned same direction | +3 |
| Rank climb | โฅ 5 positions in last 2 scans, top 15 | +1 |
**Max score: 15. v6.0 floor: 10.** Universe is the top 100 SM leaderboard (`leaderboard_get_markets`), refreshed every producer tick. XYZ permanently banned.
Score-scaled leverage:
| Score | Leverage |
|---|---|
| 10 | 3x |
| 11 | 5x |
| 12-13 | 7x |
| 14-15 | 8x |
Leverage is clamped to each asset's Hyperliquid max via `strategy_get_asset_trading_limits` (preserves v5.1.1 leverage safety fix).
## v6.0 architectural changes
### v1 scanner โ v2 producer
- v5.x: `cheetah-scanner.py` scored signals, called `create_position` directly, maintained Python-side cooldowns/counters/resting-order guards
- v6.0: `cheetah-producer.py` emits signals via `SenpiClient.push_signal()` (direct HTTP POST). Runtime LLM gate (decision_mode: llm) is pass-through. Risk gates declarative in `runtime.yaml`.
### MIN_SCORE 11 โ 10
v5.2 tightened MIN_SCORE 10 โ 11. Result: 8 consecutive days of zero trades. Pre-tightening (v5.0/v5.1 at MIN_SCORE 10) produced **+$182 net across 11 trades** with 60%+ win rate. v6.0 restores the trade flow.
### FEE_OPTIMIZED_LIMIT on EXITS too
v5.x used MARKET (taker) closes. v6.0's DSL fires `FEE_OPTIMIZED_LIMIT` on every exit โ maker-first, 60s ALO timeout, taker fallback. HL maker is 0.015% vs taker 0.045% = 0.020-0.030% saved per close.
### Held-asset dedup (3-layer defense)
1. Producer pre-filter: `held_assets` from clearinghouse, drops candidates already held
2. LLM gate hard skip: `heldAssets` array in signal payload, LLM rejects if asset is held
3. Runtime `per_asset_cooldown_minutes: 240` (known to silently not-enforce; layer 1+2 are the real defense)
### Post-close cooldown (producer-side backstop)
Diff `held_assets` across ticks. When asset disappears from held set, record close timestamp. Producer skips emission for 240 min after any close. Backstops the runtime cooldown bug.
### Reentrancy guard
`producer_daemon` owns a per-tick `scanner_lock` with stale-PID auto-recovery โ replaces v6.x's hand-rolled fcntl lockfile. Prevents two ticks racing.
## DSL preset (v7.2.0 โ "let winners run" ladder, time cuts disabled)
| Phase | Component | Setting |
|---|---|---|
| Phase 1 | max_loss_pct | 15% |
| Phase 1 | retrace_threshold | 10 (v6.x raise from 6) |
| Phase 1 | consecutive_breaches | 1 |
| Phase 2 T0 | trigger 10% / lock 0% | (lets a +10% mover retrace fully before any lock) |
| Phase 2 T1 | trigger 20% / lock 25% | |
| Phase 2 T2 | trigger 30% / lock 40% | |
| Phase 2 T3 | trigger 50% / lock 60% | |
| Phase 2 T4 | trigger 75% / lock 75% | |
| Phase 2 T5 | trigger 100% / lock 85% | (apex) |
| hard_timeout | 720 min (12h) | **enabled** (the only time cut left) |
| weak_peak_cut | โ | **disabled** (v7.2.0) |
| dead_weight_cut | โ | **disabled** (v7.2.0) |
v7.2.0: weak_peak_cut + dead_weight_cut disabled. The 100-trade analysis
showed the time cuts were the bottleneck โ they forced exits before
trenders could accelerate and capped the right-tail move that pays for
everything. The two big HYPE wins (+13.9%, +8.9%) only landed via the 12h
hard timeout, so that fail-safe is kept. Median trade gives back a bit;
the right tail is Related in AI Agents
skill-development
IncludedComprehensive meta-skill for creating, managing, validating, auditing, and distributing Claude Code skills and slash commands (unified in v2.1.3+). Provides skill templates, creation workflows, validation patterns, audit checklists, naming conventions, YAML frontmatter guidance, progressive disclosure examples, and best practices lookup. Use when creating new skills, validating existing skills, auditing skill quality, understanding skill architecture, needing skill templates, learning about YAML frontmatter requirements, progressive disclosure patterns, tool restrictions (allowed-tools), skill composition, skill naming conventions, troubleshooting skill activation issues, creating custom slash commands, configuring command frontmatter, using command arguments ($ARGUMENTS, $1, $2), bash execution in commands, file references in commands, command namespacing, plugin commands, MCP slash commands, Skill tool configuration, or deciding between skills vs slash commands. Delegates to docs-management skill for official documentation.
reprompter
IncludedTransform messy prompts into well-structured, effective prompts โ single or multi-agent. Use when: "reprompt", "reprompt this", "clean up this prompt", "structure my prompt", rough text needing XML tags and best practices, "reprompter teams", "repromptception", "run with quality", "smart run", "smart agents", multi-agent tasks, audits, parallel work, anything going to agent teams. Don't use when: simple Q&A, pure chat, immediate execution-only tasks. See "Don't Use When" section for details. Outputs: Structured XML/Markdown prompt, quality score (before/after), optional team brief + per-agent sub-prompts, agent team output files. Success criteria: Single mode quality score โฅ 7/10; Repromptception per-agent prompt quality score 8+/10; all required sections present, actionable and specific.
adaptive-compaction
IncludedAdaptive add-on policy and recovery layer that decides WHEN to compact, prune, snapshot, or fork -- replacing fixed-percent auto-compaction across Claude Code, Codex, and MCP-capable hosts. Trigger on auto-compact timing or damage: "when should I compact", "is it safe to compact now or start a fresh session", "auto-compact fires too early/mid-task", "switching to an unrelated task but the window still has space", "context rot", "answers get worse the longer the session runs", "the agent forgot the plan or my decisions after it summarized", "add a layer on top that manages context without changing the agent", raising autoCompactWindow to give the policy room, or installing/tuning a cross-tool compaction policy or PreCompact hook -- even when "compaction" is never said but the problem is context-window pressure or post-summarization memory loss. Do NOT use to summarize a conversation, build RAG, write a summarization prompt (decides WHEN not HOW), or answer max-context-length trivia.
agent-skill-creator
IncludedCreate cross-platform agent skills from workflow descriptions. Activates when users ask to create an agent, automate a repetitive workflow, create a custom skill, or need advanced agent creation. Triggers on phrases like create agent for, automate workflow, create skill for, every day I have to, daily I need to, turn process into agent, need to automate, create a cross-platform skill, validate this skill, export this skill, migrate this skill. Supports single skills, multi-agent suites, transcript processing, template-based creation, interactive configuration, cross-platform export, and spec validation.
llm-wiki
IncludedUse when building or maintaining a persistent personal knowledge base (second brain) in Obsidian where an LLM incrementally ingests sources, updates entity/concept pages, maintains cross-references, and keeps a synthesis current. Triggers include "second brain", "Obsidian wiki", "personal knowledge management", "ingest this paper/article/book", "build a research wiki", "compound knowledge", "Memex", or whenever the user wants knowledge to accumulate across sessions instead of being re-derived by RAG on every query.
skill-master
IncludedAgent Skills authoring, evaluation, and optimization. Create, edit, validate, benchmark, and improve skills following the agentskills.io specification. Use when designing SKILL.md files, structuring skill folders (references, scripts, assets), ingesting external documentation into skills, running trigger evals, benchmarking skill quality, optimizing descriptions, or performing blind A/B comparisons. Keywords: agentskills.io, SKILL.md, skill authoring, eval, benchmark, trigger optimization.