Voice-controlled stock quotes for Huxley via Alpha Vantage. Reference skill for the third-party authoring path.
Project description
huxley-skill-stocks
Voice-controlled stock quotes for Huxley, the voice agent framework. A reference skill demonstrating the third-party authoring path: own repo, PyPI distribution, config_schema form-rendering, ctx.secrets for API keys.
Status: Reference skill for Huxley T1.14 (skill marketplace v1). Built and tested against
huxley-sdkfrom the Huxley repo's main branch during v1 development. Switches to a versioned PyPI pin oncehuxley-sdkis published.
What it does
Three voice tools on top of the Alpha Vantage free tier:
get_stock_price(ticker)— "what's Apple stock at" / "how is TSLA doing"get_watchlist_summary()— "how's my watchlist" — summarizes the persona's configured tickerscompare_stocks(tickers)— "compare Apple and Microsoft" — short side-by-side
Install
Requirements: Python 3.13+ (matches Huxley's runtime).
# From a Huxley persona's runtime venv:
uv add huxley-skill-stocks
# Or, while developing against an unreleased huxley-sdk:
uv add "huxley-skill-stocks @ git+https://github.com/ma-r-s/huxley-skill-stocks"
The skill registers under the entry-point name stocks. The skill name in persona.yaml's skills: block, the per-persona secrets dir (<persona>/data/secrets/<name>/), and the entry-point key in pyproject.toml must all match.
Configure
Add to your persona's persona.yaml:
skills:
stocks:
watchlist: ["AAPL", "MSFT", "GOOG"]
currency: USD
# api_key lives in <persona>/data/secrets/stocks/values.json
Drop your Alpha Vantage API key in <persona>/data/secrets/stocks/values.json:
{
"api_key": "your-alpha-vantage-key"
}
Get a free key at alphavantage.co/support/#api-key — long-lived, no OAuth refresh.
Restart Huxley, press to talk: "what's Apple stock at?"
Why this skill exists
This is Huxley's canonical third-party reference skill — the worked example the authoring docs walk through. It's deliberately minimal but exercises every primitive a real third-party skill needs:
config_schemadeclared (secret string + array + enum — the three JSON-Schema shapes Huxley's PWA renders).ctx.secretsfor the API key (per-persona,<persona>/data/secrets/stocks/values.json).ctx.configfor plain config (watchlist, currency).- Standalone repo — proves the third-party authoring flow works end-to-end without dropping the skill into Huxley's
server/skills/tree. - No OAuth — Alpha Vantage uses a long-lived API key, so this skill doesn't drag token-refresh complexity into Huxley's v1 marketplace.
Development
uv sync
uv run ruff check src tests
uv run mypy src
uv run pytest
Tests use pytest-httpx to mock Alpha Vantage responses; no network in CI.
License
MIT.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file huxley_skill_stocks-0.1.0.tar.gz.
File metadata
- Download URL: huxley_skill_stocks-0.1.0.tar.gz
- Upload date:
- Size: 13.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.7.5
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
2e6e97005598a93349094b5a780c2adf9716ba8734ab40979a0ac116267d4a3a
|
|
| MD5 |
c42bbd9f4c3492617a0d7deb487cd130
|
|
| BLAKE2b-256 |
c4eab4dcd62ef239fb9e1a4c8ca3d072b5d8b9df0edad3cf32c7f5fbb14098cc
|
File details
Details for the file huxley_skill_stocks-0.1.0-py3-none-any.whl.
File metadata
- Download URL: huxley_skill_stocks-0.1.0-py3-none-any.whl
- Upload date:
- Size: 10.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.7.5
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
78353cc89c330854b1c950627cd0d62bc7239e74bf233e3c6b8c88feefe0f2bd
|
|
| MD5 |
7d377f983b1932a9a5159b2ca5855e66
|
|
| BLAKE2b-256 |
0c1c6ea3e1c1f25cd1416588ef3f64facc33b134ff1890e3b2ec7f5d25400df3
|