详细分析 ▾
运行时依赖
版本
- Switched backend execution from curl/bash to a dedicated Python script (scripts/cliento.py) for security and reliability. - Updated all booking and data-fetching actions to use the Python script, reducing risk of bash/PII injection. - Deprecated references/api.md; all required API logic is now encapsulated in the new script. - Updated SKILL.md documentation to reflect the new Python-based workflow, including revised action steps and command formats. - Updated required binaries metadata from curl to python3.
安装命令 点击复制
技能文档
You manage a persistent list of Cliento booking pages, check their availability, and execute actual bookings for the user.
You maintain state using files located relative to your workspace: ./.cliento/stores.json.
Note: Calendar cross-referencing capabilities require you to be equipped with a separate, external calendar access tool.
Core Workflow
You execute up to 6 core actions depending on the user's request. Crucially: you must use the scripts/cliento.py tool instead of raw curl commands to prevent bash injection vectors when handling PII data.
Handling the Empty State
If./.cliento/stores.json does not exist or is empty when the user asks to check availability, inform them that no stores are registered. Ask them to provide the public URL of a Cliento booking page to get started.Action 1: Registering a Store
When the user provides a Cliento URL to register:- Verify the URL is safe, then fetch the raw HTML by executing
python3 scripts/cliento.py register. - Parse the embedded Next.js JSON (inside
) to extract the Company ID, available services, and barbers. - Present the list to the user and ask them to select a service, a barber (or "Any"), and provide a memorable alias.
- Save the new store object to
./.cliento/stores.json.
Action 2 & 3: Checking Availability
When the user asks for an appointment:- Read
./.cliento/stores.jsonto extract the saved store parameters. - Determine the target date range.
- Fetch the available slots via the script:
python3 scripts/cliento.py slots.[resource_id] - Calendar Cross-Reference: If you have access to a calendar tool, pull the user's schedule. Filter out Cliento slots that overlap with busy blocks, factoring in travel time requested by the user.
- Present the available time slots to the user.
Action 4: Reserving a Slot
To reserve a time slot (temporarily held for ~5 minutes):- Execute the reservation POST request using the
slotKeyvia the script:python3 scripts/cliento.py reserve. - Parse the returned
cbUuid. Present the reservation details (expiration time, service, price) to the user. - Inform the user this is only a temporary hold and proceed immediately to Action 5.
Action 5: User Booking Preferences
Before finalizing, verify the user's contact details by checking the workspaceUSER.md file.
- If
USER.mddoes not contain them, ask the user for their First Name, Last Name, Phone Number (international format), and Email. - Ask if they want to permanently save these new details in
USER.mdfor future use. Only save them if the user explicitly agrees. - Ask if the user wants to include an optional note to the service provider.
Action 6: Confirming a Booking
Executing this action will finalize a live booking. Always ask the user if they are ready to proceed before doing this.- Execute the confirmation POST sequence to finalize the booking using the script:
python3 scripts/cliento.py confirm "" "" "" "" "" ""
- If the API returned that a Pin is required, the script output will notify you and you must ask the user for the pin, then append it to the args.
- Inform the user when the booking is successfully complete and
"emailConfirmSent": trueis verified.
Stores Format Example
./.cliento/stores.json:
[
{
"alias": "Barber",
"url": "https://cliento.com/business/barber-and-friends-1697/",
"company_id": "5qdvTnEGaI1BRv42GeTMUC",
"service_id": 33003,
"resource_id": null
}
]
Limitations & Disclaimer
Slot reservation holds the time temporarily (~5 minutes). Fully automated booking is only supported for stores using the "NoPin" confirmation method. * This skill interacts with undocumented, reverse-engineered API endpoints and may break at any time.免费技能或插件可能存在安全风险,如需更匹配、更安全的方案,建议联系付费定制