Use when: adding a new playbook automation component, implementing a PlaybookComponent interface, or registering a new playbook step
64
80%
Does it follow best practices?
Run evals on this skill
Adds up to 20 points to the overall score
Passed
No findings from the security scan
Fix and improve this skill with Tessl
tessl review fix ./.github/skills/create-playbook-component/SKILL.mdPLAYBOOK_MY_COMPONENT).Location: opencti-platform/opencti-graphql/src/modules/playbook/components/<name>-component.ts.
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'],
};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 };
},
};Import and add to PLAYBOOK_COMPONENTS in src/modules/playbook/playbook-components.ts.
OpenCTI-Platform/opencti
2cc5089
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.