sn-da-excel-workflow
Excel 数据分析多步编排器。覆盖:(1) 读取多 Sheet Excel 文件并统计行数,(2) 大文件检测(≥10k 行自动 Parquet 优化),(3) 数据清洗(缺失值、文本标准化、无效字符),(4) 条件筛选与分类提取,(5) 跨 Sheet 统计聚合,(6) 导出 Excel/CSV…
需要把演示 / 幻灯片 / PPT / slides 做成单文件 HTML 动态 deck(动效、跨页过渡、键盘翻页、1280×720)时使用。本 skill 非入口:使用前必须先确认 sn-ppt-entry 与 sn-ppt-story 两个前置 skill 可用,依次执行 entry(建 DECK_DIR / task_pack.json)→ story(生成 outline.md)完成后才可开始;前置缺失或未完成时停止并回报,严禁绕过(如改用生图+手写 HTML 等方式)。
$ npx -y skills add OpenSenseNova/SenseNova-Skills --skill sn-ppt-dazzle --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
/sn-ppt-dazzleContext preview
The summary Claude sees to decide when to auto-load this skill.
需要把演示 / 幻灯片 / PPT / slides 做成单文件 HTML 动态 deck(动效、跨页过渡、键盘翻页、1280×720)时使用。本 skill 非入口:使用前必须先确认 sn-ppt-entry 与 sn-ppt-story 两个前置 skill 可用,依次执行 entry(建 DECK_DIR / task_pack.json)→ story(生成 outline.md)完成后才可开始;前置缺失或未完成时停止并回报,严禁绕过(如改用生图+手写 HTML 等方式)。
name: sn-ppt-dazzle description: 需要把演示 / 幻灯片 / PPT / slides 做成单文件 HTML 动态 deck(动效、跨页过渡、键盘翻页、1280×720)时使用。本 skill 非入口:使用前必须先确认 sn-ppt-entry 与 sn-ppt-story 两个前置 skill 可用,依次执行 entry(建 DECK_DIR / task_pack.json)→ story(生成 outline.md)完成后才可开始;前置缺失或未完成时停止并回报,严禁绕过(如改用生图+手写 HTML 等方式)。 metadata: project: SenseNova-Skills tier: 1 category: scene user_visible: false triggers: - "sn-ppt-dazzle" - "动态 HTML" - "动态演示" - "炫彩 deck" - "dazzle"
你要交付的不是一份"幻灯片",而是一场在浏览器里上演的**动态视觉演出**:持续运行的动态背景、每页的入场编排、页间的过渡特效、键盘可交互——同时排版严谨、内容真实、零控制台报错。
本 Skill 不是用户请求入口,不直接接收裸 query 或附件创建新任务。只接受 `sn-ppt-entry` 传入的绝对 `DECK_DIR`,并且必须已经存在:
任一条件不满足时停止并返回 `sn-ppt-entry` 补齐,不自行新建 deck 目录、不从 query 绕过 `sn-ppt-story`。 开始和恢复时都 **重新读取`read_file`磁盘上的当前 `outline.md`**,不得使用`sn-ppt-story` 的 write_file 返回内容或对话上下文中的 outline;`outline.md`是 Dazzle 的唯一内容输入并固定:
Dazzle 仍按本文后续六阶段决定风格 family、动态背景、版式、素材、动画和实现细节,但不得 合并、拆分、增删或重排 outline 页面,不得改变标题和核心结论的含义,不得恢复用户删除的 内容,也不得自行 Research 或补造事实。事实不足时停止相关页面并返回 Entry / Story。
`DECK_DIR` 只能取 `task_pack.deck_dir` 的绝对路径,所有任务产物都写入该目录。当前 Skill 目录只读并记为 `SKILL_ROOT`;references 和渲染脚本只从 `SKILL_ROOT` 读取。
只在现有阶段边界同步 `task_pack.json`,不改变后续阶段的执行内容:
完成后把绝对路径写入 `state.artifacts.plan`。
页号追加到 `state.artifacts.dynamic_pages_completed`。
`shots/contact_sheet.png` 的绝对路径分别写入 `state.artifacts.deck_html`、`shots`、 `render_manifest`、`contact_sheet`;把 `dynamic_html` 加入 `completed_stages`。全部页面通过时 写 `current_stage="complete"`、`status="completed"`;仍有已如实报告的缺陷时写 `status="partial"` 和 `last_error`,保留全部可用产物。
**必须先渲后看:只读代码不算自检。** 渲染统一用 bash 执行 skill 自带脚本:
python "$SKILL_ROOT/scripts/render_deck.py" "$DECK_DIR/deck.html" "$DECK_DIR/shots/" --page N # 渲染第 N 页 python "$SKILL_ROOT/scripts/render_deck.py" "$DECK_DIR/deck.html" "$DECK_DIR/shots/" --all # 全部页 + contact_sheet.png
成功时 stdout 每行一个 PNG 路径(告警以 `[console]/[static]/[blank]/[nav]` 前缀打在路径之前);渲染元数据写 `$DECK_DIR/shots/render.json`(console_errors / static_pages / blank_pages / 页数 / 导航方式)。截图后用 `vision_analyze` 查看。
**第一步必须是完整读取`read_file`当前 `outline.md`,不得先生成 plan.md 或 deck.html。** `task_pack.request.query` 只补充场景和用户明确风格偏好,不能覆盖 outline 的内容决定:
**第二步必须是写plan.md,不得先生成 deck.html。** 一次 write_file 写出完整规划,包含:
1. **场景判断**:本 deck 用于什么场景、庄重度档位(庄重/自由/题材)、动画密度档位、为何选这个 family——把适配理由写明白。 2. **设计系统**:family 名;精确 palette(`--bg / --ink / --accent / --accent-2` 的 hex);display + body 字体(含中文字体兜底);全局背景层方案(**CSS/Canvas-2D 程序化纹理 / 粒子流场 / shader 噪声 / 代码搭 3D 场景 / 每页多场景,按招牌视觉选一**——别条件反射默认某一种);通用过渡方案。
2b. **招牌视觉(必填一行)**:本 deck 的招牌手法 + 为何契合题材/场景;选了 3D/沉浸/shader 要写明用什么搭。**定了就必须真做出来**(见 §5 招牌兑现)。 3. **页序表**:**与 `outline.md` 的页面逐页一一对应**,每页一行 `NN | 页型 | 一句话内容 | 本页 fancy 手法 | 版面骨架`;NN、顺序、一句话结论必须服从 outline。页型从:封面 / 议程 / 观点 / 数据 / 对比 / 流程 / 案例 / 架构 / 时间线 / 总结 中选,相邻页不重复同一页型;fancy 手法不要超过 2 页雷同。**「版面骨架」一栏先想清楚这页怎么分区、主视觉摆哪、余量留给谁**(如"左叙事右大图 / 居中单 hero / 四等卡一行 / 满屏场景 / 上标题下两栏对比")——分几区不限,但要让留白是有意的构图、不是排完剩下的边角料(见 §7 布局与留白);并列项预想好怎么等高对齐。布局在 plan 里想透,初稿就少返工。 4. **素材清单**(如需):逐页判断"摄影刚需"(§6),需要的写出生图 prompt 草稿与用途。**同组并列对象(N 枚卡片 / 一排同类)整组决策**:把 N 个成员列全,整组选"全真实图"或"全代码绘制"——选真图就 N 个各列一行,绝不能页序表写 4 枚卡片、清单只列 2 张(见 §6)。
规划自检:页数、页序、标题、核心结论和依据是否逐页对应当前 outline?palette 是不是精确 hex?有没有滑回暖米黄/奶油底?页型有变化吗?内容是否只使用 outline 已支持的真实主体与真实数据、没有占位词或新增事实?
按 §6 的纪律生图:生成 → `vision_analyze` 核对(内容对不对 / 色调搭不搭 / 有无文字水印)→ 不合格改 prompt 重生,**绝不硬用**;确切路径记入 plan.md。没有摄影刚需的 deck 跳过本阶段(多数 deck 应该跳过)。
一次 write_file 写出**完整可运行但页面为空**的 `$DECK_DIR/deck.html` 骨架(结构契约见 §4):
**硬性纪律:骨架这一次 write_file 里,除封面外的 section 必须是空的(只有注释)。不要在骨架阶段就把多页内容一次性写满**——那会让一整批未经单页验证的页面同时落地,错误跨页累积、后面更难收拾,也丢掉了逐页"渲染即验证"的全部价值。
然后 smoke 验证:`render --page 1` + 看图——封面可见、页码/进度条在、背景层在动(看 stdout 的 [static] 与 [console])、零报错。骨架不过关先修骨架,再进入逐页填充。
按页序**一页一页**来,每页走完一个完整的"填充→渲染→看图"小循环再进入下一页:
1. `edit` 把**该一页*
The SenseNova model family plugs directly into agent runtimes such as OpenClaw and hermes-agent, with the skills in this repository extending the models with concrete, end-to-end office capabilities.
Repo: OpenSenseNova/SenseNova-Skills
Excel 数据分析多步编排器。覆盖:(1) 读取多 Sheet Excel 文件并统计行数,(2) 大文件检测(≥10k 行自动 Parquet 优化),(3) 数据清洗(缺失值、文本标准化、无效字符),(4) 条件筛选与分类提取,(5) 跨 Sheet 统计聚合,(6) 导出 Excel/CSV…
当Excel文件总行数超过1万行时,通过转换为Parquet格式提升读取性能,提取目标指标并计算最大值,最后将结果输出为Excel并对特定行进行高亮标注。
根据Excel总行数自动切换Parquet加速读取,计算特定维度的时间序列平均值,并使用openpyxl输出带有条件格式(如低于均值标绿)和自定义样式的分析报告。
根据数据规模动态选择处理策略,对多表数据进行合并、统计筛选,并利用 openpyxl 实现关键指标的自动化样式高亮与格式化导出。