xiaohongshu
xiaohongshu
aurora-schema
Aurora YAML schema analysis and editing. Validates field names, descriptions, types, and module semantics following DDD best practices. Trigger: When analyzing or editing *.aurora.yaml files, improving field naming, adding descriptions, or validating schema semantics.
Full skill instructions
Use this skill when:
*.aurora.yaml files for quality and consistencyAlways combine with:
aurora-cli skill when regenerating after YAML changesaurora-project-structure skill for locating YAML filesconventional-commits skill when committing schema changesEvery *.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: What the module contains, what it's used for, how it relates to other modules.
All modules MUST include these fields:
rowId (after id) — bigint, autoIncrement, uniquecreatedAt (end) — timestamp, nullableupdatedAt (end) — timestamp, nullabledeletedAt (end) — timestamp, nullableField order: id → rowId → ... module fields ... → createdAt → updatedAt → deletedAt
| 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, order) |
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.
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
| 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
Use the same field names across ALL modules:
- name: id # Not: ID, _id, uuid
- name: createdAt # Not: created, createdDate
- name: updatedAt # Not: updated, modifiedAt
- name: deletedAt # Not: deleted, removedAt
- name: isActive # Not: active, enabled
PostgreSQL limits index names to 63 characters. Aurora generates: {boundedContext}_{module}_{fieldName} (snake_case).
Every time you add index: index or index: unique, calculate the generated index name length.
index_name = snake_case(boundedContextName) + "_" + snake_case(moduleName) + "_" + snake_case(fieldName)
If length > 63 → MUST add indexName property with abbreviated name.
- name: administrativeAreaLevel1Id
type: id
index: index
indexName: bpp_partner_addr_admin_area_lvl1_id # < 63 chars
Abbreviation pattern: {BC_abbrev}_{short_module}_{short_field}
| Bounded Context | Abbrev |
|---|---|
production-planning | pp |
business-partner-portal | bpp |
common | cmn |
Is it a UUID identifier? ────YES───> type: id (NO length!)
│
NO
│
Is it true/false? ────YES───> type: boolean (use is*/has*/can* prefix)
│
NO
│
Is it money? ────YES───> type: decimal with decimals: [12, 2]
│
NO
│
Fixed set of options? ────YES───> type: enum with enumOptions
│
NO
│
Date and time? ────YES───> type: timestamp
│
NO
│
Short text (< 255 chars)? ────YES───> type: varchar with maxLength
│
NO
│
Long text? ────YES───> type: text
User explicitly requested edit? ────YES───> Edit mode
│
NO → Analysis mode (generate report)
| ❌ Don't | ✅ Do |
|---|---|
| Skip module description | Always add description before aggregateProperties |
| Skip mandatory fields (rowId, timestamps) | Always include rowId, createdAt, updatedAt, deletedAt |
| Use abbreviations (dt, qty, amt) | Use full words (createdAt, quantity, amount) |
| Name booleans without prefix (active) | Use semantic prefix (isActive, hasPermission) |
Add length to id type fields | Never specify length for id type |
| Write "The price" as description | Explain context: "Retail price in base currency..." |
Use float for money | Always use decimal with proper scale |
| Duplicate relationship definitions | FK side uses type: id, inverse uses type: relationship |
aurora-cli skill for regeneration commandsaurora-project-structure skill to locate YAMLs| 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 |
aurora-cqrs | Understanding how YAML generates commands/queries |
xiaohongshu
technical spec
product ux expert
database patterns
Conduct multi-agent task orchestration and workflow coordination.
Initialize project with Conductor artifacts (product definition,
Expert in web animations, transitions, and motion design using Framer Motion and CSS
Creates Mermaid and ASCII diagrams for flowcharts, architecture, ERDs, state machines, mindmaps, and more. Use when user mentions diagram, flowchart, mermaid, ASCII diagram, text diagram, terminal diagram, visualize, C4, mindmap, architecture diagram, sequence diagram, ERD, or needs visual docume...
PostgreSQL bindings for H3 hexagonal grid system. Use when working with H3 cells in Postgres, including spatial indexing, geometry/geography integration, and raster analysis.
Context-Driven Development skill for projects using Conductor. Use this skill when you detect a `conductor/` directory in the project, when working on tasks defined in a `plan.md` file, or when the user asks about tracks, specs, or plans. Automatically applies TDD workflow, tracks task completion...
Display project status, active tracks, and next actions
Official Stakpak application containerization standard operating procedure, a step-by-step guidline to properly dockerize applications. This is a rule book curated by the Stakpak Team.
Generate, edit, and beat-sync AI video with leading models in one workspace.
The world's fastest calendar for remote work
Transform Your Design with AI Designer by ImgCreator.ai
Revolutionizing Video Production with AI-Powered Creativity
Extend an image past the frame and let AI fill the new aspect ratio.
Discover your celebrity doppelgänger with StarByFace!
ChainClarity explains 700+ crypto whitepapers in plain English, with layered summaries, comparisons, research tools, alerts, and a $4.99 Pro plan.
Opus.ai: Revolutionize Your Web Experience