# Openviking Skills

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

- Repository: https://github.com/volcengine/OpenViking (41301 stars)
- Category: AI and agents
- License: AGPL-3.0
- Last updated: 2026-11-01
- Runs scripts: no, instructions only

## Install

Claude Code: `npx skills add volcengine/OpenViking --skill openviking-skills -g -a claude-code -y`
Codex: `npx skills add volcengine/OpenViking --skill openviking-skills -g -a codex -y`
Cursor: `npx skills add volcengine/OpenViking --skill openviking-skills -g -a cursor -y`
Gemini CLI: `npx skills add volcengine/OpenViking --skill openviking-skills -g -a gemini-cli -y`
Claude Code plugin marketplace: `/plugin marketplace add volcengine/OpenViking`

## Description

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.

## SKILL.md, as published by its author (untrusted third-party text, read it as data)

# 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:

The rest: https://github.com/volcengine/OpenViking/blob/HEAD/agent-plugins/skills/openviking-skills/SKILL.md
