@clize/clize 0.32.0 → 0.34.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +20 -18
- package/dist/cli.js +487 -374
- package/dist/cli.js.map +1 -1
- package/dist/core/addresses.js +12 -11
- package/dist/core/addresses.js.map +1 -1
- package/dist/core/analytics.js +6 -5
- package/dist/core/analytics.js.map +1 -1
- package/dist/core/authz.js +6 -5
- package/dist/core/authz.js.map +1 -1
- package/dist/core/billing.js +83 -12
- package/dist/core/billing.js.map +1 -1
- package/dist/core/credentials.js +3 -1
- package/dist/core/credentials.js.map +1 -1
- package/dist/core/dns.js +3 -2
- package/dist/core/dns.js.map +1 -1
- package/dist/core/domain-health.js +74 -50
- package/dist/core/domain-health.js.map +1 -1
- package/dist/core/domains.js +74 -44
- package/dist/core/domains.js.map +1 -1
- package/dist/core/email-tx.js +8 -6
- package/dist/core/email-tx.js.map +1 -1
- package/dist/core/email.js +13 -12
- package/dist/core/email.js.map +1 -1
- package/dist/core/env-detect.js +7 -14
- package/dist/core/env-detect.js.map +1 -1
- package/dist/core/handle.js +33 -30
- package/dist/core/handle.js.map +1 -1
- package/dist/core/install.js +132 -59
- package/dist/core/install.js.map +1 -1
- package/dist/core/media.js +37 -36
- package/dist/core/media.js.map +1 -1
- package/dist/core/payments.js +5 -4
- package/dist/core/payments.js.map +1 -1
- package/dist/core/projects.js +38 -26
- package/dist/core/projects.js.map +1 -1
- package/dist/core/redirect.js +4 -3
- package/dist/core/redirect.js.map +1 -1
- package/dist/core/seo-classify.js +41 -1
- package/dist/core/seo-classify.js.map +1 -1
- package/dist/core/seo-pages.js +214 -0
- package/dist/core/seo-pages.js.map +1 -0
- package/dist/core/seo.js +147 -11
- package/dist/core/seo.js.map +1 -1
- package/dist/core/serve.js +2 -1
- package/dist/core/serve.js.map +1 -1
- package/dist/core/setup.js +11 -9
- package/dist/core/setup.js.map +1 -1
- package/dist/core/shop.js +17 -16
- package/dist/core/shop.js.map +1 -1
- package/dist/core/site.js +2 -1
- package/dist/core/site.js.map +1 -1
- package/dist/core/sites.js +41 -40
- package/dist/core/sites.js.map +1 -1
- package/dist/core/triage.js +39 -5
- package/dist/core/triage.js.map +1 -1
- package/dist/core/video.js +45 -43
- package/dist/core/video.js.map +1 -1
- package/dist/github.js +4 -3
- package/dist/github.js.map +1 -1
- package/dist/i18n/t.js +65 -0
- package/dist/i18n/t.js.map +1 -0
- package/dist/i18n/zh.js +1266 -0
- package/dist/i18n/zh.js.map +1 -0
- package/dist/index.js +61 -40
- package/dist/index.js.map +1 -1
- package/dist/lib/cloudflare.js +8 -7
- package/dist/lib/cloudflare.js.map +1 -1
- package/dist/lib/crypto.js +2 -1
- package/dist/lib/crypto.js.map +1 -1
- package/dist/lib/vercel.js +2 -1
- package/dist/lib/vercel.js.map +1 -1
- package/dist/lib/zone.js +2 -1
- package/dist/lib/zone.js.map +1 -1
- package/dist/mcp-profiles.js +5 -1
- package/dist/mcp-profiles.js.map +1 -1
- package/dist/providers/deploy/cloudflare.js +3 -2
- package/dist/providers/deploy/cloudflare.js.map +1 -1
- package/dist/providers/email/cloudflare-inbound.js +4 -3
- package/dist/providers/email/cloudflare-inbound.js.map +1 -1
- package/dist/providers/email/cloudflare-outbound.js +2 -1
- package/dist/providers/email/cloudflare-outbound.js.map +1 -1
- package/dist/providers/email/resend.js +3 -2
- package/dist/providers/email/resend.js.map +1 -1
- package/dist/providers/email/ses.js +3 -2
- package/dist/providers/email/ses.js.map +1 -1
- package/dist/providers/index.js +3 -2
- package/dist/providers/index.js.map +1 -1
- package/dist/providers/media/google.js +10 -9
- package/dist/providers/media/google.js.map +1 -1
- package/dist/providers/media/kie.js +12 -11
- package/dist/providers/media/kie.js.map +1 -1
- package/dist/providers/media/kunavo.js +10 -9
- package/dist/providers/media/kunavo.js.map +1 -1
- package/dist/providers/media/openai.js +5 -4
- package/dist/providers/media/openai.js.map +1 -1
- package/dist/providers/media/suno.js +7 -6
- package/dist/providers/media/suno.js.map +1 -1
- package/dist/providers/registrar/routing.js +2 -1
- package/dist/providers/registrar/routing.js.map +1 -1
- package/dist/providers/registrar/vercel.js +2 -1
- package/dist/providers/registrar/vercel.js.map +1 -1
- package/dist/providers/seo/dataforseo.js +5 -4
- package/dist/providers/seo/dataforseo.js.map +1 -1
- package/dist/providers/seo/gsc.js +31 -4
- package/dist/providers/seo/gsc.js.map +1 -1
- package/dist/remote.js +25 -22
- package/dist/remote.js.map +1 -1
- package/dist/selfcheck.js +23 -22
- package/dist/selfcheck.js.map +1 -1
- package/dist/state/file-store.js +17 -16
- package/dist/state/file-store.js.map +1 -1
- package/package.json +4 -3
- package/skills/clize/SKILL.md +171 -143
- package/skills/clize-seo/SKILL.md +290 -187
- package/skills/clize-site-build/SKILL.md +97 -41
- package/skills/clize-site-debug/SKILL.md +73 -45
package/README.md
CHANGED
|
@@ -11,7 +11,7 @@ npm i -g @clize/clize
|
|
|
11
11
|
clize install # wire clize into your coding agent (Claude Code / Codex)
|
|
12
12
|
```
|
|
13
13
|
|
|
14
|
-
`clize install` is the step that makes your agent actually *reach for* clize — a binary on your `PATH` doesn't tell the agent it exists. By default it drops clize's skill (when to use it + the safety gates) into each agent's skills dir; the skill is lightweight — only its short description sits in context until something triggers it. It auto-detects Claude Code (`~/.claude`)
|
|
14
|
+
`clize install` is the step that makes your agent actually *reach for* clize — a binary on your `PATH` doesn't tell the agent it exists. By default it drops clize's skill (when to use it + the safety gates) into each agent's skills dir; the skill is lightweight — only its short description sits in context until something triggers it. It auto-detects Claude Code (`~/.claude`), Codex (`~/.codex`) and Pi (`~/.pi`); Codex and Pi share the open `~/.agents/skills` directory, so any agent that reads it gets the skill too. Scope with `--claude` / `--codex` / `--pi`, preview with `--dry-run`. Add `--mcp` to also register the `clize-mcp` server — opt-in, because an MCP server's tool list stays in context every session.
|
|
15
15
|
|
|
16
16
|
Update later with one command — pulls the latest release and refreshes the skill together:
|
|
17
17
|
|
|
@@ -21,18 +21,20 @@ clize update # or `clize update --check` to only check for a newer ve
|
|
|
21
21
|
|
|
22
22
|
If something looks stale after an update, `clize doctor` prints what's installed vs what's actually running — CLI version (and the upgrade command that works for your install manager: volta / pnpm / asdf / …), skill drift, and control-plane reachability.
|
|
23
23
|
|
|
24
|
+
Output is English by default. `CLIZE_LANG=zh` (or a `zh*` system locale) switches the CLI, the MCP tool descriptions and the control plane's messages to Chinese; the dictionary lives in `src/i18n/zh.ts`.
|
|
25
|
+
|
|
24
26
|
## Quickstart (hosted)
|
|
25
27
|
|
|
26
28
|
Log in and go — your agent never touches Cloudflare:
|
|
27
29
|
|
|
28
30
|
```bash
|
|
29
|
-
clize login
|
|
30
|
-
clize
|
|
31
|
-
clize
|
|
32
|
-
clize
|
|
33
|
-
clize
|
|
34
|
-
clize
|
|
35
|
-
clize
|
|
31
|
+
clize login # browser authorize; the first login creates your account
|
|
32
|
+
clize claim acme --email # free identity: acme.clize.app + support@acme.clize.app
|
|
33
|
+
clize init --handle acme # bind this directory (deploy / send / inbox infer the rest)
|
|
34
|
+
clize email inbox --wait-for "verify" # the agent signs up somewhere with support@acme.clize.app and reads the code here
|
|
35
|
+
clize status # who is waiting (real people + codes only), this month's spend
|
|
36
|
+
clize email send --to a@b.com --subject "Re: …" --text "…" # draft only; add --confirm once you approve
|
|
37
|
+
clize deploy ./site # ship a static site → https://acme.clize.app
|
|
36
38
|
```
|
|
37
39
|
|
|
38
40
|
## Hosted — just log in
|
|
@@ -54,20 +56,20 @@ A few specifics worth knowing:
|
|
|
54
56
|
|
|
55
57
|
| Area | Commands |
|
|
56
58
|
|---|---|
|
|
57
|
-
| **
|
|
59
|
+
| **Identity** | `clize claim <slug> --email` — a first-come, free identity for your agent: `<slug>.clize.app` (site placeholder) plus a receiving `support@<slug>.clize.app`. Without `--email` you get the name and the site only (`clize email setup <handle>` opens the inbox later) — inbound is opt-in because each inbox costs 4 DNS records in the shared `clize.app` zone, and that zone is the whole platform's free-handle capacity |
|
|
58
60
|
| **Domains** | `clize domain search / tlds / buy / import / list` |
|
|
59
|
-
| **Email** | `clize email address add <addr>` opens a mailbox in one step (object + receiving) on any domain you own — as many per domain as you need (`ops@`, `sales@`, one per agent or per person); `--forward me@gmail.com` copies mail to a personal inbox, `--owner <member>` makes it someone's private mailbox. `support@<slug>.clize.app` is available on any claimed handle via `clize email setup <handle>` (or `clize claim <slug> --email`). Read with `inbox` (triaged: promos / notices / spam are filtered, `--all` shows everything) / `show` / `thread` / `search`, correct triage with `mark`, send with `send` (`--attach`). Mail is stored permanently and indexed. **Multi-user**: `clize members invite alice@corp.com --mailbox alice@<domain>` lets a person log in and use their own mailbox; owners/admins see every mailbox in the account. **Per-agent keys**: `clize email key create --scope read,send --address ops@<domain>`. See [MAILBOX.md](MAILBOX.md). |
|
|
61
|
+
| **Email** | The mailbox your agent signs up for services with and reads verification codes from (`clize email inbox [domain] --wait-for <text>` polls until the mail arrives), and the inbox real people write to. `clize email address add <addr>` opens a mailbox in one step (object + receiving) on any domain you own — as many per domain as you need (`ops@`, `sales@`, one per agent or per person); `--forward me@gmail.com` copies mail to a personal inbox, `--owner <member>` makes it someone's private mailbox. `support@<slug>.clize.app` is available on any claimed handle via `clize email setup <handle>` (or `clize claim <slug> --email`). Read with `inbox` (triaged: promos / notices / spam are filtered, `--all` shows everything) / `show` / `thread` / `search`, correct triage with `mark`, send with `send` (`--attach`). Mail is stored permanently and indexed. **Multi-user**: `clize members invite alice@corp.com --mailbox alice@<domain>` lets a person log in and use their own mailbox; owners/admins see every mailbox in the account. **Per-agent keys**: `clize email key create --scope read,send --address ops@<domain>`. See [MAILBOX.md](MAILBOX.md). |
|
|
60
62
|
| **Send API** (server-callable) | `POST /v1/email/send` — transactional email from a long-running backend (fly.io / cron), Resend/Postmark-shaped, sending from a domain already in Clize (no second email vendor). Auth is a **scoped send key** (`clize_sk_…`: send-only, lockable to specific domains) — `clize email key create/list/revoke`. No `--confirm` (the human-review gate stays on interactive `email send`). Idempotency-Key, HMAC-signed delivery webhooks (bounce/complaint), RFC 8058 one-click unsubscribe + suppression lists (`email delivery-webhook / suppressions / messages`). See [EMAIL-API.md](EMAIL-API.md). |
|
|
61
63
|
| **Media** | `clize gen image / video / music` — text→image (`gpt-image-2` / `nano-banana-2`, with `--ref` / `--mask` for image-to-image and inpainting), text/image→video (`veo`), text→music (`suno`); long tasks via `gen jobs / status`. Every spend is gated by `--confirm` (`gen budget` pre-approval for hosted is on the roadmap). Results land as local files, ready to `deploy` or `email --attach`. |
|
|
62
64
|
| **Build · site** (hosted methods) | `clize build site start <brief>` — a hosted design system that briefs your agent on a cohesive style *before* it writes the site, so pages land with taste instead of AI-template sludge. Then `build site recommend / list / get / search / review` + `build site stack <stack>` for stack-specific guidance (React / Next / SwiftUI / …). The former `clize design …` spelling still works as a hidden alias. |
|
|
63
65
|
| **Build · clip** (hosted methods) | `clize build clip start <brief>` → your agent writes a shot-by-shot blueprint → `build clip check` (free local lint: continuity, dialogue coverage, timing) → `build clip render --confirm` (💰 one summed quote, batch-generate + merge, resumable). One-off footage stays `gen video`. |
|
|
64
66
|
| **Deploy** | `clize deploy <dir> --domain <host>` — multi-file static sites; free `*.clize.app` or your own domain. Preview locally first with `clize serve <dir>` (proper `Range` support — `<video>` pages actually play in Safari). |
|
|
65
|
-
| **SEO / GEO** (hosted data) | `clize seo keywords <seeds...>` / `competitors <domains...>` / `serp <keyword>` — research data with **no key, no signup, no upstream account**: search volume + difficulty + intent (difficulty banded by what you can actually attack), what competitors live on, and who occupies a results page (an `official_wall` / `definition_wall` / `listicle_window` / `open` verdict from a rule engine, plus the listicles worth pitching). Then `clize seo check --domain <d>` measures **your** site once, **in seconds**: Search Console positions for your keyword list (impression-weighted average over the window, plus the words Search Console has *not* seen yet — listed by name, at no cost), traffic by source with **AI engines listed separately**, clicks/impressions (new queries flow back into the list), the delta since the last window, and **`signals`** — the words where demand and delivery disagree, labelled (`pre_emergence` / `authority_limited` / `demand_no_surface`). **Measuring makes no upstream data calls and costs nothing**; the only metered part is pricing keywords you have never priced (~$0.10 for forty, reused for a month). For one keyword's exact position and who is ahead of you, `seo serp <keyword>` answers on demand. The research commands skip the per-call `--confirm` — the trade is that **every response opens with that call's charge in plain words** (`this call: $0.0648 (keywords, 37 words, en-US)`, and a cache hit says so and costs $0), plus `clize seo spend` — free — which itemizes every charge so the numbers in a write-up are copied, never hand-tallied. A single monthly cap guards against runaway loops and you can raise it yourself (`--cap`, $25 by default, sized so normal use never reaches it — your balance is the hard wall). The commands return **facts only**; how to read them — and where the keywords to test come from in the first place — lives in the `clize-seo` skill. See [SPEC.md](SPEC.md) U8. |
|
|
67
|
+
| **SEO / GEO** (hosted data) | `clize seo keywords <seeds...>` / `competitors <domains...>` / `serp <keyword>` — research data with **no key, no signup, no upstream account**: search volume + difficulty + intent (difficulty banded by what you can actually attack), what competitors live on, and who occupies a results page (an `official_wall` / `definition_wall` / `listicle_window` / `open` verdict from a rule engine, plus the listicles worth pitching). Then `clize seo check --domain <d>` measures **your** site once, **in seconds**: Search Console positions for your keyword list (impression-weighted average over the window, plus the words Search Console has *not* seen yet — listed by name, at no cost), traffic by source with **AI engines listed separately**, clicks/impressions (new queries flow back into the list), the delta since the last window (position *and* impressions), **your pages** — impressions vs the previous window, live HTTP status and Google's index status per page, so a lost or un-indexed page shows up as a page instead of as a mysterious keyword dip — and **`signals`** — the words where demand and delivery disagree, labelled (`pre_emergence` / `authority_limited` / `demand_no_surface`). **Measuring makes no upstream data calls and costs nothing**; the only metered part is pricing keywords you have never priced (~$0.10 for forty, reused for a month). For one keyword's exact position and who is ahead of you, `seo serp <keyword>` answers on demand. The research commands skip the per-call `--confirm` — the trade is that **every response opens with that call's charge in plain words** (`this call: $0.0648 (keywords, 37 words, en-US)`, and a cache hit says so and costs $0), plus `clize seo spend` — free — which itemizes every charge so the numbers in a write-up are copied, never hand-tallied. A single monthly cap guards against runaway loops and you can raise it yourself (`--cap`, $25 by default, sized so normal use never reaches it — your balance is the hard wall). The commands return **facts only**; how to read them — and where the keywords to test come from in the first place — lives in the `clize-seo` skill. See [SPEC.md](SPEC.md) U8. |
|
|
66
68
|
| **Projects** | One project = one directory: `clize init --handle <slug>` binds it (the project record auto-creates on first `claim` / `buy`). `clize projects` to list / `new` / `move` / `rename` / `rm`; `-p <slug>` for one-off cross-project calls. Email send across projects is blocked (409); deploy instead **follows the target domain** — a stale `clize.json` checkout auto-routes to the domain's real project (and is written back to `clize.json`), and only an explicit mismatched `-p` is a 409. `status` / lists / spend scope to the checked-out project, and `status` flags any local↔remote drift. |
|
|
67
69
|
| **Context** | `clize status [--assets]`, `clize context [address]` — rehydrate who's waiting + identity/knowledge at the start of a session |
|
|
68
70
|
| **Billing** (hosted) | `clize balance` / `clize recharge --amount <usd>` — prepaid clize balance that domain/media spends draw from (Stripe top-up); `clize audit` for the spend log |
|
|
69
|
-
| **Collect** (hosted) | `clize pay link --amount <usd>` — bill *your* customers, zero config: by default money lands in your clize balance (no fee — **balance funds are spendable on clize only, not withdrawable**).
|
|
70
|
-
| **Shop & forms** (hosted) | `clize shop` — turn a deployed site into a storefront that takes real money: products live in a `_catalog.json` you deploy, carts check out via Stripe with **server-side pricing** against your deployed catalog (clients can't forge prices); one-time or subscriptions, shipping-address collection, `direct` or `balance` payout like `pay`. `clize shop
|
|
71
|
+
| **Collect** (hosted) | `clize pay link --amount <usd>` — bill *your* customers, zero config: by default money lands in your clize balance (no fee — **balance funds are spendable on clize only, not withdrawable**). Direct payout to your own Stripe (`direct`, clize takes a fee) is **not yet enabled on the platform**; once it is, connecting Stripe on the web dashboard switches payments over automatically. Until then `--mode direct` is refused and every payment lands in your balance. `clize pay status` / `clize pay list`. |
|
|
72
|
+
| **Shop & forms** (hosted) | `clize shop` — turn a deployed site into a storefront that takes real money: products live in a `_catalog.json` you deploy, carts check out via Stripe with **server-side pricing** against your deployed catalog (clients can't forge prices); one-time or subscriptions, shipping-address collection, `direct` or `balance` payout like `pay`. clize holds the order layer — `clize shop orders / todo / fulfill / notify / refund / shipments / events / webhook` (paid → sourced → shipped → delivered, 17TRACK tracking, buyer self-service at `/orders`) — while the catalog ships with your site and stock, tax and shipping stay with you. `clize data webhook` forwards form / waitlist submissions to your endpoint (clize doesn't store them). clize is the shell, the order ledger and the payment wiring, not a Shopify. |
|
|
71
73
|
|
|
72
74
|
Run `clize --help` for the full surface.
|
|
73
75
|
|
|
@@ -92,7 +94,7 @@ These gates run in plain text, so every spend and every outbound action is visib
|
|
|
92
94
|
|
|
93
95
|
## MCP
|
|
94
96
|
|
|
95
|
-
A curated subset of the core — claim, domains & DNS, email, deploy, shop & forms, status/context, billing, collect (`pay`) — exposed as **
|
|
97
|
+
A curated subset of the core — claim, domains & DNS, email, deploy, shop & forms, status/context, billing, collect (`pay`) — exposed as **32 MCP tools** for hosts that prefer structured tools over a shell. (Media generation and the `build` method packs stay CLI- and skill-driven, not MCP tools.) Opt-in (`clize install --mcp`), since an MCP server's tool list is a standing per-session context cost — the skill alone already lets the agent drive clize via the CLI. To register by hand:
|
|
96
98
|
|
|
97
99
|
```bash
|
|
98
100
|
claude mcp add clize -- clize-mcp # Claude Code
|
|
@@ -103,19 +105,19 @@ Works in both modes — set `CLIZE_API_KEY` (and optionally `CLIZE_API_URL`) in
|
|
|
103
105
|
|
|
104
106
|
### One product line at a time — `clize-mcp --profile`
|
|
105
107
|
|
|
106
|
-
All
|
|
108
|
+
All 32 tools sit in context every session, even when all you wanted was the inbox. `--profile <line>` starts the same server with only that line's tools **registered** — absent from `tools/list` rather than registered-then-hidden, so the ones you skip cost the host nothing:
|
|
107
109
|
|
|
108
110
|
```bash
|
|
109
|
-
claude mcp add inbox -- clize-mcp --profile inbox #
|
|
111
|
+
claude mcp add inbox -- clize-mcp --profile inbox # 13 tools instead of 32
|
|
110
112
|
```
|
|
111
113
|
|
|
112
|
-
A profile only subtracts: tool names, arguments and behaviour are identical across profiles, so switching one doesn't make the agent relearn the surface. `serverInfo.name` becomes `clize-<line>` so the host shows which line is connected. Without `--profile` nothing changes — all
|
|
114
|
+
A profile only subtracts: tool names, arguments and behaviour are identical across profiles, so switching one doesn't make the agent relearn the surface. `serverInfo.name` becomes `clize-<line>` so the host shows which line is connected. Without `--profile` nothing changes — all 32 tools, `serverInfo.name` = `clize`, which is what `clize install --mcp` still registers. An unknown value exits non-zero listing the valid ones instead of quietly serving the full set (a silent fallback would hand you 32 tools while you believed you had installed a subset).
|
|
113
115
|
|
|
114
116
|
Each line is also its own npm package and MCP-registry entry, so it can be found as a product in its own right. They are metapackages around this same CLI, and the registry entries launch it with the matching profile:
|
|
115
117
|
|
|
116
118
|
| Product line | `--profile` | Tools (each profile includes `status` / `balance` / `recharge`) | npm | MCP registry |
|
|
117
119
|
|---|---|---|---|---|
|
|
118
|
-
| **Agent Inbox** — a real inbox agents send from and receive into ([clize.ai/inbox/](https://clize.ai/inbox/)) | `inbox` |
|
|
120
|
+
| **Agent Inbox** — a real inbox agents send from and receive into ([clize.ai/inbox/](https://clize.ai/inbox/)) | `inbox` | 13 — `claim`, `email setup / address add / inbox (with wait-for) / thread / search / show / mark / send`, `context` | `@clize/inbox` | `ai.clize/inbox` |
|
|
119
121
|
| **Agent Storefront** — your agent runs a real store | `storefront` | 15 — `pay`, `shop status / orders / order / todo / fulfill / notify / refund / events / shipments / webhook`, `data webhook` | `@clize/storefront` | `ai.clize/storefront` |
|
|
120
122
|
| **Sites by Clize** — a marketing site that actually ships | `sites` | 5 — `claim`, `deploy` | `@clize/sites` | `ai.clize/sites` |
|
|
121
123
|
| **Agent Domains** — domains an agent can buy, point and monitor | `domains` | 9 — `domain search / buy / ns`, `dns list / set / rm` | `@clize/domains` | `ai.clize/domains` |
|