Endpoint
Lists all available skill packs or filters them by service compatibility.
Query parameters
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
Unique identifier for the skill pack
Display name of the skill pack
Description of what the skill pack provides
Array of required service IDs
Array of skill identifiers included in this pack
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