Skip to main content

create-creation-form

Use when: scaffolding a creation form drawer with Formik validation and a Relay mutation for a new entity

Source facts

Repository
OpenCTI-Platform/opencti
Last source activity
May 12, 2026 at 12:56
Detected SKILL.md language
English
Stars
10,278
Forks
1,502

Install options

The review-first prompt is selected by default. You can switch to a direct command or download a local copy.

Review the source files

Read SKILL.md and any companion files shown by SkillsMP before deciding whether to install.

Showing SKILL.md

SKILL.md
Source instructions · Read-only preview
name
create-creation-form
description
Use when: scaffolding a creation form drawer with Formik validation and a Relay mutation for a new entity
# Create Creation Form (Drawer) ## Prerequisites - **Mutation**: GraphQL mutation for creating the entity. - **Fields**: List of fields to display. ## Procedure ### Step 0 — Find an Existing Example Use the **Codebase Pattern Finder** agent to locate a similar existing creation form in `opencti-platform/opencti-front/src/private/components/` (look for files ending in `Creation.tsx`). Model the new form after the existing one to stay idiomatic. ### Step 1 — Define Mutation & Validation Use `Yup` for validation schema. ```tsx const creationMutation = graphql` mutation MyEntityCreationMutation($input: MyEntityAddInput!) { myEntityAdd(input: $input) { ...MyEntityLine_node } } `; const validationSchema = Yup.object().shape({ name: Yup.string().required(t('This field is required')), }); ``` ### Step 2 — Create Component Structure Return a `Drawer` containing a `Formik` form. ```tsx export const MyEntityCreation: React.FC<Props> = ({ paginationOptions }) => { const [commit] = useApiMutation(creationMutation); const onSubmit = (values, { setSubmitting, resetForm }) => { commit({ variables: { input: values, }, updater: (store) => { // Use utils/store helper insertNode(store, 'Pagination_myEntities', paginationOptions, 'myEntityAdd'); }, onCompleted: () => { setSubmitting(false); resetForm(); }, }); }; return ( <Drawer title={t_i18n('Create entity')}> <Formik initialValues={{ name: '' }} validationSchema={validationSchema} onSubmit={onSubmit}> <Form> <Field component={TextField} name="name" label={t_i18n('Name')} /> <Button type="submit">{t_i18n('Create')}</Button> </Form> </Formik> </Drawer> ); }; ```
View on GitHub