← All skills
Tencent SkillHub Β· Productivity

appointment-scheduler

Automated appointment management for beauty salons, clinics, studios, and photo booths. Handles booking requests, calendar sync, conflict detection, reminder...

skill openclawclawhub Free
0 Downloads
0 Stars
0 Installs
0 Score
High Signal

Automated appointment management for beauty salons, clinics, studios, and photo booths. Handles booking requests, calendar sync, conflict detection, reminder...

⬇ 0 downloads β˜… 0 stars Unverified but indexed

Install for OpenClaw

Quick setup
  1. Download the package from Yavira.
  2. Extract the archive and review SKILL.md first.
  3. Import or place the package into your OpenClaw setup.

Requirements

Target platform
OpenClaw
Install method
Manual import
Extraction
Extract archive
Prerequisites
OpenClaw
Primary doc
SKILL.md

Package facts

Download mode
Yavira redirect
Package format
ZIP package
Source platform
Tencent SkillHub
What's included
README.md, SKILL.md, TESTING.md, scripts/block-time.js, scripts/book.js, scripts/cancel-booking.js

Validation

  • Use the Yavira download entry.
  • Review SKILL.md after the package is downloaded.
  • Confirm the extracted package contains the expected setup assets.

Install with your agent

Agent handoff

Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.

  1. Download the package from Yavira.
  2. Extract it into a folder your agent can access.
  3. Paste one of the prompts below and point your agent at the extracted folder.
New install

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.

Upgrade existing

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.

Trust & source

Release facts

Source
Tencent SkillHub
Verification
Indexed source record
Version
1.0.0

Documentation

ClawHub primary doc Primary doc: SKILL.md 29 sections Open source page

Appointment Scheduler πŸ“…

Automated appointment management system for service businesses.

Features

μ˜ˆμ•½ μ ‘μˆ˜ β€” 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

Target Use Cases

λ―Έμš©μ‹€ (Beauty Salons) 병원 (Clinics) μŠ€νŠœλ””μ˜€ (Studios) ν¬ν† λΆ€μŠ€ MUFI (Photo Booths)

1. Initialize Configuration

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

2. Process Incoming Request

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

3. Manual Booking

node <skill-dir>/scripts/book.js \ --date "2026-02-20" \ --time "15:00" \ --duration 60 \ --service "μ»·" \ --customer "κΉ€μ² μˆ˜" \ --phone "010-1234-5678"

4. Check Schedule

# 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

5. Send Reminders

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

6. Handle No-Shows

# 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

7. Waitlist Management

# 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

Data Storage

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

Google Calendar

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

Naver Calendar

Uses Naver Calendar API (if available) or browser automation fallback. Config: Add Naver account to config/appointment-scheduler.json

Booking Request Parsing

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

Conflict Detection

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)

Reminder System

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

No-Show Management

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

Waitlist Auto-Notify

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

Voice Integration

Supports phone call β†’ text β†’ booking flow: Receive call transcript (via STT tool) Parse booking request Confirm availability Send SMS confirmation

Hook Integration

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

Event Bus Integration

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": "μ»·" }

Cron Setup

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

Configuration Template

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 } } }

Troubleshooting

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

Custom Service Types

Edit config/appointment-scheduler.json: "services": { "μ‹ κ·œμ„œλΉ„μŠ€": { "duration": 45, "buffer": 10 } }

Block Off Time

# Mark time slot as unavailable node <skill-dir>/scripts/block-time.js \ --date "2026-02-20" \ --start "12:00" \ --end "13:00" \ --reason "μ μ‹¬μ‹œκ°„"

Bulk Import

# Import from CSV node <skill-dir>/scripts/import-bookings.js --file bookings.csv

Export Reports

# 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

Learned Lessons

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) μƒνƒœκ³„ μŠ€ν‚¬

Category context

Workflow acceleration for inboxes, docs, calendars, planning, and execution loops.

Source: Tencent SkillHub

Largest current source with strong distribution and engagement signals.

Package contents

Included in package
3 Docs3 Scripts
  • SKILL.md Primary doc
  • README.md Docs
  • TESTING.md Docs
  • scripts/block-time.js Scripts
  • scripts/book.js Scripts
  • scripts/cancel-booking.js Scripts