Not in the top 1,000 by GitHub stars

icejyzy0430/open-model-workbench

开箱即用的 3D 模型构图工作台 Codex Skill。

History

Review weekly changes to SKILL.md before updating. Dates mark the weeks in which we observed each version; checks apply to the recorded commits.

View weekly changes

open-model-workbench/SKILL.md

Week of Nov 2, 2026 · +0 / −0 lines

Before Network or broad shell → After Network or broad shell

f121a2a23964 → f121a2a23964

Compare on GitHub

Week of Oct 26, 2026 · Line counts unavailable

Before Not checked yet → After Network or broad shell

First observation → f121a2a23964

No earlier version was observed for comparison.

Compare on GitHub

View on GitHubAdd to my skills

Verified commit f121a2a2396441e51f1679fee9e94569af805a78

70GitHub stars
2stars in 7 days
1skill in this repository
0commits in 30 days

Heat

4.0
  • Star growth, last 7 daysNot available
  • Star growth, last 24 hoursNot available
  • Rank movement, last 7 daysNot available
  • Commits, last 30 daysNot available
  • Accounts asking about it through MCP, last 7 daysNot available
  • Hot votes this weekNot available

Heat never changes the order by stars, and sponsorship never touches it. How heat works

Stars over time

Oct 25, 2026Nov 6, 202670

30-day change not yet available: not enough history.

Individual skills in this repository

How it works

open-model-workbench

When your agent uses it

Open a ready-to-use local 3D model composition workbench for GLB or GLTF files. Use when the user says "打开模型工作台", asks to place, rotate, scale, arrange, or frame one or more 3D models, or needs a clean composition screenshot before website or Image 2 design. If the user has not supplied a model, request GLB/GLTF files first; after models are available, generate the workspace, start its localhost server, and open it automatically.

What it loads into context

Frontmatter

112 tokens

Always available to the agent

SKILL.md

739 tokens

When the skill is activated

Reference documents

621 tokens

Loaded on request

Token counts are estimates. Scripts run separately; they are not counted as reference context.

The playbook

  1. Activation Flow
  2. Interaction Contract
  3. Input Rules
  4. Runtime Rules
  5. Direct Generation

Scripts executed separately

  • assets/workbench/composer.js
  • assets/workbench/vendor/controls/TransformControls.js
  • assets/workbench/vendor/draco/draco_decoder.js
  • assets/workbench/vendor/draco/draco_wasm_wrapper.js
  • assets/workbench/vendor/loaders/DRACOLoader.js
  • assets/workbench/vendor/loaders/GLTFLoader.js
  • assets/workbench/vendor/lucide.min.js
  • assets/workbench/vendor/three.core.min.js
  • assets/workbench/vendor/three.module.min.js
  • assets/workbench/vendor/utils/BufferGeometryUtils.js
  • scripts/generate_workbench.py
  • scripts/launch_workbench.py
  • scripts/serve_workbench.py
  • tests/browser_check.mjs
  • tests/test_generate_workbench.py
  • tests/test_launch_workbench.py

Files

  • .gitignoreasset65 bytes
  • SKILL.mdcore3,417 bytes
  • SKILL.mdcore3,417 bytes
  • SKILL.mdcore3,417 bytes
  • SKILL.mdcore3,417 bytes
  • SKILL.mdcore3,417 bytes
  • agents/openai.yamlasset293 bytes
  • assets/workbench/composer.cssasset8,574 bytes
  • assets/workbench/composer.jsruns18,924 bytes
  • assets/workbench/index.htmlasset6,233 bytes
  • assets/workbench/vendor/LUCIDE-LICENSE.txtdoc3,208 bytes
  • assets/workbench/vendor/THREE-LICENSE.txtdoc1,081 bytes
  • assets/workbench/vendor/controls/TransformControls.jsruns49,394 bytes
  • assets/workbench/vendor/draco/draco_decoder.jsruns719,410 bytes
  • assets/workbench/vendor/draco/draco_decoder.wasmasset285,747 bytes
  • assets/workbench/vendor/draco/draco_wasm_wrapper.jsruns58,763 bytes
  • assets/workbench/vendor/loaders/DRACOLoader.jsruns17,774 bytes
  • assets/workbench/vendor/loaders/GLTFLoader.jsruns114,883 bytes
  • assets/workbench/vendor/lucide.min.jsruns397,450 bytes
  • assets/workbench/vendor/three.core.min.jsruns380,922 bytes
  • assets/workbench/vendor/three.module.min.jsruns355,116 bytes
  • assets/workbench/vendor/utils/BufferGeometryUtils.jsruns35,539 bytes
  • references/config-schema.mddoc2,119 bytes
  • scripts/generate_workbench.pyruns14,628 bytes
  • scripts/launch_workbench.pyruns9,461 bytes
  • scripts/serve_workbench.pyruns1,859 bytes
  • tests/browser_check.mjsruns11,853 bytes
  • tests/test_generate_workbench.pyruns5,334 bytes
  • tests/test_launch_workbench.pyruns2,544 bytes
Read SKILL.md

# Open Model Workbench

Turn user-provided GLB/GLTF files into a self-contained desktop composition workspace. Keep this task separate from point-cloud rendering or landing-page generation.

## Activation Flow

1. Inspect the current request, attachments, and explicit local paths for `.glb` or `.gltf` files.
2. If no model is available, ask only: `请提供一个或多个 GLB/GLTF 模型文件。` Stop until the user provides them. Do not create placeholders and do not ask for design details.
3. Once at least one model is available, choose an output folder outside the model source and the installed Skill. Prefer `<project>/model-workbench-output`.
4. Run the launcher with every supplied file or one directory containing the models:

```bash
python "<skill-dir>/scripts/launch_workbench.py" "<model-or-directory>" --output "<output-dir>"
```
View the complete source on GitHub

Skills included

  • open-model-workbench

Repository facts

License
MIT
Created
Jul 18, 2026
Last pushed
Aug 11, 2026
Forks
10
Open issues
0
Project activity
Slowing

Before you install

Network or broad shell

Automated signals, not a guarantee

Checked Nov 7, 2026

Not fully analyzed: some files were too long, unreadable or missing. This never lowers the level.

Show 18 notes
  • open-model-workbench/SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • open-model-workbench/SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • open-model-workbench/SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • open-model-workbench/SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • open-model-workbench/assets/workbench/vendor/draco/draco_decoder.js:8 Analysis incomplete: physical or joined line exceeds character limit
  • open-model-workbench/assets/workbench/vendor/draco/draco_decoder.js:10 Analysis incomplete: physical or joined line exceeds character limit
  • open-model-workbench/assets/workbench/vendor/draco/draco_decoder.js:12 Analysis incomplete: physical or joined line exceeds character limit
  • open-model-workbench/assets/workbench/vendor/draco/draco_decoder.js:13 Analysis incomplete: physical or joined line exceeds character limit
  • open-model-workbench/assets/workbench/vendor/draco/draco_decoder.js:14 Analysis incomplete: physical or joined line exceeds character limit
  • open-model-workbench/assets/workbench/vendor/draco/draco_decoder.js:16 Analysis incomplete: physical or joined line exceeds character limit
  • open-model-workbench/assets/workbench/vendor/draco/draco_decoder.js:22 Analysis incomplete: physical or joined line exceeds character limit
  • open-model-workbench/assets/workbench/vendor/lucide.min.js:8 Analysis incomplete: physical or joined line exceeds character limit
  • open-model-workbench/assets/workbench/vendor/lucide.min.js:11 Analysis incomplete: physical or joined line exceeds character limit
  • open-model-workbench/assets/workbench/vendor/lucide.min.js:9 Analysis incomplete: physical or joined line exceeds character limit
  • open-model-workbench/assets/workbench/vendor/three.core.min.js:6 Analysis incomplete: physical or joined line exceeds character limit
  • open-model-workbench/assets/workbench/vendor/three.core.min.js:4 Analysis incomplete: physical or joined line exceeds character limit
  • open-model-workbench/assets/workbench/vendor/three.module.min.js:6 Analysis incomplete: physical or joined line exceeds character limit
  • open-model-workbench/assets/workbench/vendor/three.module.min.js:4 Analysis incomplete: physical or joined line exceeds character limit
Show all 187 signals by file

open-model-workbench/assets/workbench/composer.js

  • Executable scriptline 1
    Executable file

open-model-workbench/assets/workbench/vendor/controls/TransformControls.js

  • Executable scriptline 1
    Executable file

open-model-workbench/assets/workbench/vendor/draco/draco_decoder.js

  • Executable scriptline 1
    Executable file
  • Possible obfuscationline 8
    var Module=typeof DracoDecoderModule!="undefined"?DracoDecoderModule:{};var readyPromiseResolve,readyPromiseReject;Module["ready"]=new Promise(function(resolve,reject){readyPromiseResolve=resolve;readyPromiseReject=reject});var isRuntimeIni
  • Possible obfuscationline 10
    function instantiate(na){function c(d){d.set=function(a,b){this[a]=b};d.get=function(a){return this[a]};return d}var e;var f=new Uint8Array(123);for(var a=25;a>=0;--a){f[48+a]=52+a;f[65+a]=a;f[97+a]=26+a}f[43]=62;f[47]=63;function l(m,n,o){
  • Possible obfuscationline 12
    function Ud(a,b,c){var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,w=0,x=0,y=0,z=0,A=0,B=0;B=ca-672|0;ca=B;k=H[b+8>>2];s=H[b+12>>2];d=H[b+20>>2];e=H[b+16>>2];g=e+4|0;d=g>>>0<4?d+1|0:d;a:{b:{c:{if(g>>>0>k>>>0&(d|0
  • Possible obfuscationline 13
    function va(a,b,c){var d=0,e=0;a:{if((a|0)==(b|0)){break a}e=a+c|0;if(b-e>>>0<=0-(c<<1)>>>0){return qa(a,b,c)}d=(a^b)&3;b:{c:{if(a>>>0<b>>>0){if(d){d=a;break b}if(!(a&3)){d=a;break c}d=a;while(1){if(!c){break a}F[d|0]=I[b|0];b=b+1|0;c=c-1|0
  • Possible obfuscationline 14
    function hb(a,b,c){var d=0,e=0,f=0,g=0;a:{if(a>>>0>5){break a}d=H[c+20>>2];e=H[c+12>>2];f=H[c+16>>2];if((d|0)>=(e|0)&f>>>0>=K[c+8>>2]|(d|0)>(e|0)){break a}e=I[H[c>>2]+f|0];f=f+1|0;d=f?d:d+1|0;H[c+16>>2]=f;H[c+20>>2]=d;d=e<<24>>24;if((d|0)<0
  • Possible obfuscationline 16
    function dh(a,b,c){a=a|0;b=b|0;c=c|0;H[a+32>>2]=c;H[a+28>>2]=b;return 1}function ch(a){a=a|0;if(a){Ra(a+12|0,H[a+16>>2]);Qa(a,H[a+4>>2]);oa(a)}}function Rd(a,b,c){a:{if(H[c+76>>2]<0){a=Fc(a,b,c);break a}a=Fc(a,b,c)}}function Mb(a,b){a=a|0;b
  • Possible obfuscationline 18
    e=I;p(q);var ea=c([null,Ad,Ta,La,Tb,Pj,zi,Gh,Fd,Bf,xc,Nh,_e,Bj,Ta,mi,ji,Da,gj,Ti,Ki,Re,xi,Je,_e,hi,wg,fb,dh,ke,jg,_f,Uf,eb,Ja,Nf,Pd,Da,rd,yf,Of,Af,zf,sf,rf,pd,xf,wf,vf,Pd,uf,tf,kf,jf,qf,pf,hf,of,nf,mf,lf,cf,bf,pd,gf,ff,nd,ef,Nj,Oj,Kj,Ub,Da,
  • Possible obfuscationline 22
    )(info)},instantiate:function(binary,info){return{then:function(ok){var module=new WebAssembly.Module(binary);ok({"instance":new WebAssembly.Instance(module,info)})}}},RuntimeError:Error};wasmBinary=[];if(typeof WebAssembly!="object"){abort

open-model-workbench/assets/workbench/vendor/draco/draco_wasm_wrapper.js

  • Executable scriptline 1
    Executable file
  • Network accessline 22
    var DracoDecoderModule=function(){var k="undefined"!==typeof document&&document.currentScript?document.currentScript.src:void 0;"undefined"!==typeof __filename&&(k=k||__filename);return function(n){function l(e){return a.locateFile?a.locate
  • Network accessline 23
    (g&240)?(g&15)<<12|u<<6|X:(g&7)<<18|u<<12|X<<6|e[b++]&63;65536>g?d+=String.fromCharCode(g):(g-=65536,d+=String.fromCharCode(55296|g>>10,56320|g&1023))}}else d+=String.fromCharCode(g)}return d}function h(e,b){return e?p(ea,e,b):""}function A
  • Network accessline 24
    e="Aborted("+e+")";da(e);wa=!0;e=new WebAssembly.RuntimeError(e+". Build with -sASSERTIONS for more info.");ka(e);throw e;}function q(e){try{if(e==P&&fa)return new Uint8Array(fa);if(ma)return ma(e);throw"both async and sync fetching of the 
  • Network accessline 37
    1;4>=c;c*=2){var d=b*(1+.2/c);d=Math.min(d,e+100663296);var g=Math;d=Math.max(e,d);g=g.min.call(g,2147483648,d+(65536-d%65536)%65536);a:{d=ja.buffer;try{ja.grow(g-d.byteLength+65535>>>16);A();var u=1;break a}catch(X){}u=void 0}if(u)return!0
  • Network accessline 38
    ab}V[d>>2]=g;return 0}};(function(){function e(g,u){a.asm=g.exports;ja=a.asm.h;A();oa.unshift(a.asm.i);aa--;a.monitorRunDependencies&&a.monitorRunDependencies(aa);0==aa&&(null!==ra&&(clearInterval(ra),ra=null),ia&&(g=ia,ia=null,g()))}functi
  • Network accessline 39
    if(a.instantiateWasm)try{return a.instantiateWasm(d,e)}catch(g){da("Module.instantiateWasm callback failed with error: "+g),ka(g)}(function(){return fa||"function"!=typeof WebAssembly.instantiateStreaming||P.startsWith("data:application/oct

open-model-workbench/assets/workbench/vendor/loaders/DRACOLoader.js

  • Executable scriptline 1
    Executable file
  • Network accessline 17
    * A loader for the Draco format.  *  * [Draco](https://google.github.io/draco/) is an open source library for compressing
  • Network accessline 18
    *  * [Draco](https://google.github.io/draco/) is an open source library for compressing  * and decompressing 3D meshes and point clouds. Compressed geometry can be significantly smaller,
  • Network accessline 19
    * [Draco](https://google.github.io/draco/) is an open source library for compressing
  • Network accessline 24
    * and other attributes. Draco files do not contain materials, textures, animation, or node hierarchies –  * to use these features, embed Draco geometry inside of a glTF file. A normal glTF file can be converted  * to a Draco-compressed glTF
  • Network accessline 25
    * to use these features, embed Draco geometry inside of a glTF file. A normal glTF file can be converted  * to a Draco-compressed glTF file using [glTF-Pipeline](https://github.com/CesiumGS/gltf-pipeline).  * When using Draco with glTF, an 
  • Network accessline 26
    * to a Draco-compressed glTF file using [glTF-Pipeline](https://github.com/CesiumGS/gltf-pipeline).
  • Network accessline 666
    // Reference: https://registry.khronos.org/glTF/specs/2.0/glTF-2.0.html#data-alignment

open-model-workbench/assets/workbench/vendor/loaders/GLTFLoader.js

  • Executable scriptline 1
    Executable file
  • Network accessline 71
    * A loader for the glTF 2.0 format.  *  * [glTF](https://www.khronos.org/gltf/} (GL Transmission Format) is an [open format specification]{@link https://github.com/KhronosGroup/glTF/tree/main/specification/2.0)
  • Network accessline 72
    *  * [glTF](https://www.khronos.org/gltf/} (GL Transmission Format) is an [open format specification]{@link https://github.com/KhronosGroup/glTF/tree/main/specification/2.0)  * for efficient delivery and loading of 3D content. Assets may be
  • Network accessline 73
    * [glTF](https://www.khronos.org/gltf/} (GL Transmission Format) is an [open format specification]{@link https://github.com/KhronosGroup/glTF/tree/main/specification/2.0)
  • Network accessline 100
    *  * The following glTF 2.0 extension is supported by an external user plugin:  * - [KHR_materials_variants](https://github.com/takahirox/three-gltf-extensions)
  • Network accessline 101
    * The following glTF 2.0 extension is supported by an external user plugin:  * - [KHR_materials_variants](https://github.com/takahirox/three-gltf-extensions)  * - [MSFT_texture_dds](https://github.com/takahirox/three-gltf-extensions)
  • Network accessline 102
    * - [KHR_materials_variants](https://github.com/takahirox/three-gltf-extensions)
  • Network accessline 103
    * - [MSFT_texture_dds](https://github.com/takahirox/three-gltf-extensions)
  • Network accessline 104
    * - [KHR_animation_pointer](https://github.com/needle-tools/three-animation-pointer)
  • Network accessline 105
    * - [NEEDLE_progressive](https://github.com/needle-tools/gltf-progressive)
  • Network accessline 264
    // If a base path is set, resources will be relative paths from that plus the relative path of the gltf file 			// Example  path = 'https://my-cnd-server.com/', url = 'assets/models/model.gltf'
  • Network accessline 265
    // Example  path = 'https://my-cnd-server.com/', url = 'assets/models/model.gltf'
  • Network accessline 266
    // resourcePath = 'https://my-cnd-server.com/assets/models/'
  • Network accessline 267
    // referenced resource 'model.bin' will be loaded from 'https://my-cnd-server.com/assets/models/model.bin'
  • Network accessline 268
    // referenced resource '../textures/texture.png' will be loaded from 'https://my-cnd-server.com/assets/textures/texture.png'
  • Network accessline 628
    * Punctual Lights Extension  *  * Specification: https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Khronos/KHR_lights_punctual
  • Network accessline 629
    *  * Specification: https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Khronos/KHR_lights_punctual  *
  • Network accessline 630
    * Specification: https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Khronos/KHR_lights_punctual
  • Network accessline 766
    * Unlit Materials Extension  *  * Specification: https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Khronos/KHR_materials_unlit
  • Network accessline 767
    *  * Specification: https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Khronos/KHR_materials_unlit  *
  • Network accessline 768
    * Specification: https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Khronos/KHR_materials_unlit
  • Network accessline 821
    * Materials Emissive Strength Extension  *  * Specification: https://github.com/KhronosGroup/glTF/blob/5768b3ce0ef32bc39cdf1bef10b948586635ead3/extensions/2.0/Khronos/KHR_materials_emissive_strength/README.md
  • Network accessline 822
    *  * Specification: https://github.com/KhronosGroup/glTF/blob/5768b3ce0ef32bc39cdf1bef10b948586635ead3/extensions/2.0/Khronos/KHR_materials_emissive_strength/README.md  *
  • Network accessline 823
    * Specification: https://github.com/KhronosGroup/glTF/blob/5768b3ce0ef32bc39cdf1bef10b948586635ead3/extensions/2.0/Khronos/KHR_materials_emissive_strength/README.md
  • Network accessline 862
    * Clearcoat Materials Extension  *  * Specification: https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Khronos/KHR_materials_clearcoat
  • Network accessline 863
    *  * Specification: https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Khronos/KHR_materials_clearcoat  *
  • Network accessline 864
    * Specification: https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Khronos/KHR_materials_clearcoat
  • Network accessline 948
    * Materials dispersion Extension  *  * Specification: https://github.com/KhronosGroup/glTF/tree/main/extensions/2.0/Khronos/KHR_materials_dispersion
  • Network accessline 949
    *  * Specification: https://github.com/KhronosGroup/glTF/tree/main/extensions/2.0/Khronos/KHR_materials_dispersion  *
  • Network accessline 950
    * Specification: https://github.com/KhronosGroup/glTF/tree/main/extensions/2.0/Khronos/KHR_materials_dispersion
  • Network accessline 996
    * Iridescence Materials Extension  *  * Specification: https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Khronos/KHR_materials_iridescence
  • Network accessline 997
    *  * Specification: https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Khronos/KHR_materials_iridescence  *
  • Network accessline 998
    * Specification: https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Khronos/KHR_materials_iridescence
  • Network accessline 1086
    * Sheen Materials Extension  *  * Specification: https://github.com/KhronosGroup/glTF/tree/main/extensions/2.0/Khronos/KHR_materials_sheen
  • Network accessline 1087
    *  * Specification: https://github.com/KhronosGroup/glTF/tree/main/extensions/2.0/Khronos/KHR_materials_sheen  *
  • Network accessline 1088
    * Specification: https://github.com/KhronosGroup/glTF/tree/main/extensions/2.0/Khronos/KHR_materials_sheen
  • Network accessline 1163
    * Transmission Materials Extension  *  * Specification: https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Khronos/KHR_materials_transmission
  • Network accessline 1164
    *  * Specification: https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Khronos/KHR_materials_transmission  * Draft: https://github.com/KhronosGroup/glTF/pull/1698
  • Network accessline 1165
    * Specification: https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Khronos/KHR_materials_transmission
  • Network accessline 1166
    * Draft: https://github.com/KhronosGroup/glTF/pull/1698
  • Network accessline 1224
    * Materials Volume Extension  *  * Specification: https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Khronos/KHR_materials_volume
  • Network accessline 1225
    *  * Specification: https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Khronos/KHR_materials_volume  *
  • Network accessline 1226
    * Specification: https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Khronos/KHR_materials_volume
  • Network accessline 1285
    * Materials ior Extension  *  * Specification: https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Khronos/KHR_materials_ior
  • Network accessline 1286
    *  * Specification: https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Khronos/KHR_materials_ior  *
  • Network accessline 1287
    * Specification: https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Khronos/KHR_materials_ior
  • Network accessline 1333
    * Materials specular Extension  *  * Specification: https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Khronos/KHR_materials_specular
  • Network accessline 1334
    *  * Specification: https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Khronos/KHR_materials_specular  *
  • Network accessline 1335
    * Specification: https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Khronos/KHR_materials_specular
  • Network accessline 1399
    * Materials bump Extension  *  * Specification: https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Khronos/EXT_materials_bump
  • Network accessline 1400
    *  * Specification: https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Khronos/EXT_materials_bump  *
  • Network accessline 1401
    * Specification: https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Khronos/EXT_materials_bump
  • Network accessline 1455
    * Materials anisotropy Extension  *  * Specification: https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Khronos/KHR_materials_anisotropy
  • Network accessline 1456
    *  * Specification: https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Khronos/KHR_materials_anisotropy  *
  • Network accessline 1457
    * Specification: https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Khronos/KHR_materials_anisotropy
  • Network accessline 1521
    * BasisU Texture Extension  *  * Specification: https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Khronos/KHR_texture_basisu
  • Network accessline 1522
    *  * Specification: https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Khronos/KHR_texture_basisu  *
  • Network accessline 1523
    * Specification: https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Khronos/KHR_texture_basisu
  • Network accessline 1574
    * WebP Texture Extension  *  * Specification: https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Vendor/EXT_texture_webp
  • Network accessline 1575
    *  * Specification: https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Vendor/EXT_texture_webp  *
  • Network accessline 1576
    * Specification: https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Vendor/EXT_texture_webp
  • Network accessline 1621
    * AVIF Texture Extension  *  * Specification: https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Vendor/EXT_texture_avif
  • Network accessline 1622
    *  * Specification: https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Vendor/EXT_texture_avif  *
  • Network accessline 1623
    * Specification: https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Vendor/EXT_texture_avif
  • Network accessline 1668
    * meshopt BufferView Compression Extension  *  * Specification: https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Vendor/EXT_meshopt_compression
  • Network accessline 1669
    *  * Specification: https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Vendor/EXT_meshopt_compression  *
  • Network accessline 1670
    * Specification: https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Vendor/EXT_meshopt_compression
  • Network accessline 1754
    * GPU Instancing Extension  *  * Specification: https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Vendor/EXT_mesh_gpu_instancing
  • Network accessline 1755
    *  * Specification: https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Vendor/EXT_mesh_gpu_instancing  *
  • Network accessline 1756
    * Specification: https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Vendor/EXT_mesh_gpu_instancing
  • Network accessline 1984
    * DRACO Mesh Compression Extension  *  * Specification: https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Khronos/KHR_draco_mesh_compression
  • Network accessline 1985
    *  * Specification: https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Khronos/KHR_draco_mesh_compression  *
  • Network accessline 1986
    * Specification: https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Khronos/KHR_draco_mesh_compression
  • Network accessline 2069
    * Texture Transform Extension  *  * Specification: https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Khronos/KHR_texture_transform
  • Network accessline 2070
    *  * Specification: https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Khronos/KHR_texture_transform  *
  • Network accessline 2071
    * Specification: https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Khronos/KHR_texture_transform
  • Network accessline 2090
    // See https://github.com/mrdoob/three.js/issues/21819.
  • Network accessline 2130
    * Mesh Quantization Extension  *  * Specification: https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Khronos/KHR_mesh_quantization
  • Network accessline 2131
    *  * Specification: https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Khronos/KHR_mesh_quantization  *
  • Network accessline 2132
    * Specification: https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Khronos/KHR_mesh_quantization
  • Network accessline 2150
    // Spline Interpolation // Specification: https://github.com/KhronosGroup/glTF/blob/master/specification/2.0/README.md#appendix-c-spline-interpolation
  • Network accessline 2151
    // Specification: https://github.com/KhronosGroup/glTF/blob/master/specification/2.0/README.md#appendix-c-spline-interpolation
  • Network accessline 2334
    /**  * Specification: https://github.com/KhronosGroup/glTF/blob/master/specification/2.0/README.md#default-material
  • Network accessline 2335
    * Specification: https://github.com/KhronosGroup/glTF/blob/master/specification/2.0/README.md#default-material
  • Network accessline 2402
    /**  * Specification: https://github.com/KhronosGroup/glTF/blob/master/specification/2.0/README.md#morph-targets
  • Network accessline 2403
    * Specification: https://github.com/KhronosGroup/glTF/blob/master/specification/2.0/README.md#morph-targets
  • Network accessline 2587
    // Reference: 	// https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Khronos/KHR_mesh_quantization#encoding-quantized-data
  • Network accessline 2588
    // https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Khronos/KHR_mesh_quantization#encoding-quantized-data
  • Network accessline 3082
    /** 	 * Specification: https://github.com/KhronosGroup/glTF/blob/master/specification/2.0/README.md#buffers-and-buffer-views
  • Network accessline 3083
    * Specification: https://github.com/KhronosGroup/glTF/blob/master/specification/2.0/README.md#buffers-and-buffer-views
  • Network accessline 3121
    /** 	 * Specification: https://github.com/KhronosGroup/glTF/blob/master/specification/2.0/README.md#buffers-and-buffer-views
  • Network accessline 3122
    * Specification: https://github.com/KhronosGroup/glTF/blob/master/specification/2.0/README.md#buffers-and-buffer-views
  • Network accessline 3142
    /** 	 * Specification: https://github.com/KhronosGroup/glTF/blob/master/specification/2.0/README.md#accessors
  • Network accessline 3143
    * Specification: https://github.com/KhronosGroup/glTF/blob/master/specification/2.0/README.md#accessors
  • Network accessline 3239
    // https://github.com/KhronosGroup/glTF/blob/master/specification/2.0/README.md#sparse-accessors
  • Network accessline 3283
    /** 	 * Specification: https://github.com/KhronosGroup/glTF/tree/master/specification/2.0#textures
  • Network accessline 3284
    * Specification: https://github.com/KhronosGroup/glTF/tree/master/specification/2.0#textures
  • Network accessline 3323
    // See https://github.com/mrdoob/three.js/issues/21559.
  • Network accessline 3587
    // https://github.com/mrdoob/three.js/issues/11438#issuecomment-507003995
  • Network accessline 3613
    /** 	 * Specification: https://github.com/KhronosGroup/glTF/blob/master/specification/2.0/README.md#materials
  • Network accessline 3614
    * Specification: https://github.com/KhronosGroup/glTF/blob/master/specification/2.0/README.md#materials
  • Network accessline 3641
    // Specification: 			// https://github.com/KhronosGroup/glTF/tree/master/specification/2.0#metallic-roughness-material
  • Network accessline 3642
    // https://github.com/KhronosGroup/glTF/tree/master/specification/2.0#metallic-roughness-material
  • Network accessline 3700
    // See: https://github.com/mrdoob/three.js/issues/17706
  • Network accessline 3799
    /** 	 * Specification: https://github.com/KhronosGroup/glTF/blob/master/specification/2.0/README.md#geometry
  • Network accessline 3800
    * Specification: https://github.com/KhronosGroup/glTF/blob/master/specification/2.0/README.md#geometry
  • Network accessline 3870
    /** 	 * Specification: https://github.com/KhronosGroup/glTF/blob/master/specification/2.0/README.md#meshes
  • Network accessline 3871
    * Specification: https://github.com/KhronosGroup/glTF/blob/master/specification/2.0/README.md#meshes
  • Network accessline 4020
    /** 	 * Specification: https://github.com/KhronosGroup/glTF/tree/master/specification/2.0#cameras
  • Network accessline 4021
    * Specification: https://github.com/KhronosGroup/glTF/tree/master/specification/2.0#cameras
  • Network accessline 4058
    /** 	 * Specification: https://github.com/KhronosGroup/glTF/tree/master/specification/2.0#skins
  • Network accessline 4059
    * Specification: https://github.com/KhronosGroup/glTF/tree/master/specification/2.0#skins
  • Network accessline 4130
    /** 	 * Specification: https://github.com/KhronosGroup/glTF/tree/master/specification/2.0#animations
  • Network accessline 4131
    * Specification: https://github.com/KhronosGroup/glTF/tree/master/specification/2.0#animations
  • Network accessline 4263
    /** 	 * Specification: https://github.com/KhronosGroup/glTF/tree/master/specification/2.0#nodes-and-hierarchy
  • Network accessline 4264
    * Specification: https://github.com/KhronosGroup/glTF/tree/master/specification/2.0#nodes-and-hierarchy
  • Network accessline 4477
    /** 	 * Specification: https://github.com/KhronosGroup/glTF/tree/master/specification/2.0#scenes
  • Network accessline 4478
    * Specification: https://github.com/KhronosGroup/glTF/tree/master/specification/2.0#scenes
  • Network accessline 4490
    // Loader returns Group, not Scene. 		// See: https://github.com/mrdoob/three.js/issues/18342#issuecomment-578981172
  • Network accessline 4491
    // See: https://github.com/mrdoob/three.js/issues/18342#issuecomment-578981172

open-model-workbench/assets/workbench/vendor/lucide.min.js

  • Executable scriptline 1
    Executable file
  • Network accessline 8
    (function(a,n){typeof exports=="object"&&typeof module<"u"?n(exports):typeof define=="function"&&define.amd?define(["exports"],n):(a=typeof globalThis<"u"?globalThis:a||self,n(a.lucide={}))})(this,(function(a){"use strict";const n={xmlns:"h
  • Possible obfuscationline 8
    (function(a,n){typeof exports=="object"&&typeof module<"u"?n(exports):typeof define=="function"&&define.amd?define(["exports"],n):(a=typeof globalThis<"u"?globalThis:a||self,n(a.lucide={}))})(this,(function(a){"use strict";const n={xmlns:"h
  • Possible obfuscationline 11
    lucide.createIcons({icons});\``);if(typeof c>"u")throw new Error("`createIcons()` only works in a browser environment.");if(Array.from(c.querySelectorAll(`[${h}]`)).forEach(p=>Ba(p,{nameAttr:h,icons:t,attrs:d})),M&&Array.from(c.querySelecto

open-model-workbench/assets/workbench/vendor/three.core.min.js

  • Executable scriptline 1
    Executable file
  • Network accessline 4
    * SPDX-License-Identifier: MIT  */ const t="182",e={LEFT:0,MIDDLE:1,RIGHT:2,ROTATE:0,DOLLY:1,PAN:2},i={ROTATE:0,PAN:1,DOLLY_PAN:2,DOLLY_ROTATE:3},s=0,r=1,n=2,a=3,o=0,h=1,l=2,c=3,u=0,d=1,p=2,m=0,y=1,g=2,f=3,x=4,b=5,v=100,w=101,M=102,S=103,_=
  • Network accessline 6
    const t="182",e={LEFT:0,MIDDLE:1,RIGHT:2,ROTATE:0,DOLLY:1,PAN:2},i={ROTATE:0,PAN:1,DOLLY_PAN:2,DOLLY_ROTATE:3},s=0,r=1,n=2,a=3,o=0,h=1,l=2,c=3,u=0,d=1,p=2,m=0,y=1,g=2,f=3,x=4,b=5,v=100,w=101,M=102,S=103,_=104,A=200,T=201,z=202,C=203,I=204,B
  • Possible obfuscationline 6
    const t="182",e={LEFT:0,MIDDLE:1,RIGHT:2,ROTATE:0,DOLLY:1,PAN:2},i={ROTATE:0,PAN:1,DOLLY_PAN:2,DOLLY_ROTATE:3},s=0,r=1,n=2,a=3,o=0,h=1,l=2,c=3,u=0,d=1,p=2,m=0,y=1,g=2,f=3,x=4,b=5,v=100,w=101,M=102,S=103,_=104,A=200,T=201,z=202,C=203,I=204,B

open-model-workbench/assets/workbench/vendor/three.module.min.js

  • Executable scriptline 1
    Executable file

open-model-workbench/assets/workbench/vendor/utils/BufferGeometryUtils.js

  • Executable scriptline 1
    Executable file

open-model-workbench/scripts/generate_workbench.py

  • Executable scriptline 1
    #!/usr/bin/env python3

open-model-workbench/scripts/launch_workbench.py

  • Executable scriptline 1
    #!/usr/bin/env python3
  • Network accessline 61
    def url_ready(url: str, timeout: float = 0.8) -> bool:     try:         with urllib.request.urlopen(url, timeout=timeout) as response:
  • Network accessline 62
    try:         with urllib.request.urlopen(url, timeout=timeout) as response:             return response.status == 200
  • Network accessline 63
    with urllib.request.urlopen(url, timeout=timeout) as response:
  • Network accessline 89
    raise GenerationError("--port must be between 1024 and 65535")         return requested     with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as sock:
  • Network accessline 90
    return requested     with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as sock:         sock.bind((HOST, 0))
  • Network accessline 91
    with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as sock:
  • Network accessline 166
    if not isinstance(url, str) or not isinstance(token, str):         return False     request = urllib.request.Request(
  • Network accessline 167
    return False     request = urllib.request.Request(         url.rstrip("/") + "/__workbench_shutdown__",
  • Network accessline 168
    request = urllib.request.Request(
  • Network accessline 173
    )     try:         with urllib.request.urlopen(request, timeout=2) as response:
  • Network accessline 174
    try:         with urllib.request.urlopen(request, timeout=2) as response:             if response.status != 204:
  • Network accessline 175
    with urllib.request.urlopen(request, timeout=2) as response:
  • Network accessline 238
    config = generate_from_sources(args.sources, models, output_dir, skill_dir)             port = free_port(args.port)             url = f"http://{HOST}:{port}/"
  • Network accessline 239
    [Credential-related source omitted]
  • Network accessline 240
    url = f"http://{HOST}:{port}/"

open-model-workbench/scripts/serve_workbench.py

  • Executable scriptline 1
    #!/usr/bin/env python3

open-model-workbench/tests/browser_check.mjs

  • Executable scriptline 1
    Executable file
  • Network accessline 39
    while (Date.now() - started < timeout) {     try {       const response = await fetch(url);
  • Network accessline 40
    try {       const response = await fetch(url);       if (response.ok) return response.json();
  • Network accessline 41
    const response = await fetch(url);
  • Network accessline 130
    let client; try {   await waitForJson(`http://127.0.0.1:${port}/json/version`);
  • Network accessline 131
    try {   await waitForJson(`http://127.0.0.1:${port}/json/version`);   const targets = await waitForJson(`http://127.0.0.1:${port}/json/list`);
  • Network accessline 132
    await waitForJson(`http://127.0.0.1:${port}/json/version`);
  • Network accessline 133
    const targets = await waitForJson(`http://127.0.0.1:${port}/json/list`);

open-model-workbench/tests/test_generate_workbench.py

  • Executable scriptline 1
    Executable file

open-model-workbench/tests/test_launch_workbench.py

  • Executable scriptline 1
    Executable file
  • Network accessline 57
    self.assertIn(f"WORKBENCH_URL={state['url']}", result.stdout)         for _ in range(3):             with urllib.request.urlopen(state["url"], timeout=3) as response:
  • Network accessline 58
    for _ in range(3):             with urllib.request.urlopen(state["url"], timeout=3) as response:                 self.assertEqual(response.status, 200)
  • Network accessline 59
    with urllib.request.urlopen(state["url"], timeout=3) as response:

How the signals fit together

Facts from a static read of the files at the pinned commit. They describe what the code does, not why.

Signal confidence: 187 facts

and 137 more

Works with

Agent compatibility, from the files in this repository
AgentStatusEvidenceInstall to
Claude CodeCompatibleStandard SKILL.md open-model-workbench/SKILL.md.claude/skills/<skill-name>/
CodexCompatibleStandard SKILL.md open-model-workbench/SKILL.md.agents/skills/<skill-name>/
CursorCompatibleStandard SKILL.md open-model-workbench/SKILL.md.cursor/skills/<skill-name>/
Gemini CLICompatibleStandard SKILL.md open-model-workbench/SKILL.md.gemini/skills/<skill-name>/
GitHub CopilotCompatibleStandard SKILL.md open-model-workbench/SKILL.md.github/skills/<skill-name>/
OpenCodeCompatibleStandard SKILL.md open-model-workbench/SKILL.md.opencode/skills/<skill-name>/
  • Native The repository ships a manifest, folder or frontmatter field for this agent.
  • Compatible A standard SKILL.md that this agent can read.
  • Unknown No evidence either way.

Derived automatically from paths, manifests and frontmatter. Not tested on each agent.