This skill should be used when the user asks to "create a website", "generate a website", "build a website", "modify a website", "update my Readdy project",...
---
name: readdy
description: >-
This skill should be used when the user asks to "create a website",
"generate a website", "build a website", "modify a website",
"update my Readdy project", "preview my website", "delete a project", "list my projects"
or mentions Readdy.ai project management. Provides CLI-based website
creation and management through the Readdy.ai platform.
Requires a Readdy API Key. Run: node scripts/readdy.mjs config --apiKey <your-key> to configure.
metadata: {"openclaw":{"homepage":"https://readdy.ai","requires":{"bins":["node"]},"os":["linux","darwin","win32"]}}
---
# Readdy Website Builder
Provide complete CLI capabilities for creating and managing websites through the Readdy.ai platform. Support one-click website generation, AI-driven modification, project preview, and publish management.
## Script Location
`readdy.mjs` is located in the `scripts/` subdirectory relative to this SKILL.md. Derive the absolute path from this SKILL.md's `fullPath` by replacing `SKILL.md` with `scripts/readdy.mjs`.
Example: If SKILL.md path is `/Users/me/.claude/skills/readdy/SKILL.md`, then the script path is `/Users/me/.claude/skills/readdy/scripts/readdy.mjs`.
`<SCRIPT>` in this document refers to that absolute path.
## Prerequisites
An API Key is required. If you don't have one, obtain it at: **https://readdy.ai/user/api-key**
Configure the API Key (one-time setup):
```bash
node <SCRIPT> config --apiKey <your-key>
```
API Key is stored in `~/.openclaw/readdy.json` (file permissions `0600`). The script reads it internally — no need to pass it on the command line.
## Command Reference
### Create Project
```bash
node <SCRIPT> create --query "project description/requirements"
```
Defaults: `framework=react_v2`, `device=web`, `category=2`. Project name is auto-generated by AI. The script runs an 8-step workflow internally. **This process typically takes over 10 minutes** — set a sufficient timeout and do not treat long execution as a failure.
### Modify Project
```bash
node <SCRIPT> modify --id <projectId> --query "modification requirements"
```
Runs a 6-step workflow internally. Project info and message history are fetched automatically. **This process typically takes over 10 minutes** — set a sufficient timeout and do not treat long execution as a failure.
### Other Commands
```bash
node <SCRIPT> list [--page <n>] [--pageSize <n>] # List projects
node <SCRIPT> info --id <projectId> # Get project info
node <SCRIPT> messages --id <projectId> # Get message history
node <SCRIPT> versions --id <projectId> [--pageSize <n>] # List publishable versions and live version
node <SCRIPT> preview --id <projectId> [--versionId <v>] # Preview project
node <SCRIPT> publish --id <projectId> [--versionId <v>] # Publish latest or selected version to subdomain
node <SCRIPT> delete --id <projectId> # Delete project
node <SCRIPT> update --id <projectId> [--name <n>] [--logo <url>] [--email <e>] \
[--businessName <bn>] [--introduction <t>] [--phoneNumber <p>] \
[--businessHour <h>] [--languageStyle <s>] # Update properties
node <SCRIPT> config --apiKey <key> # Set API Key
node <SCRIPT> config # Check API Key status
```
## Execution Rules
Strictly follow these rules — no improvisation allowed.
### Mandatory Constraints
1. **Script-only execution** — Execute all operations via `node <SCRIPT> <command> [options]`. Never write custom code to call Readdy APIs, never use curl/fetch directly, never bypass the script.
2. **Do not modify the script** — Never modify `readdy.mjs` or `config-store.mjs` unless the user explicitly requests it.
3. **Preserve user input verbatim** — Pass the user's website requirement description word-for-word as the `--query` value. This prevents the agent from altering the user's intent. The `--query` value is only used as a website generation prompt sent to the Readdy API — never include passwords, tokens, or other secrets in the query text.
4. **Do not skip steps** — Internal workflow steps are handled automatically by the script.
5. **Do not add extra parameters** — Only pass parameters the user explicitly specifies. Never add `--framework`, `--device`, `--category` unless requested.
6. **No alternative implementations** — If the script fails, report the error and suggest troubleshooting. Never write replacement code.
### Standard Rules
- Verify API Key configuration before execution. If the key is missing, direct the user to obtain one at **https://readdy.ai/user/api-key** and then run `node <SCRIPT> config --apiKey <key>`.
- Confirm with the user before delete operations.
- Provide clear error messages and suggested actions based on error codes (see `references/API.md`).
- SSE generation returning `session_status: "waiting_build"` is auto-handled by the script — no manual intervention needed.
- When the user wants the "publish version" dropdown behavior from the product UI, first run `node <SCRIPT> versions --id <projectId>` to inspect available versions and the current live version, then run `node <SCRIPT> publish --id <projectId> [--versionId <v>]`.
- For every publish request, you must fetch version info once before publishing. The publish flow must use the selected version entry returned by `versions`/message history, and pass that concrete `versionId` into the publish request instead of relying on an implicit backend "latest".
- **Never treat build log paths as preview URLs.** The relative paths (e.g. `/preview/...`) printed during build are internal and not usable as final links. Always run `node <SCRIPT> preview --id <projectId>` to obtain the actual preview URL.
### Examples
```bash
# Correct — args and --query match user's original text exactly
node <SCRIPT> create --query "Build a pet store website"
# Correct — modify with project ID
node <SCRIPT> modify --id abc123 --query "Change the homepage banner to blue"
# Correct — inspect publishable versions before choosing one
node <SCRIPT> versions --id abc123
# Correct — publish the latest version
node <SCRIPT> publish --id abc123
# Correct — publish a specific version from the versions list
node <SCRIPT> publish --id abc123 --versionId 456
# Wrong — rewriting user input (most common mistake)
node <SCRIPT> create --query "Create a pet e-commerce website with modern design"
# Wrong — adding parameters not requested by user
node <SCRIPT> create --query "Build a website" --framework react_v2 --device web
# Wrong — bypassing the script
fetch('https://readdy.ai/gapi/project/generate', ...)
```
don't have the plugin yet? install it then click "run inline in claude" again.