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. Not yet published to PyPI; APIs may still shift before the first tagged release.

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 (filled out in upcoming phases)
docs/  examples/            guides + reference app (in progress)

Active scaffolding lives in streamsnow/ (templates under streamsnow/_templates/). The skills/, agents/, hooks/, docs/, and examples/ directories are placeholders being populated phase by phase.

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.

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.1.0.tar.gz (99.7 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.1.0-py3-none-any.whl (58.9 kB view details)

Uploaded Python 3

File details

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

File metadata

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

File hashes

Hashes for streamsnow-0.1.0.tar.gz
Algorithm Hash digest
SHA256 1ccc9c027c6e49ebce9929db4d8f24dc8a9b3dd91337bf4f3072b829b3797ac3
MD5 2acc355713c4c63edf6dae4f3823d67b
BLAKE2b-256 03d953b94db2ff252afefebb91c01e03f909d2b9ad02c36f03ce575bd559d448

See more details on using hashes here.

Provenance

The following attestation bundles were made for streamsnow-0.1.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.1.0-py3-none-any.whl.

File metadata

  • Download URL: streamsnow-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 58.9 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.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 27ac50333df9625188ef32f9e141ad92b99bd705ad50e84f210c29b2c6249991
MD5 7249449672d26ce9e2a2b723d5621ae0
BLAKE2b-256 6d950cea881b560f81f928c03e4e9e38369ddebbc9d2db87f52ca9b54c4c76b3

See more details on using hashes here.

Provenance

The following attestation bundles were made for streamsnow-0.1.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