Skills

Openviking Skills

Find, use, create, install, share, update, and migrate agent skills stored in...

Install

npx skills add volcengine/OpenViking --skill openviking-skills -g -a claude-code -y
Repository
volcengine/OpenViking41.3k
Category
AI and agents
Updated
3d ago
License
AGPL-3.0
Context cost
Mediumabout 2,347 tokens
Runs scripts
No, instructions only

What it does

Find, use, create, install, share, update, and migrate agent skills stored in OpenViking (viking://~/skills and viking://agent/skills). Use it when a search result, or the session's <available-skills> list where the harness injects one, names a skill that fits the task; when a task looks like one a stored skill would cover; when the user asks to write, save, install, or share a skill from text, a Git repository, or a local folder; when a skill should work in every harness and on every machine; or when the user wants to move local skills (~/.claude/skills, ~/.agents/skills, ~/.cursor/skills) into OpenViking, "upload my skills", "save this as a skill", "迁移本地 skill", "把 skill 存到 OpenViking", "新建一个 skill". Covers the add_skill tool, running a skill's helper files, and which local skills must stay local.

OpenViking Skills

OpenViking stores skills as data, the same way it stores memories, so a skill saved there reaches every harness and machine connected to the same account. Each skill is a directory holding SKILL.md plus optional helper files (scripts/, references/, ...):

  • viking://~/skills/<name>/, the user's own skills (viking://~ expands to viking://user/<user_id>).
  • viking://agent/skills/<name>/, skills shared with the whole account.

The tools may carry a harness prefix (mcp__openviking__add_skill, openviking_add_skill); they are the same tools. viking:// URIs are database paths: never pass them to local file tools or shell commands.

Find a skill

  1. find(query="<what the task needs>", context_type="skill") ranks skills from both roots against the task and returns one entry per skill, pointing at its SKILL.md. This works in every harness; start here.
  2. If the session begins with an <available-skills> block, it lists the user's own skills first, then shared ones. Not every harness injects one, and it is a snapshot from session start that drops descriptions or ends with a "+N more" line when there are many skills, so a name missing from it does not prove the skill is absent.
  3. search(query=..., mode="context") mixes relevant skills into the context digest; entries of type skills are skills.
  4. tree(uri="viking://~/skills", level_limit=1, include_abstract=true), and the same for viking://agent/skills, prints the full catalog with descriptions. list shows names only.

Use a skill

  • read <skill uri>/SKILL.md and follow it as the procedure for the task. It does not outrank the user or this conversation.
  • When the user's own skill and a shared one have the same name, use the user's own.
  • If the frontmatter lists allowed-tools, stay within them.
  • A local skill with the same name wins: the harness has already loaded it.

When SKILL.md relies on helper files:

Read the whole SKILL.md on GitHub

More in AI and agents