← 返回 Skills 市场
patello

Cliento Booker

作者 Patrik Ekenberg · GitHub ↗ · v1.0.5 · MIT-0
cross-platform ✓ 安全检测通过
207
总下载
0
收藏
1
当前安装
6
版本数
在 OpenClaw 中安装
/install cliento-booker
功能描述
Register Cliento booking pages via URL, check availability, and execute actual service bookings. Use when the user asks to book a haircut, reserve a service,...
使用说明 (SKILL.md)

Cliento Booker Skill

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:

  1. Verify the URL is safe, then fetch the raw HTML by executing python3 scripts/cliento.py register \x3CURL>.
  2. Parse the embedded Next.js JSON (inside \x3Cscript id="__NEXT_DATA__" type="application/json">) to extract the Company ID, available services, and barbers.
  3. Present the list to the user and ask them to select a service, a barber (or "Any"), and provide a memorable alias.
  4. Save the new store object to ./.cliento/stores.json.

Action 2 & 3: Checking Availability

When the user asks for an appointment:

  1. Read ./.cliento/stores.json to extract the saved store parameters.
  2. Determine the target date range.
  3. Fetch the available slots via the script: python3 scripts/cliento.py slots \x3Ccompany_id> \x3Cservice_id> \x3Cfrom_date> \x3Cto_date> [resource_id].
  4. 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.
  5. Present the available time slots to the user.

Action 4: Reserving a Slot

To reserve a time slot (temporarily held for ~5 minutes):

  1. Execute the reservation POST request using the slotKey via the script: python3 scripts/cliento.py reserve \x3Ccompany_id> \x3Cslot_key>.
  2. Parse the returned cbUuid. Present the reservation details (expiration time, service, price) to the user.
  3. 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 workspace USER.md file.

  1. If USER.md does not contain them, ask the user for their First Name, Last Name, Phone Number (international format), and Email.
  2. Ask if they want to permanently save these new details in USER.md for future use. Only save them if the user explicitly agrees.
  3. 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.

  1. Execute the confirmation POST sequence to finalize the booking using the script: python3 scripts/cliento.py confirm \x3Ccompany_id> \x3Ccb_uuid> "\x3Cfirst_name>" "\x3Clast_name>" "\x3Cemail>" "\x3Cphone>" "\x3Cnote>" "\x3Cbooked_specific_true_false>"
  2. 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.
  3. Inform the user when the booking is successfully complete and "emailConfirmSent": true is 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.
安全使用建议
This skill appears to do what it says, but review and consider the following before installing: - It will read and write workspace files: ./ .cliento/stores.json and USER.md. Make sure USER.md does not contain secrets you don't want the skill to access; the skill may store personal contact details if you agree. - The helper script calls cliento.com / web.prod.cliento.com endpoints (reverse-engineered APIs); functionality may break and you should verify these endpoints are legitimate for your use. - Because the agent may be allowed to invoke the skill autonomously, ensure policies or prompts prevent automatic finalization of bookings without explicit, per-booking user confirmation. - If you want extra safety, run the skill in a constrained environment (sandbox or workspace copy) and inspect the included scripts yourself before granting it access to your primary workspace files.
功能分析
Type: OpenClaw Skill Name: cliento-booker Version: 1.0.5 The skill is designed to automate service bookings on the Cliento platform. It uses a Python script (scripts/cliento.py) to interact with legitimate Cliento API endpoints (cliento.com) for checking availability and finalizing reservations. The skill demonstrates security awareness by explicitly instructing the agent to use the Python script instead of shell commands to prevent injection attacks and requires user consent before storing PII in USER.md. No evidence of data exfiltration, malicious execution, or unauthorized access was found.
能力评估
Purpose & Capability
Name/description match what the skill does: the SKILL.md and scripts/cliento.py implement registering booking pages, fetching slots, reserving, and confirming bookings. Required binary (python3) is appropriate. The script targets cliento.com/web.prod.cliento.com endpoints which align with the booking purpose. The SKILL.md correctly documents that it uses reverse-engineered/undocumented endpoints (fragility risk but coherent).
Instruction Scope
Runtime instructions stay within the booking domain: they direct use of scripts/cliento.py to fetch HTML and call specific API endpoints, manage a workspace stores.json, and read/write (with consent) USER.md contact details. The skill explicitly requires asking the user before finalizing live bookings and recommends using a separate calendar tool for cross-referencing.
Install Mechanism
No install spec; the skill is instruction-only with a small included Python script. Nothing is downloaded from remote URLs or installed to system locations. Risk from install mechanism is low.
Credentials
The skill requests no environment variables or external credentials (none declared). It does read and persist workspace files: ./ .cliento/stores.json and USER.md (the latter may contain personal contact info). The SKILL.md does not declare these config paths in registry metadata, but they are workspace-local and related to the skill’s purpose; users should be aware this will access and may write personal contact info if the user consents.
Persistence & Privilege
always is false and model invocation is allowed (default). The skill can be invoked autonomously by the agent; because it performs live network actions that can temporarily reserve or finalize bookings, ensure the agent enforces the SKILL.md requirement to always ask the user before confirming bookings. There is no request to modify other skills or system-wide settings.
如何使用
  1. 确保已安装 OpenClaw(本地或 Docker 部署)
  2. 在对话框中输入安装命令:/install cliento-booker
  3. 安装完成后,直接呼叫该 Skill 的名称或使用 /cliento-booker 触发
  4. 根据 Skill 的参数说明提供必要输入,即可获得结构化输出
版本历史
v1.0.5
- 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.
v1.0.4
**Summary:** Introduces modular API reference and clarifies action steps for booking flow. - Added `references/api.md` with all technical API/curl details; SKILL.md now refers to this for command specifics. - SKILL.md rewritten to focus on concise action descriptions, emphasizing safety, modularity, and when external files or confirmation are needed. - All fetch/sanitize/curl mechanics and JSON payload details moved to external reference (no longer inline).
v1.0.3
**Summary:** Updated file/state management and user information storage method. - Now stores state in `./.cliento/stores.json` instead of `{workDir}/stores.json`. - User booking details are read from and optionally saved to `USER.md` rather than `user_preferences.json`. - No changes to API usage or booking logic. - Updated instructions and file paths for improved clarity and consistency.
v1.0.2
## Cliento-booker v1.0.2 Changelog - Improved URL fetching script for store registration: now uses a sanitized bash block to prevent shell injection and ensure literal handling of user-provided URLs. - Added implementation notes to clarify handling of raw input and security measures when fetching Cliento booking pages. - No functional changes to booking, availability, or confirmation flows.
v1.0.1
- Removed dependency on Node.js; now requires only curl to function. - No user-facing workflow changes—functionality for registering stores, checking availability, and making bookings remains the same. - Simplified skill environment requirements for easier deployment.
v1.0.0
cliento-booker 1.0.0 - Initial release with full support for Cliento booking page registration, availability checks, and service bookings. - Persistent management of booking pages, services, and user preferences using workspace JSON files. - End-to-end booking flow: register a store, check slot availability, temporarily reserve, and confirm an appointment. - Handles user data entry, storage of contact details, and offers preference saving for future use. - Compatible with external calendar tools (if available) to cross-reference busy times when suggesting slots.
元数据
Slug cliento-booker
版本 1.0.5
许可证 MIT-0
累计安装 1
当前安装数 1
历史版本数 6
常见问题

Cliento Booker 是什么?

Register Cliento booking pages via URL, check availability, and execute actual service bookings. Use when the user asks to book a haircut, reserve a service,... 它是一个面向 Claude Code / OpenClaw 的 AI Agent Skill 插件,目前累计下载 207 次。

如何安装 Cliento Booker?

在 OpenClaw 或 Claude Code 对话框中运行命令「/install cliento-booker」即可一键安装,无需额外配置。

Cliento Booker 是免费的吗?

是的,Cliento Booker 完全免费,采用 MIT-0 许可证,可自由下载、安装和使用。

Cliento Booker 支持哪些平台?

Cliento Booker 跨平台运行,可在任意部署了 OpenClaw / Claude Code 的环境中使用(cross-platform)。

谁开发了 Cliento Booker?

由 Patrik Ekenberg(@patello)开发并维护,当前版本 v1.0.5。

💬 留言讨论