
Openviking
Search Volcengine OpenViking–indexed external repos and libraries with scoped `ov` commands after checking your local tree.
Overview
OpenViking is an agent skill most often used in Build (also Idea research) that searches indexed external code repositories via scoped `ov` CLI commands under the `viking://` filesystem.
Install
npx skills add https://github.com/volcengine/openviking --skill openvikingWhat is this skill?
- Runs all retrieval through terminal `ov` commands via bash—no pre-flight scripts
- Narrows URI scope (repo/subpath) before search to cut noise and speed results
- Three retrieval modes: `ov search` (intent), `ov grep` (exact symbols), `ov glob` (paths)
- Virtual filesystem layout with per-directory AI summaries (abstract/overview)
- Activate for listed indexed repos, add/remove repo management, and unknown external libraries
- 3 search commands tabled: ov search, ov grep, ov glob
Adoption & trust: 816 installs on skills.sh; 25.3k GitHub stars; 1/3 security scanners passed (skills.sh audits).
What problem does it solve?
You need authoritative patterns from an external library or indexed repo and your agent keeps guessing APIs instead of reading indexed source.
Who is it for?
Solo builders who index upstream repos in OpenViking and want agents to pull symbols and file paths with repo-scoped queries after a local codebase check.
Skip if: Teams with no OpenViking install or indexed repos, or when the answer is already in the open workspace and a normal ripgrep pass suffices.
When should I use this skill?
User asks about repositories listed under OpenViking indexed code repositories, external libraries that may be indexed, or wants to add/remove/manage indexed repos—after searching the local codebase first.
What do I get? / Deliverables
The agent runs scoped `ov search`, `grep`, or `glob` against the right `viking://` path and cites concrete symbols/files—or manages indexed repos when you change what is available.
- Scoped search/grep/glob results with `viking://` URIs
- Repo management actions when user changes the index
Recommended Skills
Journey fit
Spans multiple journey phases - primary shelf plus alternate fits below.
Indexed-repo lookup happens while you implement features and wire dependencies, so Build is the canonical shelf even though research questions can trigger it earlier. Integrations fits best: the skill is an external code-index bridge (`viking://`, semantic search, grep, glob), not generic frontend or PM work.
Where it fits
Skim how auth routing works in an indexed FastAPI repo before choosing your own stack.
Grep an error string inside `viking://resources/vendor-sdk` while fixing a webhook handler.
Glob middleware files in a narrowed subdirectory to mirror upstream patterns in your API.
Verify your wrapper matches indexed upstream behavior before merging a risky dependency bump.
How it compares
Use for Volcengine-indexed external code retrieval—not as a substitute for in-repo search or a hosted documentation MCP.
Common Questions / FAQ
Who is openviking for?
Indie and solo developers using OpenCode-compatible agents who keep a curated index of third-party repositories and need fast, scoped lookups while coding integrations.
When should I use openviking?
During Build when wiring APIs or debugging vendor SDKs; during Idea when exploring how an indexed framework works; whenever the prompt references repos listed under OpenViking indexed repositories or you need to add/remove indexed repos.
Is openviking safe to install?
It instructs shell execution and network-backed indexing workflows—review the Security Audits panel on this page and constrain which repos you index before granting agent bash access.
SKILL.md
READMESKILL.md - Openviking
# OpenViking Code Repository Search **IMPORTANT: All `ov` commands are terminal (shell) commands — run them via the `bash` tool. Execute directly — no pre-checks, no test commands. Handle errors when they occur.** ## How OpenViking Organizes Data OpenViking stores content in a virtual filesystem under the `viking://` namespace. Each URI maps to a file or directory, e.g. `viking://resources/fastapi/routing.py`. Each directory has AI-generated summaries (`abstract` / `overview`). **The key principle: narrow the URI scope to improve retrieval efficiency.** Instead of searching all repos, lock to a specific repo or subdirectory — this reduces noise and speeds up results significantly. ## Search Commands Choose the right command based on what you're looking for: | Command | Use when | Example | |---------|----------|---------| | `ov search` | Semantic search — use for concept/intent based queries | "dependency injection", "how auth works" | | `ov grep` | You know the **exact keyword or symbol** | function name, class name, error string | | `ov glob` | You want to **enumerate files** by pattern | all `*.py` files, all test files | ```bash # Semantic search ov search "dependency injection" --uri viking://resources/fastapi --limit 10 ov search "how tokens are refreshed" --uri viking://resources/fastapi/fastapi/security ov search "JWT authentication" --limit 10 # across all repos ov search "error handling" --limit 5 --threshold 0.7 # filter low-relevance results # Keyword search — exact match or regex ov grep "verify_token" --uri viking://resources/fastapi ov grep "class.*Session" --uri viking://resources/requests/requests # File enumeration — by name pattern (always specify --uri to scope the search) ov glob "**/*.py" --uri viking://resources/fastapi ov glob "**/test_*.py" --uri viking://resources/fastapi/tests ov glob "**/*.py" --uri viking://resources/ # across all repos ``` **Narrowing scope:** once you identify a relevant directory, pass it as `--uri` to restrict subsequent searches to that subtree — this is faster and more precise than searching the whole repo. **Query formulation:** write specific, contextual queries rather than single keywords. ```bash ov search "API" # too vague ov search "REST API authentication with JWT tokens" # better ov search "JWT token refresh flow" --uri viking://resources/backend # best ``` ## Read Content ```bash # Directories: AI-generated summaries ov abstract viking://resources/fastapi/fastapi/dependencies/ # one-line summary ov overview viking://resources/fastapi/fastapi/dependencies/ # detailed breakdown # Files: raw content ov read viking://resources/fastapi/fastapi/dependencies/utils.py ov read viking://resources/fastapi/fastapi/dependencies/utils.py --offset 100 --limit 50 ``` `abstract` / `overview` only work on directories. `read` only works on files. ## Browse ```bash ov ls viking://resources/ # list all indexed repos ov ls viking://resources/fastapi # list repo top-level contents ov ls viking://resources/fastapi --simple # paths only, no metadata ov ls viking://resources/fastapi --recursive # list all files recursively ov tree viking://resources/fastapi # full directory tree (default: 3 levels deep) ov tree viking://resources/fastapi -L 2 # limit depth to 2 levels ov tree viking://resources/fastapi -l 200 # truncate abstract column to 200 chars ov tree viking://resources/fastapi -L 2 -