Getting it into your agent
One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.
npx skills add Senpi-ai/senpi-skills --skill quant-deskgit clone --depth 1 https://github.com/Senpi-ai/senpi-skillsWrote this? Show the measurements
A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.
[](https://agentmods.dev/skills/senpi-ai/senpi-skills/quant-desk)<a href="https://agentmods.dev/skills/senpi-ai/senpi-skills/quant-desk"><img src="https://agentmods.dev/badge/skills/senpi-ai/senpi-skills/quant-desk/github.svg" alt="Measured on agentmods" height="20"></a>Or the 80×15 button, for a site that already has a row of RSS and ATOM ones. Only the verdict fits; the numbers stay here.
<a href="https://agentmods.dev/skills/senpi-ai/senpi-skills/quant-desk"><img src="https://agentmods.dev/badge/skills/senpi-ai/senpi-skills/quant-desk.svg" alt="Reviewed on agentmods" width="80" height="20"></a>What it costs to keep this loaded
Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.
| Model | Per session | Once invoked |
|---|---|---|
| Fable 5.1 | $0.01035 | $0.14130 |
| Opus 5.5 | $0.00414 | $0.05652 |
| Sonnet 5.5 | $0.00207 | $0.02826 |
| Haiku 4.5 | $0.00103 | $0.01413 |
Grade A, and why
quant-desk scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured today.
A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.
Nothing flagged
None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.
How it starts
The opening of the file, as written. The whole thing — 718 lines — stays where its author put it; the contents beside it link to each section on GitHub.
Senpi Quant Desk — the desk your AI Quant produces, for any Hyperliquid address
Built for one thing first: the user's own book. A trader joins senpi, pastes their Hyperliquid
wallet, and gets their desk — the book they actually run, scored, protected and improved, in the second
person, with the next steps recommended to them. That is the default and the experience to design for:
"run AI quant on 0x…" means the user is 0x…, whoever the address belongs to. The same engine
also reads someone else's book — "run AI quant analyst on 0x…", "review this trader", a
leaderboard pick, a whale — to learn from it (third person, learn-from-them follow-ups, a side-by-side
compare). Run it plain (--mine) unless the user asks for the analyst read; then --other (alias
--analyst), and never let that desk say "you".
HARD RULES — obey these even if you skim the rest.
-
ONE desk at a time, and NEVER re-run one that is still going. A desk is a long command, so
exechands you back{"status":"running", "sessionId": …}and the real result arrives on a laterprocesspoll. That handoff is not a failure. Poll the session you already have.Launching a second run does not make the first one finish. Both hammer the same per-IP rate limit, so two runs are slower than one and three usually kill each other. On 2026-09-23 an agent that could not see a result launched five concurrent runs of the same wallet, inventing
sleep 15 &&andsleep 30 &&workarounds; three died withHTTP 429and the reader waited six minutes for nothing. The desk now refuses a second run (exit 5,already_running) — treat that as "your first one is still working", not as an error to route around.If a run really is dead, the state dir is the shared surface: the finished desk lands in the same file, so a fresh
--section overviewafter it completes is instant.PASS
yieldMs, NOT JUST THE HARD KILL — this is the single most common way a reader gets no desk. The hard kill (seconds) istimeoutSecondswhen the exec tool lists it, otherwisetimeout. Send only the one the exec tool lists.yieldMsis how long exec WAITS before handing you a background handle instead of the output. Without it the tool backgrounds the run at ~10 seconds no matter how large a hard kill you passed, and you getCommand still running (session …, pid …)with a progress tail — not a desk. Measured over 24h:yieldMspassedwhat came back runs got the score none backgrounded at 10.1s 19 0 5000 / 15000 backgrounded at exactly that 2 0 120000 / 190000 the finished desk, in 39-49s 3 3 So:
yieldMs: 190000together with a hard kill of 200 seconds on the first desk call. The desk itself is not slow — it lands in well under a minute on a normal book. Twenty-one runs across seventeen users produced nothing last window purely because the wait was ten seconds.The hard kill still matters — give a desk on a wide book at least 180s of it, because at 120s the exec tool SIGTERMs it mid-run and you get nothing after paying the whole cost. The two are not alternatives: the hard kill decides when the run is killed,
yieldMsdecides when you stop waiting for it. You need both.If you DO get a background handle, you are not finished: poll it (
process poll <sessionId>) until it exits and relay what it printed. Abandoning the handle is how a user ends up with a half-sentence of progress log and no score. -
Relay it in STAGES — never as one block. The analysis takes 30-60s on a typical book, up to ~2 MINUTES on a very wide one (100+ coins), and the whole desk is thousands of words. Delivering it as a single wall after a silent wait is the worst possible shape: the reader waits with nothing, then gets more than they can read. The first run caches for 10 minutes, so every section after it returns instantly.
What ships with it
39 files beside SKILL.md in the same directory: the scripts, references and assets a skill reads on demand. Not counted in the per-session cost; read them before you install if any of them is executable.
- references/coverage.json 889 B
- references/methodology.md 26 KB
- scripts/addresses.py 14 KB runs code
- scripts/benchmark.py 4.3 KB runs code
- scripts/blacklist.py 14 KB runs code
- scripts/book.py 10 KB runs code
- scripts/deep.py 8.9 KB runs code
- scripts/desk.py 85 KB runs code
- scripts/dsl.py 11 KB runs code
- scripts/followups.py 8.4 KB runs code
- scripts/hl_api.py 24 KB runs code
- scripts/market.py 15 KB runs code
- scripts/mcp_client.py 6.1 KB runs code
- scripts/metrics.py 35 KB runs code
- scripts/opportunities.py 4.9 KB runs code
- scripts/render.py 57 KB runs code
- scripts/roundtrips.py 7.2 KB runs code
- scripts/score.py 55 KB runs code
- scripts/senpi_history.py 8.5 KB runs code
- scripts/smart_money.py 15 KB runs code
- scripts/strategy_read.py 19 KB runs code
- scripts/taxonomy.py 2.8 KB runs code
- scripts/timing.py 8.4 KB runs code
- scripts/voice.py 3.0 KB runs code
- tests/fixtures/protection-fixtures.v1.json 65 KB
- tests/fixtures/sample_trader.json 4452 KB
- tests/test_account_split.py 3.0 KB runs code
- tests/test_addresses.py 8.8 KB runs code
- tests/test_book_breadth_gate.py 7.8 KB runs code
- tests/test_book.py 15 KB runs code
- tests/test_dsl_attach.py 10 KB runs code
- tests/test_mm_blacklist.py 26 KB runs code
- tests/test_my_wallets.py 37 KB runs code
- tests/test_positions_unread.py 7.6 KB runs code
- tests/test_protection_shared.py 5.4 KB runs code
- tests/test_protection_unread.py 14 KB runs code
- tests/test_quant.py 215 KB runs code
- tests/test_state_version.py 2.6 KB runs code
- tests/test_subject_and_flight.py 16 KB runs code
What this file has done since we first saw it
Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.
- today Changed · +1 lines 5d8f362395c5
- 2d ago Changed 8e88e93cd428
- 15d ago Changed · +1 lines 9b79b98d9869
- 18d ago Changed d5dca69888f8
- 20d ago Changed · +5 lines cbba01f024b7
- 27d ago Changed · +57 lines · +72 tokens per session 95ca006726ca
- 1mo ago Changed · +37 lines c9df6877287d
- 1mo ago Changed · +23 lines 47c228de6554
- 1mo ago Changed · +106 lines 65c9ea756ce6
- 1mo ago First seen · 488 lines · 963 tokens per session scan A 810ecf9d7abe
quant-desk is a skill published in the GitHub repository Senpi-ai/senpi-skills (144 stars, last pushed yesterday), licensed MIT. It adds 1,035 tokens to every session and 14,130 once invoked, about $0.0041 per session on Opus 5.5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-09-18.
quant-desk compared with skills from other repositories
| Mod | Type | Stars | Last push | Licence | Scan | Tokens | Works with |
|---|---|---|---|---|---|---|---|
| quant-deskSenpi-ai/senpi-skills | Skill | 144 | yesterday | MIT | A | 1,035 | Claude Code, Codex |
| agentic-streetLeoYeAI/openclaw-master-skills | Skill | 2.2k | 5d ago | MIT | A | 91 | Claude Code, Codex |
| token-pickaeonfun/aeon | Skill | 788 | yesterday | MIT | A | 25 | Claude Code, Codex |
| bridgealsk1992/CloddsBot | Skill | 3.1k | 1mo ago | MIT | A | 13 | Claude Code, Codex |
| hyperliquidalsk1992/CloddsBot | Skill | 3.1k | 1mo ago | MIT | A | 19 | Claude Code, Codex |
| marginfialsk1992/CloddsBot | Skill | 3.1k | 1mo ago | MIT | A | 11 | Claude Code, Codex |
| airdrop-hunting-guidenirholas/three.ws | Skill | 269 | yesterday | Apache-2.0 | A | 54 | Claude Code, Codex |