Skills
Skills are specialized modules of instructions and knowledge. Posit Assistant loads them automatically when they are relevant to your request, and you can also invoke most skills on demand as a slash command.
Besides the built-in skills and your own custom ones, you can install skills by adding a plugin from a marketplace. A plugin can bundle skills alongside slash commands and MCP servers.
Built-in Skills
| Skill | Description |
|---|---|
create-skill | Create new Agent Skills following the specification |
import-instructions | Migrate Positron, Copilot, Claude Code, and VS Code instruction files into Posit Assistant skills |
posit-products | Use Positron IDE and Posit Workbench; deploy to Posit Connect and Posit Connect Cloud |
predictive-modeling-python | Modeling and machine learning with scikit-learn in Python |
predictive-modeling-r | Modeling and machine learning with tidymodels in R |
quarto-authoring | Write and author Quarto documents (.qmd) |
report | Create Quarto documents or notebooks from conversations |
r-package-development | R package development with devtools, testthat, and roxygen2 |
shiny-bslib | Build modern Shiny dashboards and apps with bslib |
shiny-bslib-theming | Advanced theming for Shiny apps using bslib and Bootstrap 5 |
snowflake | Connect to Snowflake and query data via semantic views |
Adding Custom Skills
You can add your own skills at two levels:
- User-level —
~/.posit/assistant/skills/{skill-name}/or~/.agents/skills/{skill-name}/— available across all projects - Project-level —
.posit/assistant/skills/{skill-name}/or.agents/skills/{skill-name}/in your project root — scoped to a single project
Use the .posit/assistant/ path for skills meant specifically for Posit Assistant. Use .agents/skills for skills you want to share with other coding assistants that follow the Agent Skills specification, or that came from an installer like npx skills.
In older versions, the directory was ~/.positai/ instead of ~/.posit/assistant/.
Project skills take priority over user skills, and both override built-in skills with the same name. If a skill of the same name exists in both .posit/assistant/skills and .agents/skills at the same level, the .posit/assistant/skills version wins.
Skill Directory Structure
my-skill/
├── SKILL.md # Required: skill definition with metadata
├── scripts/ # Optional: executable scripts (R, Python, Bash)
├── references/ # Optional: additional documentation
└── assets/ # Optional: templates, schemas, data files
SKILL.md Format
Each skill requires a SKILL.md file with YAML frontmatter:
---
name: my-skill
description: When to use this skill — a clear description that helps the assistant decide when to load it.
---
# My Skill
Instructions, examples, and reference material for the assistant to follow
when this skill is active.
Required fields:
name— Lowercase letters, numbers, and hyphens only. Must match the directory name. Max 64 characters.description— Explains when the skill should be used. Max 1024 characters.
Optional fields:
license— Licensing terms (e.g.,MIT)compatibility— Environmental requirementsmetadata— Arbitrary key-value pairs (author, version, etc.)argument-hint— A hint shown next to the skill in the slash-command menu (e.g.,<file>)user-invocable— Set tofalseto hide the skill from the slash-command menu while still letting the assistant load it automaticallydisable-model-invocation— Set totrueto keep the skill out of automatic loading, so it only runs when you invoke it as a command, useful for procedural workflows you want to trigger deliberately
Example
To create a skill for your team’s internal API:
mkdir -p ~/.posit/assistant/skills/internal-api
Then create ~/.posit/assistant/skills/internal-api/SKILL.md:
---
name: internal-api
description: Use when the user asks about our internal REST API, including authentication, endpoints, and data schemas.
---
# Internal API
Our API is at https://api.example.com/v2.
## Authentication
Use Bearer tokens from the /auth/token endpoint...
The skill will be available in your next conversation. You can also use the built-in create-skill skill to help generate new skills interactively.
Custom Skill Locations
By default, Posit Assistant searches for skills in these directories. When the same skill name exists in more than one location, the version from the later directory is used:
~/.agents/skills/~/.posit/assistant/skills/.agents/skills/— relative to each workspace root.posit/assistant/skills/— relative to each workspace root
You can customize these paths with the skills.paths setting in your ~/.posit/assistant/settings.json:
{
"skills": {
"paths": [
"~/.agents/skills",
"~/.posit/assistant/skills",
".agents/skills",
".posit/assistant/skills",
"~/my-company/shared-skills"
]
}
}
Paths starting with ~ expand to your home directory. Relative paths are resolved against each workspace root. If both a global and project-level config define skills.paths, the project value completely replaces the global one — they are not merged.
Running a Skill as a Command
Most skills double as slash commands. Type / in the chat and pick the skill (or type its name) to run it right away, for example /quarto-authoring or a custom /deploy-check.
Unlike automatic loading, this is explicit and deterministic: the skill’s instructions run right then, whether or not the assistant would judge them relevant on its own. You can pass extra instructions after the command, and the assistant hands them to the skill.
See Commands for how the menu works, which skills appear in it, and how a built-in command of the same name takes precedence.
This makes skills a good home for repeatable workflows you want to trigger by hand, not just background knowledge the assistant loads for you.
Importing from Other Tools
If you already have custom prompt files or instructions from another tool (VS Code/Positron *.prompt.md, GitHub Copilot, or Claude Code), run the /import-instructions command to bring them over.
It finds those files, including .github/prompts/*.prompt.md, .vscode/positron/prompts/*.prompt.md, and any locations set via chat.promptFilesLocations, and converts each one into a skill.
Once imported, each becomes a /skill-name command you can invoke the same way you invoked the original prompt.
Further Reading
Skills follow the Agent Skills specification.