用途:该技能用于构建、修改和调试部署在 Keboola 上的 Streamlit 数据应用与仪表板,目标是在本地开发与 Keboola 生产环境中都能稳定运行。
核心工作流(必须遵循):第一阶段 VALIDATE,写代码前用 Keboola MCP 校验数据假设:mcp__keboola__get_project_info 获取项目上下文(SQL 方言、可用数据源、项目配置);mcp__keboola__get_table 检查列名、数据类型、全限定表名和主键;mcp__keboola__query_data 查询样例数据、验证筛选条件和 SQL 语法。第二阶段 BUILD,采用 SQL 优先架构:集中式数据访问层 utils/data_loader.py,筛选条件函数,查询使用 @st.cache_data(ttl=300) 缓存,使用全限定表名,WHERE 子句用 ' AND '.join 拼接。第三阶段 VERIFY,用 Playwright MCP 打开 http://localhost:8501,等待页面加载、截图、点击筛选、逐页检查错误与指标。
主要能力与架构原则:SQL 优先(聚合下推数据库,避免把大数据集载入 Python);环境一致性(本地用 .streamlit/secrets.toml,生产用环境变量,代码中 os.environ.get('KBC_URL') or st.secrets.get("KBC_URL") 双通道);模块化设计(streamlit_app.py 入口与全局筛选、utils/data_loader.py 数据访问、page_modules/*.py 页面逻辑);会话状态管理(默认值初始化、跨页筛选保持、变更后 st.rerun())。
使用方式与常见模式:新增全局筛选需在 data_loader.py 加 get_filter_clause(),在侧边栏加 radio 控件,在所有页面模块导入并更新 SQL;新增指标按页面模板编写指标查询与图表。
限制与注意事项:需具备 Keboola MCP、Playwright MCP、读写编辑与 Bash 工具访问;必须先确认 SQL 方言(Snowflake/BigQuery 语法不同),标识符加引号,处理好 NULL 与空 DataFrame;避免变量名和会话状态键冲突;不得跳过校验与可视化验证。更多细节见技能目录中的 best-practices.md、workflow-guide.md、templates.md。