| Update SenseNova Skills (the sn-* bundle) inside an OpenClaw or hermes-agent 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.
npx skills add https://github.com/OpenSenseNova/SenseNova-Skills --skill sn-update
Refresh installed sn-* skills from upstream
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:
git -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:
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/
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.
Create new skills, modify and improve existing skills, and measure skill performance. Use when users want to create a skill from scratch, edit, or optimize an existing skill, run evals to test a skill, benchmark skill performance with variance analysis, or optimize a skill's description for better triggering accuracy.
Guide for creating effective skills. This skill should be used when users want to create a new skill (or update an existing skill) that extends Claude's capabilities with specialized knowledge, workflows, or tool integrations.
Guide for creating effective skills. This skill should be used when users want to create a new skill (or update an existing skill) that extends Claude's capabilities with specialized knowledge, workflows, or tool integrations.
Replace with description of the skill and when Claude should use it.
Use when facing 2+ independent tasks that can be worked on without shared state or sequential dependencies
This skill should be used when the user wants to "create a skill", "add a skill to plugin", "write a new skill", "improve skill description", "organize skill content", or needs guidance on skill structure, progressive disclosure, or skill development best practices for Claude Code plugins.
Helps users discover and install agent skills when they ask questions like "how do I do X", "find a skill for X", "is there a skill that can...", or express interest in extending capabilities. This skill should be used when the user is looking for functionality that might exist as an installable skill.
Use when creating new skills, editing existing skills, or verifying skills work before deployment
Take opensensenova/sn-update from the repository into ~/.claude/skills for personal
use, or into .claude/skills inside a project.
The agent identifies a skill by the name field in its header. Two skills with the
same name cannot sit side by side — one of them will be ignored.