feat(crypto): /crypto market data, alongside /ticker - #322
Merged
Conversation
advis0r.com now serves crypto under /crypto/**, so the pit gets the sibling of `ticker` that surface implies: `moshcode crypto` (and `/crypto` in the pit), plus a `crypto@moshcode` plugin for Claude Code. A sibling rather than a mode of `ticker`, because the two answer different questions from different data. A ticker report is a stored snapshot built from transcripts, SEC fundamentals and extracted signals — its risk is a stale price read as a live one. A crypto report is a live venue read with none of those — its risk runs the other way. One code path would mean one set of labels lying about one of them, so the technical score, which counts venue-local liquidity, is never presented as comparable to an equity's. moshcode crypto BTC # price, technicals, score, supply, book moshcode crypto lookup bitcoin # asset name → BTC/USD moshcode crypto spark BTC ETH SOL # recent moves, ranked moshcode crypto bars ETH --timeframe 1Hour moshcode crypto book BTC-USD --depth 5 Notes on two things that would otherwise be quietly wrong: - Prices are formatted at the precision the pair trades at. A fixed two decimals renders half the index — SHIB near $0.000006 — as "$0.00". - Upstream treats `bars`' `limit` as a page size over its own window, not a cap on what returns: `--limit 5` came back with seventeen bars. The renderer honours the flag and says that it trimmed, rather than breaking the promise silently or printing everything. The plugin frontmatter test now iterates the marketplace manifest instead of hard-coding plugins/ticker, so a plugin added later cannot ship unchecked. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
ThreatCrush Security Scan91 finding(s) HIGH/CRITICAL: 2 | MEDIUM: 41 | LOW: 48
…and 41 more. Full results in the Security tab. Snippets are redacted; ThreatCrush never prints matched credential material. |
Merged
ralyodio
added a commit
that referenced
this pull request
Aug 8, 2026
Bump to v0.27.0, releasing `/crypto` — crypto market data from advis0r.com as a CLI verb, a pit command, and a second Claude Code plugin (#322) — alongside two commits that have been sitting on main unreleased: the compact() carry fix for `ticker` (#321) and the move off the deprecated Node 20 runtime (#320). Minor rather than patch: it adds a command and a plugin, and changes no existing one. As with v0.26.0 and `ticker`, the release is what makes the plugin's primary path work. install.sh serves the latest release tarball, not main, so until a release carries it every installed binary answers `unknown command "crypto"` and the plugin's slash commands fall back to curl — which works, but skips the rendering the verb exists to do. Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
advis0r.com now serves crypto under
/crypto/**, so the pit gets the sibling oftickerthat surface implies:moshcode crypto(and/cryptoin the pit), plus acrypto@moshcodeplugin for Claude Code.Pairs are accepted as
BTC,BTC-USD,BTC/USDorBTCUSD. A bare asset resolves to that asset's USD pair.Why a sibling, not a mode of
tickerThey answer different questions from different data and share only a hostname. A ticker report is a stored snapshot built from transcripts, SEC fundamentals and extracted signals — its risk is a stale price read as a live one. A crypto report is a live venue read with no transcripts, no filings and no signals — its risk runs the other way. One code path would mean one set of labels lying about one of them.
The scores are not comparable either: the crypto technical score counts venue-local liquidity, so ranking a coin against an equity by score is meaningless. Both surfaces ship their own
caveats, and both renderers print them.Two things that would otherwise be quietly wrong
$0.000006— as$0.00. Derived numbers are priced like the number beside them, so a$126.10move on a$65,021.84coin does not print as$126.0980.--limitonbars. Upstream treats it as a page size over its own window, not a cap on what returns —--limit 5came back with seventeen bars. The renderer honours the flag and states that it trimmed (5 × 1Hour · newest of 17) rather than breaking the promise silently or printing everything.Surface
src/crypto.mjs— pure argument translation, injectable fetch, rendering as a function of decoded JSON (the same split assrc/advisor.mjs).bin/moshcode.mjsandsrc/tui.mjs; schema entries drive/help, completion and the pit command list.plugins/crypto/—/crypto,/quote,/book,/bars,/spark,/pairs,/coin. No name collides with thetickerplugin's commands.plugins/ticker, so a plugin added later cannot ship unchecked.Verification
test/crypto.test.mjs)./cryptoinside the pit.🤖 Generated with Claude Code