#957 by GitHub stars
komako-workshop/digital-oracle
Answer prediction questions using market trading data, not opinions. Use when the user asks probability questions about geopolitics, economics, markets, industries, or any topic where real money is being traded on the outcome. Examples: 'What's the probability of WW3?', 'Will there be a recession?',
History
Review weekly changes to SKILL.md before updating. Dates mark the weeks in which we observed each version; checks apply to the recorded commits.
View weekly changes
SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Network or broad shell → After Network or broad shell
a63e4c19a2f3 → a63e4c19a2f3
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Network or broad shell
First observation → a63e4c19a2f3
No earlier version was observed for comparison.
Heat
4.6- Star growth, last 7 daysAhead of 67% of tracked repositories
- Star growth, last 24 hoursAhead of 91% of tracked repositories
- Rank movement, last 7 daysAhead of 19% of tracked repositories
- Commits, last 30 daysAhead of 0% of tracked repositories
- Accounts asking about it through MCP, last 7 daysNot available
- Hot votes this weekAhead of 0% of tracked repositories
Heat never changes the order by stars, and sponsorship never touches it. How heat works
Stars over time
Individual skills in this repository
How it works
digital-oracle
When your agent uses it
Answer prediction questions using market trading data, not opinions. Use when the user asks probability questions about geopolitics, economics, markets, industries, or any topic where real money is being traded on the outcome. Examples: 'What's the probability of WW3?', 'Will there be a recession?', 'Is AI in a bubble?', 'When will the Russia-Ukraine war end?', 'Is it a good time to buy gold?', 'Will SPY drop 5% this month?', 'Is NVDA options premium overpriced?'. The skill reads prices from prediction markets, commodities, equities, options chains, derivatives, yield curves, and currencies, then cross-validates multiple signals to produce a structured probability report.
What it loads into context
Frontmatter
189 tokensAlways available to the agent
SKILL.md
5,672 tokensWhen the skill is activated
Reference documents
13,247 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Methodology
- Workflow
- Notes
Scripts executed separately
digital_oracle/__init__.pydigital_oracle/cache.pydigital_oracle/concurrent.pydigital_oracle/http.pydigital_oracle/providers/__init__.pydigital_oracle/providers/_coerce.pydigital_oracle/providers/base.pydigital_oracle/providers/bis.pydigital_oracle/providers/cftc.pydigital_oracle/providers/cme_fedwatch.pydigital_oracle/providers/coingecko.pydigital_oracle/providers/deribit.pydigital_oracle/providers/eastmoney.pydigital_oracle/providers/edgar.pydigital_oracle/providers/fear_greed.pydigital_oracle/providers/kalshi.pydigital_oracle/providers/polymarket.pydigital_oracle/providers/prices.pydigital_oracle/providers/stooq.pydigital_oracle/providers/treasury.pydigital_oracle/providers/web.pydigital_oracle/providers/worldbank.pydigital_oracle/providers/yahoo.pydigital_oracle/providers/yfinance_provider.pydigital_oracle/proxy_pool.pydigital_oracle/snapshots.pyscripts/demo_deribit.pyscripts/demo_kalshi.pyscripts/demo_polymarket.pyscripts/demo_stooq.pyscripts/demo_treasury.pyscripts/regression_runner.pytests/test_bis_provider.pytests/test_cache_and_proxy.pytests/test_cftc_provider.pytests/test_cme_fedwatch_provider.pytests/test_coerce.pytests/test_coingecko_provider.pytests/test_concurrent.pytests/test_deribit_provider.pytests/test_eastmoney_provider.pytests/test_edgar_provider.pytests/test_fear_greed_provider.pytests/test_kalshi_provider.pytests/test_polymarket_provider.pytests/test_snapshots.pytests/test_stooq_provider.pytests/test_treasury_provider.pytests/test_web_provider.pytests/test_worldbank_provider.pytests/test_yahoo_provider.pytests/test_yfinance_provider.py
Files
.gitignoreasset55 bytesITERATION_PLAN.mddoc11,660 bytesLICENSEasset1,072 bytesREADME.en.mddoc5,248 bytesREADME.mddoc4,875 bytesSKILL.mdcore23,611 bytesSKILL.mdcore23,611 bytesSKILL.mdcore23,611 bytesdigital_oracle/__init__.pyruns4,575 bytesdigital_oracle/cache.pyruns2,831 bytesdigital_oracle/concurrent.pyruns4,627 bytesdigital_oracle/http.pyruns4,971 bytesdigital_oracle/providers/__init__.pyruns4,689 bytesdigital_oracle/providers/_coerce.pyruns1,160 bytesdigital_oracle/providers/base.pyruns644 bytesdigital_oracle/providers/bis.pyruns4,967 bytesdigital_oracle/providers/cftc.pyruns5,122 bytesdigital_oracle/providers/cme_fedwatch.pyruns4,321 bytesdigital_oracle/providers/coingecko.pyruns7,684 bytesdigital_oracle/providers/deribit.pyruns20,851 bytesdigital_oracle/providers/eastmoney.pyruns20,380 bytesdigital_oracle/providers/edgar.pyruns7,999 bytesdigital_oracle/providers/fear_greed.pyruns2,416 bytesdigital_oracle/providers/kalshi.pyruns12,392 bytesdigital_oracle/providers/polymarket.pyruns13,499 bytesdigital_oracle/providers/prices.pyruns927 bytesdigital_oracle/providers/stooq.pyruns2,450 bytesdigital_oracle/providers/treasury.pyruns7,888 bytesdigital_oracle/providers/web.pyruns13,634 bytesdigital_oracle/providers/worldbank.pyruns3,143 bytesdigital_oracle/providers/yahoo.pyruns6,323 bytesdigital_oracle/providers/yfinance_provider.pyruns16,475 bytesdigital_oracle/proxy_pool.pyruns3,546 bytesdigital_oracle/snapshots.pyruns5,753 bytesreferences/providers.mddoc18,559 bytesreferences/symbols.mddoc5,848 bytesscripts/demo_deribit.pyruns4,899 bytesscripts/demo_kalshi.pyruns2,775 bytesscripts/demo_polymarket.pyruns2,992 bytesscripts/demo_stooq.pyruns1,871 bytesscripts/demo_treasury.pyruns2,985 bytesscripts/regression_runner.pyruns14,962 bytestests/fixtures/deribit_book_summaries_futures.jsonasset2,380 bytestests/fixtures/deribit_book_summaries_options.jsonasset3,870 bytestests/fixtures/deribit_instruments_futures.jsonasset3,828 bytestests/fixtures/deribit_instruments_options.jsonasset5,717 bytestests/fixtures/deribit_order_book_btc_perpetual.jsonasset1,456 bytestests/fixtures/kalshi_event.jsonasset4,075 bytestests/fixtures/kalshi_market_detail.jsonasset1,390 bytestests/fixtures/kalshi_markets.jsonasset3,737 bytestests/fixtures/kalshi_orderbook.jsonasset972 bytestests/fixtures/polymarket_book.jsonasset752 bytestests/fixtures/polymarket_events.jsonasset2,361 bytestests/fixtures/stooq_spy.csvasset227 bytestests/fixtures/stooq_xauusd.csvasset154 bytestests/fixtures/treasury_exchange_rates.jsonasset838 bytestests/fixtures/treasury_nominal_curve.csvasset354 bytestests/fixtures/treasury_real_curve.csvasset115 bytestests/test_bis_provider.pyruns5,555 bytestests/test_cache_and_proxy.pyruns5,861 bytestests/test_cftc_provider.pyruns11,015 bytestests/test_cme_fedwatch_provider.pyruns4,457 bytestests/test_coerce.pyruns4,025 bytestests/test_coingecko_provider.pyruns9,331 bytestests/test_concurrent.pyruns5,736 bytestests/test_deribit_provider.pyruns6,346 bytestests/test_eastmoney_provider.pyruns14,890 bytestests/test_edgar_provider.pyruns11,079 bytestests/test_fear_greed_provider.pyruns4,246 bytestests/test_kalshi_provider.pyruns4,374 bytestests/test_polymarket_provider.pyruns3,067 bytestests/test_snapshots.pyruns4,109 bytestests/test_stooq_provider.pyruns1,959 bytestests/test_treasury_provider.pyruns3,958 bytestests/test_web_provider.pyruns7,541 bytestests/test_worldbank_provider.pyruns7,698 bytestests/test_yahoo_provider.pyruns1,404 bytestests/test_yfinance_provider.pyruns22,944 bytes
Read SKILL.md
# digital-oracle
> Markets are efficient. Price contains all public information. Reading price = reading market consensus.
## Methodology
**Answer questions using only market trading data — no news, opinions, or statistical reports as causal evidence.** If something is true, some market has already priced it in.
Five iron rules:
1. **Trading data only** — prices, volume, open interest, spreads, premiums. Never cite analyst opinions.
2. **Explicit reasoning from price to judgment** — explain clearly "why this price answers this question."
3. **Multi-signal cross-validation** — never conclude from a single signal. At least 3 independent dimensions.
4. **Label the time horizon of each signal** — options price 3 months, equipment orders price 3 years — don't mix them in the same vote.View the complete source on GitHubSkills included
- digital-oracle
Repository facts
- License
- MIT
- Created
- Mar 11, 2026
- Last pushed
- Jul 26, 2026
- Forks
- 180
- Open issues
- 2
- Project activity
- Slowing
Rank over the last 12 weeks
Now #957 · best #646 · down 202 in 30 days
- #945 on Oct 31
- #946 on Nov 1
- #954 on Nov 2
- #958 on Nov 3
- #959 on Nov 4
- #957 since Nov 5
65 earlier periods
- #649 on Aug 2
- #647 on Aug 7
- #646 on Aug 8
- #684 on Aug 11
- #677 on Aug 12
- #673 on Aug 13
- #668 on Aug 14
- #646 on Aug 15
- #662 on Aug 16
- #675 on Aug 17
- #692 on Aug 18
- #672 on Aug 19
- #648 on Aug 22
- #675 on Aug 23
- #698 on Aug 24
- #704 on Aug 25
- #685 on Aug 26
- #720 on Aug 28
- #708 on Aug 31
- #708 on Sep 2
- #713 on Sep 3
- #691 on Sep 4
- #703 on Sep 6
- #739 on Sep 8
- #725 on Sep 9
- #734 on Sep 10
- #714 on Sep 11
- #711 on Sep 12
- #735 on Sep 15
- #739 on Sep 16
- #746 on Sep 17
- #729 on Sep 18
- #701 on Sep 19
- #714 on Sep 20
- #734 on Sep 21
- #753 on Sep 22
- #748 on Sep 23
- #717 on Sep 24
- #698 on Sep 25
- #697 on Sep 26
- #743 on Sep 28
- #773 on Sep 29
- #755 on Sep 30
- #723 on Oct 2
- #704 on Oct 3
- #733 on Oct 4
- #740 on Oct 5
- #747 on Oct 6
- #755 on Oct 7
- #792 on Oct 8
- #757 on Oct 9
- #746 on Oct 10
- #747 on Oct 11
- #762 on Oct 12
- #765 on Oct 13
- #776 on Oct 14
- #771 on Oct 15
- #775 on Oct 16
- #741 on Oct 18
- #785 on Oct 19
- #759 on Oct 24
- #919 on Oct 25
- #935 on Oct 28
- #941 on Oct 29
- #942 on Oct 30
Before you install
Network or broad shellAutomated signals, not a guarantee
Checked Nov 4, 2026
Not fully analyzed: some files were too long, unreadable or missing. This never lowers the level.
Show 2 notes
SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedSKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzed
- No broad tool permissions
- No dangerous shell commands
- 122 network referencesin 22 files: tests/test_web_provider.py:32 tests/test_cache_and_proxy.py:117 tests/test_snapshots.py:46 and 19 more
- No hidden or obfuscated text
- No instruction overrides
- 52 executable scriptsin 52 files: digital_oracle/__init__.py:1 digital_oracle/cache.py:1 digital_oracle/concurrent.py:1 and 49 more
- 17 references to secretsin 6 files: ITERATION_PLAN.md:100 digital_oracle/providers/eastmoney.py:46 tests/test_cache_and_proxy.py:147 and 3 more
- No requests to vote in Hot
Show all 191 signals by file
ITERATION_PLAN.md
- Network accessline 65
- Base URL: `https://api.stlouisfed.org/fred` - Network accessline 66
- 认证: 需要免费 API key(注册 https://fredaccount.stlouisfed.org/apikeys ) - Access to secretsline 100
[Credential-related source omitted] - Access to secretsline 126
[Credential-related source omitted] - Access to secretsline 136
[Credential-related source omitted] - Access to secretsline 137
[Credential-related source omitted] - Access to secretsline 141
[Credential-related source omitted] - Network accessline 161
[Credential-related source omitted] - Access to secretsline 161
[Credential-related source omitted] - Access to secretsline 204
[Credential-related source omitted] - Network accessline 226
- URL: `https://production.dataviz.cnn.io/index/fearandgreed/graphdata` - Network accessline 252
注意:CNN 的 API 可能返回嵌套结构,需要从 `fear_and_greed` 字段提取 `score` 和 `rating`,从 `fear_and_greed_historical` 中提取历史对比值。请先用 `web.fetch_page` 或 curl 测试实际返回结构再实现。 - Network accessline 284
CME FedWatch 的网页底层会请求一个 JSON endpoint: - URL: `https://www.cmegroup.com/services/fed-funds-target/fed-funds-target.json` (需要实际测试确认,URL 可能有变化) - Network accessline 285
- URL: `https://www.cmegroup.com/services/fed-funds-target/fed-funds-target.json` (需要实际测试确认,URL 可能有变化)
README.en.md
README.md
SKILL.md
- Network accessline 342
- Put/Call ratio > 1.5 is typically bearish, but as a contrarian indicator, extreme values (> 3) may signal a bottom - Max pain is the strike price maximizing market maker profit — actual expiration price often converges toward max pain - K - Network accessline 343
- Max pain is the strike price maximizing market maker profit — actual expiration price often converges toward max pain - Kalshi does NOT support keyword search — use `series_ticker` or `event_ticker` to filter markets. Find tickers by brow - Network accessline 344
- Kalshi does NOT support keyword search — use `series_ticker` or `event_ticker` to filter markets. Find tickers by browsing [kalshi.com](https://kalshi.com) or listing markets without filters first. Common series: `KXFED` (Fed rates), `KXI
digital_oracle/__init__.py
- Executable scriptline 1
Executable file
digital_oracle/cache.py
- Executable scriptline 1
Executable file
digital_oracle/concurrent.py
- Executable scriptline 1
Executable file
digital_oracle/http.py
- Executable scriptline 1
Executable file
digital_oracle/providers/__init__.py
- Executable scriptline 1
Executable file
digital_oracle/providers/_coerce.py
- Executable scriptline 1
Executable file
digital_oracle/providers/base.py
- Executable scriptline 1
Executable file
digital_oracle/providers/bis.py
digital_oracle/providers/cftc.py
digital_oracle/providers/cme_fedwatch.py
digital_oracle/providers/coingecko.py
digital_oracle/providers/deribit.py
digital_oracle/providers/eastmoney.py
- Executable scriptline 1
Executable file - Network accessline 30
LIVE_HOSTS = ("https://push2.eastmoney.com", "https://push2delay.eastmoney.com") - Network accessline 31
HISTORY_HOSTS = ("https://push2his.eastmoney.com", "https://push2delay.eastmoney.com") - Network accessline 37
TENCENT_KLINE_URL = "https://web.ifzq.gtimg.cn/appstock/app/fqkline/get" - Access to secretsline 46
[Credential-related source omitted] - Access to secretsline 47
[Credential-related source omitted] - Access to secretsline 48
[Credential-related source omitted] - Access to secretsline 49
[Credential-related source omitted] - Access to secretsline 53
[Credential-related source omitted] - Network accessline 60
"(KHTML, like Gecko) Chrome/126.0.0.0 Safari/537.36" ), "Referer": "https://quote.eastmoney.com/", - Network accessline 61
), "Referer": "https://quote.eastmoney.com/", } - Network accessline 62
"Referer": "https://quote.eastmoney.com/",
digital_oracle/providers/edgar.py
- Executable scriptline 1
Executable file - Network accessline 11
EDGAR_SUBMISSIONS_URL = "https://data.sec.gov/submissions" - Network accessline 12
EDGAR_TICKERS_URL = "https://www.sec.gov/files/company_tickers.json" - Network accessline 13
EDGAR_SEARCH_URL = "https://efts.sec.gov/LATEST/search-index" - Network accessline 81
# SEC EDGAR requires User-Agent with contact email to avoid 403. # See: https://www.sec.gov/os/accessing-edgar-data - Network accessline 82
# See: https://www.sec.gov/os/accessing-edgar-data - Access to secretsline 86
[Credential-related source omitted]
digital_oracle/providers/fear_greed.py
- Executable scriptline 1
Executable file - Network accessline 9
_URL = "https://production.dataviz.cnn.io/index/fearandgreed/graphdata" - Network accessline 36
"Accept": "application/json", "User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/124.0.0.0 Safari/537.36", "Referer": "https://edition.cnn.com/", - Network accessline 37
"User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/124.0.0.0 Safari/537.36", "Referer": "https://edition.cnn.com/", } - Network accessline 38
"Referer": "https://edition.cnn.com/",
digital_oracle/providers/kalshi.py
digital_oracle/providers/polymarket.py
digital_oracle/providers/prices.py
- Executable scriptline 1
Executable file
digital_oracle/providers/stooq.py
- Executable scriptline 1
Executable file
digital_oracle/providers/treasury.py
- Executable scriptline 1
Executable file - Network accessline 14
TREASURY_RATES_CSV_URL = ( "https://home.treasury.gov/resource-center/data-chart-center/interest-rates/daily-treasury-rates.csv" - Network accessline 15
"https://home.treasury.gov/resource-center/data-chart-center/interest-rates/daily-treasury-rates.csv" - Network accessline 17
FISCALDATA_BASE_URL = "https://api.fiscaldata.treasury.gov/services/api/fiscal_service/v1/accounting/od"
digital_oracle/providers/web.py
- Executable scriptline 1
Executable file - Network accessline 37
def fetch(self, url: str, *, headers: dict[str, str] | None = None) -> str: - Network accessline 56
def fetch(self, url: str, *, headers: dict[str, str] | None = None) -> str: - Network accessline 272
DDG_HTML_URL = "https://html.duckduckgo.com/html/" - Network accessline 391
html = self.http_client.fetch(query.url)
digital_oracle/providers/worldbank.py
digital_oracle/providers/yahoo.py
- Executable scriptline 1
Executable file
digital_oracle/providers/yfinance_provider.py
- Executable scriptline 1
Executable file
digital_oracle/proxy_pool.py
- Executable scriptline 1
Executable file - Network accessline 9
Configure with ``EASTMONEY_PROXIES`` / ``DIGITAL_ORACLE_PROXIES``, comma separated, e.g. ``http://user:pass@host:8080,http://host2:8080``. Direct - Network accessline 10
separated, e.g. ``http://user:pass@host:8080,http://host2:8080``. Direct - Access to secretsline 32
[Credential-related source omitted]
digital_oracle/snapshots.py
- Executable scriptline 1
Executable file
references/providers.md
- Network accessline 178
# 抓取页面正文 page = web.fetch_page("https://example.com/article") - Network accessline 179
page = web.fetch_page("https://example.com/article") - Network accessline 460
`EASTMONEY_HOST_COOLDOWN` 覆盖。 - **代理轮换**:设 `EASTMONEY_PROXIES`(逗号分隔,如 `http://user:pass@host:8080,http://host2:8080`)即可把出口分散到多个地址, - Network accessline 461
- **代理轮换**:设 `EASTMONEY_PROXIES`(逗号分隔,如 `http://user:pass@host:8080,http://host2:8080`)即可把出口分散到多个地址, 失败的代理冷却 120s,直连始终作为最后兜底。**默认为空**——公开免费代理既不可靠, - Network accessline 462
`http://user:pass@host:8080,http://host2:8080`)即可把出口分散到多个地址,
scripts/demo_deribit.py
- Executable scriptline 1
Executable file
scripts/demo_kalshi.py
- Executable scriptline 1
Executable file
scripts/demo_polymarket.py
- Executable scriptline 1
Executable file
scripts/demo_stooq.py
- Executable scriptline 1
Executable file
scripts/demo_treasury.py
- Executable scriptline 1
Executable file
scripts/regression_runner.py
tests/test_bis_provider.py
- Executable scriptline 1
Executable file
tests/test_cache_and_proxy.py
- Executable scriptline 1
Executable file - Network accessline 117
def test_direct_is_always_the_last_resort(self) -> None: pool = ProxyPool(proxies=("http://a:1", "http://b:2")) - Network accessline 118
pool = ProxyPool(proxies=("http://a:1", "http://b:2")) - Network accessline 121
def test_rotates_starting_point_across_calls(self) -> None: pool = ProxyPool(proxies=("http://a:1", "http://b:2", "http://c:3")) - Network accessline 122
pool = ProxyPool(proxies=("http://a:1", "http://b:2", "http://c:3")) - Network accessline 124
self.assertEqual(sorted(firsts), ["http://a:1", "http://b:2", "http://c:3"]) - Network accessline 126
def test_failed_proxy_is_demoted_below_healthy_ones(self) -> None: pool = ProxyPool(proxies=("http://a:1", "http://b:2")) - Network accessline 127
pool = ProxyPool(proxies=("http://a:1", "http://b:2")) - Network accessline 128
pool.mark_failure("http://a:1") - Network accessline 130
self.assertEqual(order[-1], "http://a:1") - Network accessline 132
def test_success_clears_the_cooldown(self) -> None: pool = ProxyPool(proxies=("http://a:1", "http://b:2")) - Network accessline 133
pool = ProxyPool(proxies=("http://a:1", "http://b:2")) - Network accessline 134
pool.mark_failure("http://a:1") - Network accessline 135
pool.mark_success("http://a:1") - Network accessline 138
def test_all_cooling_still_offers_them_rather_than_only_direct(self) -> None: pool = ProxyPool(proxies=("http://a:1", "http://b:2")) - Network accessline 139
pool = ProxyPool(proxies=("http://a:1", "http://b:2")) - Network accessline 140
pool.mark_failure("http://a:1") - Network accessline 141
pool.mark_failure("http://b:2") - Network accessline 147
[Credential-related source omitted] - Access to secretsline 147
[Credential-related source omitted] - Network accessline 148
try: self.assertEqual( proxies_from_env("_DO_TEST_PROXIES"), ("http://a:1", "http://b:2") - Network accessline 149
self.assertEqual( proxies_from_env("_DO_TEST_PROXIES"), ("http://a:1", "http://b:2") ) - Network accessline 150
proxies_from_env("_DO_TEST_PROXIES"), ("http://a:1", "http://b:2") - Access to secretsline 153
[Credential-related source omitted]
tests/test_cftc_provider.py
- Executable scriptline 1
Executable file
tests/test_cme_fedwatch_provider.py
- Executable scriptline 1
Executable file
tests/test_coerce.py
- Executable scriptline 1
Executable file
tests/test_coingecko_provider.py
- Executable scriptline 1
Executable file
tests/test_concurrent.py
- Executable scriptline 1
Executable file
tests/test_deribit_provider.py
- Executable scriptline 1
Executable file
tests/test_eastmoney_provider.py
- Executable scriptline 1
Executable file
tests/test_edgar_provider.py
- Executable scriptline 1
Executable file
tests/test_fear_greed_provider.py
- Executable scriptline 1
Executable file
tests/test_kalshi_provider.py
- Executable scriptline 1
Executable file
tests/test_polymarket_provider.py
- Executable scriptline 1
Executable file
tests/test_snapshots.py
- Executable scriptline 1
Executable file - Network accessline 46
response = client.get_json( "https://api.example.com/items", - Network accessline 47
"https://api.example.com/items", - Network accessline 52
replay = ReplayHttpClient(tmpdir) replayed = replay.get_json( "https://api.example.com/items", - Network accessline 53
replayed = replay.get_json( "https://api.example.com/items", params={"limit": 3, "active": True}, - Network accessline 54
"https://api.example.com/items", - Network accessline 61
envelope = json.loads(snapshot_files[0].read_text()) self.assertEqual(envelope["kind"], "json") self.assertEqual(envelope["request"]["url"], "https://api.example.com/items") - Network accessline 62
self.assertEqual(envelope["kind"], "json") self.assertEqual(envelope["request"]["url"], "https://api.example.com/items") self.assertEqual(envelope["request"]["params"]["active"], True) - Network accessline 63
self.assertEqual(envelope["request"]["url"], "https://api.example.com/items") - Network accessline 74
response = client.get_text( "https://api.example.com/history.csv", - Network accessline 75
"https://api.example.com/history.csv", - Network accessline 80
replay = ReplayHttpClient(tmpdir) replayed = replay.get_text( "https://api.example.com/history.csv", - Network accessline 81
replayed = replay.get_text( "https://api.example.com/history.csv", params={"symbol": "spy.us"}, - Network accessline 82
"https://api.example.com/history.csv", - Network accessline 93
) client.get_json( "https://api.example.com/quote", - Network accessline 94
client.get_json( "https://api.example.com/quote", params={"symbol": "BTC", "depth": 5}, - Network accessline 95
"https://api.example.com/quote", - Network accessline 100
self.assertEqual( replay.get_json( "https://api.example.com/quote", - Network accessline 101
replay.get_json( "https://api.example.com/quote", params={"depth": 5, "symbol": "BTC"}, - Network accessline 102
"https://api.example.com/quote", - Network accessline 110
replay = ReplayHttpClient(tmpdir) with self.assertRaises(SnapshotMissError): replay.get_json("https://api.example.com/missing", params={"id": 1}) - Network accessline 112
replay.get_json("https://api.example.com/missing", params={"id": 1})
tests/test_stooq_provider.py
- Executable scriptline 1
Executable file
tests/test_treasury_provider.py
- Executable scriptline 1
Executable file
tests/test_web_provider.py
- Executable scriptline 1
Executable file - Network accessline 32
def fetch(self, url: str, *, headers: dict[str, str] | None = None) -> str: - Network accessline 70
<div class="links_main links_deep result__body"> <h2 class="result__title"> <a rel="nofollow" class="result__a" href="https://example.com/page1"> - Network accessline 71
<h2 class="result__title"> <a rel="nofollow" class="result__a" href="https://example.com/page1"> IMF GDP Forecast 2026 - Network accessline 72
<a rel="nofollow" class="result__a" href="https://example.com/page1"> - Network accessline 74
</a> </h2> <a class="result__snippet" href="https://example.com/page1"> - Network accessline 75
</h2> <a class="result__snippet" href="https://example.com/page1"> The IMF projects global GDP growth of 3.2% in 2026. - Network accessline 76
<a class="result__snippet" href="https://example.com/page1"> - Network accessline 82
<div class="links_main links_deep result__body"> <h2 class="result__title"> <a rel="nofollow" class="result__a" href="https://example.com/page2"> - Network accessline 83
<h2 class="result__title"> <a rel="nofollow" class="result__a" href="https://example.com/page2"> World Economic Outlook - Network accessline 84
<a rel="nofollow" class="result__a" href="https://example.com/page2"> - Network accessline 86
</a> </h2> <a class="result__snippet" href="https://example.com/page2"> - Network accessline 87
</h2> <a class="result__snippet" href="https://example.com/page2"> Latest projections from the World Economic Outlook report. - Network accessline 88
<a class="result__snippet" href="https://example.com/page2"> - Network accessline 101
self.assertIn("IMF GDP Forecast", results[0]["title"]) self.assertEqual(results[0]["url"], "https://example.com/page1") - Network accessline 102
self.assertEqual(results[0]["url"], "https://example.com/page1") - Network accessline 136
result = provider.fetch_page("https://example.com") - Network accessline 138
self.assertEqual(result.url, "https://example.com") - Network accessline 151
result = provider.fetch_page(WebPageQuery(url="https://example.com", max_chars=100)) - Network accessline 160
result = provider.fetch_page("https://example.com") - Network accessline 175
WebSearchSnippet( title="IMF Forecast", url="https://imf.org/weo", - Network accessline 176
title="IMF Forecast", url="https://imf.org/weo", snippet="GDP growth 3.2%", - Network accessline 177
url="https://imf.org/weo", - Network accessline 180
WebSearchSnippet( title="World Bank Data", url="https://worldbank.org", - Network accessline 181
title="World Bank Data", url="https://worldbank.org", snippet="", - Network accessline 182
url="https://worldbank.org", - Network accessline 189
self.assertIn("IMF GDP", text) self.assertIn("[1] IMF Forecast", text) self.assertIn("https://imf.org/weo", text) - Network accessline 190
self.assertIn("[1] IMF Forecast", text) self.assertIn("https://imf.org/weo", text) self.assertIn("3.2%", text) - Network accessline 191
self.assertIn("https://imf.org/weo", text)
tests/test_worldbank_provider.py
- Executable scriptline 1
Executable file
tests/test_yahoo_provider.py
- Executable scriptline 1
Executable file
tests/test_yfinance_provider.py
- Executable scriptline 1
Executable file
How the signals fit together
Facts from a static read of the files at the pinned commit. They describe what the code does, not why.
Some files could not be read; the facts below still hold.
No combined signals at this commit.
Works with
| Agent | Status | Evidence | Install to |
|---|---|---|---|
| Claude Code | Compatible | Standard SKILL.md SKILL.md | .claude/skills/<skill-name>/ |
| Codex | Compatible | Standard SKILL.md SKILL.md | .agents/skills/<skill-name>/ |
| Cursor | Compatible | Standard SKILL.md SKILL.md | .cursor/skills/<skill-name>/ |
| Gemini CLI | Compatible | Standard SKILL.md SKILL.md | .gemini/skills/<skill-name>/ |
| GitHub Copilot | Compatible | Standard SKILL.md SKILL.md | .github/skills/<skill-name>/ |
| OpenCode | Compatible | Standard SKILL.md SKILL.md | .opencode/skills/<skill-name>/ |
- Native The repository ships a manifest, folder or frontmatter field for this agent.
- Compatible A standard SKILL.md that this agent can read.
- Unknown No evidence either way.
Derived automatically from paths, manifests and frontmatter. Not tested on each agent.
Explore alternatives and comparisons
Add this badge to your README
It updates every night and links to this page.
[](https://hotskills.dev/skill/komako-workshop-digital-oracle/)