domain-model-documentation
Use this skill when building or reviewing the domain model for the hotel/hostel management system. This includes defining entities, attributes, relationships, and enumerations based on hospitality domain expertise.
Install
mkdir -p .claude/skills/domain-model-documentation && curl -L -o skill.zip "https://agentskills.codes/api/skills/download/16843" && unzip -o skill.zip -d .claude/skills/domain-model-documentation && rm skill.zipInstalls to .claude/skills/domain-model-documentation
Activation
This is the description your AI agent reads to decide when to run this skill — the better it matches your request, the more reliably it fires.
Use this skill when building or reviewing the domain model for the hotel/hostel management system. This includes defining entities, attributes, relationships, and enumerations based on hospitality domain expertise.About this skill
Domain Model Documentation
Entities
Guest
Represents a guest in the hostel management system.
Attributes:
id: String- Unique identifierfirstName: String- Guest's first namelastName: String- Guest's last nameemail: String- Contact email addressphone: String- Contact phone numberdateOfBirth: LocalDate- Date of birthnotes: String- Additional notes about the guestnationality: Nationality- Guest's nationality (enum)documentNumber: String- Identification document numberdocumentType: DocumentType- Type of identification document (enum)notes: Notes- Structured notes with severity levels
Relationships:
- Has a
Nationality(enumeration) - Has a
DocumentType(enumeration) - Contains
Notesentity (composition) - Referenced by
Reservationas principal guest or in guest list
Room
Represents a physical room in the hostel.
Attributes:
id: String- Unique identifierroomNumber: Integer- Room numberroomType: RoomType- Type/category of the roomroomStatus: RoomStatus- Current operational status (enum)amenities: List<Amenity>- List of available amenities (enum)
Relationships:
- Has one
RoomType(composition) - Has one
RoomStatus(enumeration) - Contains multiple
Amenity(enumeration) - Contains multiple
Bedentities (composition) - Referenced by
Reservation
RoomType
Defines the category and pricing of rooms.
Attributes:
id: String- Unique identifiername: String- Type namedescription: String- Detailed descriptionmaxOccupancy: int- Maximum number of guestsbasePrice: BigDecimal- Base price per night
Relationships:
- Composed by
Room
Bed
Represents an individual bed within a room.
Attributes:
id: String- Unique identifierbedNumber: Integer- Bed identifier within the roomroom: Room- Reference to parent room
Relationships:
- Belongs to one
Room(aggregation)
Notes
Structured notes with severity classification.
Attributes:
id: String- Unique identifiertext: String- Note contentlevel: LevelNote- Severity/importance level (enum)
Relationships:
- Has one
LevelNote(composition) - Composed by
Guest
Reservation
Represents a booking made by a guest.
Attributes:
id: String- Unique identifierreservationCode: String- Unique reservation codecheckIn: LocalDate- Check-in datecheckOut: LocalDate- Check-out datestatus: ReservationStatus- Current reservation statusquotedAmount: BigDecimal- Total quoted pricesource: Source- Booking channel/source (enum)createdAt: LocalDate- Reservation creation dateguestPrincipal: Guest- Main guest responsible for the reservationguests: List<Guest>- All guests included in the reservationroom: Room- Assigned roomstay: Stay- Associated stay information
Relationships:
- References one
Guestas principal guest - Contains multiple
Guestreferences - References one
Room - Has one
ReservationStatus(composition) - Has one
Source(enumeration) - Contains one
Stay(composition)
ReservationStatus
Tracks the current state of a reservation.
Attributes:
id: String- Unique identifierstatusType: StatusType- Type of statusnote: String- Additional status notes
Relationships:
- Contains one
StatusType(composition) - Composed by
Reservation
StatusType
Defines available reservation status types.
Attributes:
id: String- Unique identifiername: String- Status name
Relationships:
- Composed by
ReservationStatus
Stay
Represents the actual stay period derived from a reservation.
Attributes:
id: String- Unique identifiercheckIn: LocalDate- Actual check-in datecheckOut: LocalDate- Actual check-out date
Relationships:
- Composed by
Reservation
Enumerations
Nationality
Defines guest nationalities:
COLOMBIAUNITED_STATESSPAINCHINA...(extensible)
DocumentType
Identification document types:
PASSPORT- PassportIDENTITY_CARD- Identity cardNATIONAL_ID- National IDCIVIL_REGISTRY- Civil registryFOREIGN_ID- Foreigner ID
RoomStatus
Room operational states:
AVAILABLE- AvailableOCCUPIED- OccupiedOUT_OF_SERVICE- Out of service
Amenity
Room amenities:
BATHROOM- BathroomTELEVISION- TelevisionSOFA- SofaBALCONY- Balcony
LevelNote
Note severity levels:
WARNING- WarningNORMAL- NormalINFORMATIONAL- Informational
Source
Reservation booking sources:
DIRECT- Direct bookingBOOKING- Booking.comHOSTELWORLD- Hostelworld
Key Relationships Summary
- Guest → Reservation: A guest can be the principal guest of a reservation and can be included in multiple reservations (1:N)
- Reservation → Room: Each reservation is assigned to one room (N:1)
- Room → RoomType: Each room has one type that defines its characteristics and pricing (N:1, composition)
- Room → Bed: A room contains multiple beds (1:N, composition)
- Reservation → Stay: Each reservation generates one stay record with actual dates (1:1, composition)
- Guest → Notes: Guests can have structured notes with severity levels (1:1, composition)
- Reservation → ReservationStatus: Each reservation has a status composed of a status type and notes (1:1, composition)
- ReservationStatus → StatusType: Status contains a type definition (1:1, composition)
- Notes → LevelNote: Each note has a severity level classification (1:1, composition)
- Room → RoomStatus: Each room has an operational status (N:1, enumeration)
- Room → Amenity: A room can have multiple amenities (1:N, enumeration)
- Guest → Nationality: Each guest has a nationality (N:1, enumeration)
- Guest → DocumentType: Each guest has a document type for identification (N:1, enumeration)
- Reservation → Source: Each reservation originates from a booking source (N:1, enumeration)