Skip to main content

Endpoint

GET /v1/skills
Lists all available skill packs or filters them by service compatibility.

Query parameters

services
string
Comma-separated service IDs to filter compatible skill packs. Returns only packs that are compatible with the specified services.

Response

Returns an array of skill pack objects.

Skill pack object

id
string
required
Unique identifier for the skill pack
name
string
required
Display name of the skill pack
description
string
required
Description of what the skill pack provides
services
string[]
required
Array of required service IDs
skills
string[]
required
Array of skill identifiers included in this pack
tags
string[]
Tags for categorization (e.g., “ai”, “automation”, “data”)

Examples

List all skill packs

curl http://localhost:3456/v1/skills
Response:
{
  "packs": [
    {
      "id": "video-creator",
      "name": "Video Creator",
      "description": "Create and process videos programmatically with FFmpeg and Remotion",
      "services": ["ffmpeg", "remotion", "minio"],
      "skills": ["ffmpeg-transcoding", "remotion-rendering", "minio-storage"],
      "tags": ["media", "video", "storage"]
    },
    {
      "id": "research-agent",
      "name": "Research Agent",
      "description": "Web research with vector memory and scraping capabilities",
      "services": ["qdrant", "searxng", "browserless"],
      "skills": ["qdrant-memory", "searxng-search", "browserless-scraping"],
      "tags": ["ai", "research", "web"]
    },
    {
      "id": "devops",
      "name": "DevOps",
      "description": "Monitoring, automation, and alerting for infrastructure management",
      "services": ["n8n", "redis", "uptime-kuma", "grafana", "prometheus"],
      "skills": ["n8n-workflows", "redis-cache", "uptime-monitoring", "grafana-dashboards", "prometheus-metrics"],
      "tags": ["automation", "monitoring", "infrastructure"]
    }
  ],
  "total": 10
}

Filter by compatible services

Get skill packs compatible with Redis and PostgreSQL:
curl "http://localhost:3456/v1/skills?services=redis,postgresql"
Response:
{
  "packs": [
    {
      "id": "devops",
      "name": "DevOps",
      "description": "Monitoring, automation, and alerting for infrastructure management",
      "services": ["n8n", "redis", "uptime-kuma", "grafana", "prometheus"],
      "skills": ["n8n-workflows", "redis-cache", "uptime-monitoring", "grafana-dashboards", "prometheus-metrics"],
      "tags": ["automation", "monitoring", "infrastructure"],
      "compatibilityScore": 0.2
    },
    {
      "id": "knowledge-base",
      "name": "Knowledge Base",
      "description": "Document indexing with vector and full-text search",
      "services": ["qdrant", "postgresql", "meilisearch"],
      "skills": ["qdrant-vectors", "postgresql-storage", "meilisearch-search"],
      "tags": ["ai", "search", "data"],
      "compatibilityScore": 0.33
    }
  ],
  "total": 2
}
When filtering by services, the response includes a compatibilityScore indicating how many of the pack’s required services match your query (e.g., 0.33 = 1 out of 3 services match).

Error responses

400 Bad Request

Invalid service IDs provided:
{
  "error": "Invalid service IDs: unknown-service",
  "code": "INVALID_SERVICE_ID"
}

500 Internal Server Error

Server error while processing the request:
{
  "error": "Internal server error",
  "code": "INTERNAL_ERROR"
}

Use cases

Skill pack discovery

Build a UI that shows all available skill packs:
const response = await fetch('http://localhost:3456/v1/skills');
const { packs } = await response.json();

packs.forEach(pack => {
  console.log(`${pack.name}: ${pack.description}`);
  console.log(`Required services: ${pack.services.join(', ')}`);
});

Smart recommendations

Recommend skill packs based on user’s selected services:
const selectedServices = ['redis', 'postgresql', 'n8n'];
const response = await fetch(
  `http://localhost:3456/v1/skills?services=${selectedServices.join(',')}`
);
const { packs } = await response.json();

// Sort by compatibility score
packs.sort((a, b) => b.compatibilityScore - a.compatibilityScore);

console.log('Recommended skill packs:');
packs.forEach(pack => {
  console.log(`- ${pack.name} (${Math.round(pack.compatibilityScore * 100)}% compatible)`);
});

Integration with generate endpoint

Combine skill pack discovery with stack generation:
// 1. Get compatible skill packs
const servicesResponse = await fetch(
  'http://localhost:3456/v1/skills?services=redis,postgresql'
);
const { packs } = await servicesResponse.json();

// 2. Generate stack with selected skill pack
const generateResponse = await fetch('http://localhost:3456/v1/generate', {
  method: 'POST',
  headers: { 'Content-Type': 'application/json' },
  body: JSON.stringify({
    projectName: 'my-stack',
    services: ['redis', 'postgresql'],
    skillPacks: [packs[0].id], // Use most compatible pack
    proxy: 'caddy'
  })
});

Services Endpoint

List available services

Generate Endpoint

Generate a complete stack

Build docs developers (and LLMs) love