create-playbook-component

star 9.6k

Use when: adding a new playbook automation component, implementing a PlaybookComponent interface, or registering a new playbook step

OpenCTI-Platform By OpenCTI-Platform schedule Updated 5/12/2026

name: create-playbook-component description: "Use when: adding a new playbook automation component, implementing a PlaybookComponent interface, or registering a new playbook step"

Create Playbook Component

Prerequisites

  • Component ID: Unique uppercase ID (e.g., PLAYBOOK_MY_COMPONENT).
  • Configuration: List of fields required from the user.

Procedure

Step 1 — Create Component File

Location: opencti-platform/opencti-graphql/src/modules/playbook/components/<name>-component.ts.

Step 2 — Define Configuration Schema

Define a TypeScript interface for the config and a JSONSchema for validation.

export interface MyComponentConfig {
  key: string;
}

const SCHEMA: JSONSchemaType<MyComponentConfig> = {
  type: 'object',
  properties: {
    key: { type: 'string' },
  },
  required: ['key'],
};

Step 3 — Implement Component Interface

Implement PlaybookComponent<MyComponentConfig>.

export const PLAYBOOK_MY_COMPONENT: PlaybookComponent<MyComponentConfig> = {
  id: 'PLAYBOOK_MY_COMPONENT',
  name: 'My Component',
  description: 'Does something useful',
  icon: 'icon-name',
  is_entry_point: false,
  is_internal: true,
  ports: [{ id: 'out', type: 'out' }],
  configuration_schema: SCHEMA,
  schema: async () => SCHEMA,
  executor: async ({ bundle, playbookNode }) => {
    // Business logic here
    const config = playbookNode.configuration;
    
    return { output_port: 'out', bundle };
  },
};

Step 4 — Register Component

Import and add to PLAYBOOK_COMPONENTS in src/modules/playbook/playbook-components.ts.

Install via CLI
npx skills add https://github.com/OpenCTI-Platform/opencti --skill create-playbook-component
Repository Details
star Stars 9,554
call_split Forks 1,377
navigation Branch main
article Path SKILL.md
More from Creator
OpenCTI-Platform
OpenCTI-Platform Explore all skills →