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

Informations de source

Dépôt
OpenCTI-Platform/opencti
Dernière activité de la source
8 octobre 2026 à 16:11
Langue détectée de SKILL.md
anglais
Étoiles
10 152
Forks
1 480

Options d'installation

Le prompt qui vérifie d'abord la source est sélectionné par défaut. Vous pouvez passer à une commande directe ou télécharger une copie locale.

Vérifiez les fichiers source

Lisez SKILL.md et les fichiers associés affichés par SkillsMP avant de décider de l'installer.

Affichage de SKILL.md

SKILL.md
Instructions source · Aperçu en lecture seule
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.
Voir sur GitHub