2026-03-17 13:38:50 +08:00
|
|
|
# Meshy 3D Agent
|
2026-03-16 19:44:32 +08:00
|
|
|
|
Rebuild generation/printing skills on meshy-cli 0.3.0 with a first-run UX (0.5.0)
Both skills now describe the workflow only; every API call, login, refresh,
download, OBJ transform and slicer launch goes through the published
meshy-cli@0.3.0. The bundled Python runtime and the duplicated API manuals
are removed; OpenClaw is untouched. SKILL.md frontmatter keeps only name,
description and license — the release version lives in the plugin manifests.
First-run experience:
- Runner resolution: an installed 0.3.0 `meshy`, else the pinned temporary
package `npm exec --yes --package=meshy-cli@0.3.0 -- meshy ...`.
- One browser login: `auth login --device` as a live process; the URL and
code are shown from its first stderr line, the agent turn stays alive on
that same session, and the original request resumes after `auth status`
verifies. No key, token or task ID is pasted.
- The user's requested path wins: WORKSPACE/PROJECT_ROOT resolved from the
request, ./meshy_output only as the default; the workspace boundary,
symlink and overwrite protection are unchanged.
- Previews, delivery, cost sources, waiting and follow-ups ("a 1500-face
LOD", "now as FBX") live in a shared references/delivery.md.
- Printing gains a local-only route (prepare an OBJ / open a 3MF) that
triggers no authentication, balance check or generation.
Tooling: build.py syncs setup/delivery/troubleshooting to printing;
validate_skills.py enforces the WORKSPACE placeholder, PROJECT_ROOT, no
hardcoded output root, the setup/delivery contract and the plugin manifests.
Tests run the real CLI against loopback with synthetic credentials:
19 Node tests, 0 skipped.
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-18 17:51:08 +08:00
|
|
|
Meshy skills for creating digital assets and preparing 3D prints. The generation and printing
|
|
|
|
|
skills drive **Meshy CLI 0.3.0** (`meshy`) on **Node.js 24+**. They are instructions and
|
|
|
|
|
references only — no bundled runtime scripts. This is the **0.5.0 development candidate**.
|
2026-03-16 19:44:32 +08:00
|
|
|
|
Rebuild generation/printing skills on meshy-cli 0.3.0 with a first-run UX (0.5.0)
Both skills now describe the workflow only; every API call, login, refresh,
download, OBJ transform and slicer launch goes through the published
meshy-cli@0.3.0. The bundled Python runtime and the duplicated API manuals
are removed; OpenClaw is untouched. SKILL.md frontmatter keeps only name,
description and license — the release version lives in the plugin manifests.
First-run experience:
- Runner resolution: an installed 0.3.0 `meshy`, else the pinned temporary
package `npm exec --yes --package=meshy-cli@0.3.0 -- meshy ...`.
- One browser login: `auth login --device` as a live process; the URL and
code are shown from its first stderr line, the agent turn stays alive on
that same session, and the original request resumes after `auth status`
verifies. No key, token or task ID is pasted.
- The user's requested path wins: WORKSPACE/PROJECT_ROOT resolved from the
request, ./meshy_output only as the default; the workspace boundary,
symlink and overwrite protection are unchanged.
- Previews, delivery, cost sources, waiting and follow-ups ("a 1500-face
LOD", "now as FBX") live in a shared references/delivery.md.
- Printing gains a local-only route (prepare an OBJ / open a 3MF) that
triggers no authentication, balance check or generation.
Tooling: build.py syncs setup/delivery/troubleshooting to printing;
validate_skills.py enforces the WORKSPACE placeholder, PROJECT_ROOT, no
hardcoded output root, the setup/delivery contract and the plugin manifests.
Tests run the real CLI against loopback with synthetic credentials:
19 Node tests, 0 skipped.
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-18 17:51:08 +08:00
|
|
|
## Start by asking for what you want
|
2026-06-02 11:51:29 +08:00
|
|
|
|
Rebuild generation/printing skills on meshy-cli 0.3.0 with a first-run UX (0.5.0)
Both skills now describe the workflow only; every API call, login, refresh,
download, OBJ transform and slicer launch goes through the published
meshy-cli@0.3.0. The bundled Python runtime and the duplicated API manuals
are removed; OpenClaw is untouched. SKILL.md frontmatter keeps only name,
description and license — the release version lives in the plugin manifests.
First-run experience:
- Runner resolution: an installed 0.3.0 `meshy`, else the pinned temporary
package `npm exec --yes --package=meshy-cli@0.3.0 -- meshy ...`.
- One browser login: `auth login --device` as a live process; the URL and
code are shown from its first stderr line, the agent turn stays alive on
that same session, and the original request resumes after `auth status`
verifies. No key, token or task ID is pasted.
- The user's requested path wins: WORKSPACE/PROJECT_ROOT resolved from the
request, ./meshy_output only as the default; the workspace boundary,
symlink and overwrite protection are unchanged.
- Previews, delivery, cost sources, waiting and follow-ups ("a 1500-face
LOD", "now as FBX") live in a shared references/delivery.md.
- Printing gains a local-only route (prepare an OBJ / open a 3MF) that
triggers no authentication, balance check or generation.
Tooling: build.py syncs setup/delivery/troubleshooting to printing;
validate_skills.py enforces the WORKSPACE placeholder, PROJECT_ROOT, no
hardcoded output root, the setup/delivery contract and the plugin manifests.
Tests run the real CLI against loopback with synthetic credentials:
19 Node tests, 0 skipped.
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-18 17:51:08 +08:00
|
|
|
Install the skills (below), then say the thing, in your own words:
|
2026-03-16 19:44:32 +08:00
|
|
|
|
Rebuild generation/printing skills on meshy-cli 0.3.0 with a first-run UX (0.5.0)
Both skills now describe the workflow only; every API call, login, refresh,
download, OBJ transform and slicer launch goes through the published
meshy-cli@0.3.0. The bundled Python runtime and the duplicated API manuals
are removed; OpenClaw is untouched. SKILL.md frontmatter keeps only name,
description and license — the release version lives in the plugin manifests.
First-run experience:
- Runner resolution: an installed 0.3.0 `meshy`, else the pinned temporary
package `npm exec --yes --package=meshy-cli@0.3.0 -- meshy ...`.
- One browser login: `auth login --device` as a live process; the URL and
code are shown from its first stderr line, the agent turn stays alive on
that same session, and the original request resumes after `auth status`
verifies. No key, token or task ID is pasted.
- The user's requested path wins: WORKSPACE/PROJECT_ROOT resolved from the
request, ./meshy_output only as the default; the workspace boundary,
symlink and overwrite protection are unchanged.
- Previews, delivery, cost sources, waiting and follow-ups ("a 1500-face
LOD", "now as FBX") live in a shared references/delivery.md.
- Printing gains a local-only route (prepare an OBJ / open a 3MF) that
triggers no authentication, balance check or generation.
Tooling: build.py syncs setup/delivery/troubleshooting to printing;
validate_skills.py enforces the WORKSPACE placeholder, PROJECT_ROOT, no
hardcoded output root, the setup/delivery contract and the plugin manifests.
Tests run the real CLI against loopback with synthetic credentials:
19 Node tests, 0 skipped.
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-18 17:51:08 +08:00
|
|
|
> Turn this photo into a textured GLB and save it to `./assets/chest.glb`. Set it up if it
|
|
|
|
|
> isn't yet.
|
2026-03-16 19:44:32 +08:00
|
|
|
|
Rebuild generation/printing skills on meshy-cli 0.3.0 with a first-run UX (0.5.0)
Both skills now describe the workflow only; every API call, login, refresh,
download, OBJ transform and slicer launch goes through the published
meshy-cli@0.3.0. The bundled Python runtime and the duplicated API manuals
are removed; OpenClaw is untouched. SKILL.md frontmatter keeps only name,
description and license — the release version lives in the plugin manifests.
First-run experience:
- Runner resolution: an installed 0.3.0 `meshy`, else the pinned temporary
package `npm exec --yes --package=meshy-cli@0.3.0 -- meshy ...`.
- One browser login: `auth login --device` as a live process; the URL and
code are shown from its first stderr line, the agent turn stays alive on
that same session, and the original request resumes after `auth status`
verifies. No key, token or task ID is pasted.
- The user's requested path wins: WORKSPACE/PROJECT_ROOT resolved from the
request, ./meshy_output only as the default; the workspace boundary,
symlink and overwrite protection are unchanged.
- Previews, delivery, cost sources, waiting and follow-ups ("a 1500-face
LOD", "now as FBX") live in a shared references/delivery.md.
- Printing gains a local-only route (prepare an OBJ / open a 3MF) that
triggers no authentication, balance check or generation.
Tooling: build.py syncs setup/delivery/troubleshooting to printing;
validate_skills.py enforces the WORKSPACE placeholder, PROJECT_ROOT, no
hardcoded output root, the setup/delivery contract and the plugin manifests.
Tests run the real CLI against loopback with synthetic credentials:
19 Node tests, 0 skipped.
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-18 17:51:08 +08:00
|
|
|
The agent resolves the CLI, checks whether a session already exists and, if not, starts one
|
|
|
|
|
browser login and shows you a link and a code. You approve in the browser; nothing is pasted
|
|
|
|
|
into the chat, no API key is copied, and the agent then continues the request you actually
|
|
|
|
|
made. The file lands at the path you named — `./meshy_output` is only the fallback when you
|
|
|
|
|
name none — with a rendered preview alongside it and the task IDs for whatever you ask next
|
|
|
|
|
("make a 1500-face LOD", "now as FBX", "scale it to 150 mm").
|
2026-03-17 14:37:31 +08:00
|
|
|
|
Rebuild generation/printing skills on meshy-cli 0.3.0 with a first-run UX (0.5.0)
Both skills now describe the workflow only; every API call, login, refresh,
download, OBJ transform and slicer launch goes through the published
meshy-cli@0.3.0. The bundled Python runtime and the duplicated API manuals
are removed; OpenClaw is untouched. SKILL.md frontmatter keeps only name,
description and license — the release version lives in the plugin manifests.
First-run experience:
- Runner resolution: an installed 0.3.0 `meshy`, else the pinned temporary
package `npm exec --yes --package=meshy-cli@0.3.0 -- meshy ...`.
- One browser login: `auth login --device` as a live process; the URL and
code are shown from its first stderr line, the agent turn stays alive on
that same session, and the original request resumes after `auth status`
verifies. No key, token or task ID is pasted.
- The user's requested path wins: WORKSPACE/PROJECT_ROOT resolved from the
request, ./meshy_output only as the default; the workspace boundary,
symlink and overwrite protection are unchanged.
- Previews, delivery, cost sources, waiting and follow-ups ("a 1500-face
LOD", "now as FBX") live in a shared references/delivery.md.
- Printing gains a local-only route (prepare an OBJ / open a 3MF) that
triggers no authentication, balance check or generation.
Tooling: build.py syncs setup/delivery/troubleshooting to printing;
validate_skills.py enforces the WORKSPACE placeholder, PROJECT_ROOT, no
hardcoded output root, the setup/delivery contract and the plugin manifests.
Tests run the real CLI against loopback with synthetic credentials:
19 Node tests, 0 skipped.
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-18 17:51:08 +08:00
|
|
|
Two more things worth knowing:
|
2026-03-17 14:37:31 +08:00
|
|
|
|
Rebuild generation/printing skills on meshy-cli 0.3.0 with a first-run UX (0.5.0)
Both skills now describe the workflow only; every API call, login, refresh,
download, OBJ transform and slicer launch goes through the published
meshy-cli@0.3.0. The bundled Python runtime and the duplicated API manuals
are removed; OpenClaw is untouched. SKILL.md frontmatter keeps only name,
description and license — the release version lives in the plugin manifests.
First-run experience:
- Runner resolution: an installed 0.3.0 `meshy`, else the pinned temporary
package `npm exec --yes --package=meshy-cli@0.3.0 -- meshy ...`.
- One browser login: `auth login --device` as a live process; the URL and
code are shown from its first stderr line, the agent turn stays alive on
that same session, and the original request resumes after `auth status`
verifies. No key, token or task ID is pasted.
- The user's requested path wins: WORKSPACE/PROJECT_ROOT resolved from the
request, ./meshy_output only as the default; the workspace boundary,
symlink and overwrite protection are unchanged.
- Previews, delivery, cost sources, waiting and follow-ups ("a 1500-face
LOD", "now as FBX") live in a shared references/delivery.md.
- Printing gains a local-only route (prepare an OBJ / open a 3MF) that
triggers no authentication, balance check or generation.
Tooling: build.py syncs setup/delivery/troubleshooting to printing;
validate_skills.py enforces the WORKSPACE placeholder, PROJECT_ROOT, no
hardcoded output root, the setup/delivery contract and the plugin manifests.
Tests run the real CLI against loopback with synthetic credentials:
19 Node tests, 0 skipped.
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-18 17:51:08 +08:00
|
|
|
- **No global CLI needed.** With Node 24+ the agent runs the pinned package temporarily
|
|
|
|
|
(`npm exec --yes --package=meshy-cli@0.3.0 -- meshy …`). A global
|
|
|
|
|
`npm install -g meshy-cli@0.3.0` only makes startup faster.
|
|
|
|
|
- **Local print work needs no account.** Rescaling an OBJ or opening a 3MF in a slicer runs
|
|
|
|
|
entirely on your machine — no login, no balance check, no credits.
|
2026-03-17 14:37:31 +08:00
|
|
|
|
Rebuild generation/printing skills on meshy-cli 0.3.0 with a first-run UX (0.5.0)
Both skills now describe the workflow only; every API call, login, refresh,
download, OBJ transform and slicer launch goes through the published
meshy-cli@0.3.0. The bundled Python runtime and the duplicated API manuals
are removed; OpenClaw is untouched. SKILL.md frontmatter keeps only name,
description and license — the release version lives in the plugin manifests.
First-run experience:
- Runner resolution: an installed 0.3.0 `meshy`, else the pinned temporary
package `npm exec --yes --package=meshy-cli@0.3.0 -- meshy ...`.
- One browser login: `auth login --device` as a live process; the URL and
code are shown from its first stderr line, the agent turn stays alive on
that same session, and the original request resumes after `auth status`
verifies. No key, token or task ID is pasted.
- The user's requested path wins: WORKSPACE/PROJECT_ROOT resolved from the
request, ./meshy_output only as the default; the workspace boundary,
symlink and overwrite protection are unchanged.
- Previews, delivery, cost sources, waiting and follow-ups ("a 1500-face
LOD", "now as FBX") live in a shared references/delivery.md.
- Printing gains a local-only route (prepare an OBJ / open a 3MF) that
triggers no authentication, balance check or generation.
Tooling: build.py syncs setup/delivery/troubleshooting to printing;
validate_skills.py enforces the WORKSPACE placeholder, PROJECT_ROOT, no
hardcoded output root, the setup/delivery contract and the plugin manifests.
Tests run the real CLI against loopback with synthetic credentials:
19 Node tests, 0 skipped.
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-18 17:51:08 +08:00
|
|
|
### Doing it by hand instead
|
2026-03-17 14:37:31 +08:00
|
|
|
|
|
|
|
|
```bash
|
Rebuild generation/printing skills on meshy-cli 0.3.0 with a first-run UX (0.5.0)
Both skills now describe the workflow only; every API call, login, refresh,
download, OBJ transform and slicer launch goes through the published
meshy-cli@0.3.0. The bundled Python runtime and the duplicated API manuals
are removed; OpenClaw is untouched. SKILL.md frontmatter keeps only name,
description and license — the release version lives in the plugin manifests.
First-run experience:
- Runner resolution: an installed 0.3.0 `meshy`, else the pinned temporary
package `npm exec --yes --package=meshy-cli@0.3.0 -- meshy ...`.
- One browser login: `auth login --device` as a live process; the URL and
code are shown from its first stderr line, the agent turn stays alive on
that same session, and the original request resumes after `auth status`
verifies. No key, token or task ID is pasted.
- The user's requested path wins: WORKSPACE/PROJECT_ROOT resolved from the
request, ./meshy_output only as the default; the workspace boundary,
symlink and overwrite protection are unchanged.
- Previews, delivery, cost sources, waiting and follow-ups ("a 1500-face
LOD", "now as FBX") live in a shared references/delivery.md.
- Printing gains a local-only route (prepare an OBJ / open a 3MF) that
triggers no authentication, balance check or generation.
Tooling: build.py syncs setup/delivery/troubleshooting to printing;
validate_skills.py enforces the WORKSPACE placeholder, PROJECT_ROOT, no
hardcoded output root, the setup/delivery contract and the plugin manifests.
Tests run the real CLI against loopback with synthetic credentials:
19 Node tests, 0 skipped.
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-18 17:51:08 +08:00
|
|
|
npm install -g meshy-cli@0.3.0
|
|
|
|
|
meshy --version
|
|
|
|
|
meshy auth login
|
|
|
|
|
meshy auth status --format json --no-update-check
|
2026-03-17 14:37:31 +08:00
|
|
|
```
|
|
|
|
|
|
Rebuild generation/printing skills on meshy-cli 0.3.0 with a first-run UX (0.5.0)
Both skills now describe the workflow only; every API call, login, refresh,
download, OBJ transform and slicer launch goes through the published
meshy-cli@0.3.0. The bundled Python runtime and the duplicated API manuals
are removed; OpenClaw is untouched. SKILL.md frontmatter keeps only name,
description and license — the release version lives in the plugin manifests.
First-run experience:
- Runner resolution: an installed 0.3.0 `meshy`, else the pinned temporary
package `npm exec --yes --package=meshy-cli@0.3.0 -- meshy ...`.
- One browser login: `auth login --device` as a live process; the URL and
code are shown from its first stderr line, the agent turn stays alive on
that same session, and the original request resumes after `auth status`
verifies. No key, token or task ID is pasted.
- The user's requested path wins: WORKSPACE/PROJECT_ROOT resolved from the
request, ./meshy_output only as the default; the workspace boundary,
symlink and overwrite protection are unchanged.
- Previews, delivery, cost sources, waiting and follow-ups ("a 1500-face
LOD", "now as FBX") live in a shared references/delivery.md.
- Printing gains a local-only route (prepare an OBJ / open a 3MF) that
triggers no authentication, balance check or generation.
Tooling: build.py syncs setup/delivery/troubleshooting to printing;
validate_skills.py enforces the WORKSPACE placeholder, PROJECT_ROOT, no
hardcoded output root, the setup/delivery contract and the plugin manifests.
Tests run the real CLI against loopback with synthetic credentials:
19 Node tests, 0 skipped.
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-18 17:51:08 +08:00
|
|
|
Run `meshy auth login` from a desktop terminal and approve in your browser; in SSH, CI or
|
|
|
|
|
container sessions use `meshy auth login --device` and open the verification URL it prints.
|
|
|
|
|
Keep the login process alive until you have approved. The CLI stores and refreshes the session;
|
|
|
|
|
both skills reuse it under the same OS user and CLI configuration, in any directory.
|
2026-03-17 14:37:31 +08:00
|
|
|
|
Rebuild generation/printing skills on meshy-cli 0.3.0 with a first-run UX (0.5.0)
Both skills now describe the workflow only; every API call, login, refresh,
download, OBJ transform and slicer launch goes through the published
meshy-cli@0.3.0. The bundled Python runtime and the duplicated API manuals
are removed; OpenClaw is untouched. SKILL.md frontmatter keeps only name,
description and license — the release version lives in the plugin manifests.
First-run experience:
- Runner resolution: an installed 0.3.0 `meshy`, else the pinned temporary
package `npm exec --yes --package=meshy-cli@0.3.0 -- meshy ...`.
- One browser login: `auth login --device` as a live process; the URL and
code are shown from its first stderr line, the agent turn stays alive on
that same session, and the original request resumes after `auth status`
verifies. No key, token or task ID is pasted.
- The user's requested path wins: WORKSPACE/PROJECT_ROOT resolved from the
request, ./meshy_output only as the default; the workspace boundary,
symlink and overwrite protection are unchanged.
- Previews, delivery, cost sources, waiting and follow-ups ("a 1500-face
LOD", "now as FBX") live in a shared references/delivery.md.
- Printing gains a local-only route (prepare an OBJ / open a 3MF) that
triggers no authentication, balance check or generation.
Tooling: build.py syncs setup/delivery/troubleshooting to printing;
validate_skills.py enforces the WORKSPACE placeholder, PROJECT_ROOT, no
hardcoded output root, the setup/delivery contract and the plugin manifests.
Tests run the real CLI against loopback with synthetic credentials:
19 Node tests, 0 skipped.
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-18 17:51:08 +08:00
|
|
|
An existing `MESHY_API_KEY` overrides the stored browser session — keep it if that is
|
|
|
|
|
intentional; `auth status` reports the effective source. Explicit key files need
|
|
|
|
|
`--api-key-file`; the CLI never searches `.env`. Never paste a key into a chat. The
|
|
|
|
|
self-contained [setup reference](skills/meshy-3d-generation/references/setup.md) has the
|
|
|
|
|
version, path and error handling in full.
|
2026-03-17 14:37:31 +08:00
|
|
|
|
Rebuild generation/printing skills on meshy-cli 0.3.0 with a first-run UX (0.5.0)
Both skills now describe the workflow only; every API call, login, refresh,
download, OBJ transform and slicer launch goes through the published
meshy-cli@0.3.0. The bundled Python runtime and the duplicated API manuals
are removed; OpenClaw is untouched. SKILL.md frontmatter keeps only name,
description and license — the release version lives in the plugin manifests.
First-run experience:
- Runner resolution: an installed 0.3.0 `meshy`, else the pinned temporary
package `npm exec --yes --package=meshy-cli@0.3.0 -- meshy ...`.
- One browser login: `auth login --device` as a live process; the URL and
code are shown from its first stderr line, the agent turn stays alive on
that same session, and the original request resumes after `auth status`
verifies. No key, token or task ID is pasted.
- The user's requested path wins: WORKSPACE/PROJECT_ROOT resolved from the
request, ./meshy_output only as the default; the workspace boundary,
symlink and overwrite protection are unchanged.
- Previews, delivery, cost sources, waiting and follow-ups ("a 1500-face
LOD", "now as FBX") live in a shared references/delivery.md.
- Printing gains a local-only route (prepare an OBJ / open a 3MF) that
triggers no authentication, balance check or generation.
Tooling: build.py syncs setup/delivery/troubleshooting to printing;
validate_skills.py enforces the WORKSPACE placeholder, PROJECT_ROOT, no
hardcoded output root, the setup/delivery contract and the plugin manifests.
Tests run the real CLI against loopback with synthetic credentials:
19 Node tests, 0 skipped.
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-18 17:51:08 +08:00
|
|
|
## Skills
|
[Fix] Drop the Codex plugin manifest, document Codex install via .agents/skills
`.codex-plugin/plugin.json` never worked. `codex plugin marketplace add` on
this repo discovered zero plugins, because Codex reads a marketplace listing
at `.agents/plugins/marketplace.json` (which this repo does not have) and
requires each plugin root to be a subdirectory carrying its own real skills/
tree — `.`, `./` and `../../` as the plugin path all fail.
Both cheap workarounds install zero skills while still printing
"Added plugin", so the manifest was strictly worse than none:
- `codex-plugin/skills` as a symlink to `../skills` — not dereferenced
- `"skills": ["../skills/..."]` in plugin.json — not followed out of the root
The only working shape is a second, real copy of every skill, which is the
drift this repo just finished removing.
Codex discovers skills from `.agents/skills` (per repo) and `~/.agents/skills`
(user-wide) with no manifest at all — verified via `codex debug prompt-input`,
which shows the skill reaching the model. That is the cross-editor convention
Cursor also reads, so one README section covers both.
- remove `.codex-plugin/plugin.json`
- drop CODEX_PLUGIN from validate_skills.py checks 2 and 3, and record in the
module docstring why there is deliberately no Codex manifest
- README: add a Codex manual-install section using `.agents/skills`
- CHANGELOG: correct the 0.4.1 entry (never tagged, so amended in place)
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-07-31 17:59:52 +08:00
|
|
|
|
Rebuild generation/printing skills on meshy-cli 0.3.0 with a first-run UX (0.5.0)
Both skills now describe the workflow only; every API call, login, refresh,
download, OBJ transform and slicer launch goes through the published
meshy-cli@0.3.0. The bundled Python runtime and the duplicated API manuals
are removed; OpenClaw is untouched. SKILL.md frontmatter keeps only name,
description and license — the release version lives in the plugin manifests.
First-run experience:
- Runner resolution: an installed 0.3.0 `meshy`, else the pinned temporary
package `npm exec --yes --package=meshy-cli@0.3.0 -- meshy ...`.
- One browser login: `auth login --device` as a live process; the URL and
code are shown from its first stderr line, the agent turn stays alive on
that same session, and the original request resumes after `auth status`
verifies. No key, token or task ID is pasted.
- The user's requested path wins: WORKSPACE/PROJECT_ROOT resolved from the
request, ./meshy_output only as the default; the workspace boundary,
symlink and overwrite protection are unchanged.
- Previews, delivery, cost sources, waiting and follow-ups ("a 1500-face
LOD", "now as FBX") live in a shared references/delivery.md.
- Printing gains a local-only route (prepare an OBJ / open a 3MF) that
triggers no authentication, balance check or generation.
Tooling: build.py syncs setup/delivery/troubleshooting to printing;
validate_skills.py enforces the WORKSPACE placeholder, PROJECT_ROOT, no
hardcoded output root, the setup/delivery contract and the plugin manifests.
Tests run the real CLI against loopback with synthetic credentials:
19 Node tests, 0 skipped.
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-18 17:51:08 +08:00
|
|
|
| Skill | Workflow |
|
|
|
|
|
|---|---|
|
|
|
|
|
| [meshy-3d-generation](skills/meshy-3d-generation/SKILL.md) | Text/image/2D/motion, textures, remesh, conversion, sizing, UV, rigging and animation |
|
|
|
|
|
| [meshy-3d-printing](skills/meshy-3d-printing/SKILL.md) | White models, multi-color 3MF, analysis/repair, Creative Lab products and slicers |
|
[Fix] Drop the Codex plugin manifest, document Codex install via .agents/skills
`.codex-plugin/plugin.json` never worked. `codex plugin marketplace add` on
this repo discovered zero plugins, because Codex reads a marketplace listing
at `.agents/plugins/marketplace.json` (which this repo does not have) and
requires each plugin root to be a subdirectory carrying its own real skills/
tree — `.`, `./` and `../../` as the plugin path all fail.
Both cheap workarounds install zero skills while still printing
"Added plugin", so the manifest was strictly worse than none:
- `codex-plugin/skills` as a symlink to `../skills` — not dereferenced
- `"skills": ["../skills/..."]` in plugin.json — not followed out of the root
The only working shape is a second, real copy of every skill, which is the
drift this repo just finished removing.
Codex discovers skills from `.agents/skills` (per repo) and `~/.agents/skills`
(user-wide) with no manifest at all — verified via `codex debug prompt-input`,
which shows the skill reaching the model. That is the cross-editor convention
Cursor also reads, so one README section covers both.
- remove `.codex-plugin/plugin.json`
- drop CODEX_PLUGIN from validate_skills.py checks 2 and 3, and record in the
module docstring why there is deliberately no Codex manifest
- README: add a Codex manual-install section using `.agents/skills`
- CHANGELOG: correct the 0.4.1 entry (never tagged, so amended in place)
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-07-31 17:59:52 +08:00
|
|
|
|
Rebuild generation/printing skills on meshy-cli 0.3.0 with a first-run UX (0.5.0)
Both skills now describe the workflow only; every API call, login, refresh,
download, OBJ transform and slicer launch goes through the published
meshy-cli@0.3.0. The bundled Python runtime and the duplicated API manuals
are removed; OpenClaw is untouched. SKILL.md frontmatter keeps only name,
description and license — the release version lives in the plugin manifests.
First-run experience:
- Runner resolution: an installed 0.3.0 `meshy`, else the pinned temporary
package `npm exec --yes --package=meshy-cli@0.3.0 -- meshy ...`.
- One browser login: `auth login --device` as a live process; the URL and
code are shown from its first stderr line, the agent turn stays alive on
that same session, and the original request resumes after `auth status`
verifies. No key, token or task ID is pasted.
- The user's requested path wins: WORKSPACE/PROJECT_ROOT resolved from the
request, ./meshy_output only as the default; the workspace boundary,
symlink and overwrite protection are unchanged.
- Previews, delivery, cost sources, waiting and follow-ups ("a 1500-face
LOD", "now as FBX") live in a shared references/delivery.md.
- Printing gains a local-only route (prepare an OBJ / open a 3MF) that
triggers no authentication, balance check or generation.
Tooling: build.py syncs setup/delivery/troubleshooting to printing;
validate_skills.py enforces the WORKSPACE placeholder, PROJECT_ROOT, no
hardcoded output root, the setup/delivery contract and the plugin manifests.
Tests run the real CLI against loopback with synthetic credentials:
19 Node tests, 0 skipped.
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-18 17:51:08 +08:00
|
|
|
Printing installs independently and controls its generation parameters from the start.
|
|
|
|
|
Requested formats and already-approved budgets are preserved. Cost estimates come from
|
|
|
|
|
`meshy make --dry-run` or the published price list, never from your balance; the real charge is
|
|
|
|
|
the task's own `consumed_credits`. No live spending happens during install.
|
2026-03-16 19:44:32 +08:00
|
|
|
|
Rebuild generation/printing skills on meshy-cli 0.3.0 with a first-run UX (0.5.0)
Both skills now describe the workflow only; every API call, login, refresh,
download, OBJ transform and slicer launch goes through the published
meshy-cli@0.3.0. The bundled Python runtime and the duplicated API manuals
are removed; OpenClaw is untouched. SKILL.md frontmatter keeps only name,
description and license — the release version lives in the plugin manifests.
First-run experience:
- Runner resolution: an installed 0.3.0 `meshy`, else the pinned temporary
package `npm exec --yes --package=meshy-cli@0.3.0 -- meshy ...`.
- One browser login: `auth login --device` as a live process; the URL and
code are shown from its first stderr line, the agent turn stays alive on
that same session, and the original request resumes after `auth status`
verifies. No key, token or task ID is pasted.
- The user's requested path wins: WORKSPACE/PROJECT_ROOT resolved from the
request, ./meshy_output only as the default; the workspace boundary,
symlink and overwrite protection are unchanged.
- Previews, delivery, cost sources, waiting and follow-ups ("a 1500-face
LOD", "now as FBX") live in a shared references/delivery.md.
- Printing gains a local-only route (prepare an OBJ / open a 3MF) that
triggers no authentication, balance check or generation.
Tooling: build.py syncs setup/delivery/troubleshooting to printing;
validate_skills.py enforces the WORKSPACE placeholder, PROJECT_ROOT, no
hardcoded output root, the setup/delivery contract and the plugin manifests.
Tests run the real CLI against loopback with synthetic credentials:
19 Node tests, 0 skipped.
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-18 17:51:08 +08:00
|
|
|
Install these directories with your host's skills installer, or copy each **whole directory**:
|
2026-03-16 19:44:32 +08:00
|
|
|
|
Rebuild generation/printing skills on meshy-cli 0.3.0 with a first-run UX (0.5.0)
Both skills now describe the workflow only; every API call, login, refresh,
download, OBJ transform and slicer launch goes through the published
meshy-cli@0.3.0. The bundled Python runtime and the duplicated API manuals
are removed; OpenClaw is untouched. SKILL.md frontmatter keeps only name,
description and license — the release version lives in the plugin manifests.
First-run experience:
- Runner resolution: an installed 0.3.0 `meshy`, else the pinned temporary
package `npm exec --yes --package=meshy-cli@0.3.0 -- meshy ...`.
- One browser login: `auth login --device` as a live process; the URL and
code are shown from its first stderr line, the agent turn stays alive on
that same session, and the original request resumes after `auth status`
verifies. No key, token or task ID is pasted.
- The user's requested path wins: WORKSPACE/PROJECT_ROOT resolved from the
request, ./meshy_output only as the default; the workspace boundary,
symlink and overwrite protection are unchanged.
- Previews, delivery, cost sources, waiting and follow-ups ("a 1500-face
LOD", "now as FBX") live in a shared references/delivery.md.
- Printing gains a local-only route (prepare an OBJ / open a 3MF) that
triggers no authentication, balance check or generation.
Tooling: build.py syncs setup/delivery/troubleshooting to printing;
validate_skills.py enforces the WORKSPACE placeholder, PROJECT_ROOT, no
hardcoded output root, the setup/delivery contract and the plugin manifests.
Tests run the real CLI against loopback with synthetic credentials:
19 Node tests, 0 skipped.
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-18 17:51:08 +08:00
|
|
|
- Claude Code: `.claude/skills/` (the repository also retains its Claude plugin manifest).
|
|
|
|
|
- Cursor: `.cursor/skills/` (Cursor plugin manifest retained).
|
|
|
|
|
- Codex: `.agents/skills/`.
|
2026-03-16 19:44:32 +08:00
|
|
|
|
Rebuild generation/printing skills on meshy-cli 0.3.0 with a first-run UX (0.5.0)
Both skills now describe the workflow only; every API call, login, refresh,
download, OBJ transform and slicer launch goes through the published
meshy-cli@0.3.0. The bundled Python runtime and the duplicated API manuals
are removed; OpenClaw is untouched. SKILL.md frontmatter keeps only name,
description and license — the release version lives in the plugin manifests.
First-run experience:
- Runner resolution: an installed 0.3.0 `meshy`, else the pinned temporary
package `npm exec --yes --package=meshy-cli@0.3.0 -- meshy ...`.
- One browser login: `auth login --device` as a live process; the URL and
code are shown from its first stderr line, the agent turn stays alive on
that same session, and the original request resumes after `auth status`
verifies. No key, token or task ID is pasted.
- The user's requested path wins: WORKSPACE/PROJECT_ROOT resolved from the
request, ./meshy_output only as the default; the workspace boundary,
symlink and overwrite protection are unchanged.
- Previews, delivery, cost sources, waiting and follow-ups ("a 1500-face
LOD", "now as FBX") live in a shared references/delivery.md.
- Printing gains a local-only route (prepare an OBJ / open a 3MF) that
triggers no authentication, balance check or generation.
Tooling: build.py syncs setup/delivery/troubleshooting to printing;
validate_skills.py enforces the WORKSPACE placeholder, PROJECT_ROOT, no
hardcoded output root, the setup/delivery contract and the plugin manifests.
Tests run the real CLI against loopback with synthetic credentials:
19 Node tests, 0 skipped.
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-18 17:51:08 +08:00
|
|
|
Replace a prior managed skill directory rather than merging files, so old `scripts/` files are
|
|
|
|
|
removed. Back up personal edits before replacement. Do not remove model projects or CLI state.
|
|
|
|
|
Host discovery and browser interaction require a real host smoke test; local contract tests
|
|
|
|
|
alone do not certify a host or operating system.
|
2026-08-06 14:24:54 +08:00
|
|
|
|
Rebuild generation/printing skills on meshy-cli 0.3.0 with a first-run UX (0.5.0)
Both skills now describe the workflow only; every API call, login, refresh,
download, OBJ transform and slicer launch goes through the published
meshy-cli@0.3.0. The bundled Python runtime and the duplicated API manuals
are removed; OpenClaw is untouched. SKILL.md frontmatter keeps only name,
description and license — the release version lives in the plugin manifests.
First-run experience:
- Runner resolution: an installed 0.3.0 `meshy`, else the pinned temporary
package `npm exec --yes --package=meshy-cli@0.3.0 -- meshy ...`.
- One browser login: `auth login --device` as a live process; the URL and
code are shown from its first stderr line, the agent turn stays alive on
that same session, and the original request resumes after `auth status`
verifies. No key, token or task ID is pasted.
- The user's requested path wins: WORKSPACE/PROJECT_ROOT resolved from the
request, ./meshy_output only as the default; the workspace boundary,
symlink and overwrite protection are unchanged.
- Previews, delivery, cost sources, waiting and follow-ups ("a 1500-face
LOD", "now as FBX") live in a shared references/delivery.md.
- Printing gains a local-only route (prepare an OBJ / open a 3MF) that
triggers no authentication, balance check or generation.
Tooling: build.py syncs setup/delivery/troubleshooting to printing;
validate_skills.py enforces the WORKSPACE placeholder, PROJECT_ROOT, no
hardcoded output root, the setup/delivery contract and the plugin manifests.
Tests run the real CLI against loopback with synthetic credentials:
19 Node tests, 0 skipped.
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-18 17:51:08 +08:00
|
|
|
### OpenClaw compatibility boundary
|
2026-08-06 14:24:54 +08:00
|
|
|
|
Rebuild generation/printing skills on meshy-cli 0.3.0 with a first-run UX (0.5.0)
Both skills now describe the workflow only; every API call, login, refresh,
download, OBJ transform and slicer launch goes through the published
meshy-cli@0.3.0. The bundled Python runtime and the duplicated API manuals
are removed; OpenClaw is untouched. SKILL.md frontmatter keeps only name,
description and license — the release version lives in the plugin manifests.
First-run experience:
- Runner resolution: an installed 0.3.0 `meshy`, else the pinned temporary
package `npm exec --yes --package=meshy-cli@0.3.0 -- meshy ...`.
- One browser login: `auth login --device` as a live process; the URL and
code are shown from its first stderr line, the agent turn stays alive on
that same session, and the original request resumes after `auth status`
verifies. No key, token or task ID is pasted.
- The user's requested path wins: WORKSPACE/PROJECT_ROOT resolved from the
request, ./meshy_output only as the default; the workspace boundary,
symlink and overwrite protection are unchanged.
- Previews, delivery, cost sources, waiting and follow-ups ("a 1500-face
LOD", "now as FBX") live in a shared references/delivery.md.
- Printing gains a local-only route (prepare an OBJ / open a 3MF) that
triggers no authentication, balance check or generation.
Tooling: build.py syncs setup/delivery/troubleshooting to printing;
validate_skills.py enforces the WORKSPACE placeholder, PROJECT_ROOT, no
hardcoded output root, the setup/delivery contract and the plugin manifests.
Tests run the real CLI against loopback with synthetic credentials:
19 Node tests, 0 skipped.
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-18 17:51:08 +08:00
|
|
|
`skills/meshy-openclaw` remains the separate **0.4.1 legacy Python skill**, unchanged by this
|
|
|
|
|
migration of the two named skills. Its own prerequisites and API-key setup still apply; it
|
|
|
|
|
does not gain CLI browser-session sharing. Do not install all skills expecting all three to
|
|
|
|
|
use the CLI. Legacy `reference/source.md` and
|
|
|
|
|
`scripts/src/meshy_task.py` belong to that older skill, not the two CLI skills.
|
2026-08-06 14:24:54 +08:00
|
|
|
|
Rebuild generation/printing skills on meshy-cli 0.3.0 with a first-run UX (0.5.0)
Both skills now describe the workflow only; every API call, login, refresh,
download, OBJ transform and slicer launch goes through the published
meshy-cli@0.3.0. The bundled Python runtime and the duplicated API manuals
are removed; OpenClaw is untouched. SKILL.md frontmatter keeps only name,
description and license — the release version lives in the plugin manifests.
First-run experience:
- Runner resolution: an installed 0.3.0 `meshy`, else the pinned temporary
package `npm exec --yes --package=meshy-cli@0.3.0 -- meshy ...`.
- One browser login: `auth login --device` as a live process; the URL and
code are shown from its first stderr line, the agent turn stays alive on
that same session, and the original request resumes after `auth status`
verifies. No key, token or task ID is pasted.
- The user's requested path wins: WORKSPACE/PROJECT_ROOT resolved from the
request, ./meshy_output only as the default; the workspace boundary,
symlink and overwrite protection are unchanged.
- Previews, delivery, cost sources, waiting and follow-ups ("a 1500-face
LOD", "now as FBX") live in a shared references/delivery.md.
- Printing gains a local-only route (prepare an OBJ / open a 3MF) that
triggers no authentication, balance check or generation.
Tooling: build.py syncs setup/delivery/troubleshooting to printing;
validate_skills.py enforces the WORKSPACE placeholder, PROJECT_ROOT, no
hardcoded output root, the setup/delivery contract and the plugin manifests.
Tests run the real CLI against loopback with synthetic credentials:
19 Node tests, 0 skipped.
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-18 17:51:08 +08:00
|
|
|
## Data and local effects
|
2026-08-06 14:24:54 +08:00
|
|
|
|
Rebuild generation/printing skills on meshy-cli 0.3.0 with a first-run UX (0.5.0)
Both skills now describe the workflow only; every API call, login, refresh,
download, OBJ transform and slicer launch goes through the published
meshy-cli@0.3.0. The bundled Python runtime and the duplicated API manuals
are removed; OpenClaw is untouched. SKILL.md frontmatter keeps only name,
description and license — the release version lives in the plugin manifests.
First-run experience:
- Runner resolution: an installed 0.3.0 `meshy`, else the pinned temporary
package `npm exec --yes --package=meshy-cli@0.3.0 -- meshy ...`.
- One browser login: `auth login --device` as a live process; the URL and
code are shown from its first stderr line, the agent turn stays alive on
that same session, and the original request resumes after `auth status`
verifies. No key, token or task ID is pasted.
- The user's requested path wins: WORKSPACE/PROJECT_ROOT resolved from the
request, ./meshy_output only as the default; the workspace boundary,
symlink and overwrite protection are unchanged.
- Previews, delivery, cost sources, waiting and follow-ups ("a 1500-face
LOD", "now as FBX") live in a shared references/delivery.md.
- Printing gains a local-only route (prepare an OBJ / open a 3MF) that
triggers no authentication, balance check or generation.
Tooling: build.py syncs setup/delivery/troubleshooting to printing;
validate_skills.py enforces the WORKSPACE placeholder, PROJECT_ROOT, no
hardcoded output root, the setup/delivery contract and the plugin manifests.
Tests run the real CLI against loopback with synthetic credentials:
19 Node tests, 0 skipped.
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-18 17:51:08 +08:00
|
|
|
The CLI sends prompts, media and task requests to the resolved Meshy API origins (normally
|
|
|
|
|
`api.meshy.ai`); OAuth opens Meshy's browser page. Asset downloads and input URL preflights
|
|
|
|
|
contact their media hosts without the API credential. npm is contacted when the CLI is installed
|
|
|
|
|
or run as a temporary package; workflow commands disable the update notifier. An unexpected
|
|
|
|
|
custom API or login origin must be resolved before credentials are sent.
|
2026-08-06 14:24:54 +08:00
|
|
|
|
Rebuild generation/printing skills on meshy-cli 0.3.0 with a first-run UX (0.5.0)
Both skills now describe the workflow only; every API call, login, refresh,
download, OBJ transform and slicer launch goes through the published
meshy-cli@0.3.0. The bundled Python runtime and the duplicated API manuals
are removed; OpenClaw is untouched. SKILL.md frontmatter keeps only name,
description and license — the release version lives in the plugin manifests.
First-run experience:
- Runner resolution: an installed 0.3.0 `meshy`, else the pinned temporary
package `npm exec --yes --package=meshy-cli@0.3.0 -- meshy ...`.
- One browser login: `auth login --device` as a live process; the URL and
code are shown from its first stderr line, the agent turn stays alive on
that same session, and the original request resumes after `auth status`
verifies. No key, token or task ID is pasted.
- The user's requested path wins: WORKSPACE/PROJECT_ROOT resolved from the
request, ./meshy_output only as the default; the workspace boundary,
symlink and overwrite protection are unchanged.
- Previews, delivery, cost sources, waiting and follow-ups ("a 1500-face
LOD", "now as FBX") live in a shared references/delivery.md.
- Printing gains a local-only route (prepare an OBJ / open a 3MF) that
triggers no authentication, balance check or generation.
Tooling: build.py syncs setup/delivery/troubleshooting to printing;
validate_skills.py enforces the WORKSPACE placeholder, PROJECT_ROOT, no
hardcoded output root, the setup/delivery contract and the plugin manifests.
Tests run the real CLI against loopback with synthetic credentials:
19 Node tests, 0 skipped.
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-18 17:51:08 +08:00
|
|
|
CLI profiles normally live in `~/.config/meshy/credentials.json` with mode 0600.
|
|
|
|
|
`MESHY_CONFIG_DIR` moves the config root, including operation and device-flow state;
|
|
|
|
|
`MESHY_CREDENTIALS_PATH` overrides only the credential file. The skills never read or copy tokens,
|
|
|
|
|
and never print a token, device code or signed URL.
|
|
|
|
|
`auth use` changes the shared active profile, so concurrent tasks should not switch accounts
|
|
|
|
|
independently. Profile sharing is local, not automatic across machines or containers.
|
[Refactor] Skills split SKILL.md into references/, single-source reference.md, real scripts/ (ENG-1580) (#5)
* Split SKILL.md into references/, single-source reference.md, real scripts/
- All three SKILL.md files are now <=300 lines: frontmatter, flow
overview, decision trees, and per-round UX rules stay; parameter
detail, error trees, and code moved verbatim into per-skill
references/ (setup.md, pipelines.md, printing.md,
troubleshooting.md as applicable).
- The inline Python template (create_task/poll_task/download/
get_project_dir/record_task/save_thumbnail) is now a real CLI,
scripts/meshy_task.py, bundled in each skill; printing's slicer
detection and OBJ-fix snippets became scripts/slicers.py and
scripts/fix_obj.py. SKILL.md files state the rule: never rebuild
bundled scripts from memory.
- The three hand-drifted reference.md copies are merged into
reference/source.md; scripts/build.py regenerates each skill's
reference.md (OpenClaw's also gets the SECURITY MANIFEST injected
from its SKILL.md, keeping it a single self-contained file).
python3 scripts/build.py --check verifies freshness, the 300-line
limit, and that every references/*.md is linked from its SKILL.md
(ready for ENG-1578's CI checks 4+5).
- OpenClaw SECURITY MANIFEST now covers .env.local reads, matching
the bundled CLI's key lookup.
Resolves ENG-1580
* [Docs] Skills fix directory install after the references/ split
- Manual install now copies the whole skill directory (cp -R) instead of
SKILL.md + reference.md, so references/ and scripts/ travel with it;
the old flat copy would reintroduce the broken links ENG-1575 fixed
- Update the Skill vs MCP table: setup is a directory copy, not two files
Refs: ENG-1580
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
---------
Co-authored-by: sandrone-bot[bot] <270319573+sandrone-bot[bot]@users.noreply.github.com>
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-01 00:27:43 +08:00
|
|
|
|
Rebuild generation/printing skills on meshy-cli 0.3.0 with a first-run UX (0.5.0)
Both skills now describe the workflow only; every API call, login, refresh,
download, OBJ transform and slicer launch goes through the published
meshy-cli@0.3.0. The bundled Python runtime and the duplicated API manuals
are removed; OpenClaw is untouched. SKILL.md frontmatter keeps only name,
description and license — the release version lives in the plugin manifests.
First-run experience:
- Runner resolution: an installed 0.3.0 `meshy`, else the pinned temporary
package `npm exec --yes --package=meshy-cli@0.3.0 -- meshy ...`.
- One browser login: `auth login --device` as a live process; the URL and
code are shown from its first stderr line, the agent turn stays alive on
that same session, and the original request resumes after `auth status`
verifies. No key, token or task ID is pasted.
- The user's requested path wins: WORKSPACE/PROJECT_ROOT resolved from the
request, ./meshy_output only as the default; the workspace boundary,
symlink and overwrite protection are unchanged.
- Previews, delivery, cost sources, waiting and follow-ups ("a 1500-face
LOD", "now as FBX") live in a shared references/delivery.md.
- Printing gains a local-only route (prepare an OBJ / open a 3MF) that
triggers no authentication, balance check or generation.
Tooling: build.py syncs setup/delivery/troubleshooting to printing;
validate_skills.py enforces the WORKSPACE placeholder, PROJECT_ROOT, no
hardcoded output root, the setup/delivery contract and the plugin manifests.
Tests run the real CLI against loopback with synthetic credentials:
19 Node tests, 0 skipped.
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-18 17:51:08 +08:00
|
|
|
Models, task snapshots and project metadata are written inside one workspace per job: the
|
|
|
|
|
directory you named, or `./meshy_output` when you named none. Every writing command carries that
|
|
|
|
|
boundary explicitly, so a path outside it — including through a symlink — is refused rather than
|
|
|
|
|
written. Downloads are selected, not fetched in every format; existing files are not overwritten
|
|
|
|
|
without `--overwrite`. OBJ preparation writes a new file. Slicer integration launches a detected
|
|
|
|
|
installed application; a launch request is not proof the model was imported.
|
[Refactor] Skills split SKILL.md into references/, single-source reference.md, real scripts/ (ENG-1580) (#5)
* Split SKILL.md into references/, single-source reference.md, real scripts/
- All three SKILL.md files are now <=300 lines: frontmatter, flow
overview, decision trees, and per-round UX rules stay; parameter
detail, error trees, and code moved verbatim into per-skill
references/ (setup.md, pipelines.md, printing.md,
troubleshooting.md as applicable).
- The inline Python template (create_task/poll_task/download/
get_project_dir/record_task/save_thumbnail) is now a real CLI,
scripts/meshy_task.py, bundled in each skill; printing's slicer
detection and OBJ-fix snippets became scripts/slicers.py and
scripts/fix_obj.py. SKILL.md files state the rule: never rebuild
bundled scripts from memory.
- The three hand-drifted reference.md copies are merged into
reference/source.md; scripts/build.py regenerates each skill's
reference.md (OpenClaw's also gets the SECURITY MANIFEST injected
from its SKILL.md, keeping it a single self-contained file).
python3 scripts/build.py --check verifies freshness, the 300-line
limit, and that every references/*.md is linked from its SKILL.md
(ready for ENG-1578's CI checks 4+5).
- OpenClaw SECURITY MANIFEST now covers .env.local reads, matching
the bundled CLI's key lookup.
Resolves ENG-1580
* [Docs] Skills fix directory install after the references/ split
- Manual install now copies the whole skill directory (cp -R) instead of
SKILL.md + reference.md, so references/ and scripts/ travel with it;
the old flat copy would reintroduce the broken links ENG-1575 fixed
- Update the Skill vs MCP table: setup is a directory copy, not two files
Refs: ENG-1580
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
---------
Co-authored-by: sandrone-bot[bot] <270319573+sandrone-bot[bot]@users.noreply.github.com>
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-01 00:27:43 +08:00
|
|
|
|
Rebuild generation/printing skills on meshy-cli 0.3.0 with a first-run UX (0.5.0)
Both skills now describe the workflow only; every API call, login, refresh,
download, OBJ transform and slicer launch goes through the published
meshy-cli@0.3.0. The bundled Python runtime and the duplicated API manuals
are removed; OpenClaw is untouched. SKILL.md frontmatter keeps only name,
description and license — the release version lives in the plugin manifests.
First-run experience:
- Runner resolution: an installed 0.3.0 `meshy`, else the pinned temporary
package `npm exec --yes --package=meshy-cli@0.3.0 -- meshy ...`.
- One browser login: `auth login --device` as a live process; the URL and
code are shown from its first stderr line, the agent turn stays alive on
that same session, and the original request resumes after `auth status`
verifies. No key, token or task ID is pasted.
- The user's requested path wins: WORKSPACE/PROJECT_ROOT resolved from the
request, ./meshy_output only as the default; the workspace boundary,
symlink and overwrite protection are unchanged.
- Previews, delivery, cost sources, waiting and follow-ups ("a 1500-face
LOD", "now as FBX") live in a shared references/delivery.md.
- Printing gains a local-only route (prepare an OBJ / open a 3MF) that
triggers no authentication, balance check or generation.
Tooling: build.py syncs setup/delivery/troubleshooting to printing;
validate_skills.py enforces the WORKSPACE placeholder, PROJECT_ROOT, no
hardcoded output root, the setup/delivery contract and the plugin manifests.
Tests run the real CLI against loopback with synthetic credentials:
19 Node tests, 0 skipped.
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-18 17:51:08 +08:00
|
|
|
## Development and validation
|
[Refactor] Skills split SKILL.md into references/, single-source reference.md, real scripts/ (ENG-1580) (#5)
* Split SKILL.md into references/, single-source reference.md, real scripts/
- All three SKILL.md files are now <=300 lines: frontmatter, flow
overview, decision trees, and per-round UX rules stay; parameter
detail, error trees, and code moved verbatim into per-skill
references/ (setup.md, pipelines.md, printing.md,
troubleshooting.md as applicable).
- The inline Python template (create_task/poll_task/download/
get_project_dir/record_task/save_thumbnail) is now a real CLI,
scripts/meshy_task.py, bundled in each skill; printing's slicer
detection and OBJ-fix snippets became scripts/slicers.py and
scripts/fix_obj.py. SKILL.md files state the rule: never rebuild
bundled scripts from memory.
- The three hand-drifted reference.md copies are merged into
reference/source.md; scripts/build.py regenerates each skill's
reference.md (OpenClaw's also gets the SECURITY MANIFEST injected
from its SKILL.md, keeping it a single self-contained file).
python3 scripts/build.py --check verifies freshness, the 300-line
limit, and that every references/*.md is linked from its SKILL.md
(ready for ENG-1578's CI checks 4+5).
- OpenClaw SECURITY MANIFEST now covers .env.local reads, matching
the bundled CLI's key lookup.
Resolves ENG-1580
* [Docs] Skills fix directory install after the references/ split
- Manual install now copies the whole skill directory (cp -R) instead of
SKILL.md + reference.md, so references/ and scripts/ travel with it;
the old flat copy would reintroduce the broken links ENG-1575 fixed
- Update the Skill vs MCP table: setup is a directory copy, not two files
Refs: ENG-1580
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
---------
Co-authored-by: sandrone-bot[bot] <270319573+sandrone-bot[bot]@users.noreply.github.com>
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-01 00:27:43 +08:00
|
|
|
|
Rebuild generation/printing skills on meshy-cli 0.3.0 with a first-run UX (0.5.0)
Both skills now describe the workflow only; every API call, login, refresh,
download, OBJ transform and slicer launch goes through the published
meshy-cli@0.3.0. The bundled Python runtime and the duplicated API manuals
are removed; OpenClaw is untouched. SKILL.md frontmatter keeps only name,
description and license — the release version lives in the plugin manifests.
First-run experience:
- Runner resolution: an installed 0.3.0 `meshy`, else the pinned temporary
package `npm exec --yes --package=meshy-cli@0.3.0 -- meshy ...`.
- One browser login: `auth login --device` as a live process; the URL and
code are shown from its first stderr line, the agent turn stays alive on
that same session, and the original request resumes after `auth status`
verifies. No key, token or task ID is pasted.
- The user's requested path wins: WORKSPACE/PROJECT_ROOT resolved from the
request, ./meshy_output only as the default; the workspace boundary,
symlink and overwrite protection are unchanged.
- Previews, delivery, cost sources, waiting and follow-ups ("a 1500-face
LOD", "now as FBX") live in a shared references/delivery.md.
- Printing gains a local-only route (prepare an OBJ / open a 3MF) that
triggers no authentication, balance check or generation.
Tooling: build.py syncs setup/delivery/troubleshooting to printing;
validate_skills.py enforces the WORKSPACE placeholder, PROJECT_ROOT, no
hardcoded output root, the setup/delivery contract and the plugin manifests.
Tests run the real CLI against loopback with synthetic credentials:
19 Node tests, 0 skipped.
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-18 17:51:08 +08:00
|
|
|
Only maintainers need Python 3.11+ and PyYAML. None of these tools ships in the CLI skill folders.
|
[Refactor] Skills split SKILL.md into references/, single-source reference.md, real scripts/ (ENG-1580) (#5)
* Split SKILL.md into references/, single-source reference.md, real scripts/
- All three SKILL.md files are now <=300 lines: frontmatter, flow
overview, decision trees, and per-round UX rules stay; parameter
detail, error trees, and code moved verbatim into per-skill
references/ (setup.md, pipelines.md, printing.md,
troubleshooting.md as applicable).
- The inline Python template (create_task/poll_task/download/
get_project_dir/record_task/save_thumbnail) is now a real CLI,
scripts/meshy_task.py, bundled in each skill; printing's slicer
detection and OBJ-fix snippets became scripts/slicers.py and
scripts/fix_obj.py. SKILL.md files state the rule: never rebuild
bundled scripts from memory.
- The three hand-drifted reference.md copies are merged into
reference/source.md; scripts/build.py regenerates each skill's
reference.md (OpenClaw's also gets the SECURITY MANIFEST injected
from its SKILL.md, keeping it a single self-contained file).
python3 scripts/build.py --check verifies freshness, the 300-line
limit, and that every references/*.md is linked from its SKILL.md
(ready for ENG-1578's CI checks 4+5).
- OpenClaw SECURITY MANIFEST now covers .env.local reads, matching
the bundled CLI's key lookup.
Resolves ENG-1580
* [Docs] Skills fix directory install after the references/ split
- Manual install now copies the whole skill directory (cp -R) instead of
SKILL.md + reference.md, so references/ and scripts/ travel with it;
the old flat copy would reintroduce the broken links ENG-1575 fixed
- Update the Skill vs MCP table: setup is a directory copy, not two files
Refs: ENG-1580
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
---------
Co-authored-by: sandrone-bot[bot] <270319573+sandrone-bot[bot]@users.noreply.github.com>
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-01 00:27:43 +08:00
|
|
|
|
|
|
|
|
```bash
|
Rebuild generation/printing skills on meshy-cli 0.3.0 with a first-run UX (0.5.0)
Both skills now describe the workflow only; every API call, login, refresh,
download, OBJ transform and slicer launch goes through the published
meshy-cli@0.3.0. The bundled Python runtime and the duplicated API manuals
are removed; OpenClaw is untouched. SKILL.md frontmatter keeps only name,
description and license — the release version lives in the plugin manifests.
First-run experience:
- Runner resolution: an installed 0.3.0 `meshy`, else the pinned temporary
package `npm exec --yes --package=meshy-cli@0.3.0 -- meshy ...`.
- One browser login: `auth login --device` as a live process; the URL and
code are shown from its first stderr line, the agent turn stays alive on
that same session, and the original request resumes after `auth status`
verifies. No key, token or task ID is pasted.
- The user's requested path wins: WORKSPACE/PROJECT_ROOT resolved from the
request, ./meshy_output only as the default; the workspace boundary,
symlink and overwrite protection are unchanged.
- Previews, delivery, cost sources, waiting and follow-ups ("a 1500-face
LOD", "now as FBX") live in a shared references/delivery.md.
- Printing gains a local-only route (prepare an OBJ / open a 3MF) that
triggers no authentication, balance check or generation.
Tooling: build.py syncs setup/delivery/troubleshooting to printing;
validate_skills.py enforces the WORKSPACE placeholder, PROJECT_ROOT, no
hardcoded output root, the setup/delivery contract and the plugin manifests.
Tests run the real CLI against loopback with synthetic credentials:
19 Node tests, 0 skipped.
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-18 17:51:08 +08:00
|
|
|
python3 scripts/build.py
|
|
|
|
|
python3 scripts/build.py --check
|
|
|
|
|
python3 scripts/validate_skills.py
|
|
|
|
|
MESHY_CLI_BIN=/absolute/path/to/meshy node --test tests/*.test.mjs
|
[Refactor] Skills split SKILL.md into references/, single-source reference.md, real scripts/ (ENG-1580) (#5)
* Split SKILL.md into references/, single-source reference.md, real scripts/
- All three SKILL.md files are now <=300 lines: frontmatter, flow
overview, decision trees, and per-round UX rules stay; parameter
detail, error trees, and code moved verbatim into per-skill
references/ (setup.md, pipelines.md, printing.md,
troubleshooting.md as applicable).
- The inline Python template (create_task/poll_task/download/
get_project_dir/record_task/save_thumbnail) is now a real CLI,
scripts/meshy_task.py, bundled in each skill; printing's slicer
detection and OBJ-fix snippets became scripts/slicers.py and
scripts/fix_obj.py. SKILL.md files state the rule: never rebuild
bundled scripts from memory.
- The three hand-drifted reference.md copies are merged into
reference/source.md; scripts/build.py regenerates each skill's
reference.md (OpenClaw's also gets the SECURITY MANIFEST injected
from its SKILL.md, keeping it a single self-contained file).
python3 scripts/build.py --check verifies freshness, the 300-line
limit, and that every references/*.md is linked from its SKILL.md
(ready for ENG-1578's CI checks 4+5).
- OpenClaw SECURITY MANIFEST now covers .env.local reads, matching
the bundled CLI's key lookup.
Resolves ENG-1580
* [Docs] Skills fix directory install after the references/ split
- Manual install now copies the whole skill directory (cp -R) instead of
SKILL.md + reference.md, so references/ and scripts/ travel with it;
the old flat copy would reintroduce the broken links ENG-1575 fixed
- Update the Skill vs MCP table: setup is a directory copy, not two files
Refs: ENG-1580
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
---------
Co-authored-by: sandrone-bot[bot] <270319573+sandrone-bot[bot]@users.noreply.github.com>
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-01 00:27:43 +08:00
|
|
|
```
|
|
|
|
|
|
Rebuild generation/printing skills on meshy-cli 0.3.0 with a first-run UX (0.5.0)
Both skills now describe the workflow only; every API call, login, refresh,
download, OBJ transform and slicer launch goes through the published
meshy-cli@0.3.0. The bundled Python runtime and the duplicated API manuals
are removed; OpenClaw is untouched. SKILL.md frontmatter keeps only name,
description and license — the release version lives in the plugin manifests.
First-run experience:
- Runner resolution: an installed 0.3.0 `meshy`, else the pinned temporary
package `npm exec --yes --package=meshy-cli@0.3.0 -- meshy ...`.
- One browser login: `auth login --device` as a live process; the URL and
code are shown from its first stderr line, the agent turn stays alive on
that same session, and the original request resumes after `auth status`
verifies. No key, token or task ID is pasted.
- The user's requested path wins: WORKSPACE/PROJECT_ROOT resolved from the
request, ./meshy_output only as the default; the workspace boundary,
symlink and overwrite protection are unchanged.
- Previews, delivery, cost sources, waiting and follow-ups ("a 1500-face
LOD", "now as FBX") live in a shared references/delivery.md.
- Printing gains a local-only route (prepare an OBJ / open a 3MF) that
triggers no authentication, balance check or generation.
Tooling: build.py syncs setup/delivery/troubleshooting to printing;
validate_skills.py enforces the WORKSPACE placeholder, PROJECT_ROOT, no
hardcoded output root, the setup/delivery contract and the plugin manifests.
Tests run the real CLI against loopback with synthetic credentials:
19 Node tests, 0 skipped.
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-18 17:51:08 +08:00
|
|
|
`build.py` copies the shared setup, delivery and troubleshooting references from generation to
|
|
|
|
|
printing so each skill directory installs on its own; `--check` fails when a copy is stale.
|
|
|
|
|
`validate_skills.py` checks frontmatter, link closure, the absence of bundled runtime files, the
|
|
|
|
|
JSON envelope and resolved workspace placeholder on every documented CLI command, and the plugin
|
|
|
|
|
manifests. Neither touches OpenClaw.
|
|
|
|
|
|
|
|
|
|
Tests use a loopback API, synthetic credentials and temporary config/workspace directories.
|
|
|
|
|
`tests/runner-contract.test.mjs` additionally runs the documented `npm exec` entry point, so it
|
|
|
|
|
populates an isolated npm cache from the registry on its first run and needs no `MESHY_CLI_BIN`.
|
|
|
|
|
CI installs the pinned CLI into a temporary prefix; tests never contact production or spend
|
|
|
|
|
credits. Without `MESHY_CLI_BIN`, the CLI contract tests skip explicitly — a skip is not a pass,
|
|
|
|
|
so set it.
|
|
|
|
|
|
|
|
|
|
## Upgrade and rollback
|
|
|
|
|
|
|
|
|
|
Old task IDs remain usable. Initialize or reopen a CLI project and resume the original resource's
|
|
|
|
|
wait; never recreate a task just to migrate. The CLI backs up legacy metadata when first writing
|
|
|
|
|
its newer schema. Keep that backup. Returning to an old Python skill requires its old runtime
|
|
|
|
|
and API-key setup; it cannot use the CLI OAuth store. Backward reading of newer project metadata
|
|
|
|
|
is not guaranteed. Keep the CLI for inspecting in-flight tasks rather than submitting again.
|
[Refactor] Skills split SKILL.md into references/, single-source reference.md, real scripts/ (ENG-1580) (#5)
* Split SKILL.md into references/, single-source reference.md, real scripts/
- All three SKILL.md files are now <=300 lines: frontmatter, flow
overview, decision trees, and per-round UX rules stay; parameter
detail, error trees, and code moved verbatim into per-skill
references/ (setup.md, pipelines.md, printing.md,
troubleshooting.md as applicable).
- The inline Python template (create_task/poll_task/download/
get_project_dir/record_task/save_thumbnail) is now a real CLI,
scripts/meshy_task.py, bundled in each skill; printing's slicer
detection and OBJ-fix snippets became scripts/slicers.py and
scripts/fix_obj.py. SKILL.md files state the rule: never rebuild
bundled scripts from memory.
- The three hand-drifted reference.md copies are merged into
reference/source.md; scripts/build.py regenerates each skill's
reference.md (OpenClaw's also gets the SECURITY MANIFEST injected
from its SKILL.md, keeping it a single self-contained file).
python3 scripts/build.py --check verifies freshness, the 300-line
limit, and that every references/*.md is linked from its SKILL.md
(ready for ENG-1578's CI checks 4+5).
- OpenClaw SECURITY MANIFEST now covers .env.local reads, matching
the bundled CLI's key lookup.
Resolves ENG-1580
* [Docs] Skills fix directory install after the references/ split
- Manual install now copies the whole skill directory (cp -R) instead of
SKILL.md + reference.md, so references/ and scripts/ travel with it;
the old flat copy would reintroduce the broken links ENG-1575 fixed
- Update the Skill vs MCP table: setup is a directory copy, not two files
Refs: ENG-1580
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
---------
Co-authored-by: sandrone-bot[bot] <270319573+sandrone-bot[bot]@users.noreply.github.com>
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-01 00:27:43 +08:00
|
|
|
|
2026-03-16 19:44:32 +08:00
|
|
|
## License
|
|
|
|
|
|
|
|
|
|
[MIT](LICENSE)
|