Cursor rule
.cursor/rules/api-property-optionality-hygiene.mdcFix ApiProperty/ApiPropertyOptional optionality mismatches in DTO files; use for scheduled batch fixes or DTO edits
Cursor rules
Quality
68/100
Scores the file, not the repository.Length
236 words
3 headings · 2 code blocksRepository
39k
— · pushed 0 days agoLast changed
3 days ago
First indexed 3 days ago.1234567## ApiProperty optionality hygiene89Align `@ApiProperty` / `@ApiPropertyOptional` with TypeScript `?` on DTO properties. Detection script: `apps/api/scripts/check-api-property-optionality.ts`.1011### Report1213Read `.cursor/api-property-optionality-report.json` — only the first ~20 entries to select a batch. If the file is missing or stale, regenerate:1415```bash16pnpm --filter @novu/api-service run check:api-property-optionality -- \17 --format json --write-report .cursor/api-property-optionality-report.json18```1920Branch on `kind`, not `message` text:2122| `kind` | Fix |23|--------|-----|24| `ts_optional_openapi_required` | Change to `@ApiPropertyOptional` (or add `required: false` to existing options) |25| `ts_required_openapi_optional` | Change to `@ApiProperty` (or add `required: true` to existing options) |2627Merge into the existing options object — preserve `description`, `example`, `type`, `enum`, etc.2829Example — `ts_optional_openapi_required`:3031```ts32// Before33@ApiProperty({ description: 'User email' })34email?: string;3536// After37@ApiPropertyOptional({ description: 'User email' })38email?: string;39```4041### Workflow42431. Fix all issues in the next **1–2 files** from the report (cap ~8 issues). Edit each file once. Skip ambiguous cases (multiple optionality decorators on one property); note skips in the commit message.442. Verify changed files: `pnpm check:api-property-optionality` exits 0.453. Regenerate SDK: `pnpm --filter @novu/api-service build:generate`464. Run e2e: `pnpm --filter @novu/api-service test:e2e:novu-v2`475. If step 3 or 4 fails, fix the root cause (do not revert the decorator changes - address the downstream breakage). Re-run the failing step before committing.484950Batch is complete when steps 3 and 4 succeed. When `issueCount` reaches 0, the task is done — no further commits needed.51
Also in novuhq/novu
Diff this repo’s formatsOne repository carrying more than one format is the comparison this product exists for: does anyone actually write different content in each file, or is one a copy of the other?
| Repository | Format | Stack | Covers | Score | Changed |
|---|---|---|---|---|---|
| novuhq/novu.cursor/rules/api.mdc · 39k | Cursor rules | styleapi | 72/100 | 3 days ago | |
| novuhq/novu.cursor/rules/clickhouse.mdc · 39k | Cursor rules | style | 42/100 | 3 days ago | |
| novuhq/novu.cursor/rules/context-engineering.mdc · 39k | Cursor rules | no sections | 16/100 | 3 days ago | |
| novuhq/novu.cursor/rules/dal-repository.mdc · 39k | Cursor rules | do-not | 46/100 | 3 days ago | |
| novuhq/novu.cursor/rules/dashboard.mdc · 39k | Cursor rules | style | 57/100 | 3 days ago | |
| novuhq/novu.cursor/rules/dependency-graph.mdc · 39k | Cursor rules | no sections | 22/100 | 3 days ago | |
| novuhq/novu.cursor/rules/docs-mintlify-steps.mdc · 39k | Cursor rules | do-notagent-behaviour | 43/100 | 3 days ago | |
| novuhq/novu.cursor/rules/infrastructure.mdc · 39k | Cursor rules | no sections | 50/100 | 3 days ago | |
| novuhq/novu.cursor/rules/novu.mdc · 39k | Cursor rules | style | 20/100 | 3 days ago | |
| novuhq/novu.cursor/rules/packages.mdc · 39k | Cursor rules | stylearchdependenciesdocs | 46/100 | 3 days ago | |
| novuhq/novu.cursor/rules/pnpm-release-age.mdc · 39k | Cursor rules | no sections | 24/100 | 3 days ago | |
| novuhq/novu.cursor/rules/pullrequest.mdc · 39k | Cursor rules | gitdo-not | 37/100 | 3 days ago | |
| novuhq/novu.cursor/rules/safe-api-tests.mdc · 39k | Cursor rules | setupteststyletesting-strategy+4 | 88/100 | 3 days ago | |
| novuhq/novu.cursor/rules/testing.mdc · 39k | Cursor rules | teststyletesting-strategy | 54/100 | 3 days ago | |
| novuhq/novu.cursor/rules/worker.mdc · 39k | Cursor rules | style | 65/100 | 3 days ago | |
| novuhq/novu.cursor/rules/ws.mdc · 39k | Cursor rules | style | 51/100 | 3 days ago | |
| novuhq/novu.deepsec/AGENTS.md · 39k | AGENTS.md | setupagent-behaviour | 33/100 | 3 days ago | |
| novuhq/novuAGENTS.md · 39k | AGENTS.md | builddo-notagent-behaviour | 63/100 | 3 days ago |
Diff against .cursor/rules/api.mdc Diff against .cursor/rules/clickhouse.mdc Diff against .cursor/rules/context-engineering.mdc Diff against .cursor/rules/dal-repository.mdc Diff against .cursor/rules/dashboard.mdc Diff against .cursor/rules/dependency-graph.mdc Diff against .cursor/rules/docs-mintlify-steps.mdc Diff against .cursor/rules/infrastructure.mdc Diff against .cursor/rules/novu.mdc Diff against .cursor/rules/packages.mdc Diff against .cursor/rules/pnpm-release-age.mdc Diff against .cursor/rules/pullrequest.mdc Diff against .cursor/rules/safe-api-tests.mdc Diff against .cursor/rules/testing.mdc Diff against .cursor/rules/worker.mdc Diff against .cursor/rules/ws.mdc Diff against .deepsec/AGENTS.md Diff against AGENTS.md
Similar configs
Same format, overlapping stack, ranked by quality.
| Repository | Format | Stack | Covers | Score | Changed |
|---|---|---|---|---|---|
| hiromaily/go-crypto-wallet.cursor/rules/typescript.mdc · 126 | Cursor rules | setupbuildtestlint-format+6 | 100/100 | 3 days ago | |
| TechSquidTV/Hermes.cursor/rules/10-hermes-api.mdc · 45 | Cursor rules | testlint-formatstylearch+5 | 100/100 | 3 days ago | |
| markstev/mark-starter.cursor/rules/frontend.mdc · 0 | Cursor rules | setuptestlint-formatstyle+6 | 99/100 | 3 days ago | |
| Allymahmoud/case-intake-platform.cursor/rules/frontend.mdc · 0 | Cursor rules | setuptestlint-formatstyle+7 | 99/100 | 3 days ago | |
| deifos/clipmira-subtitles.cursor/rules/frontend.mdc · 1 | Cursor rules | setuptestlint-formatstyle+7 | 99/100 | 3 days ago | |
| dodgecfr/combatfilms-webapp.cursor/rules/frontend.mdc · 0 | Cursor rules | setuptestlint-formatstyle+7 | 99/100 | 3 days ago | |
| langflow-ai/langflow.cursor/rules/docs_development.mdc · 153k | Cursor rules | setupbuildtestlint-format+7 | 97/100 | 3 days ago | |
| TechSquidTV/Hermes.cursor/rules/20-hermes-api-tests.mdc · 45 | Cursor rules | teststyletesting-strategysecurity+3 | 97/100 | 3 days ago |
