Skills
A skill gives Vis reusable instructions for a task, such as reviewing a change
or preparing a release. It is a folder containing a SKILL.md file, with any
scripts or templates the task needs. Vis lists available skills in its prompt
and reads the full instructions when a task needs one.
Skills written for Claude Code, pi, opencode or the agent skills standard work without changes.
When to use
- You explain the same workflow to Vis for every release, review or migration. Write it once as a skill, with the scripts and templates it needs. Vis reads the skill when a task needs it.
- The procedure is too long to keep in
AGENTS.md, which Vis includes in every turn. Vis lists only a skill's name and description until a task needs the full instructions. - You already use skills with Claude Code, pi or opencode. Vis searches the same folders, so they work without changes.
- You want Vis to follow a particular skill now. Name it with
/skill:<name>. - A skill should not be offered for this task or project. Control its availability without deleting the skill files.
Put rules that apply to every task in
AGENTS.md. When the task needs a
tool that Vis can call rather than instructions, write an extension.
Control availability
Open global settings or the current project, group or session's settings and
find the skill under Skills. Switch it off to remove it from future discovery,
doc() lookups, prompt inventories and slash expansion. Use Use inherited
value to follow the parent scope again. The global switch affects sessions
without a more specific override.
An extension can bundle a skill without its own switch. That skill follows the extension's Auto, On or Off choice. Switch the extension off to remove the skill.
Availability does not erase instructions already in the conversation and is not a filesystem permission. See scoped settings for inheritance and the process jail for access restrictions.
Write a skill
.vis/skills/release-checklist/
├── SKILL.md
└── scripts/
└── verify.sh
---
name: release-checklist
description: Use when the user requests a release. Verifies, tags and publishes.
---
# Release checklist
1. Run `scripts/verify.sh`.
2. Update the version in `VERSION`.
3. Tag and push.
Vis reads name and description from the frontmatter. State when the skill
should be used in description. The model uses it to select a skill. If name
is missing, Vis uses the folder name.
Bundled files (scripts, templates, references) are read with ordinary file tools when the skill is used.
Where Vis looks
Vis searches these sources in order. The first skill with a given name is used. Later matches are ignored.
| Location | Scope |
|---|---|
.vis/skills |
Project |
.claude/skills |
Project |
.pi/skills |
Project |
.agents/skills |
Project |
.opencode/skills, then .opencode/skill |
Project |
| Nested projects using those same locations | When the session is at the Git root |
~/.claude/skills |
User |
~/.claude/plugins/cache/**/skills |
Installed Claude Code plugins |
~/.pi/agent/skills |
User |
~/.agents/skills |
User |
~/.config/opencode/skills, then ~/.config/opencode/skill |
User |
| Registered extension packages | Qualified package/skill names |
Project locations are also searched in parent directories up to the Git root.
At the Git root, Vis skips nested projects that Git ignores. It also skips
projects inside dependency directories, such as .venv, venv,
site-packages and node_modules. Skills that installed packages ship are not loaded.
Changes to local skills are loaded without restarting Vis. Skills bundled with
an extension update when you run /reload. If reload fails, Vis keeps the last
working version. A local skill with the same qualified name overrides the
package skill without changing the package's tools.
See bundled skills to ship a procedure and
its resources with an extension. Installing a package or reading doc(name) does
not execute its skill or grant permission for actions described by it.
Use a skill explicitly
The model chooses skills on its own. To name one yourself, type /skill:<name>
followed by an optional task:
/skill:release-checklist
/skill:release-checklist for the 2.1 branch
The / list does not show skills at first. They appear when you search by name.
See also
- Project instructions — project rules and prompt templates.
- Extending Vis — when a task needs a tool rather than instructions.
