# Create Playbook Component

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

- Skill: `opencti-platform/create-playbook-component` (Agent Skill)
- Install (CLI): `npx skillmds@latest add opencti-platform/create-playbook-component`
- Raw SKILL.md: https://api.skillmd.com/api/skills/opencti-platform/create-playbook-component/raw
- Safety review: pending (external: skill-scanner PASS, skillspector PASS)
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Web & Frontend
- Author: OpenCTI-Platform (https://skillmd.com/u/opencti-platform)
- Updated: 2026-09-10
- Page: https://skillmd.com/skills/opencti-platform/create-playbook-component

---


# 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.

```typescript
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>`.

```typescript
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`.

