Skip to main content

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-sdk from the Huxley repo's main branch during v1 development. Switches to a versioned PyPI pin once huxley-sdk is 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 tickers
  • compare_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_schema declared (secret string + array + enum — the three JSON-Schema shapes Huxley's PWA renders).
  • ctx.secrets for the API key (per-persona, <persona>/data/secrets/stocks/values.json).
  • ctx.config for 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


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

huxley_skill_stocks-0.1.0.tar.gz (13.5 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

huxley_skill_stocks-0.1.0-py3-none-any.whl (10.6 kB view details)

Uploaded Python 3

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

Hashes for huxley_skill_stocks-0.1.0.tar.gz
Algorithm Hash digest
SHA256 2e6e97005598a93349094b5a780c2adf9716ba8734ab40979a0ac116267d4a3a
MD5 c42bbd9f4c3492617a0d7deb487cd130
BLAKE2b-256 c4eab4dcd62ef239fb9e1a4c8ca3d072b5d8b9df0edad3cf32c7f5fbb14098cc

See more details on using hashes here.

File details

Details for the file huxley_skill_stocks-0.1.0-py3-none-any.whl.

File metadata

File hashes

Hashes for huxley_skill_stocks-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 78353cc89c330854b1c950627cd0d62bc7239e74bf233e3c6b8c88feefe0f2bd
MD5 7d377f983b1932a9a5159b2ca5855e66
BLAKE2b-256 0c1c6ea3e1c1f25cd1416588ef3f64facc33b134ff1890e3b2ec7f5d25400df3

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page