Skip to main content

create-module

Use when: scaffolding a new backend entity type, domain module, GraphQL schema, resolvers, or STIX converter in opencti-graphql

Datos de origen

Repositorio
OpenCTI-Platform/opencti
Última actividad en el origen
8 de octubre de 2026 a las 16:11
Idioma detectado de SKILL.md
inglés
Estrellas
10.123
Forks
1478

Opciones de instalación

De forma predeterminada está seleccionado el prompt que primero revisa el origen. Puedes cambiar a un comando directo o descargar una copia local.

Revisa los archivos de origen

Lee SKILL.md y los archivos complementarios que muestra SkillsMP antes de decidir si quieres instalarlo.

Mostrando SKILL.md

SKILL.md
Instrucciones de origen · Vista previa de solo lectura
name
create-module
description
Use when: scaffolding a new backend entity type, domain module, GraphQL schema, resolvers, or STIX converter in opencti-graphql
# Create Backend Module ## Prerequisites - **Entity Name**: CamelCase (e.g., `MalwareAnalysis`). - **Entity Type**: Constant (e.g., `ENTITY_TYPE_MALWARE_ANALYSIS`). - **Parent/Category**: e.g., `ABSTRACT_STIX_DOMAIN_OBJECT`. ## Procedure ### Step 1 — Create Directory Structure Create `opencti-platform/opencti-graphql/src/modules/<entityName>`. ### Step 2 — Create Schema File (`<name>.graphql`) Define the Input, Type, Queries, and Mutations. ### Step 3 — Create Type Definition (`<name>-types.ts`) Define TypeScript interfaces for StixObject, StoreEntity, and internal representations. Export the `ENTITY_TYPE_X` constant here. ### Step 4 — Create Converter (`<name>-converter.ts`) Implement `convert<Name>ToStix` function to map StoreEntity to StixObject. ### Step 5 — Create Domain Logic (`<name>-domain.ts`) Implement CRUD functions: `findAll`, `findById`, `add<Name>`, `delete<Name>`. Use `listEntities` and `createEntity` from `database/middleware`. ### Step 6 — Create Resolvers (`<name>-resolvers.ts`) Map the GraphQL Query/Mutation fields to the functions in `<name>-domain.ts`. ### Step 7 — Create Module Definition (`<name>.ts`) Implement `ModuleDefinition` interface. Define attributes, relations, and register the definition using `registerDefinition`. If the module is behind a feature flag, set `featureFlag: <FLAG_CONSTANT>` on **each** attribute and nested mapping — see the `add-feature-flag` skill. ### Step 8a — Create GraphQL Registration File (`<name>-graphql.ts`) Create a `<name>-graphql.ts` file in the module folder that imports the module schema/resolvers and calls `registerGraphqlSchema(...)`. ### Step 8b — Register Module in `src/modules/index.ts` Add two distinct imports in `src/modules/index.ts`: 1. In the **`region registration modules`** section, import `./<entityName>/<entityName>` (module definition registration). 2. In the **`region graphql registration`** section, import `./<entityName>/<entityName>-graphql` (GraphQL endpoint registration). ### Step 8c — Update GraphQL Unions (if applicable) If the entity belongs to a STIX union type (e.g., `StixObject`, `StixDomainObject`), add it to the relevant unions in `src/schema/opencti.graphql`. ### Step 8d — Regenerate Schema Types Run `yarn build:schema` to regenerate TypeScript types from the updated schema.
Ver en GitHub