Install any skill in seconds. Free to start, no credit card required.
Get Started Free →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.
.claude/skills/opensensenova-sn-update/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-08 | ✗→✓ | ▲ Improved | 69% | 0% |
| case-02 | ✗→✓ | ▲ Improved | 102% | 0% |
| case-04 | ✗→✓ | ▲ Improved | 94% | 0% |
| case-07 | ✗→✓ | ▲ Improved | 25% | 0% |
| case-12 | ✗→✓ | ▲ Improved | -5% | 0% |
Refresh installed sn-* skills from upstream SenseNova-Skills.
sn-* skill upstream.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.
origin differs from the requested URL,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:
textgit -C <cache> log -1 --format=%H -- skills/<skill-name>
.sn-version marker: one-line file inside the installed skillholding the SHA from its last install.
.sn-release marker (fallback): one-line file holding theupstream tag name. Compare against git describe --tags --abbrev=0.
version: field in SKILL.md frontmatter: parse fromYAML 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":
<agent-skills>/<skill-name>/ into asingle timestamped backup bucket shared by all skills in this run: ~/.<agent>/skills_backup/<UTC-timestamp>/<skill-name>/ (e.g. 2026-04-30T15-29-07Z).
<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.
.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:
textUpdated (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/
Backup: when nothing was backed up.abc1234 → def5678) only if the user asks for detail.~/.<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.
sn-update updating itself — fine; the new copy takes effect onthe next invocation.
| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-08 | fail→pass | 5,736 | 2,622 | -54% | 1 | 1 | 0% | 1,026 | 1,730 | +69% | 0 | 0 | — |
case-01 | fail→fail | 6,360 | 7,970 | +25% | 1 | 1 | 0% | 1,121 | 1,725 | +54% | 0 | 0 | — |
case-02 | fail→pass | 8,951 | 11,047 | +23% | 1 | 1 | 0% | 1,572 | 3,175 | +102% | 0 | 0 | — |
case-03 | fail→fail | 21,331 | 10,665 | -50% | 1 | 1 | 0% | 2,523 | 1,965 | -22% | 0 | 0 | — |
case-04 | fail→pass | 6,503 | 2,706 | -58% | 1 | 1 | 0% | 912 | 1,766 | +94% | 0 | 0 | — |
case-05 | pass→fail | 3,717 | 6,844 | +84% | 1 | 1 | 0% | 632 | 2,597 | +311% | 0 | 0 | — |
case-06 | pass→pass | 8,849 | 7,809 | -12% | 1 | 1 | 0% | 1,140 | 2,905 | +155% | 0 | 0 | — |
case-07 | fail→pass | 13,610 | 2,971 | -78% | 1 | 1 | 0% | 1,478 | 1,848 | +25% | 0 | 0 | — |
case-09 | fail→fail | 6,850 | 8,141 | +19% | 1 | 1 | 0% | 950 | 1,812 | +91% | 0 | 0 | — |
case-10 | fail→fail | 7,587 | 5,800 | -24% | 1 | 1 | 0% | 988 | 2,209 | +124% | 0 | 0 | — |
case-11 | fail→fail | 6,184 | 3,278 | -47% | 1 | 1 | 0% | 1,124 | 1,701 | +51% | 0 | 0 | — |
case-12 | fail→pass | 12,888 | 6,648 | -48% | 1 | 1 | 0% | 2,357 | 2,231 | -5% | 0 | 0 | — |
case-13 | fail→pass | 12,873 | 6,541 | -49% | 1 | 1 | 0% | 2,230 | 2,186 | -2% | 0 | 0 | — |
case-14 | pass→pass | 14,193 | 3,929 | -72% | 1 | 1 | 0% | 1,928 | 2,044 | +6% | 0 | 0 | — |
case-15 | fail→pass | 15,072 | 5,907 | -61% | 1 | 1 | 0% | 2,077 | 2,082 | +0% | 0 | 0 | — |
case-16 | fail→pass | 11,009 | 4,853 | -56% | 1 | 1 | 0% | 2,171 | 2,347 | +8% | 0 | 0 | — |
case-17 | fail→fail | 10,696 | 4,813 | -55% | 1 | 1 | 0% | 1,819 | 2,082 | +14% | 0 | 0 | — |
case-18 | fail→pass | 16,370 | 2,689 | -84% | 1 | 1 | 0% | 2,930 | 1,706 | -42% | 0 | 0 | — |
case-19 | fail→fail | 5,120 | 3,006 | -41% | 1 | 1 | 0% | 920 | 1,754 | +91% | 0 | 0 | — |
case-20 | fail→pass | 5,943 | 2,595 | -56% | 1 | 1 | 0% | 1,032 | 1,789 | +73% | 0 | 0 | — |
case-21 | pass→pass | 12,357 | 4,403 | -64% | 1 | 1 | 0% | 1,776 | 2,170 | +22% | 0 | 0 | — |
case-22 | pass→pass | 14,476 | 7,614 | -47% | 1 | 1 | 0% | 1,920 | 2,713 | +41% | 0 | 0 | — |
DecimalAI ran this skill against gemini-3.6-flash twice over the same eval suite — once with the skill loaded and once without — and compared the two runs case by case. 22 cases were attempted, and 19 counted toward the lift figure. The other 3 produced results that are not comparable between the two arms, so they are excluded from the headline rather than averaged into it. The headline lift of +41 percentage points is the difference between those two pass rates over the 19 comparable cases. 3 cases got worse with the skill loaded, and they are included in that figure.
Without the skill loaded, the model failed this case. With it loaded, the same prompt on the same model passed. This is one improved case from the latest verified run; every case, including any that regressed, is in the table above.
Other measured skills in the registry, with their headline benchmark lift.