Skip to main content

Marketplace and Publishing

Codebolt Marketplace​

The Codebolt marketplace hosts both capabilities and executors that can be browsed, searched, and installed.

Marketplace API endpoints​

EndpointDescription
GET /capabilities/getallList all published capabilities
GET /capabilities/:idGet capability detail
GET /capabilities/search?q=&type=Search capabilities
GET /capabilities/download/:idDownload capability zip
GET /capabilityexecutors/getallList all published executors
GET /capabilityexecutors/:idGet executor detail
GET /capabilityexecutors/download/:idDownload executor zip

Base URL: https://api.codebolt.com

Marketplace capability fields​

{
id: string;
name: string;
type: string; // skill, power, talent, etc.
version: string;
description: string;
author: string;
downloads: number;
rating: number;
tags: string[];
downloadUrl: string;
}

Marketplace executor fields​

{
id: string;
name: string;
version: string;
description: string;
supportedTypes: string[];
author: string;
downloads: number;
downloadUrl: string;
}

Download and installation flow​

When a capability or executor is installed from the marketplace:

  1. Fetch the item's info from the marketplace API
  2. Download the zip archive from the downloadUrl
  3. Extract the zip into the appropriate directory:
    • Capabilities: .codebolt/capabilities/<type>/<name>/
    • Executors: .codebolt/capabilities/executors/<name>/
  4. Refresh the registry to pick up the new item
  5. Emit WebSocket events (capabilityChanged/executorChanged + registryRefreshed)

Installation can be triggered via:

  • The REST API (POST /api/capability/download or /download-executor)
  • The UI marketplace panel
  • Electron IPC (capability:download, capability:downloadExecutor)

Creating capabilities​

Via CLI​

The codebolt action capability command group provides the primary way to create, publish, and list capabilities.

Create a capability​

codebolt action capability create [options]
OptionDescription
--name <name>Name for the new capability
--path <path>Target directory (where the capability will be created)
--project <path>Project directory for server context
--template <name>Template to use for scaffolding
--id <id>Unique identifier for the capability
--description <text>Description of the capability
--skip-installSkip npm install after creation

Examples:

# Create a capability with a name and description
codebolt action capability create --name frontend-refactor --description "Refactor React components"

# Create in a specific directory
codebolt action capability create --name my-skill --path ./my-extensions

# Create from a template, skip npm install
codebolt action capability create --name api-gen --template api-generator --skip-install

This scaffolds a capability directory with capability.yaml, package.json, entry point, and all required files.

Publish a capability​

codebolt action capability publish [options]
OptionDescription
--path <path>Path to the capability directory to publish
--project <path>Project directory for server context
codebolt action capability publish --path ./my-extensions/frontend-refactor

List published capabilities​

codebolt action capability list

Lists all capabilities published to the Codebolt registry.

Full CLI reference: Capability CLI

Via REST API​

curl -X POST http://localhost:PORT/api/capability/create \
-H "Content-Type: application/json" \
-d '{
"name": "my-capability",
"type": "skill",
"version": "1.0.0",
"description": "My custom capability",
"author": "my-team",
"tags": ["custom"],
"inputs": [{ "name": "target", "type": "string", "required": true }],
"outputs": [{ "name": "result", "type": "string" }]
}'

This creates:

  • <project>/.codebolt/capabilities/<type>/<name>/capability.yaml
  • <project>/.codebolt/capabilities/<type>/<name>/index.js (placeholder)

Via REST API (executors)​

curl -X POST http://localhost:PORT/api/capability/executors/create \
-H "Content-Type: application/json" \
-d '{
"name": "my-executor",
"version": "1.0.0",
"description": "Custom executor for my types",
"supportedTypes": ["power", "talent"],
"entryPoint": "dist/index.js",
"author": "my-team"
}'

This creates:

  • <project>/.codebolt/capabilities/executors/<name>/executor.yaml
  • <project>/.codebolt/capabilities/executors/<name>/dist/index.js (placeholder)

Manually​

You can also create capabilities by hand — just create the directory structure and files:

mkdir -p .codebolt/capabilities/skill/my-skill

Then create capability.yaml and your implementation files. Refresh the registry afterwards:

curl -X POST http://localhost:PORT/api/capability/refresh

UI Capability Panel​

The Codebolt UI provides a Capability Panel with three main tabs:

Capabilities tab​

  • Installed — lists all locally discovered capabilities with type badges and source indicators
  • Marketplace — browse and install capabilities from the marketplace
  • Skills — browse skills available from the backend skills API
  • Type filter dropdown to narrow by capability type
  • Search across name, description, and type
  • Click any installed capability to view full details

Executors tab​

  • Installed — lists local executors with their supported types shown as badges
  • Marketplace — browse and install executors
  • Each executor shows which capability types it can handle

Skills tab​

  • Lists skills from the backend skills index
  • Shows name, category, version, author, tags, and description
  • Refresh triggers a re-index of the skills directory

Publishing workflow​

  1. Create the capability locally (CLI or API)
  2. Implement the logic in index.js or your entry point
  3. Test by loading it in a local project and activating from a test agent
  4. Inspect execution traces and results via the WebSocket events or UI panel
  5. Publish to the marketplace once the package is stable

Common mistakes​

  • Wrapping a single skill in unnecessary bundle structure — use a standalone skill instead
  • Forgetting to declare supportedTypes in executor config
  • Not testing with the actual executor that will run the capability in production
  • Publishing with hard environment requirements that aren't documented

See also​