Skills
Creating a Skill
A skill is a SKILL.md file: YAML frontmatter that declares metadata, plus a markdown body that contains the instructions injected into the agent's context. Over 80% of marketplace skills are pure markdown with no runtime code at all.
Nebo implements the open Agent Skills Standard. Skills you create for Nebo work across any compatible platform — Cursor, Claude Code, VS Code Copilot, Goose, and many others.
SKILL.md Format
---
name: quick-research
description: Focused research that breaks a topic into questions, investigates each, and delivers a concise summary. Use when asked to research, look up, or find information about a topic.
version: "1.2.0"
author: "your-username"
license: MIT
compatibility: Requires network access for web search
tags:
- research
- summarization
triggers:
- research
- look up
- find out about
capabilities:
- network
- storage
allowed-tools: notepad web
platform: []
priority: 10
metadata:
allowed_domains:
- "*.wikipedia.org"
- "arxiv.org"
---
# Quick Research
You are a focused researcher. When asked to research a topic:
1. Break the topic into 2-3 specific questions
2. Research each question using the web tool
3. Save key findings using the notepad tool
4. Synthesize into a clear, concise summary under 500 words
## Guidelines
- Lead with the most important finding
- Cite sources when possible
- If you can't find reliable information, say so
- Flag anything uncertain with "unverified" or "conflicting sources"
Frontmatter Fields
Agent Skills Standard Fields
These fields are portable across all Agent Skills-compatible platforms.
| Field | Required | Default | Description |
|---|---|---|---|
name |
Yes | -- | Kebab-case identifier, 1-64 characters. Lowercase letters, digits, and hyphens only. No leading/trailing/consecutive hyphens. Must match the parent directory name. |
description |
Yes | -- | What the skill does and when to use it, 1-1024 characters. Include keywords that help agents identify relevant tasks. |
license |
No | -- | License name or reference to a bundled license file (e.g. MIT, Apache-2.0, LICENSE.txt). |
compatibility |
No | -- | Free-text environment requirements, max 500 characters (e.g. "Requires git, docker, jq"). Not a semver range. |
allowed-tools |
No | "" |
Space-delimited string of pre-approved tools (e.g. "Bash(git:*) Read"). Experimental — support varies across platforms. |
metadata |
No | {} |
Arbitrary key-value pairs. Used for secrets, allowed_domains, and other custom properties. |
Nebo Extension Fields
These fields are specific to Nebo. Other Agent Skills-compatible products will ignore them.
| Field | Required | Default | Description |
|---|---|---|---|
version |
No | "1.0.0" |
Semver string. Bump on every marketplace publish. |
author |
No | -- | Author username or display name. |
tags |
No | [] |
Categorization tags for marketplace search. |
triggers |
No | [] |
Phrases that activate the skill. Case-insensitive substring match against user messages. |
priority |
No | 0 |
Higher values are matched first when multiple skills have overlapping triggers. |
max_turns |
No | -- | Maximum conversation turns this skill stays active. |
dependencies |
No | [] |
Names of other skills this skill depends on. Installed automatically. |
platform |
No | [] (all) |
Target platforms: macos, linux, windows. Empty means all platforms. |
capabilities |
No | [] |
Runtime capabilities the skill requires. See Capabilities below. |
Triggers
Triggers are case-insensitive substrings matched against the user's message. When a match is found, the skill's markdown body is injected into the agent's context.
triggers:
- research
- look up
- find out about
Multiple skills can activate simultaneously. When triggers overlap, the priority field determines precedence -- higher values win.
Capabilities
Capabilities declare what runtime resources the skill needs. They drive the sandbox configuration.
| Capability | Effect |
|---|---|
python |
Skill scripts can execute Python via bundled uv. Enables sandbox. |
typescript |
Skill scripts can execute JS/TS via bundled bun. Enables sandbox. |
storage |
Grants a writable data directory for persistent state. |
network |
Allows outbound network access. Scoped to metadata.allowed_domains if set. |
vision |
Enables image/vision processing capabilities. |
Skills that declare python or typescript capabilities run inside a sandbox. Pure markdown skills (no script capabilities) have no sandbox overhead.
Secrets
Skills can declare secrets that are encrypted at rest with AES-256-GCM and injected as environment variables when scripts execute.
metadata:
secrets:
- key: GITHUB_TOKEN
label: "GitHub Personal Access Token"
hint: "https://github.com/settings/tokens"
required: true
- key: API_KEY
label: "API Key"
required: false
allowed_domains:
- "api.github.com"
Users provide secret values during installation. The skill's scripts receive them as standard environment variables ($GITHUB_TOKEN, $API_KEY). Secrets are never exposed in logs or the marketplace listing.
Resource Files
Skills can include additional files alongside SKILL.md:
my-skill/
SKILL.md
scripts/
analyze.py # Executed via ExecuteTool
transform.ts
references/
style-guide.md # Additional context injected on demand
api-schema.json
assets/
icon.png
- scripts/ -- Executable files run via
ExecuteTool. Python scripts use the bundleduvruntime; JS/TS scripts use bundledbun. - references/ -- Supplementary documents the skill can reference. Loaded into context as needed.
- assets/ -- Static files (icons, images, templates).
Keep individual reference files focused. Agents load these on demand, so smaller files mean less context usage.
Storage Tiers
Nebo resolves skills across three tiers, with higher tiers taking precedence:
| Tier | Location | Source | Priority |
|---|---|---|---|
| User | user/skills/ |
Loose files you create locally | Highest |
| Installed | nebo/skills/ |
Marketplace .napp packages |
Middle |
| Bundled | bundled/skills/ |
Shipped with the Nebo app | Lowest |
If a user skill and a bundled skill share the same name, the user skill wins.
Data Directories
| Platform | Base Path |
|---|---|
| macOS | ~/Library/Application Support/nebo/skills/ |
| Linux | ~/.local/share/nebo/skills/ |
| Windows | %APPDATA%/nebo/skills/ |
Testing Locally
- Create a directory for your skill inside the user skills path:
~/Library/Application Support/nebo/skills/user/skills/quick-research/
Add your
SKILL.md(and any resource files) to that directory.Nebo watches the filesystem and hot-reloads skills automatically (1-second debounce). No restart needed.
Test trigger matching by sending messages that contain your trigger phrases. Check that the skill activates and the instructions produce the expected behavior.
If your skill uses scripts, verify that the required capability (
pythonortypescript) is declared and that the scripts execute correctly in the sandbox.
Platform Filtering
Use the platform field to restrict a skill to specific operating systems. This is useful for skills that depend on OS-specific tools or paths.
platform:
- macos
- linux
An empty platform array (or omitting the field) means the skill is available on all platforms.
Install Codes
Published skills receive a unique install code in the format:
SKIL-XXXX-XXXX
The code uses Crockford Base32 encoding. Users paste the code into Nebo to install the skill instantly.
Next Steps
- SKILL.md Reference -- complete field reference and schema details
- Creating an Agent -- bundle skills into an agent persona with automated workflows
- Publishing to the Marketplace -- submit your skill for review