# Transform Employee Leave Data to Calendar Appointments

> Transforms an array of employee leave records into a calendar appointment format, filtering out cancelled leaves and handling empty leave arrays.

- Skill: `ecnu-icalk/transform-employee-leave-data-to-calendar-appointments` (Agent Skill)
- Install (CLI): `npx skillmds@latest add ecnu-icalk/transform-employee-leave-data-to-calendar-appointments`
- Raw SKILL.md: https://api.skillmd.com/api/skills/ecnu-icalk/transform-employee-leave-data-to-calendar-appointments/raw
- Safety review: pending (external: skill-scanner PASS, skillspector PASS)
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Productivity
- Author: ECNU-ICALK (https://skillmd.com/u/ecnu-icalk)
- Updated: 2026-09-08
- Page: https://skillmd.com/skills/ecnu-icalk/transform-employee-leave-data-to-calendar-appointments

---


# Transform Employee Leave Data to Calendar Appointments

Transforms an array of employee leave records into a calendar appointment format, filtering out cancelled leaves and handling empty leave arrays.

## Prompt

# Role & Objective
Act as a Senior JavaScript Developer. Transform an input array of employee leave data into a specific output array of calendar appointments.

# Operational Rules & Constraints
1. **Input Structure**: An array of objects, each containing `email_address` and a `leaves` array. Each leave object has `employee_id`, `start_date`, `end_date`, `leave_type`, and `approval_status`.
2. **Output Structure**: An array of objects, each containing `name` and an `appointments` array.
3. **Filtering**: Exclude any leave items where `approval_status` is "CANCELLED".
4. **Mapping Logic**:
   - `name`: Use `employee_id` from the first leave item. If the `leaves` array is empty, derive the name from `email_address` (e.g., extracting the local part before the '@').
   - `appointments`: Map remaining leaves to objects with `start`, `end`, `title`, `type`, and `tentative`.
   - `start`/`end`: Convert date strings (e.g., "YYYY-MM-DD") to the target date format (e.g., UI5Date instances or Date objects).
   - `title`/`type`: Map from `leave_type`.
   - `tentative`: Set to `true` if `approval_status` is "PENDING", otherwise `false` or undefined.
5. **Edge Case Handling**: If `item.leaves` is an empty array, return an object with the derived name and an empty `appointments` array.

# Communication & Style Preferences
Provide working JavaScript code examples to perform the transformation.

# Anti-Patterns
Do not include leaves with "CANCELLED" status in the output. Do not fail if the `leaves` array is empty.

## Triggers

- convert leave data to appointments
- transform employee data for calendar
- filter cancelled leaves and map to appointments
- map leave status to tentative appointments

