← Tripo 3DCONTENT HISTORY

Update to Tripo 3D

Snapshot Oct 24, 2026 · 13:21 UTC · version 0.2.7

Collection source: downloaded plugin package. These snapshots do not have a confirmed matching collection source. Differences in file lists alone do not establish changes to the package.

WHAT CHANGED

Instructions updated for tripo-game-asset

Skill instructions — Now says: ## Client attribution Use `tripo-cli` 0.7.0 or later. On every CLI command, set `TRIPO_CLIENT_APP=codex` and `TRIPO_DISTRIBUTION_CHANNEL=codex_plugin` for...

Observed in instructions or declared skills. Runtime behavior has not been tested.

Save Tripo 3D and check future changes in Following.

Up to 3 plugins free · no card required.

All fields and original values.

Skill instructions

Before

Sep 30, 2026 · 23:15 UTC

(single atlas). Any of these bills the complex convert tier (10 credits, not 5).

After

Oct 24, 2026 · 13:21 UTC

## Client attribution Use `tripo-cli` 0.7.0 or later. On every CLI command, set `TRIPO_CLIENT_APP=codex` and `TRIPO_DISTRIBUTION_CHANNEL=codex_plugin` for that command: as a variable prefix in POSIX shells, or as `$env:TRIPO_CLIENT_APP` ...

Compare saved observations

Download comparison JSON

SKILL.md text changes

− removed · + added

--- before
+++ after
@@ -5,6 +5,18 @@
 
 # Game asset pipeline
 
+## Client attribution
+
+Use `tripo-cli` 0.7.0 or later. On every CLI command, set `TRIPO_CLIENT_APP=codex` and
+`TRIPO_DISTRIBUTION_CHANNEL=codex_plugin` for that command: as a variable prefix in
+POSIX shells, or as `$env:TRIPO_CLIENT_APP` and `$env:TRIPO_DISTRIBUTION_CHANNEL` set
+right before it in PowerShell. The user does not have to set them, and they are never
+written to an account profile. The two values only name this plugin and carry no user
+data: the CLI's usage analytics use them to attribute events to it, and
+`TRIPO_ANALYTICS_ENABLED=0` still turns those analytics off. They do not change the
+region, the confirmation rules or the stdout output.
+
+
 Recipes on top of the `tripo-3d` skill. Read that skill first for the shell
 requirement, auth, the blocking behaviour of `tripo make`, exit codes, and credit
 rules. Every recipe here is a shell command: if this environment cannot execute
@@ -83,6 +95,14 @@
 has no bake. Alternatively set `face_limit` on the `convert` step, which decimates during
 export at the complex-convert price.
 
+`decimate:model=v3.0` is the newest retopology (35 credits, 40 with `quad=true`, against
+30 for the default v2.0) and the only one that takes `smart_uv=true`, which unwraps UVs
+in the same task at no extra cost — `--then decimate:5000,smart_uv=true` selects v3.0 by
+itself. To re-unwrap a mesh without reducing it, use the `uv` step (20 credits): it
+remaps the existing textures, rig and animation onto the new layout, and its input must
+stay ≤ 80 000 equivalent triangles, so reduce a denser source first —
+`--then decimate:20000,uv`.
+
 ## Modular and destructible assets
 
 ```bash
@@ -153,7 +173,9 @@
   `export_orientation=+x|-x|+y|-y` (forward axis for the engine),
   `pivot_to_center_bottom=true` (pivot at the feet), `scale_factor=<n>` (unit fix),
   `texture_format=PNG` (lossless instead of the JPEG default), `pack_uv=true`
-  (single atlas). Any of these bills the complex convert tier (10 credits, not 5).
+  (single atlas). `pivot_to_center_bottom`, `scale_factor` and `texture_format` (like
+  `texture_size`, `face_limit` and `quad`) bill the complex convert tier (10 credits,
+  not 5); `fbx_preset`, `export_orientation` and `pack_uv` on their own do not.
 - Set `export_orientation` **only on the final convert**, never at generation when
   more steps follow: downstream steps ignore it and return a wrongly oriented model
   that still reports success.
Full technical diff · 1 changed fields

changed /skill_md_contents

BEFORE
"---\nname: tripo-game-asset\ndescription: Recipes for producing game-ready 3D assets with Tripo and wiring them into a game project - low-poly props on a face budget, PBR hero assets, LOD chains, modular or segmented parts, and rigged characters with locomotion clips for Unity, Unreal, Godot or Three.js. Use when the user is building a game or real-time 3D scene and needs props, characters, placeholder art, LODs, part-based assets, or an animated rig, rather than a single one-off model.\n---\n\n# Game asset pipeline\n\nRecipes on top of the `tripo-3d` skill. Read that skill first for the shell\nrequirement, auth, the blocking behaviour of `tripo make`, exit codes, and credit\nrules. Every recipe here is a shell command: if this environment cannot execute\nshell commands, stop and tell the user this skill works in Codex. Every recipe also\nspends credits, so it goes through that skill's \"Plan first, run after the user\nconfirms\" step — list each API call the recipe makes and its estimated cost, get a\nyes, run, then report the billed total **and** the per-task breakdown.\n\nThe point of these recipes is that assets land in the project's own directory\nstructure. Always pass `-o` pointing at wherever the project keeps its art — but note\n`-o` is the parent: the files end up in `<dir>/tripo-out/<name>-<id8>/`, so move them\nto their final location afterwards if the user named a specific path.\n\n## Pick a budget first\n\n| target                        | preset              | what it does                                          |\n| ----------------------------- | ------------------- | ----------------------------------------------------- |\n| mobile, WebGL, many instances | `--for game-mobile` | P1 low-poly model, face_limit 15000, 2K textures, FBX |\n| PC / console hero asset       | `--for game-pc`     | v3.1, detailed PBR, FBX                               |\n| animated character            | `--for anim`        | rig-check, then rig (v2.5, tripo spec), then retarget idle + walk |\n\nOverride the face budget when the project has a stricter one:\n\n```bash\ntripo make \"a health potion bottle\" --for game-mobile \\\n  -p face_limit=3000 --then convert:format=FBX,texture_size=1024 \\\n  -o ./Assets/Art/Props --json --yes\n```\n\nWhich generation model fits the budget:\n\n- **P1** (`tripo-p1`, 50–20000 faces) — the default low-poly choice; clean, game-style\n  topology out of the box. The CLI picks it automatically for any `face_limit` ≤ 20000\n  or a \"low poly\" prompt.\n- **P2** (`--model tripo-p2`, 48–50000 tri / 48–25000 quad; **Preview**) — P1 with\n  quads and a bigger budget: `-p quad=true` for subdivision-friendly or\n  hand-edit-friendly low-poly. `tripo-p2` is the CLI alias; the request carries\n  `model=P2-20260801` (the API rejects the alias itself). Costs 100+ credits per\n  generation versus 30–50 for P1; never auto-selected.\n- **v3.1 + `smart_low_poly`** (`--model tripo-v3.1 -p smart_low_poly=true -p face_limit=<500–20000>`)\n  — high-fidelity detail with hand-modelled-style low-poly topology, when P1's look is\n  too simple. Without `--model`, a `face_limit` ≤ 20000 silently switches to P1.\n- **v3.1 + `decimate`** — hero-quality source, then LODs (next section). P1/P2 do not\n  support `smart_low_poly`, `generate_parts` or `geometry_quality`.\n\n## Props\n\n```bash\ntripo make \"an ornate treasure chest, fantasy style\" --for game-pc \\\n  -o ./assets/models --json --yes\n```\n\nFor a set of props, generate them one at a time and check each `preview.png` before\ncontinuing — a bad seed early is cheaper to catch than at the end of a batch. For\ngenuinely large sets use `tripo batch run manifest.yaml`, which is resumable.\n\n## LOD chain from one source\n\n```bash\ntripo make \"a stone golem\" --for game-pc --then decimate:5000 --json --yes\ntripo make @last --then decimate:1500,convert:fbx --json --yes\n```\n\n`decimate` bakes normals by default, so the low LODs keep the silhouette detail of\nthe source. Each `@last` continues from the previous task rather than regenerating.\n\n**`decimate`'s face budget is a target, not a ceiling** — a 1500-face request can come\nback at ~1900 triangles. Read the actual triangle count from the result before handing\nan LOD to a project with a hard budget, and reduce it locally if it overshoots.\nGeneration's own `face_limit` does hold as an upper bound, so this caveat is specific\nto `decimate`.\n\n`decimate` accepts 500–20000 faces (500–10000 with `quad=true`) and bakes textures onto\nthe low-poly by default. For a source above 2M faces or a budget above 20000, use\n`decimate:face_limit=<n>,model=v1.0` — the v1.0 model takes up to 2 000 000 faces but\nhas no bake. Alternatively set `face_limit` on the `convert` step, which decimates during\nexport at the complex-convert price.\n\n## Modular and destructible assets\n\n```bash\ntripo make \"a wooden cart with detachable wheels\" -p generate_parts=true \\\n  -p texture=false -p pbr=false --json --yes                    # parts at generation time\ntripo make @last --then texture --json --yes                    # texture the parts afterwards\ntripo make hero.glb --then segment:v2.0-20260430,complete --json --yes   # split an existing mesh, then close the cut faces\n```\n\n- `generate_parts` (v3.1 only, +20 credits) outputs editable parts but requires bare\n  geometry — `texture`/`pbr` must be off; re-texture as a second step.\n- `segment` splits any model; `v2.0-20260430` adds `segmentation_granularity=simple|balanced|detailed`\n  and `split_by_connectivity`. `complete` fills the holes segmentation leaves\n  (`completion_mode=quick_cap` is the cheap cap-only variant). Export single parts with\n  `tripo model convert @last --format FBX -p 'part_names=[\"wheel_l\",\"wheel_r\"]'` —\n  list values need the `-p` form, `--then` cannot carry them.\n\n## Characters with animation\n\n```bash\ntripo make \"a knight in full armor, T-pose, standing straight\" --for anim --json --yes\n```\n\n`--for anim` runs `rig-check` first, which gates the chain: if the mesh is not\nriggable it stops before spending rigging credits.\n\nExplicit control over the rig and clips:\n\n```bash\ntripo make \"a robot soldier, T-pose\" --json --yes \\\n  | tripo anim check --json \\\n  | tripo anim rig --spec mixamo --out-format fbx --json \\\n  | tripo anim retarget --animation preset:idle preset:walk preset:run --json\n```\n\n- Prompt for a **T-pose** — rigging quality depends heavily on it. From a reference\n  image that is not in T-pose, generate one first:\n  `tripo generate text-to-image \"full-body front view of <character>\" -p template=t_pose --json --yes`\n  (or `tripo generate image-to-image ref.png -p template=t_pose`), then\n  `tripo generate image-to-model @last` and rig from there.\n- `rig-check` is free and returns the body type: `biped`, `quadruped`, `hexapod`,\n  `octopod`, `avian`, `serpentine`, `aquatic`. Rig with the type it recommends —\n  `rig:rig_type=quadruped` in a chain, `--rig-type quadruped` on `tripo anim rig` — the\n  default is `biped`.\n- `--spec mixamo` produces a Unity Humanoid / Mixamo-compatible skeleton; when the\n  final format is FBX add `fbx_preset=mixamo` on the convert step so bone naming and\n  axes match.\n- Clips available with the default v2.5 rig, for every body type: `preset:idle`\n  `walk` `run` `jump` `fall` `turn` `climb` `dive` `slash` `shoot` `hurt`, plus\n  `preset:quadruped:walk`, `preset:hexapod:walk`, `preset:octopod:walk`,\n  `preset:serpentine:march`, `preset:aquatic:march`. The older `rig:model=v1.0-20240301`\n  is biped-only but has 90+ `preset:biped:*` clips (dances, emotes, sports, combat) —\n  pick it when the game needs those.\n- `--animate-in-place` for locomotion clips driven by game code rather than root motion.\n- Retarget is billed per animation (10 credits each) and accepts at most five per task.\n  `--then retarget:` carries a single clip; use the piped `tripo anim retarget\n  --animation a b c` form for several.\n- To animate a mesh the project already has:\n  `tripo make hero.glb --then rig-check,rig,retarget:preset:walk --json --yes`\n\n## Format notes\n\n- **Three.js / web**: GLB. `--for ar-web` adds the web-oriented defaults (decimate to\n  20k faces, plus a USDZ for iOS Quick Look). `-p compress=geometry` at generation\n  emits a meshopt-compressed GLB for smaller downloads.\n- **Unity / Unreal**: FBX via `--then convert:fbx`, or `--for game-mobile` which\n  already converts. Useful convert options: `fbx_preset=blender|3dsmax|mixamo`,\n  `export_orientation=+x|-x|+y|-y` (forward axis for the engine),\n  `pivot_to_center_bottom=true` (pivot at the feet), `scale_factor=<n>` (unit fix),\n  `texture_format=PNG` (lossless instead of the JPEG default), `pack_uv=true`\n  (single atlas). Any of these bills the complex convert tier (10 credits, not 5).\n- Set `export_orientation` **only on the final convert**, never at generation when\n  more steps follow: downstream steps ignore it and return a wrongly oriented model\n  that still reports success.\n- Quads (`-p quad=true`) force FBX — glTF cannot store them, so `convert:glb`\n  combined with quads is rejected. Quads are v3.1 or P2 only.\n- `texture_size` is set on the convert step, not at generation:\n  `--then convert:format=FBX,texture_size=2048`. Texture *quality* is set at\n  generation: `-p texture_quality=detailed` (HD, +10 credits) or `extreme` (8K, +20).\n- Real-world scale for physics or AR: `-p auto_size=true` at generation scales the\n  model to metres.\n\n## Wiring into the project\n\nAfter a successful run, `model_file` in the result JSON is the path to import. Do the\nintegration work the user actually asked for — add the loader call, register the\nprefab, update the asset manifest — rather than stopping at \"the file is generated\".\nCheck `preview.png` first so a wrong asset does not get wired in.\n"
AFTER
"---\nname: tripo-game-asset\ndescription: Recipes for producing game-ready 3D assets with Tripo and wiring them into a game project - low-poly props on a face budget, PBR hero assets, LOD chains, modular or segmented parts, and rigged characters with locomotion clips for Unity, Unreal, Godot or Three.js. Use when the user is building a game or real-time 3D scene and needs props, characters, placeholder art, LODs, part-based assets, or an animated rig, rather than a single one-off model.\n---\n\n# Game asset pipeline\n\n## Client attribution\n\nUse `tripo-cli` 0.7.0 or later. On every CLI command, set `TRIPO_CLIENT_APP=codex` and\n`TRIPO_DISTRIBUTION_CHANNEL=codex_plugin` for that command: as a variable prefix in\nPOSIX shells, or as `$env:TRIPO_CLIENT_APP` and `$env:TRIPO_DISTRIBUTION_CHANNEL` set\nright before it in PowerShell. The user does not have to set them, and they are never\nwritten to an account profile. The two values only name this plugin and carry no user\ndata: the CLI's usage analytics use them to attribute events to it, and\n`TRIPO_ANALYTICS_ENABLED=0` still turns those analytics off. They do not change the\nregion, the confirmation rules or the stdout output.\n\n\nRecipes on top of the `tripo-3d` skill. Read that skill first for the shell\nrequirement, auth, the blocking behaviour of `tripo make`, exit codes, and credit\nrules. Every recipe here is a shell command: if this environment cannot execute\nshell commands, stop and tell the user this skill works in Codex. Every recipe also\nspends credits, so it goes through that skill's \"Plan first, run after the user\nconfirms\" step — list each API call the recipe makes and its estimated cost, get a\nyes, run, then report the billed total **and** the per-task breakdown.\n\nThe point of these recipes is that assets land in the project's own directory\nstructure. Always pass `-o` pointing at wherever the project keeps its art — but note\n`-o` is the parent: the files end up in `<dir>/tripo-out/<name>-<id8>/`, so move them\nto their final location afterwards if the user named a specific path.\n\n## Pick a budget first\n\n| target                        | preset              | what it does                                          |\n| ----------------------------- | ------------------- | ----------------------------------------------------- |\n| mobile, WebGL, many instances | `--for game-mobile` | P1 low-poly model, face_limit 15000, 2K textures, FBX |\n| PC / console hero asset       | `--for game-pc`     | v3.1, detailed PBR, FBX                               |\n| animated character            | `--for anim`        | rig-check, then rig (v2.5, tripo spec), then retarget idle + walk |\n\nOverride the face budget when the project has a stricter one:\n\n```bash\ntripo make \"a health potion bottle\" --for game-mobile \\\n  -p face_limit=3000 --then convert:format=FBX,texture_size=1024 \\\n  -o ./Assets/Art/Props --json --yes\n```\n\nWhich generation model fits the budget:\n\n- **P1** (`tripo-p1`, 50–20000 faces) — the default low-poly choice; clean, game-style\n  topology out of the box. The CLI picks it automatically for any `face_limit` ≤ 20000\n  or a \"low poly\" prompt.\n- **P2** (`--model tripo-p2`, 48–50000 tri / 48–25000 quad; **Preview**) — P1 with\n  quads and a bigger budget: `-p quad=true` for subdivision-friendly or\n  hand-edit-friendly low-poly. `tripo-p2` is the CLI alias; the request carries\n  `model=P2-20260801` (the API rejects the alias itself). Costs 100+ credits per\n  generation versus 30–50 for P1; never auto-selected.\n- **v3.1 + `smart_low_poly`** (`--model tripo-v3.1 -p smart_low_poly=true -p face_limit=<500–20000>`)\n  — high-fidelity detail with hand-modelled-style low-poly topology, when P1's look is\n  too simple. Without `--model`, a `face_limit` ≤ 20000 silently switches to P1.\n- **v3.1 + `decimate`** — hero-quality source, then LODs (next section). P1/P2 do not\n  support `smart_low_poly`, `generate_parts` or `geometry_quality`.\n\n## Props\n\n```bash\ntripo make \"an ornate treasure chest, fantasy style\" --for game-pc \\\n  -o ./assets/models --json --yes\n```\n\nFor a set of props, generate them one at a time and check each `preview.png` before\ncontinuing — a bad seed early is cheaper to catch than at the end of a batch. For\ngenuinely large sets use `tripo batch run manifest.yaml`, which is resumable.\n\n## LOD chain from one source\n\n```bash\ntripo make \"a stone golem\" --for game-pc --then decimate:5000 --json --yes\ntripo make @last --then decimate:1500,convert:fbx --json --yes\n```\n\n`decimate` bakes normals by default, so the low LODs keep the silhouette detail of\nthe source. Each `@last` continues from the previous task rather than regenerating.\n\n**`decimate`'s face budget is a target, not a ceiling** — a 1500-face request can come\nback at ~1900 triangles. Read the actual triangle count from the result before handing\nan LOD to a project with a hard budget, and reduce it locally if it overshoots.\nGeneration's own `face_limit` does hold as an upper bound, so this caveat is specific\nto `decimate`.\n\n`decimate` accepts 500–20000 faces (500–10000 with `quad=true`) and bakes textures onto\nthe low-poly by default. For a source above 2M faces or a budget above 20000, use\n`decimate:face_limit=<n>,model=v1.0` — the v1.0 model takes up to 2 000 000 faces but\nhas no bake. Alternatively set `face_limit` on the `convert` step, which decimates during\nexport at the complex-convert price.\n\n`decimate:model=v3.0` is the newest retopology (35 credits, 40 with `quad=true`, against\n30 for the default v2.0) and the only one that takes `smart_uv=true`, which unwraps UVs\nin the same task at no extra cost — `--then decimate:5000,smart_uv=true` selects v3.0 by\nitself. To re-unwrap a mesh without reducing it, use the `uv` step (20 credits): it\nremaps the existing textures, rig and animation onto the new layout, and its input must\nstay ≤ 80 000 equivalent triangles, so reduce a denser source first —\n`--then decimate:20000,uv`.\n\n## Modular and destructible assets\n\n```bash\ntripo make \"a wooden cart with detachable wheels\" -p generate_parts=true \\\n  -p texture=false -p pbr=false --json --yes                    # parts at generation time\ntripo make @last --then texture --json --yes                    # texture the parts afterwards\ntripo make hero.glb --then segment:v2.0-20260430,complete --json --yes   # split an existing mesh, then close the cut faces\n```\n\n- `generate_parts` (v3.1 only, +20 credits) outputs editable parts but requires bare\n  geometry — `texture`/`pbr` must be off; re-texture as a second step.\n- `segment` splits any model; `v2.0-20260430` adds `segmentation_granularity=simple|balanced|detailed`\n  and `split_by_connectivity`. `complete` fills the holes segmentation leaves\n  (`completion_mode=quick_cap` is the cheap cap-only variant). Export single parts with\n  `tripo model convert @last --format FBX -p 'part_names=[\"wheel_l\",\"wheel_r\"]'` —\n  list values need the `-p` form, `--then` cannot carry them.\n\n## Characters with animation\n\n```bash\ntripo make \"a knight in full armor, T-pose, standing straight\" --for anim --json --yes\n```\n\n`--for anim` runs `rig-check` first, which gates the chain: if the mesh is not\nriggable it stops before spending rigging credits.\n\nExplicit control over the rig and clips:\n\n```bash\ntripo make \"a robot soldier, T-pose\" --json --yes \\\n  | tripo anim check --json \\\n  | tripo anim rig --spec mixamo --out-format fbx --json \\\n  | tripo anim retarget --animation preset:idle preset:walk preset:run --json\n```\n\n- Prompt for a **T-pose** — rigging quality depends heavily on it. From a reference\n  image that is not in T-pose, generate one first:\n  `tripo generate text-to-image \"full-body front view of <character>\" -p template=t_pose --json --yes`\n  (or `tripo generate image-to-image ref.png -p template=t_pose`), then\n  `tripo generate image-to-model @last` and rig from there.\n- `rig-check` is free and returns the body type: `biped`, `quadruped`, `hexapod`,\n  `octopod`, `avian`, `serpentine`, `aquatic`. Rig with the type it recommends —\n  `rig:rig_type=quadruped` in a chain, `--rig-type quadruped` on `tripo anim rig` — the\n  default is `biped`.\n- `--spec mixamo` produces a Unity Humanoid / Mixamo-compatible skeleton; when the\n  final format is FBX add `fbx_preset=mixamo` on the convert step so bone naming and\n  axes match.\n- Clips available with the default v2.5 rig, for every body type: `preset:idle`\n  `walk` `run` `jump` `fall` `turn` `climb` `dive` `slash` `shoot` `hurt`, plus\n  `preset:quadruped:walk`, `preset:hexapod:walk`, `preset:octopod:walk`,\n  `preset:serpentine:march`, `preset:aquatic:march`. The older `rig:model=v1.0-20240301`\n  is biped-only but has 90+ `preset:biped:*` clips (dances, emotes, sports, combat) —\n  pick it when the game needs those.\n- `--animate-in-place` for locomotion clips driven by game code rather than root motion.\n- Retarget is billed per animation (10 credits each) and accepts at most five per task.\n  `--then retarget:` carries a single clip; use the piped `tripo anim retarget\n  --animation a b c` form for several.\n- To animate a mesh the project already has:\n  `tripo make hero.glb --then rig-check,rig,retarget:preset:walk --json --yes`\n\n## Format notes\n\n- **Three.js / web**: GLB. `--for ar-web` adds the web-oriented defaults (decimate to\n  20k faces, plus a USDZ for iOS Quick Look). `-p compress=geometry` at generation\n  emits a meshopt-compressed GLB for smaller downloads.\n- **Unity / Unreal**: FBX via `--then convert:fbx`, or `--for game-mobile` which\n  already converts. Useful convert options: `fbx_preset=blender|3dsmax|mixamo`,\n  `export_orientation=+x|-x|+y|-y` (forward axis for the engine),\n  `pivot_to_center_bottom=true` (pivot at the feet), `scale_factor=<n>` (unit fix),\n  `texture_format=PNG` (lossless instead of the JPEG default), `pack_uv=true`\n  (single atlas). `pivot_to_center_bottom`, `scale_factor` and `texture_format` (like\n  `texture_size`, `face_limit` and `quad`) bill the complex convert tier (10 credits,\n  not 5); `fbx_preset`, `export_orientation` and `pack_uv` on their own do not.\n- Set `export_orientation` **only on the final convert**, never at generation when\n  more steps follow: downstream steps ignore it and return a wrongly oriented model\n  that still reports success.\n- Quads (`-p quad=true`) force FBX — glTF cannot store them, so `convert:glb`\n  combined with quads is rejected. Quads are v3.1 or P2 only.\n- `texture_size` is set on the convert step, not at generation:\n  `--then convert:format=FBX,texture_size=2048`. Texture *quality* is set at\n  generation: `-p texture_quality=detailed` (HD, +10 credits) or `extreme` (8K, +20).\n- Real-world scale for physics or AR: `-p auto_size=true` at generation scales the\n  model to metres.\n\n## Wiring into the project\n\nAfter a successful run, `model_file` in the result JSON is the path to import. Do the\nintegration work the user actually asked for — add the loader call, register the\nprefab, update the asset manifest — rather than stopping at \"the file is generated\".\nCheck `preview.png` first so a wrong asset does not get wired in.\n"
Full snapshot data
{
  "description": "Recipes for producing game-ready 3D assets with Tripo and wiring them into a game project - low-poly props on a face budget, PBR hero assets, LOD chains, modular or segmented parts, and rigged characters with locomotion clips for Unity, Unreal, Godot or Three.js. Use when the user is building a game or real-time 3D scene and needs props, characters, placeholder art, LODs, part-based assets, or an animated rig, rather than a single one-off model.",
  "included_files": [
    {
      "relative_path": "agents/openai.yaml",
      "size_in_bytes": 282
    }
  ],
  "name": "tripo-game-asset",
  "skill_md_contents": "---\nname: tripo-game-asset\ndescription: Recipes for producing game-ready 3D assets with Tripo and wiring them into a game project - low-poly props on a face budget, PBR hero assets, LOD chains, modular or segmented parts, and rigged characters with locomotion clips for Unity, Unreal, Godot or Three.js. Use when the user is building a game or real-time 3D scene and needs props, characters, placeholder art, LODs, part-based assets, or an animated rig, rather than a single one-off model.\n---\n\n# Game asset pipeline\n\n## Client attribution\n\nUse `tripo-cli` 0.7.0 or later. On every CLI command, set `TRIPO_CLIENT_APP=codex` and\n`TRIPO_DISTRIBUTION_CHANNEL=codex_plugin` for that command: as a variable prefix in\nPOSIX shells, or as `$env:TRIPO_CLIENT_APP` and `$env:TRIPO_DISTRIBUTION_CHANNEL` set\nright before it in PowerShell. The user does not have to set them, and they are never\nwritten to an account profile. The two values only name this plugin and carry no user\ndata: the CLI's usage analytics use them to attribute events to it, and\n`TRIPO_ANALYTICS_ENABLED=0` still turns those analytics off. They do not change the\nregion, the confirmation rules or the stdout output.\n\n\nRecipes on top of the `tripo-3d` skill. Read that skill first for the shell\nrequirement, auth, the blocking behaviour of `tripo make`, exit codes, and credit\nrules. Every recipe here is a shell command: if this environment cannot execute\nshell commands, stop and tell the user this skill works in Codex. Every recipe also\nspends credits, so it goes through that skill's \"Plan first, run after the user\nconfirms\" step — list each API call the recipe makes and its estimated cost, get a\nyes, run, then report the billed total **and** the per-task breakdown.\n\nThe point of these recipes is that assets land in the project's own directory\nstructure. Always pass `-o` pointing at wherever the project keeps its art — but note\n`-o` is the parent: the files end up in `<dir>/tripo-out/<name>-<id8>/`, so move them\nto their final location afterwards if the user named a specific path.\n\n## Pick a budget first\n\n| target                        | preset              | what it does                                          |\n| ----------------------------- | ------------------- | ----------------------------------------------------- |\n| mobile, WebGL, many instances | `--for game-mobile` | P1 low-poly model, face_limit 15000, 2K textures, FBX |\n| PC / console hero asset       | `--for game-pc`     | v3.1, detailed PBR, FBX                               |\n| animated character            | `--for anim`        | rig-check, then rig (v2.5, tripo spec), then retarget idle + walk |\n\nOverride the face budget when the project has a stricter one:\n\n```bash\ntripo make \"a health potion bottle\" --for game-mobile \\\n  -p face_limit=3000 --then convert:format=FBX,texture_size=1024 \\\n  -o ./Assets/Art/Props --json --yes\n```\n\nWhich generation model fits the budget:\n\n- **P1** (`tripo-p1`, 50–20000 faces) — the default low-poly choice; clean, game-style\n  topology out of the box. The CLI picks it automatically for any `face_limit` ≤ 20000\n  or a \"low poly\" prompt.\n- **P2** (`--model tripo-p2`, 48–50000 tri / 48–25000 quad; **Preview**) — P1 with\n  quads and a bigger budget: `-p quad=true` for subdivision-friendly or\n  hand-edit-friendly low-poly. `tripo-p2` is the CLI alias; the request carries\n  `model=P2-20260801` (the API rejects the alias itself). Costs 100+ credits per\n  generation versus 30–50 for P1; never auto-selected.\n- **v3.1 + `smart_low_poly`** (`--model tripo-v3.1 -p smart_low_poly=true -p face_limit=<500–20000>`)\n  — high-fidelity detail with hand-modelled-style low-poly topology, when P1's look is\n  too simple. Without `--model`, a `face_limit` ≤ 20000 silently switches to P1.\n- **v3.1 + `decimate`** — hero-quality source, then LODs (next section). P1/P2 do not\n  support `smart_low_poly`, `generate_parts` or `geometry_quality`.\n\n## Props\n\n```bash\ntripo make \"an ornate treasure chest, fantasy style\" --for game-pc \\\n  -o ./assets/models --json --yes\n```\n\nFor a set of props, generate them one at a time and check each `preview.png` before\ncontinuing — a bad seed early is cheaper to catch than at the end of a batch. For\ngenuinely large sets use `tripo batch run manifest.yaml`, which is resumable.\n\n## LOD chain from one source\n\n```bash\ntripo make \"a stone golem\" --for game-pc --then decimate:5000 --json --yes\ntripo make @last --then decimate:1500,convert:fbx --json --yes\n```\n\n`decimate` bakes normals by default, so the low LODs keep the silhouette detail of\nthe source. Each `@last` continues from the previous task rather than regenerating.\n\n**`decimate`'s face budget is a target, not a ceiling** — a 1500-face request can come\nback at ~1900 triangles. Read the actual triangle count from the result before handing\nan LOD to a project with a hard budget, and reduce it locally if it overshoots.\nGeneration's own `face_limit` does hold as an upper bound, so this caveat is specific\nto `decimate`.\n\n`decimate` accepts 500–20000 faces (500–10000 with `quad=true`) and bakes textures onto\nthe low-poly by default. For a source above 2M faces or a budget above 20000, use\n`decimate:face_limit=<n>,model=v1.0` — the v1.0 model takes up to 2 000 000 faces but\nhas no bake. Alternatively set `face_limit` on the `convert` step, which decimates during\nexport at the complex-convert price.\n\n`decimate:model=v3.0` is the newest retopology (35 credits, 40 with `quad=true`, against\n30 for the default v2.0) and the only one that takes `smart_uv=true`, which unwraps UVs\nin the same task at no extra cost — `--then decimate:5000,smart_uv=true` selects v3.0 by\nitself. To re-unwrap a mesh without reducing it, use the `uv` step (20 credits): it\nremaps the existing textures, rig and animation onto the new layout, and its input must\nstay ≤ 80 000 equivalent triangles, so reduce a denser source first —\n`--then decimate:20000,uv`.\n\n## Modular and destructible assets\n\n```bash\ntripo make \"a wooden cart with detachable wheels\" -p generate_parts=true \\\n  -p texture=false -p pbr=false --json --yes                    # parts at generation time\ntripo make @last --then texture --json --yes                    # texture the parts afterwards\ntripo make hero.glb --then segment:v2.0-20260430,complete --json --yes   # split an existing mesh, then close the cut faces\n```\n\n- `generate_parts` (v3.1 only, +20 credits) outputs editable parts but requires bare\n  geometry — `texture`/`pbr` must be off; re-texture as a second step.\n- `segment` splits any model; `v2.0-20260430` adds `segmentation_granularity=simple|balanced|detailed`\n  and `split_by_connectivity`. `complete` fills the holes segmentation leaves\n  (`completion_mode=quick_cap` is the cheap cap-only variant). Export single parts with\n  `tripo model convert @last --format FBX -p 'part_names=[\"wheel_l\",\"wheel_r\"]'` —\n  list values need the `-p` form, `--then` cannot carry them.\n\n## Characters with animation\n\n```bash\ntripo make \"a knight in full armor, T-pose, standing straight\" --for anim --json --yes\n```\n\n`--for anim` runs `rig-check` first, which gates the chain: if the mesh is not\nriggable it stops before spending rigging credits.\n\nExplicit control over the rig and clips:\n\n```bash\ntripo make \"a robot soldier, T-pose\" --json --yes \\\n  | tripo anim check --json \\\n  | tripo anim rig --spec mixamo --out-format fbx --json \\\n  | tripo anim retarget --animation preset:idle preset:walk preset:run --json\n```\n\n- Prompt for a **T-pose** — rigging quality depends heavily on it. From a reference\n  image that is not in T-pose, generate one first:\n  `tripo generate text-to-image \"full-body front view of <character>\" -p template=t_pose --json --yes`\n  (or `tripo generate image-to-image ref.png -p template=t_pose`), then\n  `tripo generate image-to-model @last` and rig from there.\n- `rig-check` is free and returns the body type: `biped`, `quadruped`, `hexapod`,\n  `octopod`, `avian`, `serpentine`, `aquatic`. Rig with the type it recommends —\n  `rig:rig_type=quadruped` in a chain, `--rig-type quadruped` on `tripo anim rig` — the\n  default is `biped`.\n- `--spec mixamo` produces a Unity Humanoid / Mixamo-compatible skeleton; when the\n  final format is FBX add `fbx_preset=mixamo` on the convert step so bone naming and\n  axes match.\n- Clips available with the default v2.5 rig, for every body type: `preset:idle`\n  `walk` `run` `jump` `fall` `turn` `climb` `dive` `slash` `shoot` `hurt`, plus\n  `preset:quadruped:walk`, `preset:hexapod:walk`, `preset:octopod:walk`,\n  `preset:serpentine:march`, `preset:aquatic:march`. The older `rig:model=v1.0-20240301`\n  is biped-only but has 90+ `preset:biped:*` clips (dances, emotes, sports, combat) —\n  pick it when the game needs those.\n- `--animate-in-place` for locomotion clips driven by game code rather than root motion.\n- Retarget is billed per animation (10 credits each) and accepts at most five per task.\n  `--then retarget:` carries a single clip; use the piped `tripo anim retarget\n  --animation a b c` form for several.\n- To animate a mesh the project already has:\n  `tripo make hero.glb --then rig-check,rig,retarget:preset:walk --json --yes`\n\n## Format notes\n\n- **Three.js / web**: GLB. `--for ar-web` adds the web-oriented defaults (decimate to\n  20k faces, plus a USDZ for iOS Quick Look). `-p compress=geometry` at generation\n  emits a meshopt-compressed GLB for smaller downloads.\n- **Unity / Unreal**: FBX via `--then convert:fbx`, or `--for game-mobile` which\n  already converts. Useful convert options: `fbx_preset=blender|3dsmax|mixamo`,\n  `export_orientation=+x|-x|+y|-y` (forward axis for the engine),\n  `pivot_to_center_bottom=true` (pivot at the feet), `scale_factor=<n>` (unit fix),\n  `texture_format=PNG` (lossless instead of the JPEG default), `pack_uv=true`\n  (single atlas). `pivot_to_center_bottom`, `scale_factor` and `texture_format` (like\n  `texture_size`, `face_limit` and `quad`) bill the complex convert tier (10 credits,\n  not 5); `fbx_preset`, `export_orientation` and `pack_uv` on their own do not.\n- Set `export_orientation` **only on the final convert**, never at generation when\n  more steps follow: downstream steps ignore it and return a wrongly oriented model\n  that still reports success.\n- Quads (`-p quad=true`) force FBX — glTF cannot store them, so `convert:glb`\n  combined with quads is rejected. Quads are v3.1 or P2 only.\n- `texture_size` is set on the convert step, not at generation:\n  `--then convert:format=FBX,texture_size=2048`. Texture *quality* is set at\n  generation: `-p texture_quality=detailed` (HD, +10 credits) or `extreme` (8K, +20).\n- Real-world scale for physics or AR: `-p auto_size=true` at generation scales the\n  model to metres.\n\n## Wiring into the project\n\nAfter a successful run, `model_file` in the result JSON is the path to import. Do the\nintegration work the user actually asked for — add the loader call, register the\nprefab, update the asset manifest — rather than stopping at \"the file is generated\".\nCheck `preview.png` first so a wrong asset does not get wired in.\n"
}

SHA-256 of public snapshot: a96c74738b5a1b1d43d62528e1046f6f93db7bab2d6ea7aaf73994bf4e4af25a