Developers

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 bundled uv runtime; JS/TS scripts use bundled bun.
  • 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

  1. Create a directory for your skill inside the user skills path:
~/Library/Application Support/nebo/skills/user/skills/quick-research/
  1. Add your SKILL.md (and any resource files) to that directory.

  2. Nebo watches the filesystem and hot-reloads skills automatically (1-second debounce). No restart needed.

  3. Test trigger matching by sending messages that contain your trigger phrases. Check that the skill activates and the instructions produce the expected behavior.

  4. If your skill uses scripts, verify that the required capability (python or typescript) 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