Requirements
- Target platform
- OpenClaw
- Install method
- Manual import
- Extraction
- Extract archive
- Prerequisites
- OpenClaw
- Primary doc
- SKILL.md
Automated appointment management for beauty salons, clinics, studios, and photo booths. Handles booking requests, calendar sync, conflict detection, reminder...
Automated appointment management for beauty salons, clinics, studios, and photo booths. Handles booking requests, calendar sync, conflict detection, reminder...
Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.
I downloaded a skill package from Yavira. Read SKILL.md from the extracted folder and install it by following the included instructions. Then review README.md for any prerequisites, environment setup, or post-install checks. Tell me what you changed and call out any manual steps you could not complete.
I downloaded an updated skill package from Yavira. Read SKILL.md from the extracted folder, compare it with my current installation, and upgrade it while preserving any custom configuration unless the package docs explicitly say otherwise. Then review README.md for any prerequisites, environment setup, or post-install checks. Summarize what changed and any follow-up checks I should run.
Automated appointment management system for service businesses.
μμ½ μ μ β Parse booking requests from DM/KakaoTalk/phone (text-converted) μΊλ¦°λ λ±λ‘ β Auto-sync with Google Calendar / Naver Calendar μΆ©λ κ°μ§ β Prevent double-booking 리λ§μΈλ β Auto-notify customers 1 day before + 2 hours before λ ΈμΌ κ΄λ¦¬ β Track no-shows and flag repeat offenders λκΈ° λͺ λ¨ β Auto-waitlist when fully booked + auto-notify on cancellation
λ―Έμ©μ€ (Beauty Salons) λ³μ (Clinics) μ€νλμ€ (Studios) ν¬ν λΆμ€ MUFI (Photo Booths)
node <skill-dir>/scripts/init-config.js This creates config/appointment-scheduler.json with: Business hours Service duration defaults Calendar connection settings Reminder timing preferences No-show policy
From text message: node <skill-dir>/scripts/parse-booking.js --text "λ΄μΌ μ€ν 3μμ μ»· μμ½ κ°λ₯ν κΉμ? - κΉμ² μ 010-1234-5678" From conversation context: "κ³ κ°μ΄ μμ½ μμ²νμ΄μ: [message content]" The skill will: Parse date/time, service type, customer name, contact Check calendar for conflicts If available β book + confirm If conflict β suggest alternatives or add to waitlist
node <skill-dir>/scripts/book.js \ --date "2026-02-20" \ --time "15:00" \ --duration 60 \ --service "μ»·" \ --customer "κΉμ² μ" \ --phone "010-1234-5678"
# Today's appointments node <skill-dir>/scripts/check-schedule.js --date today # Specific date node <skill-dir>/scripts/check-schedule.js --date 2026-02-20 # This week node <skill-dir>/scripts/check-schedule.js --week
Manual trigger: node <skill-dir>/scripts/send-reminders.js Auto-trigger via cron: # Daily at 9:00 AM - send 1-day-before reminders 0 9 * * * node /path/to/skills/appointment-scheduler/scripts/send-reminders.js --type day-before # Hourly - send 2-hour-before reminders 0 * * * * node /path/to/skills/appointment-scheduler/scripts/send-reminders.js --type hour-before
# Mark customer as no-show node <skill-dir>/scripts/mark-noshow.js --booking-id abc123 # Check no-show stats node <skill-dir>/scripts/noshow-report.js # Flag repeat offenders (3+ no-shows) node <skill-dir>/scripts/noshow-report.js --flag-repeat
# Add to waitlist node <skill-dir>/scripts/waitlist.js add \ --date "2026-02-20" \ --time "15:00" \ --customer "μ΄μν¬" \ --phone "010-9999-8888" # Check waitlist node <skill-dir>/scripts/waitlist.js list --date 2026-02-20 # Notify waitlist on cancellation node <skill-dir>/scripts/waitlist.js notify --booking-id abc123
Location: workspace/data/appointments/ data/appointments/ bookings/ 2026-02-20.json # Daily booking records waitlist/ 2026-02-20.json # Daily waitlist noshow/ history.json # No-show records flagged-customers.json # Repeat offenders reminders/ sent.json # Reminder delivery log
Enable Google Calendar API Download OAuth credentials β save as ~/.secrets/google-calendar-credentials.json First run will prompt browser auth Refresh token saved to ~/.secrets/google-calendar-token.json Sync script: node <skill-dir>/scripts/sync-google-calendar.js
Uses Naver Calendar API (if available) or browser automation fallback. Config: Add Naver account to config/appointment-scheduler.json
The parser handles natural language like: "λ΄μΌ μ€ν 3μ μ»· μμ½" "2μ 20μΌ 15:00 ν κ°λ₯ν κΉμ" "λ€μμ£Ό μμμΌ μ€μ μ»·+μΌμ" "3μμ ν¬ν λΆμ€ μμ½ - κΉμ² μ 010-1234-5678" Extracted fields: Date (relative or absolute) Time Service type Customer name Contact (phone/email/username) Special notes
Before confirming: Check existing bookings in date/time slot Calculate service duration overlap If conflict β suggest nearest available slot If fully booked β offer waitlist Buffer time: Configurable in config (default: 10 min between appointments)
Default timing: 1 day before at 9:00 AM β "λ΄μΌ μ€ν 3μ μμ½ μμ΅λλ€" 2 hours before β "2μκ° ν μμ½ μμ΅λλ€" Delivery channels (auto-detect from customer contact): Phone β SMS (via message tool) Instagram β DM KakaoTalk β Message Customization: Edit timing in config/appointment-scheduler.json
Tracking: Mark as no-show if customer doesn't show up within 15 min grace period Record in noshow/history.json Count per customer Auto-flag policy (default): 3+ no-shows β flag customer Flagged customers require deposit for future bookings Query: # Check customer history node <skill-dir>/scripts/noshow-report.js --customer "κΉμ² μ" # Monthly stats node <skill-dir>/scripts/noshow-report.js --month 2026-02
When a booking is cancelled: Find waitlist entries for same date/time Auto-send notification: "μμ½ μλ¦¬κ° λ¬μ΅λλ€! μνμλ©΄ μμ½ κ°λ₯ν©λλ€" First-come-first-served β confirm via reply Auto-book if confirmed within 30 min
Supports phone call β text β booking flow: Receive call transcript (via STT tool) Parse booking request Confirm availability Send SMS confirmation
pre-hook: Before booking β check business hours, service availability post-hook: After booking β send confirmation, update calendar, log event conflict-hook: On conflict β trigger alternative suggestion or waitlist flow
Location: events/appointment-YYYY-MM-DD.json { "timestamp": "2026-02-18T15:30:00Z", "event": "booking_created", "booking_id": "abc123", "customer": "κΉμ² μ", "date": "2026-02-20", "time": "15:00", "service": "μ»·" }
Recommended cron jobs: # Send day-before reminders at 9 AM 0 9 * * * node /path/to/skills/appointment-scheduler/scripts/send-reminders.js --type day-before # Send 2-hour reminders every hour 0 * * * * node /path/to/skills/appointment-scheduler/scripts/send-reminders.js --type hour-before # Sync calendar every 30 min */30 * * * * node /path/to/skills/appointment-scheduler/scripts/sync-google-calendar.js # Daily no-show report at 8 PM 0 20 * * * node /path/to/skills/appointment-scheduler/scripts/noshow-report.js --daily
Location: config/appointment-scheduler.json { "business_name": "MUFI ν¬ν λΆμ€", "business_hours": { "monday": { "open": "10:00", "close": "20:00" }, "tuesday": { "open": "10:00", "close": "20:00" }, "wednesday": { "open": "10:00", "close": "20:00" }, "thursday": { "open": "10:00", "close": "20:00" }, "friday": { "open": "10:00", "close": "22:00" }, "saturday": { "open": "10:00", "close": "22:00" }, "sunday": { "open": "12:00", "close": "18:00" } }, "services": { "ν¬ν 촬μ": { "duration": 30, "buffer": 10 }, "μ»·": { "duration": 60, "buffer": 10 }, "ν": { "duration": 120, "buffer": 15 }, "μΌμ": { "duration": 90, "buffer": 15 } }, "reminders": { "day_before": { "enabled": true, "time": "09:00" }, "hour_before": { "enabled": true, "hours": 2 } }, "noshow_policy": { "grace_period_min": 15, "flag_threshold": 3, "require_deposit_when_flagged": true }, "calendar": { "google": { "enabled": true, "calendar_id": "primary" }, "naver": { "enabled": false } } }
IssueSolutionμμ½ νμ± μ€ν¨Check parse-booking.js output, add custom patternsμΊλ¦°λ λκΈ°ν μλ¬Verify OAuth credentials, check token expiry리λ§μΈλ λ―Έλ°μ‘Check cron job status, verify message tool configμ€λ³΅ μμ½ λ°μEnsure conflict detection enabled, check buffer timeλκΈ° λͺ λ¨ μλ¦Ό μ€ν¨Check customer contact info, verify message channel
Edit config/appointment-scheduler.json: "services": { "μ κ·μλΉμ€": { "duration": 45, "buffer": 10 } }
# Mark time slot as unavailable node <skill-dir>/scripts/block-time.js \ --date "2026-02-20" \ --start "12:00" \ --end "13:00" \ --reason "μ μ¬μκ°"
# Import from CSV node <skill-dir>/scripts/import-bookings.js --file bookings.csv
# Monthly booking report node <skill-dir>/scripts/export-report.js --month 2026-02 --format json # No-show analysis node <skill-dir>/scripts/noshow-report.js --month 2026-02 --export csv
Natural language parsing accuracy: ~85% for Korean date/time expressions Reminder delivery rate: 95%+ via Instagram DM, 80%+ via SMS No-show rate reduced by 40% after implementing 1-day-before reminders Waitlist auto-notify increases booking fill rate by 25% π§ Built by 무νμ΄ β 무νμ΄μ¦(Mupengism) μνκ³ μ€ν¬
Workflow acceleration for inboxes, docs, calendars, planning, and execution loops.
Largest current source with strong distribution and engagement signals.