Skip to main content

Open-source toolkit for building, governing, and shipping Streamlit-in-Snowflake apps with Claude Code

Project description

StreamSnow ❄️

CI PyPI Python License: MIT Claude Code plugin

An open-source toolkit for building, governing, and shipping Streamlit-in-Snowflake apps with Claude Code.

Scaffold a governed monorepo, build dashboards inside enforced data-governance guardrails, and deploy them to Snowflake — without learning the rules by hand.


Status: alpha, functional. The CLI (configure / init / new / validate-app / preview / check / deploy-sql / deploy-setup) and the Claude Code plugin (14 skills + shared recipes) are implemented and CI-green for both runtimes and both deploy sources. Published on PyPI as v0.1.0 (uvx streamsnow / pip install streamsnow); APIs may still evolve toward 1.0.

What it is

StreamSnow is a hybrid of two things that work together:

  1. A streamsnow CLI (PyPI) — scaffolds a governed Streamlit-in-Snowflake monorepo, runs an interactive setup wizard, and vendors the validation tools, CI, pre-commit hooks, and branding your repo needs.
  2. A Claude Code plugin (marketplace) — ships the skills, subagents, and hooks that turn Claude Code into a domain expert for this stack: /new-app, /preview-app, /validate-app, /ship-app, /start-app, and more.

Think a Claude Code skill pack fused with an installable system + setup. The CLI gives you the substrate; the plugin gives Claude the playbook. A single streamsnow.config.yaml is the source of truth both read from.

Why

Building Streamlit apps on Snowflake well means getting a hundred small things right: caching with TTLs, parameterized SQL that survives the deployed Go driver, runtime selection (container vs. warehouse), schema access guardrails, a deploy pipeline, branding, and review discipline. StreamSnow encodes those as executable guardrails — pre-commit + CI gates, scaffolding templates, and Claude Code skills — so every developer (and every Claude session) follows the same rules and ships safely.

Two things you choose

StreamSnow treats two axes as first-class, configurable options:

Axis Options
Runtime Container (default — cheaper, full PyPI, modern Streamlit) or Warehouse (legacy — instant start, Anaconda channel)
Deploy source Stage-copy (default — CI uploads to an internal stage) or Snowflake GIT REPOSITORY (Snowflake pulls from your Git repo)

Quickstart (target experience)

# 0. Check your machine has the prerequisites (Python 3.11+, uv, git, snow CLI)
uvx streamsnow doctor

# 1. Configure your Snowflake environment + scaffold a governed repo with a starter app
uvx streamsnow init          # runs the config wizard, then scaffolds
#    (or split it: `streamsnow configure` to set up streamsnow.config.yaml first,
#     then `streamsnow init` to scaffold)

# 2. Connect to Snowflake + create local preview secrets
snow connection add --connection-name <name> --account <locator> \
  --user <you> --authenticator externalbrowser   # init prints the exact command
cp apps/<slug>/.streamlit/secrets.toml.example apps/<slug>/.streamlit/secrets.toml

# 3. Add the Claude Code plugin (inside Claude Code)
/plugin marketplace add kyle-chalmers/streamsnow
/plugin install streamsnow@streamsnow

# 4. Build, preview, validate, ship
streamsnow new marketing campaign-dashboard   # or /new-app
streamlit run apps/marketing-campaign-dashboard/streamlit_app.py
#    /preview-app  ->  /validate-app  ->  /ship-app

How it's organized

streamsnow/            the PyPI package — CLI, config, policy, scaffolder, tools
  ├── cli.py           configure / init / new / doctor / check
  ├── config.py        typed + validated streamsnow.config.yaml model
  ├── policy.py        schema allow/deny single source of truth
  ├── scaffolder.py    renders a governed repo from config
  ├── _templates/      the Jinja scaffold templates (repo/ + app/)
  └── tools/           governance checks (e.g. check_schema_refs)
.claude-plugin/        Claude Code plugin manifest + marketplace
skills/  agents/  hooks/   Claude Code plugin surface (skills + SessionStart hook)
docs/  examples/            guides + a runnable no-Snowflake example app

Active scaffolding lives in streamsnow/ (templates under streamsnow/_templates/).

The streamsnow Python package is the single source of truth for tool logic: the CLI, the Claude Code plugin, pre-commit, and CI all call the same code — one implementation, many consumers.

Documentation

  • Getting started — run the example with no Snowflake, then scaffold and preview your own governed app.
  • Data discovery — find tables and wire queries inside the schema-access guardrails.
  • Deploying — ship apps to Snowflake on merge, for both deploy sources.
  • Deploy setup — the one-time Snowflake objects and CI secrets the pipeline needs.

License

MIT © Kyle Chalmers

StreamSnow is an independent open-source project and is not affiliated with or endorsed by Snowflake Inc., Streamlit, or Anthropic.

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

streamsnow-0.2.0.tar.gz (116.6 kB view details)

Uploaded Source

Built Distribution

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

streamsnow-0.2.0-py3-none-any.whl (63.2 kB view details)

Uploaded Python 3

File details

Details for the file streamsnow-0.2.0.tar.gz.

File metadata

  • Download URL: streamsnow-0.2.0.tar.gz
  • Upload date:
  • Size: 116.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for streamsnow-0.2.0.tar.gz
Algorithm Hash digest
SHA256 5c78077c69c219907db047b0a07824812d6efc23ea878bb903c14e3305fb7db9
MD5 e0bbc5531215c873a2610766797c407a
BLAKE2b-256 89d01f1e304c699da32a4cf62b25743779b28c405422679198e940eea6c18bd6

See more details on using hashes here.

Provenance

The following attestation bundles were made for streamsnow-0.2.0.tar.gz:

Publisher: publish.yml on kyle-chalmers/streamsnow

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file streamsnow-0.2.0-py3-none-any.whl.

File metadata

  • Download URL: streamsnow-0.2.0-py3-none-any.whl
  • Upload date:
  • Size: 63.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for streamsnow-0.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 11fa3584bdc818b483f35e789f98ba678a4a3d0d9a1fc213b9cf7bbf9aa5f4ee
MD5 e65a8fba1aa94138d172b1059f64aebb
BLAKE2b-256 af43af96cb9c324eb438e6b711932b7cf9ce6011758575ac2bd735a8239e712b

See more details on using hashes here.

Provenance

The following attestation bundles were made for streamsnow-0.2.0-py3-none-any.whl:

Publisher: publish.yml on kyle-chalmers/streamsnow

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

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