aurora-schema

- Analyzing *.aurora.yaml files for quality and consistency

Safety Notice

This listing is imported from skills.sh public index metadata. Review upstream SKILL.md and repository scripts before running.

Copy this and send it to your AI assistant to learn

Install skill "aurora-schema" with this command: npx skills add avvale/aurora-front/avvale-aurora-front-aurora-schema

When to Use

  • Analyzing *.aurora.yaml files for quality and consistency

  • Editing YAML schemas (creating, updating, or deleting fields)

  • Validating field naming conventions and descriptions

  • Ensuring module descriptions explain purpose and context

Reference files (loaded on demand):

  • type-reference.md — Type selection guide, varchar lengths, relationship rules

  • examples.md — Common patterns, analysis workflow, change log template

Always combine with: aurora-cli , aurora-project-structure , conventional-commits

Critical Patterns

Module Description (REQUIRED)

Every *.aurora.yaml must have a description property before aggregateProperties: .

✅ CORRECT

version: 0.0.1 boundedContextName: iam moduleName: permission description: > Module containing the permissions associated with each bounded context, to be used to manage access to each API. aggregateProperties: - name: id

Description should explain: (1) What the module contains, (2) What it's used for, (3) How it relates to other modules.

Mandatory Fields (REQUIRED in all modules)

Order: id → rowId → ... campos ... → createdAt → updatedAt → deletedAt

  • name: rowId type: bigint index: unique autoIncrement: true nullable: false description: > Auto-incrementing sequential identifier for internal ordering and legacy compatibility.

  • name: createdAt type: timestamp nullable: true description: Timestamp when the record was created. Part of audit trail.

  • name: updatedAt type: timestamp nullable: true description: Timestamp when the record was last modified. Part of audit trail.

  • name: deletedAt type: timestamp nullable: true description: Soft delete timestamp. NULL = active record.

Field Naming Conventions

Pattern Use For Examples

camelCase

All field names firstName , orderDate , totalAmount

is* , has* , can*

Boolean flags isActive , hasChildren , canEdit

*At

Timestamps createdAt , updatedAt , publishedAt

*Date

Date-only fields birthDate , startDate , endDate

*Id

Foreign keys authorId , categoryId , parentId

sort

Display/UI ordering sort (NOT displayOrder or order )

Anti-patterns: stat → status , dt → createdAt , qty → quantity , active → isActive

Field Descriptions (MANDATORY)

Every field MUST have a description that explains WHY, not WHAT:

❌ BAD

  • name: price type: decimal description: The price of the book

✅ GOOD

  • name: price type: decimal decimals: [10, 2] description: > Retail price in the store's base currency. Does not include taxes or discounts. Used as base for price calculations.

ID Fields (CRITICAL RULE)

Fields of type id MUST NOT have a length property.

✅ CORRECT

  • name: id type: id primaryKey: true

❌ INCORRECT

  • name: id type: id length: 36 # ← DELETE THIS primaryKey: true

Relationship Fields (CRITICAL RULE)

Side Has FK? Use

Child/Many (invoice-line) YES type: id

  • relationship block inside

Parent/One (invoice) NO type: relationship (navigation only)

Many-to-many NO type: relationship

  • pivot config

⚠️ NEVER define both invoiceId (type: id) AND invoice (type: relationship) in the SAME module.

✅ child.aurora.yaml - ONLY the FK field

  • name: parentId type: id relationship: type: many-to-one field: parent aggregateName: MyParent modulePath: my-context/parent

✅ parent.aurora.yaml - ONLY the navigation property

  • name: children type: relationship relationship: type: one-to-many aggregateName: MyChild modulePath: my-context/child key: parentId

Cross-Module Consistency

Use the same field names across ALL modules:

  • name: id # Not: ID, _id, uuid, identifier
  • name: createdAt # Not: created, createdDate, createTime
  • name: updatedAt # Not: updated, modifiedAt, updateTime
  • name: deletedAt # Not: deleted, removedAt, deletionDate
  • name: isActive # Not: active, enabled, status

Index Names (63-char limit)

PostgreSQL limits index names to 63 characters. Use indexName with abbreviated name:

  • name: administrativeAreaLevel1Id type: id index: index indexName: bpp_partner_addr_admin_area_lvl1_id

Analysis Checklist

  • Module has description before aggregateProperties

  • Has rowId , createdAt , updatedAt , deletedAt

  • All fields have meaningful descriptions (WHY, not WHAT)

  • Field names follow conventions (camelCase, boolean prefixes)

  • No id type fields have length property

  • Enum values are documented

  • Types are appropriate for use case → see type-reference.md

  • No duplicate relationship definitions

  • Consistency with similar modules

Commands

fd -e yaml aurora # Find all Aurora YAMLs rg -L "^description:" cliter/ -g ".aurora.yaml" # Missing module descriptions rg -L "name: rowId" cliter/ -g ".aurora.yaml" # Missing rowId rg -A2 "type: id" cliter/ -g "*.aurora.yaml" | rg "length:" # id fields with length (bad)

Anti-Patterns

❌ Don't ✅ Do

Skip module description Always add description before aggregateProperties

Skip mandatory fields Always include rowId + timestamps

Use abbreviations (dt, qty) Full words (createdAt, quantity)

Name booleans without prefix Use is*/has*/can* prefix

Add length to id type fields Never specify length for id type

Write "The price" as description Explain context and usage

Use float for money Use decimal with proper scale

Duplicate relationship definitions FK side: type: id , inverse: type: relationship

Related Skills

Skill When to Use Together

aurora-cli

After editing YAML, regenerate with aurora load back module

aurora-project-structure

To locate YAML files in correct directories

conventional-commits

When committing schema changes

Source Transparency

This detail page is rendered from real SKILL.md content. Trust labels are metadata-based hints, not a safety guarantee.

Related Skills

Related by shared tags or category signals.

General

angular-19

No summary provided by upstream source.

Repository SourceNeeds Review
General

angular-material-19

No summary provided by upstream source.

Repository SourceNeeds Review
General

prettier

No summary provided by upstream source.

Repository SourceNeeds Review