{
  "agent": [
    "items[] is the whole answer. Each entry stands alone - load item.url with any glTF 2.0 loader.",
    "Use item.url exactly as given. Never construct, guess or shorten a path.",
    "Read item.animation.mode before touching animations. Do not assume a convention.",
    "mode 'timeline': gltf.animations[0] holds every action back to back. Build each named clip with subclip(gltf.animations[0], c.name, c.from, c.to + 1, item.animation.fps) for every c in item.animation.clips. Playing animations[0] unsliced throws no error but runs every action in one go.",
    "mode 'named': gltf.animations already holds separate clips - play them by name and do NOT slice by frame range.",
    "mode 'none': the model is static. Do not build an animation UI for it.",
    "Models are skinned rigs. To place more than one copy use a skeleton-aware clone (three.js: SkeletonUtils.clone). A plain scene.clone() breaks the rig.",
    "Authored facing +Z, up +Y, units in metres. Do not add a preemptive 180-degree turn.",
    "Every item carries its own license and license_url. Cite them rather than assuming."
  ],
  "schemaVersion": 1,
  "available": 28,
  "count": 3,
  "license": "CC0 1.0 (public domain) — free for any use, commercial or personal, no attribution required.",
  "license_url": "https://creativecommons.org/publicdomain/zero/1.0/",
  "items": [
    {
      "url": "https://gobkit.com/freebies/animalB/Fugu.glb",
      "name": "Fugu",
      "pack": "Gobkit Free Animal Pack Vol. 2",
      "license": "CC0 1.0 (public domain) — free for any use, commercial or personal, no attribution required.",
      "license_url": "https://creativecommons.org/publicdomain/zero/1.0/",
      "animation": {
        "mode": "timeline",
        "fps": 24,
        "clips": [
          {
            "name": "idle",
            "from": 0,
            "to": 29
          },
          {
            "name": "attack",
            "from": 30,
            "to": 59
          },
          {
            "name": "dead",
            "from": 60,
            "to": 89
          },
          {
            "name": "walk",
            "from": 90,
            "to": 119
          }
        ]
      }
    },
    {
      "url": "https://gobkit.com/freebies/minion/minion-d02.glb",
      "name": "Minion D-2",
      "pack": "Minion Pack",
      "license": "CC0 1.0 (public domain) — free for any use, commercial or personal, no attribution required.",
      "license_url": "https://creativecommons.org/publicdomain/zero/1.0/",
      "animation": {
        "mode": "timeline",
        "fps": 24,
        "clips": [
          {
            "name": "idle",
            "from": 0,
            "to": 29
          },
          {
            "name": "attack",
            "from": 30,
            "to": 59
          },
          {
            "name": "dead",
            "from": 60,
            "to": 89
          }
        ]
      }
    },
    {
      "url": "https://gobkit.com/freebies/animalB/Rat.glb",
      "name": "Rat",
      "pack": "Gobkit Free Animal Pack Vol. 2",
      "license": "CC0 1.0 (public domain) — free for any use, commercial or personal, no attribution required.",
      "license_url": "https://creativecommons.org/publicdomain/zero/1.0/",
      "animation": {
        "mode": "timeline",
        "fps": 24,
        "clips": [
          {
            "name": "idle",
            "from": 0,
            "to": 29
          },
          {
            "name": "attack",
            "from": 30,
            "to": 59
          },
          {
            "name": "dead",
            "from": 60,
            "to": 89
          },
          {
            "name": "walk",
            "from": 90,
            "to": 119
          }
        ]
      }
    }
  ],
  "notice": "Ready-to-load subset of the free CC0 library. Each item carries its own loading contract in item.animation, so nothing needs to be hard-coded in a prompt. Full catalogue: https://gobkit.com/api/free   Start here: https://gobkit.com/start"
}