meshy-dsh 0.0.0-stage → 0.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 Meshy
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.md CHANGED
@@ -1,3 +1,63 @@
1
- # Temporary Holding Version
1
+ # Meshy for DeepSeek Harness
2
2
 
3
- This version is a temporary placeholder for this package. An operational version to replace this has been submitted for review and is awaiting a staged release.
3
+ English | [中文](README.zh.md)
4
+
5
+ Meshy's 3D generation and 3D printing skills for [DeepSeek Harness](https://github.com/deepseek-ai/deepseek-harness)
6
+ (dsh). The agent drives [`meshy-cli`](https://www.npmjs.com/package/meshy-cli) through its shell
7
+ tool and saves the results into your project: text or image to 3D, textures, remeshing, rigging
8
+ and animation, format conversion, and print-ready files with slicer handoff.
9
+
10
+ ## Install
11
+
12
+ ```bash
13
+ dsh plugin --profile web add meshy-dsh
14
+ # or from GitHub
15
+ dsh plugin --profile web add github:meshy-dev/meshy-dsh
16
+ ```
17
+
18
+ `dsh --profile web --dump-config` now shows a `# == meshy-dsh` layer, and typing `/` in `dsh web`
19
+ lists `meshy-3d-generation` and `meshy-3d-printing`. Then ask for a model, for example "make a
20
+ low-poly treasure chest and export FBX". The agent checks the CLI, asks you to sign in if needed,
21
+ shows the cost and waits for your confirmation before it spends credits.
22
+
23
+ Requires Node.js 22.12 or newer. The agent installs the Meshy CLI (`npm install -g meshy-cli@0.7`)
24
+ when it is missing and signs you in with `meshy auth login`; in mainland China it uses
25
+ `meshy auth login --region cn`, which signs in at meshy.cn with the same account and keeps later
26
+ calls on the China site. dsh removes credential-shaped variables from the agent's shell, so an
27
+ exported `MESHY_API_KEY` does not reach the CLI; the browser login does.
28
+
29
+ ## How it works
30
+
31
+ The package is configuration only. [`cordis.patch.yml`](cordis.patch.yml) mounts one more
32
+ instance of dsh's built-in filesystem skill provider over this package's `skills/` directory, so
33
+ the skills load like any local skill and the package runs no code. A skill of the same name in
34
+ your project's `.dsh/skills` or `.agents/skills` takes precedence. `locale/` and `icon.svg` are
35
+ what dsh's Plugin Manager shows.
36
+
37
+ `skills/` is a copy of the CLI skills in
38
+ [meshy-3d-agent](https://github.com/meshy-dev/meshy-3d-agent), which owns them and serves every
39
+ other agent host. Change them there.
40
+
41
+ ## Development
42
+
43
+ ```bash
44
+ npm test # manifest, display metadata, packed files
45
+ node scripts/sync-skills.mjs --check # skills/ matches the pinned meshy-3d-agent release
46
+ node scripts/smoke.mjs # install into a throwaway dsh and load the skills
47
+ node scripts/sync-skills.mjs --from ../meshy-3d-agent # try unreleased skills from a checkout
48
+ ```
49
+
50
+ To take new skills: release meshy-3d-agent, set `meshy.skills` in `package.json` to its tag, run
51
+ `node scripts/sync-skills.mjs`, and bump the version.
52
+
53
+ ## Release
54
+
55
+ Bump `version` in `package.json` and add a `CHANGELOG.md` entry, then create a GitHub Release
56
+ tagged `v<version>` and run [`publish.yml`](.github/workflows/publish.yml) from `main` with that
57
+ tag. It checks the tag against `package.json`, runs the checks above and publishes with
58
+ provenance, using an npm token it reads from AWS Secrets Manager through GitHub OIDC (setup in
59
+ [`scripts/release/aws/`](scripts/release/aws/)). Do not publish by hand.
60
+
61
+ ## License
62
+
63
+ MIT
package/README.zh.md ADDED
@@ -0,0 +1,31 @@
1
+ # Meshy for DeepSeek Harness
2
+
3
+ [English](README.md) | 中文
4
+
5
+ 为 [DeepSeek Harness](https://github.com/deepseek-ai/deepseek-harness)(dsh)提供 Meshy 的 3D 生成与 3D 打印 skill。agent 通过 shell 调用 [`meshy-cli`](https://www.npmjs.com/package/meshy-cli),结果直接保存到你的项目里:文字或图片生成 3D、贴图、重拓扑、绑骨与动画、格式转换,以及可直接打印的文件和切片软件对接。
6
+
7
+ ## 安装
8
+
9
+ ```bash
10
+ dsh plugin --profile web add meshy-dsh
11
+ # 或从 GitHub 安装
12
+ dsh plugin --profile web add github:meshy-dev/meshy-dsh
13
+ ```
14
+
15
+ 装好后,`dsh --profile web --dump-config` 里会出现 `# == meshy-dsh` 一层;在 `dsh web` 的输入框里输入 `/`,能看到 `meshy-3d-generation` 和 `meshy-3d-printing`。然后直接提需求,比如"做一个低多边形的宝箱,导出 FBX"。agent 会先检查 CLI,需要时引导你登录,说明消耗的积分,等你确认后才开始生成。
16
+
17
+ 需要 Node.js 22.12 或更新版本。没有 Meshy CLI 时 agent 会自动安装(`npm install -g meshy-cli@0.7`),并用 `meshy auth login` 帮你登录;在中国大陆请用 `meshy auth login --region cn`,在 meshy.cn 登录,账号和国际站相同,之后的调用都会走中国站。dsh 会从 agent 的 shell 里去掉带凭据特征的环境变量,所以你 export 的 `MESHY_API_KEY` 传不到 CLI,请使用浏览器登录。
18
+
19
+ ## 工作方式
20
+
21
+ 这个包只有配置,没有代码。[`cordis.patch.yml`](cordis.patch.yml) 再挂一个 dsh 内置的文件系统 skill provider,只扫描本包的 `skills/` 目录,所以这些 skill 和本地 skill 的加载方式完全一样。项目里 `.dsh/skills` 或 `.agents/skills` 下的同名 skill 优先。`locale/` 和 `icon.svg` 是 dsh 插件管理页显示的名称、简介和图标。
22
+
23
+ `skills/` 是 [meshy-3d-agent](https://github.com/meshy-dev/meshy-3d-agent) 里 CLI skill 的副本;那个仓库负责维护,也服务其他所有 agent 宿主。修改请提到那边。
24
+
25
+ ## 开发与发布
26
+
27
+ 命令见 [README.md](README.md#development)。发布方式:更新 `package.json` 版本与 `CHANGELOG.md`,然后建标签为 `v<版本号>` 的 GitHub Release,再从 `main` 手动运行 `publish.yml` 并填入这个标签。它通过 GitHub OIDC 从 AWS Secrets Manager 读取 npm token 发布(配置见 `scripts/release/aws/`)。不要手动 `npm publish`。
28
+
29
+ ## 许可
30
+
31
+ MIT
@@ -0,0 +1,12 @@
1
+ # A configuration-only bundle: one more instance of dsh's own filesystem skill
2
+ # provider, scanning only this package's skills/. The path is resolved from
3
+ # wherever the package is installed (npm, GitHub or a local checkout).
4
+ - insert:
5
+ - id: meshy
6
+ name: '@deepseek-ai/dsh-skill-filesystem'
7
+ config:
8
+ providerName: meshy
9
+ includeDefaultRoots: false
10
+ watch: false
11
+ customSkillDirs:
12
+ - !!js "process.getBuiltinModule('node:path').join(process.getBuiltinModule('node:module').createRequire(baseUrl).resolve('meshy-dsh/package.json'), '..', 'skills')"
package/icon.svg ADDED
@@ -0,0 +1,21 @@
1
+ <svg width="128" height="128" viewBox="0 0 128 128" fill="none" xmlns="http://www.w3.org/2000/svg">
2
+ <path fill-rule="evenodd" clip-rule="evenodd" d="M28.5934 44.8504C29.8586 41.8817 31.438 38.9589 33.3124 36.1602L33.3441 36.1122L33.3443 36.1119C33.5483 35.8028 33.7545 35.497 33.9626 35.1945C46.2824 16.0855 72.7324 4.63474 95.0957 14.7787C112.77 22.3436 121.24 37.7913 120.996 51.5447C120.873 58.4028 118.555 65.0933 113.769 69.9297C112.949 70.7575 112.072 71.5164 111.14 72.2025C115.459 75.6317 118.284 79.8021 119.018 84.6751C120.115 91.9673 116.181 98.4846 110.643 103.293C99.562 112.913 78.7973 118.942 55.1446 116.428C51.215 116.071 37.0192 113.28 33.7871 108.093C32.0773 107.268 30.5163 106.29 29.1677 105.142C26.9572 103.259 25.1314 100.746 24.4585 97.5765C23.4792 92.965 26.0115 85.1307 31.2693 82.8897C33.1603 92.1756 39.9027 92.7389 44.9092 93.262C46.9596 91.5404 47.9475 90.5656 50.0112 87.9834C46.0059 88.3065 40.9216 87.2143 37.0192 85.1307C29.861 81.3085 25.5488 74.2887 25.0794 64.2607C24.6144 57.6913 26.0258 50.8748 28.5934 44.8504ZM38.6508 38.3004C38.4469 38.5959 38.2448 38.8951 38.0449 39.1981C38.0313 39.2186 38.0178 39.2392 38.0043 39.2597C36.3176 41.7755 34.902 44.396 33.7726 47.046C33.7772 47.0872 33.782 47.1281 33.7871 47.1689C31.4604 52.7401 30.3717 58.4259 30.6718 63.5365C30.6807 63.6876 30.6907 63.8383 30.7021 63.9883L30.703 64.0007L30.7004 63.9887L30.701 64.0011C30.7069 64.1257 30.7134 64.2496 30.7206 64.3727C31.545 78.5052 41.1924 83.0307 53.0469 82.8897C54.9669 82.8668 56.9449 82.7216 58.9526 82.4749C58.4355 84.7006 57.8555 86.6276 57.1206 88.3065C56.0672 90.7127 54.6956 92.6091 52.7346 94.1441C59.8011 94.6787 67.4517 93.6363 74.2998 91.5404C83.7606 90.8478 98.4416 85.4233 95.4613 74.9673L95.4616 74.9671C95.4128 74.7959 95.3593 74.6234 95.301 74.4495C94.9811 73.2628 94.5973 72.1081 94.2056 71.0157L94.1761 70.9336L94.2104 70.9672C96.3185 71.1745 98.2801 71.1185 100.09 70.8327C100.238 70.8093 100.385 70.7845 100.53 70.7581C100.852 70.6999 101.169 70.6343 101.481 70.5615C101.804 70.486 102.122 70.4028 102.435 70.3121C103.52 69.9974 104.54 69.5924 105.494 69.1062C105.505 69.1011 105.515 69.0959 105.525 69.0908C105.534 69.0858 105.544 69.0809 105.554 69.0759L105.555 69.0752C105.707 68.997 105.858 68.9166 106.006 68.8342C121.158 60.4422 118.729 30.9608 92.8204 19.9126C73.5025 11.112 49.793 20.9435 38.6508 38.3004ZM101.291 72.7387C112.816 86.0836 101.446 98.2023 83.4889 104.863C90.1655 100.549 95.6469 93.794 98.9485 84.0025C78.9708 102.902 33.1316 104.858 30.9946 92.1756C30.9544 91.7306 30.9339 91.2699 30.9336 90.7931L30.9342 90.7843C26.3365 99.8204 36.5186 105.414 50.4612 106.224C50.5211 106.227 50.5811 106.231 50.6411 106.234C50.9306 106.25 51.2218 106.264 51.5144 106.275C53.0116 106.336 54.5479 106.342 56.1102 106.293C56.1355 106.292 56.1607 106.291 56.186 106.29C58.4069 106.217 60.6799 106.032 62.9673 105.729C71.1908 104.642 79.6015 102.041 86.4504 97.7131C82.6038 101.057 78.8436 103.494 75.0133 105.282C68.9859 108.095 62.785 109.297 55.8006 109.882L55.7845 109.884C54.1778 110.018 52.5296 110.12 50.8325 110.202C52.449 110.481 54.0733 110.696 55.6976 110.843C58.2626 111.116 60.7819 111.283 63.2468 111.352C67.894 111.482 72.3477 111.263 76.5501 110.752C106.326 107.133 123.483 88.8761 107.409 76.4107C106.862 75.9864 106.276 75.5687 105.651 75.1586C104.368 74.3164 102.919 73.5059 101.297 72.7341L101.281 72.7268L101.291 72.7386L101.291 72.7387Z" fill="#C5F955"/>
3
+ <path d="M38.0447 39.1982C24.7604 59.3263 28.2964 85.9518 56.9224 81.2335L85.302 71.8917C111.881 63.0467 113.151 35.9424 96.3821 23.9949C83.6752 14.9411 54.2281 14.6797 38.0447 39.1982Z" fill="#FF3E8F"/>
4
+ <path fill-rule="evenodd" clip-rule="evenodd" d="M52.8765 55.0381C65.4827 51.6273 78.8277 37.1316 80.8799 18.5492C76.5147 18.1456 71.6592 18.4421 66.3489 19.6132C50.3647 23.1389 39.0003 34.7774 33.7715 47.046C34.8326 56.5519 49.5651 55.9356 52.8765 55.0381Z" fill="#C5F955"/>
5
+ <path fill-rule="evenodd" clip-rule="evenodd" d="M52.8775 55.038C65.4836 51.6272 77.284 37.6664 79.3362 19.0841L75.7173 19.9497C69.8748 40.946 53.4174 55.6814 38.6389 51.5778C40.822 55.6242 51.1718 55.5003 52.8775 55.038Z" fill="#67B800"/>
6
+ <path fill-rule="evenodd" clip-rule="evenodd" d="M75.8518 22.9671C59.1734 19.6257 39.5089 30.1583 34.8428 48.3276C41.622 35.3164 60.3299 23.588 75.8518 22.9671Z" fill="#E9FFCE"/>
7
+ <path d="M109.474 39.6607L83.9129 74.7883L57.8691 80.2871C57.5905 80.4897 57.3405 80.4021 57.3346 80.4001L57.3344 80.4L57.8691 80.2871C58.2921 79.9796 58.7808 79.0031 58.5801 76.0428C58.0396 74.509 57.676 70.8932 54.0022 68.4338C52.2382 67.2529 50.5682 65.6826 50.8609 63.58C51.1496 61.5052 53.0214 60.2753 55.0582 59.7858C72.66 55.5554 80.795 37.5335 82.6025 20.5048L98.0175 27.1794L109.474 39.6607Z" fill="#C91C65"/>
8
+ <path d="M93.4215 62.0315C82.7724 57.4514 87.9982 37.4668 100.311 32.752C100.315 32.758 100.319 32.7641 100.324 32.7701C92.8154 38.8661 91.5055 52.0718 97.4432 58.3786C96.6071 59.2844 95.6853 60.1792 94.6753 61.0591C94.2752 61.3811 93.8569 61.7055 93.4215 62.0315Z" fill="#4C8700"/>
9
+ <path fill-rule="evenodd" clip-rule="evenodd" d="M32.2886 69.6768C41.2329 68.4183 55.8083 72.1742 56.2922 80.2732C46.2784 80.851 35.4816 75.6476 32.2886 69.6768Z" fill="#67B800"/>
10
+ <path d="M33.7134 71.7392C35.0389 72.6614 36.9957 73.5062 39.7963 74.1083C43.9116 74.9932 48.5028 74.4246 51.746 73.5835C46.6123 70.2103 38.2145 68.843 32.2886 69.6768C32.6633 70.3776 33.1428 71.0677 33.7134 71.7392Z" fill="#C5F955"/>
11
+ <path d="M62.3445 74.6389C63.8266 58.4041 86.7492 55.9793 90.4714 66.2271C90.7754 67.1463 91.1567 68.1478 91.5597 69.2061C92.6591 72.0932 93.9197 75.4037 94.2111 78.6241C89.7667 86.767 74.1703 93.4528 59.2632 94.2109C63.7891 84.6928 62.3445 74.6389 62.3445 74.6389Z" fill="white"/>
12
+ <path d="M89.3065 85.0165L74.2482 91.5429C84.3768 86.2386 84.8987 63.8594 74.0496 66.0942L83.0549 62.2589L91.4945 69.585L89.3065 85.0165Z" fill="#FF97C2"/>
13
+ <path fill-rule="evenodd" clip-rule="evenodd" d="M92.8202 19.9124C89.7638 18.52 86.4546 17.523 82.9856 17.0199L82.9861 17.0181L82.952 17.015C65.4485 14.493 47.5879 23.7601 38.1759 39.0553C47.5069 26.5287 64.5029 19.275 78.5701 21.2314C77.38 28.3175 72.8 38.8694 64.5029 46.3375C56.2678 53.7498 43.7865 56.5458 36.1368 51.9806C41.776 58.6836 58.9132 57.8251 68.2247 49.7807C76.955 42.2383 82.3651 30.4497 83.3606 22.2459C83.768 22.3453 84.1705 22.4505 84.5679 22.5612C88.8133 23.908 89.9923 27.5611 90.2789 30.1165C90.4683 31.8046 89.4221 33.2779 88.179 34.4391C85.5464 36.8983 82.9226 40.8659 81.3997 45.1329C79.6807 49.9492 77.3884 54.9273 73.217 57.8983C71.3512 59.2272 69.8711 60.3709 68.7314 61.3673C64.7544 63.9895 61.6941 68.305 60.5067 74.472C60.3356 75.3605 60.2393 75.8801 60.101 76.6522C46.2591 79.4038 33.5 77.2601 30.7002 63.9885C31.479 80.7402 44.4371 84.2581 58.9524 82.4747C57.694 87.8902 56.0637 91.5379 52.7343 94.1439C55.2558 94.3347 57.8516 94.3246 60.4588 94.1376C62.7252 91.3304 63.504 86.3691 64.1696 82.129L64.1697 82.1288C64.3226 81.1543 64.4696 80.2179 64.6273 79.3545C64.6966 78.9622 64.7726 78.579 64.8551 78.2049C64.9169 77.9201 64.9812 77.647 65.0487 77.3871H65.0491C69.3908 60.3265 87.6056 63.3376 88.4893 75.1466C88.5098 75.4204 88.5321 75.6859 88.5538 75.9444C88.9525 80.685 89.1547 83.0903 74.2473 91.5434L74.2458 91.5441C83.8592 90.8573 98.9307 85.2645 95.3008 74.4495C94.9729 73.2329 94.5777 72.05 94.1758 70.9333L94.2101 70.9669C121.145 73.6159 124.161 33.2772 92.8202 19.9124ZM100.311 32.7518C87.9984 37.4666 82.7726 57.4512 93.4217 62.0313L97.4434 58.3784C91.5057 52.0716 92.8156 38.8659 100.324 32.7699L100.311 32.7518Z" fill="#181818"/>
14
+ <path d="M55.6973 110.843C100.933 115.67 131.935 87.2976 101.281 72.7265C112.823 86.0762 101.451 98.2001 83.4891 104.862C90.1657 100.549 95.6471 93.7938 98.9487 84.0023C78.267 103.568 29.8692 104.975 30.9347 90.7803C22.5428 107.27 63.3666 112.299 86.4502 97.7129C75.1538 107.532 64.6024 109.541 50.8322 110.201C52.4488 110.481 54.0731 110.696 55.6973 110.843Z" fill="#181818"/>
15
+ <path fill-rule="evenodd" clip-rule="evenodd" d="M46.6634 48.2364C44.8878 48.1912 43.6927 47.2938 43.9942 46.232C44.8921 43.0694 45.5678 38.2031 45.2114 34.3106C45.1156 33.2647 46.4959 32.2637 48.2944 32.0747C50.0929 31.8857 51.6285 32.5803 51.7243 33.6261C52.1104 37.8422 51.3892 42.9974 50.4244 46.3958C50.1229 47.4576 48.4391 48.2817 46.6634 48.2364Z" fill="#181818"/>
16
+ <path d="M44.3421 47.4355C44.3421 47.4355 45.4059 48.077 46.9306 47.2597C49.3937 45.9394 49.9684 37.9851 49.9684 33.3394C49.9684 32.0843 48.424 32.0626 48.424 32.0626C50.1661 31.9194 51.6309 32.6055 51.7243 33.6261C52.1104 37.8422 51.3892 42.9974 50.4244 46.3958C50.1229 47.4576 48.4391 48.2817 46.6634 48.2364C45.6362 48.2103 44.8033 47.8989 44.3421 47.4355Z" fill="#FF3E8F"/>
17
+ <path fill-rule="evenodd" clip-rule="evenodd" d="M60.569 41.8423C58.7933 41.797 57.5983 40.8996 57.8997 39.8378C58.7976 36.6752 59.4733 31.809 59.1169 27.9164C59.0211 26.8706 60.4015 25.8695 62.2 25.6805C63.9985 25.4915 65.5341 26.1861 65.6298 27.2319C66.0159 31.448 65.2947 36.6032 64.3299 40.0016C64.0284 41.0634 62.3446 41.8875 60.569 41.8423Z" fill="#181818"/>
18
+ <path d="M58.2476 41.0413C58.2476 41.0413 59.3114 41.6828 60.8361 40.8655C63.2992 39.5452 63.8739 31.5909 63.8739 26.9452C63.8739 25.6902 62.3295 25.6684 62.3295 25.6684C64.0716 25.5252 65.5364 26.2113 65.6298 27.2319C66.0159 31.448 65.2947 36.6032 64.3299 40.0016C64.0284 41.0634 62.3446 41.8875 60.569 41.8423C59.5418 41.8161 58.7089 41.5047 58.2476 41.0413Z" fill="#FF3E8F"/>
19
+ <path d="M23.8951 11L26.5617 18.2545L33.7682 20.9389L26.5617 23.6234L23.8951 30.8779L21.2285 23.6234L14.022 20.9389L21.2285 18.2545L23.8951 11Z" fill="#C5F955"/>
20
+ <path d="M12.6286 29.7733L14.1488 33.938L18.2572 35.479L14.1488 37.0201L12.6286 41.1847L11.1084 37.0201L7 35.479L11.1084 33.938L12.6286 29.7733Z" fill="#C5F955"/>
21
+ </svg>
package/locale/en.json ADDED
@@ -0,0 +1,6 @@
1
+ {
2
+ "meta": {
3
+ "title": "Meshy",
4
+ "description": "Generate textured, rigged and animated 3D models, or print-ready files, from text or images with Meshy. The agent drives meshy-cli and saves the files into your project."
5
+ }
6
+ }
package/locale/zh.json ADDED
@@ -0,0 +1,6 @@
1
+ {
2
+ "meta": {
3
+ "title": "Meshy",
4
+ "description": "用 Meshy 从文字或图片生成带贴图、绑骨和动画的 3D 模型,或可直接打印的文件。agent 通过 meshy-cli 完成,文件直接保存到你的项目里。"
5
+ }
6
+ }
package/package.json CHANGED
@@ -1,6 +1,54 @@
1
1
  {
2
2
  "name": "meshy-dsh",
3
- "version": "0.0.0-stage",
4
- "stub": true,
5
- "description": "Temporary package placeholder for staged publishing"
6
- }
3
+ "version": "0.1.1",
4
+ "description": "Meshy skills for DeepSeek Harness: textured, rigged and animated 3D models or print-ready files from text or images, through meshy-cli.",
5
+ "keywords": [
6
+ "dsh-plugin",
7
+ "dsh",
8
+ "deepseek-harness",
9
+ "meshy",
10
+ "3d",
11
+ "text-to-3d",
12
+ "image-to-3d",
13
+ "3d-printing",
14
+ "rigging",
15
+ "animation",
16
+ "glb",
17
+ "fbx"
18
+ ],
19
+ "author": "Meshy",
20
+ "homepage": "https://github.com/meshy-dev/meshy-dsh#readme",
21
+ "repository": {
22
+ "type": "git",
23
+ "url": "git+https://github.com/meshy-dev/meshy-dsh.git"
24
+ },
25
+ "bugs": "https://github.com/meshy-dev/meshy-dsh/issues",
26
+ "license": "MIT",
27
+ "publishConfig": {
28
+ "access": "public"
29
+ },
30
+ "exports": {
31
+ "./package.json": "./package.json",
32
+ "./locale/*.json": "./locale/*.json",
33
+ "./icon": "./icon.svg"
34
+ },
35
+ "files": [
36
+ "cordis.patch.yml",
37
+ "locale/*.json",
38
+ "icon.svg",
39
+ "skills"
40
+ ],
41
+ "scripts": {
42
+ "test": "node --test tests/*.test.mjs",
43
+ "sync": "node scripts/sync-skills.mjs",
44
+ "smoke": "node scripts/smoke.mjs"
45
+ },
46
+ "meshy": {
47
+ "skills": "meshy-dev/meshy-3d-agent#v0.8.1"
48
+ },
49
+ "dsh": {
50
+ "bundle": {
51
+ "patch": "./cordis.patch.yml"
52
+ }
53
+ }
54
+ }
@@ -0,0 +1,61 @@
1
+ ---
2
+ name: meshy-3d-generation
3
+ description: "Generates and edits digital 3D assets with the Meshy CLI: text-to-3D and image-to-3D models, texturing, remeshing and LODs, UV unwrapping, format conversion (GLB, FBX, OBJ, USDZ, STL, 3MF, Blender), rigging, animation, motion clips from text and reference images. Use when the user asks to make, texture, rig, animate or convert a 3D model or game asset. For physical 3D printing use meshy-3d-printing."
4
+ license: MIT
5
+ compatibility: "Needs Node.js 22.12+ and the Meshy CLI 0.7.x, 0.7.3 or later (npm install -g meshy-cli@0.7); network access to the Meshy API."
6
+ ---
7
+
8
+ # Meshy 3D Generation
9
+
10
+ Use Meshy CLI **0.7** (0.7.3 or later) to turn the user's request into a delivered asset. Completion means
11
+ saving the requested files in the requested location, inspecting an available preview, and
12
+ finishing any project integration the user requested. Login or task submission alone is not
13
+ completion. Choose the shortest suitable pipeline and reuse existing assets for follow-ups.
14
+
15
+ ## Read what this request needs
16
+
17
+ | Need | Reference |
18
+ |---|---|
19
+ | CLI runner, credentials, or output location | [Setup](references/setup.md) |
20
+ | Generation, texturing, remeshing, conversion, scale, or 2D images | [Pipelines](references/pipelines.md) |
21
+ | Rigging, animation, or generated motion | [Animation](references/animation.md) |
22
+ | Cost, waiting, preview, delivery, or finding a previous model | [Delivery](references/delivery.md) |
23
+ | Failed or uncertain operation | [Troubleshooting](references/troubleshooting.md) |
24
+
25
+ Read the relevant section when needed; recipes are examples to adapt to the requested result,
26
+ not a requirement to execute every stage. An untextured model skips texture generation; an
27
+ existing GLB needs no extra format conversion. Use command help when parameters are uncertain.
28
+
29
+ ## First use and authorization
30
+
31
+ Before the first command run `meshy --version`; no need to ask. When `meshy` is missing or
32
+ older than 0.7.3, install the newest 0.7.x with `npm install -g meshy-cli@0.7` and say so in
33
+ one line; Setup covers a refused install and a CLI of 0.8 or newer. Reuse a verified session. If login is
34
+ needed, follow Setup and run `auth login --device` (adding `--region cn` for a user in mainland
35
+ China) in a persistent tool session. Show its
36
+ verification URL and user code in **commentary/progress, not a final answer**. Await that same
37
+ session in this turn until it exits, verify `auth status`, then continue the original request.
38
+ A background process cannot resume a finished turn; do not require a "done" chat message, except in
39
+ Setup's two-step sign-in for a user on a remote chat (a phone through a chat bot).
40
+ Browser approval stays with the user; credentials never belong in chat.
41
+
42
+ ## Execution boundaries
43
+
44
+ - Run API, upload, download and mesh operations through the CLI. Local inputs have a 50 MiB
45
+ limit, and a local model must be GLB or glTF (rigging, UV unwrap and multicolor: GLB); use the supported
46
+ URL input route for anything else.
47
+ - Use `--format json --no-update-check` on every command: stdout is one `meshy.cli/v1` envelope,
48
+ auth included. Resolve `WORKSPACE` from the user's output
49
+ path and pass it to writes.
50
+ - Submit once with `create --async`, retain the owning resource and ID, then `wait` on that
51
+ task. Keep the agent turn active while awaiting a running command. Follow Troubleshooting
52
+ on timeout or unknown submission; these do not authorize another paid create.
53
+ - Continue work within the user's approved scope and budget. Propose additional paid stages
54
+ or reruns before spending; Delivery specifies estimates and balance checks.
55
+
56
+ ## Deliver
57
+
58
+ Download only needed assets. Inspect and show a preview when available; a missing preview
59
+ must not prevent delivery or be described as inspected. Delivery covers earlier-stage preview
60
+ lookup, actual charges, and existing-project integration. Report the result and any concrete
61
+ limitation; a rendered image does not establish topology quality or provide a 3D viewer.
@@ -0,0 +1,73 @@
1
+ # Rigging and animation
2
+
3
+ For a character that has to move. Placeholders, the create/wait lifecycle and `-o` delivery are as
4
+ in [pipelines](pipelines.md); cost, previews and hand-over are in [delivery](delivery.md).
5
+
6
+ ## Rigging
7
+
8
+ Rig a **textured humanoid** with clear limbs, preferably in an A/T pose, at most 300,000 faces
9
+ (the API refuses more than 320,000).
10
+ Use the refined, retextured or textured image task, not an untextured preview. Verify geometry
11
+ and texture suitability from the task and its preview; a face check alone cannot establish them.
12
+
13
+ ```bash
14
+ meshy download --resource RESOURCE --task-id TEXTURED_ID --model-format glb --output "JOB_DIR/textured-TEXTURED_ID.glb" --workspace "WORKSPACE" --format json --no-update-check
15
+ meshy inspect faces --model "JOB_DIR/textured-TEXTURED_ID.glb" --max-faces 300000 --format json --no-update-check
16
+ meshy rigging create --input-task-id TEXTURED_ID --height-meters 1.7 --async --format json --no-update-check
17
+ ```
18
+
19
+ Apply the same pass/fail/unknown rule as for UV unwrap in [pipelines](pipelines.md). Wait through `rigging` using the newly accepted ID.
20
+ For external input the rigging CLI accepts a textured GLB via `--model-url`, with the character
21
+ facing +Z (glTF forward); it still needs the same suitability and face evidence. Do not pass the deprecated `--texture-image-url`: the rig
22
+ keeps the model's own textures, and that flag replaces them with one image.
23
+
24
+ Choose the motion source in this order; stop at the first that gives the requested action:
25
+
26
+ 1. **Walking or running.** The rig task usually carries both clips (confirm with `download --list`).
27
+ Download them; no new task.
28
+ 2. **Any other action: the preset animation library.** Look the action up, then apply it to the
29
+ rig. Several actions for one character (idle, walk and attack for a game's state machine) go
30
+ into one task with `--action-ids` (1–10 unique IDs): one file with one clip per action, in
31
+ the order given, charged per action.
32
+ 3. **An action the library does not have: text-to-motion.** Generate the clip with the recipe
33
+ below, wait for it, then apply it with `--motion-task-id`. Biped rigs only, and
34
+ apply it within 3 days of the motion task.
35
+
36
+ Select the rig or bundled clips individually, each to its own `OUTPUT_FILE`:
37
+
38
+ ```bash
39
+ meshy download --resource rigging --task-id RIG_ID --asset result.rigged_character_glb_url --output "OUTPUT_FILE" --workspace "WORKSPACE" --format json --no-update-check
40
+ meshy download --resource rigging --task-id RIG_ID --asset result.basic_animations.walking_glb_url --output "OUTPUT_FILE" --workspace "WORKSPACE" --format json --no-update-check
41
+ ```
42
+
43
+ For running, use `result.basic_animations.running_glb_url`; list the assets for FBX and armature
44
+ variants. Take library IDs from the library, never from memory: IDs have gaps and retired actions
45
+ disappear. The lookup is free but needs the same sign-in as any other command. `--search` matches the name or key;
46
+ `--category` narrows to `WalkAndRun`, `BodyMovements`, `DailyActions`, `Fighting` or `Dancing`,
47
+ and `--sub-category` narrows further. Each item carries a `preview_url` GIF to show the user
48
+ when the choice is not obvious.
49
+
50
+ ```bash
51
+ meshy animation-catalog list --search wave --format json --no-update-check
52
+ meshy animate create --rig-task-id RIG_ID --action-id ACTION_ID --async --format json --no-update-check
53
+ meshy animate create --rig-task-id RIG_ID --action-ids ACTION_IDS --async --format json --no-update-check
54
+ meshy animate create --rig-task-id RIG_ID --motion-task-id MOTION_ID --async --format json --no-update-check
55
+ ```
56
+
57
+ These are alternatives: one action, several actions in one file, or a generated motion. Wait
58
+ through `animate`, then download `--asset result.animation_glb_url` (or
59
+ `result.animation_fbx_url`). A generated motion may come back GLB-only, with an empty FBX URL.
60
+ Post-processing (FPS, USDZ, armature) is `--post-process-operation`; include it only when
61
+ requested. On a generated motion it needs that FBX: when the retarget yields none, the task
62
+ fails and its credits are refunded.
63
+
64
+ ## Generated motion
65
+
66
+ ```bash
67
+ meshy text-to-motion create --prompt "MOTION_DESCRIPTION" --mode prime --duration 3 --async --format json --no-update-check
68
+ ```
69
+
70
+ Text-to-motion makes a standalone skeleton clip from a prompt of up to 400 characters: prime
71
+ returns FBX, swift BVH; duration is 2–10 seconds in 0.5-second steps. Delivered as is, it is a
72
+ raw clip for the user's own DCC tool; to put it on a rigged character, apply it with
73
+ `animate --motion-task-id` (above). Download it with `--kind motion`, using `--output-dir`.
@@ -0,0 +1,171 @@
1
+ # Cost, waiting, previews, delivery and follow-ups
2
+
3
+ Shared by the generation and print workflows. [setup.md](setup.md) decides the runner, the
4
+ session and `WORKSPACE`/`JOB_DIR`; this file covers what happens around a job: what it costs,
5
+ what the user sees while it runs, what is handed over at the end, and how the next sentence
6
+ ("make it 1500 faces", "now as FBX") reuses what already exists.
7
+
8
+ Contents: cost · waiting · previews · handing over the result · continuing from something that
9
+ already exists · wiring the asset into a project.
10
+
11
+ ## Cost: only estimates you can point at
12
+
13
+ Two sources are legitimate. Use them, and say which one you used.
14
+
15
+ 1. **The CLI's own planner**, for the chains `make` runs (text prompt to textured model, image
16
+ to textured model). It calls nothing and spends nothing:
17
+
18
+ ```bash
19
+ meshy make "MODEL_DESCRIPTION" --dry-run --format json --no-update-check
20
+ ```
21
+
22
+ Read `steps[]` and `estimated_credits`. The numbers carry over to `text-to-3d`/`image-to-3d`
23
+ commands you run yourself only with the same settings (the default model, texture up to 4k, no
24
+ `--geometry-resolution`); Smart Topology, 8k texture or the geometry pass are priced from the
25
+ list below.
26
+
27
+ 2. **The published price list**, <https://docs.meshy.ai/en/api/pricing>, for everything else —
28
+ retexture, remesh, convert, resize, UV, rigging, animation, 2D, motion, print analysis and
29
+ repair, multicolor, auto split, Creative Lab. Quote it with the date you read it and call it an estimate.
30
+ Smart Topology is the `meshy-t2.5` (or `meshy-t2`) column; the page is also served as
31
+ Markdown at <https://docs.meshy.ai/api/pricing.md>.
32
+
33
+ Nothing else is a quote. `meshy balance` reports the **balance**, not a price. Do not invent a
34
+ cost command, reuse a `make` estimate for an unrelated chain, or state a precise figure for a
35
+ stage neither source covers — say that the exact price is unknown and give the source to check.
36
+
37
+ The real number arrives afterwards: `consumed_credits` on the finished task. Report it when it
38
+ is present, and report it as unknown when it is not. Never assume zero. A task that ends
39
+ `FAILED` is refunded. Studio and Enterprise
40
+ teams can also list finished tasks with their charges through the free `meshy usage tasks` (Creative Lab and
41
+ canceled tasks are not listed); any other account gets a permission error there, which says nothing about the job.
42
+
43
+ Before starting, know whether the balance can cover the plan. The balance result also splits
44
+ it into monthly credits, which reset on the date it gives, and permanent credits:
45
+
46
+ ```bash
47
+ meshy balance --format json --no-update-check
48
+ ```
49
+
50
+ Spend rules: work already authorized by the user proceeds without asking again, stage by stage,
51
+ to the end of the agreed plan. Ask only for a **new** cost the user has not agreed to — an extra
52
+ stage, a second variant, a rerun after a disappointing result. Exit 9 (`insufficient_credit`)
53
+ stops new paid submissions immediately: keep everything already produced, report what is
54
+ missing and the cause the message gives (balance, plan or a key's credit limit; see
55
+ Troubleshooting), and point at the account page rather than retrying.
56
+
57
+ ## Waiting: the CLI polls, you narrate
58
+
59
+ `create --async` returns an accepted ID; the matching `wait` blocks until the task is terminal
60
+ and polls internally. Do not write a polling loop, do not shorten `--timeout` to poll by hand,
61
+ and do not finish your turn while a stage is still unfinished.
62
+
63
+ Say what is running before each wait — the stage, the task ID and that generation typically
64
+ takes minutes — and report the outcome after it returns. A stage transition or a real status
65
+ change is worth a line; individual polls are not. A timeout (exit 8) is not a failure: the task
66
+ continues on the server and the same `wait` resumes it. Keep resuming until about an hour after
67
+ the task was created before reporting it stuck; a busy period can take that long.
68
+
69
+ ## Previews: look at what came back
70
+
71
+ A finished 3D task normally carries a rendered thumbnail. It is free to fetch, and it is the
72
+ only cheap way to check the result actually matches the request.
73
+
74
+ ```bash
75
+ meshy download --resource RESOURCE --task-id TASK_ID --list --format json --no-update-check
76
+ meshy download --resource RESOURCE --task-id TASK_ID --asset thumbnail.primary --output "JOB_DIR/preview-TASK_ID.png" --workspace "WORKSPACE" --format json --no-update-check
77
+ ```
78
+
79
+ `--list` shows the asset keys this task really has; `--kind thumbnail` takes every thumbnail it
80
+ carries when there is more than one view. Take keys from the listing rather than guessing them.
81
+
82
+ Then **open the downloaded PNG with the host's file-reading tool and look at it**, and show it
83
+ to the user. Judge only what a render can show: is it the requested subject, is it complete, is
84
+ it obviously untextured when texture was requested. A thumbnail says nothing about back-face
85
+ topology, watertightness, print reliability or polygon count — do not imply otherwise.
86
+
87
+ Post-processing tasks (convert, resize, multicolor, some builds) often have **no**
88
+ thumbnail of their own. Walk back along the parent chain you kept (a convert's or repair's
89
+ `--input-task-id`) and run the recipe above on the generation stage's task, with its own
90
+ `RESOURCE` and `TASK_ID`. Never pay for a conversion or a regeneration just to obtain a picture.
91
+
92
+ When no preview exists anywhere in the chain, say so plainly: the model was produced and
93
+ downloaded, and it has not been visually checked. Missing previews never block the model
94
+ download, and "looks right" is never claimed for an image nobody looked at.
95
+
96
+ ## Handing over the result
97
+
98
+ Deliver four things, every time:
99
+
100
+ 1. **The model file**, at the path the user asked for, written as a plain path in backticks.
101
+ Do not present it as a clickable link: hosts open such links in a text/preview pane that
102
+ cannot render a binary mesh, and it looks broken. A host with a tool that delivers files to the
103
+ user (dsh's `present`) gets the model through that tool as well, so it opens from the
104
+ conversation. Offer the next real action instead —
105
+ reveal it in the file manager (`open -R <path>` on macOS, `explorer /select,<path>` on
106
+ Windows), open it in a local 3D tool, or wire it into the project.
107
+ 2. **The preview**, shown inline when one exists, or an explicit note that none does.
108
+ A PNG render is not an interactive 3D viewer; this CLI has no local viewer command, so say
109
+ "rendered preview", never "3D preview".
110
+ 3. **The task trail**: the producing task ID(s) and the resource each belongs to. That is what
111
+ makes the next request cheap. A delivery made with `-o` also leaves a sidecar beside the model
112
+ (`chest_meta.json` next to `chest.glb`, or `meta.json` in a directory) that records the same
113
+ resource and task ID; `download` and `mesh prepare-print` leave none. The file's own location
114
+ comes from `result.downloads.files`. When there is a sidecar, name it in the handover so the
115
+ extra file is no surprise: it records which Meshy task made the model, so a later "now as FBX"
116
+ continues from that task instead of generating again. It also holds the task's signed URLs,
117
+ so do not paste it whole. The user may delete it; then follow-ups
118
+ fall back to the account's task list, and the same `-o` no longer replaces that model, so a new
119
+ delivery needs a new path.
120
+ 4. **What it cost**: `consumed_credits` when reported, otherwise stated as unknown, plus any
121
+ warnings that affect use.
122
+
123
+ If the result is wrong, report it and offer the concrete fix (a rerun, a different reference
124
+ image, different parameters) with its cost. Do not silently rerun a paid stage.
125
+
126
+ ## Continuing from something that already exists
127
+
128
+ "Make a 1500-face LOD of that", "now as FBX", "scale it to 150 mm", "rig the one from before"
129
+ mean: **find the existing asset and run only the missing step**. Generating again is both a
130
+ wrong answer and a second charge.
131
+
132
+ Look in this order and stop at the first confident match:
133
+
134
+ 1. This conversation: the task IDs and resource names from the job you just ran.
135
+ 2. The sidecar next to an earlier delivery: `<name>_meta.json`, or `meta.json` in a delivery
136
+ directory, holds its `resource` and task `id`. Find it with the host's file tools; there is no
137
+ CLI command for it.
138
+ 3. The account's recent tasks for one resource, when no sidecar is left:
139
+
140
+ ```bash
141
+ meshy text-to-3d list --page-size 10 --format json --no-update-check
142
+ ```
143
+
144
+ 4. A local model file the user points at — pass it to the step's `--model-url` input. A local
145
+ file must be GLB or glTF (rigging, UV unwrap and multicolor: GLB); an STL, OBJ or FBX needs an
146
+ http(s) URL or the task it came from.
147
+
148
+ Meshy keeps a task's files for at most 3 days (Enterprise accounts longer). An older task answers
149
+ not found (exit 5) and can no longer be chained by ID: pass the delivered local GLB or glTF to
150
+ `--model-url` instead, and only if there is none, say that the model has to be generated again
151
+ and what that costs.
152
+
153
+ Then run the one step that is actually missing: `remesh` for a polygon budget, `convert` for a
154
+ format, `resize` for a physical size, `retexture` for a new look, `rigging`/`animate` for motion,
155
+ `mesh prepare-print` for a print-ready OBJ. Keep the task's own resource with its ID — an
156
+ `image-to-3d` ID is not queried through `text-to-3d`.
157
+
158
+ Ask only when the reference is genuinely ambiguous (several candidates, none obviously the one),
159
+ and then ask with the candidates listed — never by asking the user to find a task ID. A missing
160
+ index is a lookup problem, not a reason to regenerate.
161
+
162
+ ## Wiring the asset into a project
163
+
164
+ When the user asks for the asset **in** their game, site or app — "use it in my Three.js scene",
165
+ "add it to the Unity project" — finish that job: check the preview first, put the file where the
166
+ project keeps its assets, add the loader call, prefab entry or manifest line the project
167
+ actually uses, and verify the reference resolves (the path exists, the build or type check still
168
+ passes). Match the surrounding code's conventions.
169
+
170
+ Without such a request, deliver the files and stop. Do not edit application code, asset
171
+ manifests or build configuration on your own initiative.