sn-da-excel-workflow
Excel 数据分析多步编排器。覆盖:(1) 读取多 Sheet Excel 文件并统计行数,(2) 大文件检测(≥10k 行自动 Parquet 优化),(3) 数据清洗(缺失值、文本标准化、无效字符),(4) 条件筛选与分类提取,(5) 跨 Sheet 统计聚合,(6) 导出 Excel/CSV…
Update SenseNova Skills (the sn-* bundle) inside an OpenClaw or hermes-agent install. ALWAYS use this skill when the user says any of: "update SenseNova skills", "update SN skills", "更新 sensenova skills", "更新 sn skills", "刷新 sn-*", "升级 sn-* skills", or names a specific sn-*
$ npx -y skills add OpenSenseNova/SenseNova-Skills --skill sn-update --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
/sn-updateContext preview
The summary Claude sees to decide when to auto-load this skill.
Update SenseNova Skills (the sn-* bundle) inside an OpenClaw or hermes-agent install. ALWAYS use this skill when the user says any of: "update SenseNova skills", "update SN skills", "更新 sensenova skills", "更新 sn skills", "刷新 sn-*", "升级 sn-* skills", or names a specific sn-*
name: sn-update description: | Update SenseNova Skills (the sn-* bundle) inside an OpenClaw or hermes-agent install. ALWAYS use this skill when the user says any of: "update SenseNova skills", "update SN skills", "更新 sensenova skills", "更新 sn skills", "刷新 sn-*", "升级 sn-* skills", or names a specific sn-* skill to update (e.g. "更新 sn-ppt-standard", "refresh sn-image-base"). Default scope is the whole sn-* bundle; if the user names specific skills, update ONLY those. metadata: project: SenseNova-Skills tier: 1 category: meta user_visible: true triggers: - "sn-update" - "更新 sn" - "更新 sensenova" - "update sn skills" - "update SN skills" - "更新 sn skills" - "刷新 sn-*" - "刷新 sn skills" - "更新 sn-ppt-standard" - "refresh sn-image-base" - "update sensenova skills"
Refresh installed `sn-*` skills from upstream [SenseNova-Skills](https://github.com/OpenSenseNova/SenseNova-Skills).
---
---
Check which directories exist:
| `~/.openclaw/skills/` | `~/.hermes/skills/` | Target | |---|---|---| | exists | absent | openclaw | | absent | exists | hermes | | exists | exists | **ask the user** — never silently dual-write | | absent | absent | no install found, stop |
---
Persistent cache at `~/.cache/sn-update/repo/`. Default URL: `https://github.com/OpenSenseNova/SenseNova-Skills.git`. User may override with a fork URL.
clone with `--filter=blob:none --no-checkout`, then sparse-checkout only the selected `skills/<name>` paths before copying them. `--filter=blob:none` alone does **not** keep the cache small if the full worktree is checked out; that checkout will still download most or all needed blobs. It still preserves history metadata for SHA queries.
re-apply sparse-checkout for only the requested `skills/<name>` paths before copying. If updating the whole `sn-*` bundle, expect most/all skill blobs to be downloaded.
delete and re-clone.
---
For each skill, pick the highest-precedence signal present on **both** sides (installed + upstream); equal → skip, differ → install.
Upstream "version" is the per-subtree commit SHA — using repo HEAD would mark unrelated skills as stale every time:
git -C <cache> log -1 --format=%H -- skills/<skill-name>
holding the SHA from its last install.
upstream tag name. Compare against `git describe --tags --abbrev=0`.
YAML on both sides, but only for forks or skills that explicitly add this field. If either side lacks it, C does not apply.
Always write `.sn-version` on install so future runs can use A.
---
For each skill flagged "install":
1. **Move** (not copy) any existing `<agent-skills>/<skill-name>/` into a single timestamped backup bucket shared by all skills in this run: `~/.<agent>/skills_backup/<UTC-timestamp>/<skill-name>/` (e.g. `2026-04-30T15-29-07Z`). 2. **Copy** `<cache>/skills/<skill-name>/` → `<agent-skills>/<skill-name>/`. **Never symlink** (`ln -s`) from the cache. The cache lives under `~/.cache/` with permissions the agent runtime may not be able to traverse, and some runtimes refuse to load skills resolved through symlinks. Always do a real recursive copy so the installed tree is self-contained and owned by the agent skills dir. 3. **Write `.sn-version`** with the upstream subtree SHA inside the new copy.
If the bucket ends up empty (all targets were fresh installs), remove it.
The backup tree is a **sibling** of `skills/`, never a `.bak` folder inside it — most agent runtimes scan the whole `skills/` directory and would pick up stale duplicates.
---
After every run, prune the per-agent backup root to **at most 3** buckets. Timestamps sort lexicographically; keep the newest 3, delete the rest. Run this even when the current run produced no backup of its own.
---
Group by status, keep it short:
Updated (3): sn-ppt-standard, sn-image-base, sn-deep-research Already up-to-date (5): sn-ppt-creative, sn-ppt-doctor, ... Backup: ~/.openclaw/skills_backup/2026-04-30T15-29-07Z/
---
`~/.<agent>/skills_backup/` if they want to roll back.
push to their agent install. Proceed normally; this skill only touches the cache and the agent install dirs, never the dev checkout.
the next invocation.
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 实现关键指标的自动化样式高亮与格式化导出。