CtrlK
BlogDocsLog inGet started
Tessl Logo

create-playbook-component

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

68

Quality

82%

Does it follow best practices?

Run evals on this skill

Adds up to 20 points to the overall score

View guide

SecuritybySnyk

Passed

No findings from the security scan

SKILL.md
Quality
Evals
Security

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.

Repository
OpenCTI-Platform/opencti
Last updated
First committed

Is this your skill?

If you maintain this skill, you can claim it as your own. Once claimed, you can manage eval scenarios, bundle related skills, attach documentation or rules, and ensure cross-agent compatibility.