Skip to main content
POST
/
v1
/
skills
curl -X POST "https://api.danubeai.com/v1/skills" \
  -H "danube-api-key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "pdf-processing",
    "skill_md_content": "---\ndescription: Extract and process PDF documents\n---\n\n# PDF Processing\n\n## Steps\n1. Parse the PDF file\n2. Extract text content\n3. Return structured data",
    "scripts": [
      {"name": "extract.py", "content": "import fitz\n\ndef extract(path):\n    doc = fitz.open(path)\n    return [p.get_text() for p in doc]"}
    ],
    "visibility": "private"
  }'
{
  "id": "skill_abc123",
  "name": "pdf-processing",
  "description": "Extract and process PDF documents",
  "skill_md": "---\ndescription: Extract and process PDF documents\n---\n\n# PDF Processing\n...",
  "scripts": [
    {"name": "extract.py", "content": "..."}
  ],
  "references": [],
  "assets": [],
  "visibility": "private",
  "created_at": "2026-02-24T12:00:00Z"
}

Overview

Creates a new skill with SKILL.md content, optional scripts, reference files, and assets. Private skills are created immediately. Public skills require the /skill-submissions review flow. Auth: Accepts either JWT or API key (danube-api-key header).

Body Parameters

name
string
required
Skill name (e.g. “pdf-processing”)
skill_md_content
string
required
The SKILL.md markdown content with instructions. Should include YAML frontmatter with a description field.
scripts
array
default:[]
Executable script files
reference_files
array
default:[]
Reference documentation files
assets
array
default:[]
Asset files (templates, resources)
visibility
string
default:"private"
"private" only via this endpoint. Public skills require /skill-submissions.
service_id
string
Optional service UUID to associate the skill with

Response

id
string
Created skill UUID
name
string
Skill name
description
string
Description extracted from SKILL.md frontmatter
skill_md
string
The SKILL.md content
scripts
array
Script files
references
array
Reference files
assets
array
Asset files

Example

curl -X POST "https://api.danubeai.com/v1/skills" \
  -H "danube-api-key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "pdf-processing",
    "skill_md_content": "---\ndescription: Extract and process PDF documents\n---\n\n# PDF Processing\n\n## Steps\n1. Parse the PDF file\n2. Extract text content\n3. Return structured data",
    "scripts": [
      {"name": "extract.py", "content": "import fitz\n\ndef extract(path):\n    doc = fitz.open(path)\n    return [p.get_text() for p in doc]"}
    ],
    "visibility": "private"
  }'
{
  "id": "skill_abc123",
  "name": "pdf-processing",
  "description": "Extract and process PDF documents",
  "skill_md": "---\ndescription: Extract and process PDF documents\n---\n\n# PDF Processing\n...",
  "scripts": [
    {"name": "extract.py", "content": "..."}
  ],
  "references": [],
  "assets": [],
  "visibility": "private",
  "created_at": "2026-02-24T12:00:00Z"
}

MCP Tool

This endpoint is also available as the create_skill MCP tool:
result = await mcp.call_tool("create_skill", {
    "name": "pdf-processing",
    "skill_md_content": "---\ndescription: Extract PDFs\n---\n\n# PDF Processing\n...",
    "visibility": "private"
})