ops/skills/identity-notifications/SKILL.md
Add or change identity notification types in the 6529 SEIZE backend by updating notification causes, domain data types, DB-to-domain mappers, UserNotifier creation methods, push notification rendering/settings, notification API mappings, OpenAPI enums, and tests. Use when adding new notification types, creating identity notifications, changing notification payloads, or extending push/API notification behavior.
npx skillsauth add 6529-collections/6529seize-backend identity-notificationsInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Use this workflow when a new event should appear in identity notification lists, push notifications, or both.
UPPER_SNAKE_CASEadditional_dataIdentityNotificationCause in src/entities/IIdentityNotification.tssrc/notifications/user-notification.types.tsUserNotification unionsrc/notifications/user-notification.mapper.ts:
entityToNotification()additional_data into the new typed payloadUserNotifier in src/notifications/user.notifier.ts:
identity_id as the recipientadditional_identity_id as the actor when there is onerelated_drop_id, related_drop_part_no, related_drop_2_id, related_drop_2_part_no, and wave_id consistentlyadditional_datavisibility_group_idconnection or ctx.connection when inside a transactionsrc/pushNotificationsHandler/identityPushNotifications.ts when the cause should produce a push:
CAUSE_TO_SETTING_KEY entry when users should be able to disable it with an existing or new settinggenerateNotificationData() switch case{ title, body, data, imageUrl } or the skip sentinel when appropriategetDropSerialNo, getDropPart, getDrop, and getWaveEntityOrThrowsrc/api-serverless/src/notifications/notifications.api.service.ts:
getAllRelatedIds()mapToApiNotificationV2WithoutRelatedWave() or related V2 helpersmapToApiNotification() if the V1 route still exposes the causeenums.resolveOrThrow(ApiNotificationCause, notificationCause) compatible with generated enum valuessrc/api-serverless/openapi.yaml:
ApiNotificationCausecd src/api-serverless && npm run restructure-openapi && npm run generatesrc/notifications/user-notification-mapper.test.tssrc/notifications/user.notifier.test.tssrc/pushNotificationsHandler/*push-notification*.test.ts when push output changessrc/api-serverless/src/notifications/notifications-api-service.test.tsnpm run lint from the repo root.Prefer existing columns before adding schema:
identity_id: recipientadditional_identity_id: actor or related identityrelated_drop_id and related_drop_part_no: primary droprelated_drop_2_id and related_drop_2_part_no: secondary dropwave_id: wave contextvisibility_group_id: notification visibility restrictionadditional_data: custom JSON fields onlyidentity_id, actor in additional_identity_id, no drop.additional_identity_id, primary drop in related_drop_id, wave in wave_id.related_drop_id, original drop in related_drop_2_id.identity_id, actor in additional_identity_id, wave in wave_id.IdentityNotificationCause in src/entities/IIdentityNotification.ts.src/notifications/user-notification.types.ts.UserNotification union.src/notifications/user-notification.mapper.ts.src/notifications/user.notifier.ts.src/pushNotificationsHandler/identityPushNotifications.ts when push applies.getAllRelatedIds() case added in notifications API service.cd src/api-serverless && npm run restructure-openapi && npm run generate.npm run lint passes.development
Create, improve, or review Codex/OpenAI Agent Skills and SKILL.md files. Use when writing a new skill, updating an existing skill, designing skill frontmatter and trigger behavior, choosing scripts/references/assets, validating skill structure, or turning repeatable Codex workflows into reusable skills.
development
Write, open, iterate, merge, and optionally deploy pull requests in the 6529 SEIZE backend with clear PR descriptions, safe validation notes, review-bot follow-up, DCO-signed commits only when explicitly requested, backend/API checks, lambda deployment planning, and staging or production deployment gates. Use when preparing PR bodies, creating PRs, responding to CodeRabbit or Claude review bots, deciding whether a PR is ready, merging, or carrying a backend/API PR through staging/prod rollout.
testing
Implement database-related changes in this repository, including schema changes via TypeORM entities, repository/query patterns, request-context transactions, DB tests, and explicit data migrations. Use when working on DB schema updates, repositories or *Db classes, SQL queries, transactions, data backfills, or app logic that reads or writes MySQL data.
development
Add or change community metrics in the 6529 SEIZE backend by updating metric rollup enums, recorder methods, recording call sites, optional historical backfills, OpenAPI response models, and community-metrics API aggregation. Use when adding new community metrics, exposing metric summaries or series, tracking community activity, or changing MetricsRecorder/MetricsDb behavior.