Files

137 lines
7.2 KiB
Markdown
Raw Permalink Normal View History

# Meshy 3D Agent
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**.
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
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:
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.
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").
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:
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.
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
```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
```
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.
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.
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.
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**:
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/`.
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.
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
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.
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
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.
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
## License
[MIT](LICENSE)