dataapp-dev_skill

This skill helps you develop robust Keboola Streamlit data apps by validating data structures, building SQL-first queries, and verifying with Playwright.
  • Python

7

GitHub Stars

6

Bundled Files

2 months ago

Catalog Refreshed

4 months ago

First Indexed

Readme & install

Copy the install command, review bundled files from the catalogue, and read any extended description pulled from the listing source.

Installation

Preview and clipboard use veilstrat where the catalogue uses aiagentskills.

npx veilstrat add skill keboola/ai-kit --skill dataapp-dev

  • best-practices.md13.0 KB
  • QUICKSTART.md8.1 KB
  • SKILL.md16.0 KB
  • templates.md28.4 KB
  • validation-checklist.md10.1 KB
  • workflow-guide.md17.8 KB

Overview

This skill is an expert assistant for developing Streamlit data apps targeted for Keboola deployment. It enforces a Validate → Build → Verify workflow, favors SQL-first architecture, and ensures parity between local and Keboola production environments. The goal is robust, maintainable dashboards that scale with workspace query performance.

How this skill works

Before any code changes, it validates tables, schemas, and sample data using Keboola MCP to avoid assumptions. During build, it guides creating a centralized data access layer, reusable SQL WHERE clause generators, session-state-safe filters, and modular page code. After changes, it verifies functionality and UI using Playwright MCP to navigate the app, test interactions, and capture screenshots.

When to use it

  • Building a new Streamlit dashboard for deployment in Keboola.
  • Adding or modifying global filters that affect multiple pages.
  • Refactoring data loading to follow SQL-first patterns and caching.
  • Debugging filter logic, session state issues, or query failures.
  • Verifying app visuals and interactions before committing changes.
  • Preparing code to run identically in local and Keboola environments.

Best practices

  • Always validate data structures first with Keboola MCP (get project info, table schema, sample queries).
  • Push computation to the database; write aggregation SQL, avoid large in-memory DataFrames.
  • Centralize data access in utils/data_loader.py and cache queries with @st.cache_data(ttl=300).
  • Use fully qualified table names and quote identifiers per SQL dialect discovered from project info.
  • Initialize and namespace st.session_state keys to avoid conflicts across pages and widgets.
  • Verify app behavior with Playwright: start app, navigate, interact with filters, and take screenshots before committing.

Example use cases

  • Add a global user_type filter: validate column values, implement get_user_type_filter_clause(), add sidebar control, import and apply across pages.
  • Create a trends page: build SQL aggregation in data_loader, cache results, render Plotly line chart in page module.
  • Fix broken filter: use MCP to confirm column names/types, adjust WHERE clause generator, run Playwright checks to confirm UI updates.
  • Optimize slow page: move group-by and aggregations into SQL, reduce transferred rows, verify metrics match after change.
  • Prepare repo for deployment: replace local secrets lookups with environment fallbacks and test parity locally and in Keboola.

FAQ

Always follow Validate → Build → Verify: validate schemas with Keboola MCP, implement changes in code following SQL-first and modular patterns, then verify via Playwright.

How do I avoid session state conflicts?

Use unique st.session_state keys for global versus local widgets (e.g., local_user_type_filter) and initialize defaults before rendering controls.

Which environment differences should I handle?

Read credentials from environment variables first and fall back to streamlit secrets for local dev. Avoid local file access and rely on fully qualified table names.

Built by
VeilStrat
AI signals for GTM teams
© 2026 VeilStrat. All rights reserved.All systems operational