@leejungkiin/awkit 1.7.6 → 1.7.8

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.
Files changed (69) hide show
  1. package/bin/awk.js +213 -92
  2. package/bin/codex-generators.js +32 -3
  3. package/core/GEMINI.md +18 -5
  4. package/core/GEMINI.md.bak +20 -7
  5. package/core/skill-runtime-manifest.json +1 -0
  6. package/package.json +1 -1
  7. package/scripts/exec-progress.js +116 -0
  8. package/scripts/exec-rtk.js +105 -10
  9. package/skills/CATALOG.md +1 -1
  10. package/skills/awf-caveman/SKILL.md +13 -1
  11. package/skills/code-review/SKILL.md +40 -68
  12. package/skills/generate-gui-assets/SKILL.md +5 -5
  13. package/skills/hatch-pet/SKILL.md +2 -2
  14. package/skills/review/SKILL.md +40 -68
  15. package/skills/threejs-animation/SKILL.md +86 -0
  16. package/skills/threejs-animation/examples/workflow-mixer-action.md +20 -0
  17. package/skills/threejs-animation/references/official-sections.md +19 -0
  18. package/skills/threejs-audio/SKILL.md +112 -0
  19. package/skills/threejs-audio/examples/workflow-positional-audio.md +15 -0
  20. package/skills/threejs-audio/references/official-sections.md +16 -0
  21. package/skills/threejs-camera/SKILL.md +96 -0
  22. package/skills/threejs-camera/examples/workflow-perspective-resize.md +13 -0
  23. package/skills/threejs-controls/SKILL.md +101 -0
  24. package/skills/threejs-controls/examples/workflow-orbit-damping.md +15 -0
  25. package/skills/threejs-dev-setup/SKILL.md +102 -0
  26. package/skills/threejs-dev-setup/examples/workflow-scaffold.md +24 -0
  27. package/skills/threejs-geometries/SKILL.md +108 -0
  28. package/skills/threejs-geometries/examples/workflow-extrude-shape.md +13 -0
  29. package/skills/threejs-helpers/SKILL.md +103 -0
  30. package/skills/threejs-helpers/examples/workflow-light-camera-helpers.md +13 -0
  31. package/skills/threejs-lights/SKILL.md +103 -0
  32. package/skills/threejs-lights/examples/workflow-directional-shadow.md +17 -0
  33. package/skills/threejs-loaders/SKILL.md +89 -0
  34. package/skills/threejs-loaders/examples/workflow-gltf-draco.md +22 -0
  35. package/skills/threejs-loaders/references/official-sections.md +27 -0
  36. package/skills/threejs-materials/SKILL.md +102 -0
  37. package/skills/threejs-materials/examples/workflow-pbr-transparent.md +15 -0
  38. package/skills/threejs-math/SKILL.md +102 -0
  39. package/skills/threejs-math/examples/workflow-ray-aabb.md +11 -0
  40. package/skills/threejs-node-tsl/SKILL.md +83 -0
  41. package/skills/threejs-node-tsl/examples/workflow-tsl-entry.md +13 -0
  42. package/skills/threejs-node-tsl/references/official-links.md +8 -0
  43. package/skills/threejs-node-tsl/references/tsl-vs-classic.md +23 -0
  44. package/skills/threejs-objects/SKILL.md +111 -0
  45. package/skills/threejs-objects/examples/workflow-raycaster-pick.md +17 -0
  46. package/skills/threejs-postprocessing/SKILL.md +116 -0
  47. package/skills/threejs-postprocessing/examples/workflow-composer-bloom.md +15 -0
  48. package/skills/threejs-renderers/SKILL.md +91 -0
  49. package/skills/threejs-renderers/examples/workflow-renderer-resize.md +21 -0
  50. package/skills/threejs-renderers/references/official-sections.md +14 -0
  51. package/skills/threejs-scenes/SKILL.md +90 -0
  52. package/skills/threejs-scenes/examples/workflow-fog-background.md +13 -0
  53. package/skills/threejs-textures/SKILL.md +83 -0
  54. package/skills/threejs-textures/examples/workflow-pmrem-env.md +19 -0
  55. package/skills/threejs-webxr/SKILL.md +104 -0
  56. package/skills/threejs-webxr/examples/workflow-xr-button.md +15 -0
  57. package/workflows/_uncategorized/generate-gui-assets.md +111 -0
  58. package/workflows/_uncategorized/goal.md +86 -0
  59. package/workflows/_uncategorized/hatch-pet.md +116 -0
  60. package/workflows/_uncategorized/office-hours.md +38 -0
  61. package/workflows/_uncategorized/plan-ceo-review.md +34 -0
  62. package/workflows/_uncategorized/plan-design-review.md +38 -0
  63. package/workflows/_uncategorized/plan-eng-review.md +43 -0
  64. package/workflows/quality/plan-ceo-review.md +34 -0
  65. package/workflows/quality/plan-design-review.md +38 -0
  66. package/workflows/quality/plan-eng-review.md +43 -0
  67. package/workflows/roles/office-hours.md +38 -0
  68. package/workflows/ui/generate-gui-assets.md +111 -0
  69. package/workflows/ui/hatch-pet.md +116 -0
@@ -0,0 +1,102 @@
1
+ ---
2
+ name: threejs-dev-setup
3
+ description: "Bootstrap and toolchain guidance for three.js applications using npm, Vite/Webpack/Rollup, bare ESM import maps, and TypeScript. Covers canonical import paths for three core versus three/addons/ (examples/jsm re-exports), version alignment with threejs.org docs, and fixing module not found for loaders and controls. Use when scaffolding a new 3D project, migrating bundler, or debugging resolution of addons; do not use for rendering API details (see threejs-renderers) or asset loading logic (see threejs-loaders)."
4
+ ---
5
+
6
+ ## When to use this skill
7
+
8
+ **ALWAYS use this skill when the user mentions:**
9
+
10
+ - Creating or configuring a new three.js project, Vite/Webpack/Rollup entry, or browser `importmap`
11
+ - Installing the `three` package, aligning version with documentation, or TypeScript setup (`@types/three` where applicable)
12
+ - Import errors for `three/addons/...`, `examples/jsm`, ESM vs CJS interop, or bare specifier resolution
13
+
14
+ **IMPORTANT: this skill vs runtime topics**
15
+
16
+ - **threejs-dev-setup** = install paths, bundler, module graph, and where to import addons from.
17
+ - **threejs-renderers** = `WebGLRenderer` / `WebGPURenderer`, canvas, pixel ratio, render loop—after the project loads.
18
+ - **threejs-loaders** = `GLTFLoader`, `DRACOLoader`, progress callbacks—after imports resolve.
19
+
20
+ **Trigger phrases include:**
21
+
22
+ - "vite three.js", "webpack three", "import map", "three/addons", "cannot find module", "jsm"
23
+ - "新建项目", "安装 three", "找不到模块", "ESM", "TypeScript three"
24
+
25
+ ## How to use this skill
26
+
27
+ 1. **Confirm delivery model**: SPA bundler (Vite/Webpack), Node tooling, or static HTML with `importmap`—each affects how `three/addons/` resolves.
28
+ 2. **Pin `three` version** to a release compatible with the docs the user cites; note that addon paths follow the published package layout.
29
+ 3. **Show canonical imports**: core from `three`; controls/loaders/effects from `three/addons/...` (mapped to `examples/jsm` in source tree). See [examples/workflow-scaffold.md](examples/workflow-scaffold.md).
30
+ 4. **Minimal loop**: create renderer + scene + camera + one mesh to verify toolchain works.
31
+ 5. **TypeScript**: enable `moduleResolution` appropriate for bundler; reference types from `three` package typings; avoid duplicating global script tag patterns unless user targets no-bundler HTML.
32
+ 6. **On failure**: distinguish missing dependency vs wrong path vs SSR context (no `window`/`document`).
33
+ 7. **Deepening**: link user to [three.js manual](https://threejs.org/manual/) first chapter after scaffold works.
34
+
35
+ ### Example: Vite + three.js minimal verification
36
+
37
+ ```bash
38
+ npm create vite@latest my-3d-app -- --template vanilla && cd my-3d-app
39
+ npm install three
40
+ ```
41
+
42
+ ```javascript
43
+ // main.js — canonical imports and minimal render loop
44
+ import * as THREE from 'three';
45
+ import { OrbitControls } from 'three/addons/controls/OrbitControls.js';
46
+
47
+ const scene = new THREE.Scene();
48
+ const camera = new THREE.PerspectiveCamera(75, innerWidth / innerHeight, 0.1, 100);
49
+ camera.position.z = 3;
50
+
51
+ const renderer = new THREE.WebGLRenderer();
52
+ renderer.setSize(innerWidth, innerHeight);
53
+ document.body.appendChild(renderer.domElement);
54
+
55
+ const mesh = new THREE.Mesh(
56
+ new THREE.BoxGeometry(),
57
+ new THREE.MeshStandardMaterial({ color: 0x00ff00 })
58
+ );
59
+ scene.add(mesh, new THREE.AmbientLight(0xffffff, 0.5));
60
+
61
+ renderer.setAnimationLoop(() => renderer.render(scene, camera));
62
+ ```
63
+
64
+ ## Doc map (official)
65
+
66
+ | Docs section | Representative links |
67
+ |--------------|----------------------|
68
+ | Manual (getting started) | https://threejs.org/manual/ |
69
+ | Docs index | https://threejs.org/docs/ |
70
+ | Package / install context | https://www.npmjs.com/package/three |
71
+
72
+ ## Scope
73
+
74
+ - **In scope:** npm/install, bundlers, import maps, TypeScript basics for three, addon import paths, minimal verification snippet.
75
+ - **Out of scope:** WebGL theory, full render target or post stack (threejs-renderers, threejs-postprocessing), physics, deployment beyond "build runs".
76
+
77
+ ## Common pitfalls and best practices
78
+
79
+ - Mixing multiple `three` copies in one page breaks singletons; dedupe with bundler aliases.
80
+ - Importing addons from deep `node_modules/.../examples/jsm` paths is fragile; prefer package exports `three/addons/...` when available.
81
+ - Always match **r152+** style color management docs when giving snippet defaults (output color space)—point to threejs-renderers/textures for details.
82
+ - SSR frameworks need dynamic import or client-only components for WebGL context.
83
+
84
+ ## Documentation and version
85
+
86
+ Toolchain and import paths follow the **three** npm package version the user installs. The [Manual](https://threejs.org/manual/) and [docs](https://threejs.org/docs/) are updated with the library; addon paths (`three/addons/...`) must match the package layout for that release—when in doubt, cite the version number and the exact import line from the current docs.
87
+
88
+ ## Agent response checklist
89
+
90
+ When answering under this skill, prefer responses that:
91
+
92
+ 1. Name the bundler or runtime (Vite, Webpack, bare ESM, `importmap`) and the intended `three` version.
93
+ 2. Link https://threejs.org/manual/ and/or https://threejs.org/docs/ for authoritative setup context.
94
+ 3. Distinguish **threejs-dev-setup** (resolution) from **threejs-renderers** (runtime API) failures.
95
+ 4. Never assume global script tags unless the user explicitly uses CDN/no-bundler HTML.
96
+ 5. Recommend deduplicating `three` in `package.json` / lockfile when duplicate singleton issues appear.
97
+
98
+ ## Keywords
99
+
100
+ **English:** three.js, vite, webpack, rollup, import map, typescript, npm, three/addons, examples jsm, module resolution, scaffold
101
+
102
+ **中文:** three.js 安装、构建、importmap、模块解析、three/addons、脚手架、Vite、Webpack
@@ -0,0 +1,24 @@
1
+ # Workflow: minimal scaffold (toolchain check)
2
+
3
+ Use after `three` is installed and the bundler resolves `three` and `three/addons/...`.
4
+
5
+ ## Steps
6
+
7
+ 1. Import core and one addon (e.g. `OrbitControls`) using your bundler’s supported syntax.
8
+
9
+ ```javascript
10
+ import * as THREE from 'three';
11
+ import { OrbitControls } from 'three/addons/controls/OrbitControls.js';
12
+ ```
13
+
14
+ 2. Create `WebGLRenderer`, append `domElement`, size to canvas container.
15
+
16
+ 3. Create `Scene`, `PerspectiveCamera`, add a `Mesh` with `BoxGeometry` + `MeshStandardMaterial`.
17
+
18
+ 4. Instantiate `OrbitControls(camera, renderer.domElement)` and drive `requestAnimationFrame` calling `controls.update()` then `renderer.render(scene, camera)`.
19
+
20
+ 5. If this runs without module errors, **threejs-dev-setup** is satisfied; tune color space and lighting via **threejs-renderers** and **threejs-lights**.
21
+
22
+ ## Official examples (reference only)
23
+
24
+ Browse live examples under the three.js repository `examples/`—do not paste entire files; pick patterns matching your bundler.
@@ -0,0 +1,108 @@
1
+ ---
2
+ name: threejs-geometries
3
+ description: "three.js geometry authoring: BufferGeometry, typed BufferAttribute and interleaved layouts, InstancedBufferGeometry, primitive Geometries (box/sphere/torus/etc.), ExtrudeGeometry and Shape/Path/Curve from Extras, WireframeGeometry, and addon geometries such as TextGeometry, DecalGeometry, RoundedBoxGeometry. Use when building custom buffer geometries, extruding shapes, or using primitive geometry constructors; for animation morph targets see threejs-animation; for merging buffers see BufferGeometryUtils addon."
4
+ ---
5
+
6
+ ## When to use this skill
7
+
8
+ **ALWAYS use this skill when the user mentions:**
9
+
10
+ - Building or modifying `BufferGeometry`, attributes, index buffers, draw ranges
11
+ - Instancing via `InstancedBufferAttribute` / `InstancedMesh` geometry side (**threejs-objects** for mesh wrapper)
12
+ - Extruding `Shape` along paths, `TubeGeometry`, `LatheGeometry`, `ExtrudeGeometry`
13
+ - Text or decal addon geometries
14
+
15
+ **IMPORTANT: geometries vs math**
16
+
17
+ - **threejs-geometries** = GPU-ready triangle data.
18
+ - **threejs-math** = `Box3`, `Sphere`, `Ray` tests without mesh topology.
19
+
20
+ **Trigger phrases include:**
21
+
22
+ - "BufferGeometry", "BufferAttribute", "ExtrudeGeometry", "Shape", "Curve"
23
+ - "几何体", "缓冲几何", "挤出", "文字几何"
24
+
25
+ ## How to use this skill
26
+
27
+ 1. **Choose geometry type** — prefer built-in primitives (`BoxGeometry`, `SphereGeometry`, etc.) when they fit before custom buffers.
28
+ 2. **Custom BufferGeometry** — create geometry, set `position`, `normal`, `uv`, optional `index`; compute bounding volumes for frustum culling.
29
+ 3. **Validate normals** — verify normals exist before adding to scene; missing normals break lighting silently.
30
+ 4. **Instancing** — align instanced attribute divisor/count with `InstancedMesh` patterns in **threejs-objects**.
31
+ 5. **Extrusion** — build `Shape`/`Path`, extrude or lathe per docs; consult Extras **Curve** family for path sampling.
32
+ 6. **Addon geometries** — for NURBS, text, decals, follow Addons pages; cite docs instead of copying full APIs.
33
+ 7. **Dispose** — call `geometry.dispose()` when replacing meshes to avoid GPU memory leaks.
34
+
35
+ ### Example: Custom BufferGeometry with validation
36
+
37
+ ```javascript
38
+ import * as THREE from 'three';
39
+
40
+ // Create a simple triangle with custom BufferGeometry
41
+ const geometry = new THREE.BufferGeometry();
42
+ const vertices = new Float32Array([
43
+ -1, -1, 0, 1, -1, 0, 0, 1, 0
44
+ ]);
45
+ geometry.setAttribute('position', new THREE.BufferAttribute(vertices, 3));
46
+ geometry.computeVertexNormals(); // Always compute normals for correct lighting
47
+
48
+ // Validate: ensure bounding sphere exists for frustum culling
49
+ geometry.computeBoundingSphere();
50
+ if (!geometry.boundingSphere) {
51
+ console.warn('Bounding sphere computation failed — check vertex data');
52
+ }
53
+
54
+ const material = new THREE.MeshStandardMaterial({ color: 0x00ff00 });
55
+ const mesh = new THREE.Mesh(geometry, material);
56
+ scene.add(mesh);
57
+
58
+ // Cleanup when done
59
+ // geometry.dispose(); material.dispose();
60
+ ```
61
+
62
+ See [examples/workflow-extrude-shape.md](examples/workflow-extrude-shape.md).
63
+
64
+ ## Doc map (official)
65
+
66
+ | Docs section | Representative links |
67
+ |--------------|----------------------|
68
+ | Core | https://threejs.org/docs/BufferGeometry.html |
69
+ | Geometries | https://threejs.org/docs/BoxGeometry.html |
70
+ | Extrude | https://threejs.org/docs/ExtrudeGeometry.html |
71
+ | Shape | https://threejs.org/docs/Shape.html |
72
+
73
+ ## Scope
74
+
75
+ - **In scope:** Core geometries, buffer core, curve/shape/extrusion workflows, selected addon geometries.
76
+ - **Out of scope:** Physics collision mesh baking; full CAD import pipelines.
77
+
78
+ ## Common pitfalls and best practices
79
+
80
+ - Missing normals break lighting; compute or import consistently.
81
+ - Wrong winding order flips faces—check side/culling.
82
+ - Huge attribute counts need LOD or simplification (modifiers in addons—mention only if user asks).
83
+
84
+ ## Documentation and version
85
+
86
+ Primitives and `BufferGeometry` live under [Geometries](https://threejs.org/docs/#Geometries) and [BufferGeometry](https://threejs.org/docs/BufferGeometry.html) in [three.js docs](https://threejs.org/docs/). Curve, `Shape`, and extrusion APIs appear under **Extras** and **Geometries**—Addons **Curves** / **Geometries** document NURBS and text meshes; link those instead of copying long signatures.
87
+
88
+ ## Agent response checklist
89
+
90
+ When answering under this skill, prefer responses that:
91
+
92
+ 1. Link `BufferGeometry`, a primitive, or `ExtrudeGeometry` / `Shape` as appropriate.
93
+ 2. Point **instancing** usage to **threejs-objects** for `InstancedMesh` patterns.
94
+ 3. Point morph targets and tracks to **threejs-animation** when deformation is time-driven.
95
+ 4. Reference `BufferGeometryUtils` (Addons **Utils**) only by name + docs link when merging/splitting.
96
+ 5. Emphasize `dispose()` when replacing large custom buffers.
97
+
98
+ ## References
99
+
100
+ - https://threejs.org/docs/#Geometries
101
+ - https://threejs.org/docs/BufferGeometry.html
102
+ - https://threejs.org/docs/ExtrudeGeometry.html
103
+
104
+ ## Keywords
105
+
106
+ **English:** buffergeometry, extrude, shape, path, curve, primitives, instancing, three.js
107
+
108
+ **中文:** 几何体、BufferGeometry、挤出、Shape、曲线、实例化、three.js
@@ -0,0 +1,13 @@
1
+ # Workflow: extrude a 2D shape
2
+
3
+ ## Steps
4
+
5
+ 1. Create `THREE.Shape()` and draw with `moveTo` / `lineTo` / `quadraticCurveTo` / `bezierCurveTo` or holes via `shape.holes.push(innerShape)`.
6
+
7
+ 2. Build `ExtrudeGeometry(shape, { depth, bevelEnabled, ... })` per [ExtrudeGeometry](https://threejs.org/docs/ExtrudeGeometry.html).
8
+
9
+ 3. Center/pivot by wrapping in `Object3D` or translating geometry once.
10
+
11
+ 4. Assign `MeshStandardMaterial` (**threejs-materials**) and add lights (**threejs-lights**).
12
+
13
+ For path-based tubes use `TubeGeometry` + `Curve` subclasses instead.
@@ -0,0 +1,103 @@
1
+ ---
2
+ name: threejs-helpers
3
+ description: "Debug and visualization helpers in three.js Core Helpers (AxesHelper, GridHelper, CameraHelper, light helpers, SkeletonHelper, bounding box helpers, PlaneHelper, PolarGridHelper, ArrowHelper) and Addons Helpers (VertexNormalsHelper, VertexTangentsHelper, RectAreaLightHelper, LightProbeHelper, ViewHelper, OctreeHelper, TextureHelper, PositionalAudioHelper, AnimationPathHelper, RapierHelper). Use only for development and editor overlays—not for shipping art; for gizmo-style manipulation use threejs-controls."
4
+ ---
5
+
6
+ ## When to use this skill
7
+
8
+ **ALWAYS use this skill when the user mentions:**
9
+
10
+ - Visualizing axes, grids, camera frusta, shadow cameras, light directions
11
+ - Showing skeleton bones, bounding boxes, normals/tangents for mesh inspection
12
+ - Light probe or rect area visualization via helper classes
13
+
14
+ **IMPORTANT: helpers vs production meshes**
15
+
16
+ - Helpers are **debug** objects; do not use as final scene geometry.
17
+
18
+ **Trigger phrases include:**
19
+
20
+ - "AxesHelper", "GridHelper", "CameraHelper", "SkeletonHelper", "VertexNormalsHelper"
21
+ - "辅助线", "法线显示", "包围盒调试"
22
+
23
+ ## How to use this skill
24
+
25
+ 1. **Attach** helper to the object it describes (e.g., `CameraHelper(light.shadow.camera)`).
26
+ 2. **Update** when targets move — some helpers need per-frame refresh.
27
+ 3. **Gate behind debug flags** — remove helpers in production builds to save draw calls.
28
+ 4. **Performance** — helpers add draw calls; disable when profiling performance issues.
29
+ 5. **Addons** — import from `three/addons/helpers/...` paths per **threejs-dev-setup**.
30
+
31
+ ### Example: Debug flag pattern for conditional helpers
32
+
33
+ ```javascript
34
+ import * as THREE from 'three';
35
+
36
+ const DEBUG = import.meta.env.DEV; // Vite-style; adapt for your bundler
37
+ const debugGroup = new THREE.Group();
38
+ debugGroup.visible = DEBUG;
39
+ scene.add(debugGroup);
40
+
41
+ // Add helpers only in development
42
+ if (DEBUG) {
43
+ debugGroup.add(new THREE.AxesHelper(5));
44
+ debugGroup.add(new THREE.GridHelper(10, 10));
45
+
46
+ // Shadow camera helper for directional light
47
+ const shadowHelper = new THREE.CameraHelper(directionalLight.shadow.camera);
48
+ debugGroup.add(shadowHelper);
49
+ }
50
+
51
+ // Toggle helpers at runtime via console or GUI
52
+ // debugGroup.visible = !debugGroup.visible;
53
+ ```
54
+
55
+ See [examples/workflow-light-camera-helpers.md](examples/workflow-light-camera-helpers.md).
56
+
57
+ ## Doc map (official)
58
+
59
+ | Docs section | Representative links |
60
+ |--------------|----------------------|
61
+ | Helpers | https://threejs.org/docs/AxesHelper.html |
62
+ | Helpers | https://threejs.org/docs/GridHelper.html |
63
+ | Helpers | https://threejs.org/docs/CameraHelper.html |
64
+ | Helpers | https://threejs.org/docs/SkeletonHelper.html |
65
+
66
+ ## Scope
67
+
68
+ - **In scope:** Core + Addons helpers for visualization.
69
+ - **Out of scope:** Production meshes or shipping art (**threejs-geometries**, **threejs-lights**); orbit/transform gizmo behavior (**threejs-controls**); editor UX parity with DCC tools; physics debug beyond helper stubs.
70
+
71
+ ## Common pitfalls and best practices
72
+
73
+ - Too many helpers obscures view—toggle per subsystem.
74
+ - Wrong attachment parent misaligns helper transforms.
75
+ - Helpers inherit scene graph transforms—parent under a debug group to batch hide/show.
76
+ - Some helpers duplicate geometry cost; strip in production or use `#ifdef DEBUG` style flags.
77
+ - `CameraHelper` for shadow cameras must reference `light.shadow.camera`, not the main view camera.
78
+
79
+ ## Documentation and version
80
+
81
+ Helpers are listed under [Helpers](https://threejs.org/docs/#Helpers) (core) and **Addons → Helpers** in [three.js docs](https://threejs.org/docs/). They are for **debug** only; production meshes and lighting should use real geometry/lights (**threejs-geometries**, **threejs-lights**).
82
+
83
+ ## Agent response checklist
84
+
85
+ When answering under this skill, prefer responses that:
86
+
87
+ 1. Link the helper class (`AxesHelper`, `CameraHelper`, …) being used.
88
+ 2. State that helpers are not shipping art—strip or gate behind debug flags.
89
+ 3. Pair shadow/light helpers with **threejs-lights** tuning workflows.
90
+ 4. Mention performance cost when many helpers are enabled.
91
+ 5. Import paths follow **threejs-dev-setup** addon conventions.
92
+
93
+ ## References
94
+
95
+ - Manual (debug workflow context): https://threejs.org/manual/
96
+ - Docs index (Helpers group): https://threejs.org/docs/#Helpers
97
+ - Examples: https://threejs.org/docs/DirectionalLightHelper.html
98
+
99
+ ## Keywords
100
+
101
+ **English:** helper, debug, axes, grid, skeleton, normals, light helper, three.js
102
+
103
+ **中文:** 辅助、调试、坐标轴、网格、骨架、法线、Helper、three.js
@@ -0,0 +1,13 @@
1
+ # Workflow: shadow + camera debug
2
+
3
+ ## Steps
4
+
5
+ 1. `const ch = new THREE.CameraHelper(light.shadow.camera); scene.add(ch);`
6
+
7
+ 2. `const lh = new THREE.DirectionalLightHelper(light, size); scene.add(lh);`
8
+
9
+ 3. Remove helpers once shadow frustum is tuned (**threejs-lights**).
10
+
11
+ 4. Use `SkeletonHelper(boneRoot)` for skinning issues (**threejs-animation** / **threejs-objects**).
12
+
13
+ Official pages: CameraHelper, DirectionalLightHelper.
@@ -0,0 +1,103 @@
1
+ ---
2
+ name: threejs-lights
3
+ description: "three.js lighting: AmbientLight, HemisphereLight, DirectionalLight, PointLight, SpotLight, RectAreaLight, LightProbe, IESSpotLight, ProjectorLight, shadow subtypes, and addon helpers such as RectAreaLightUniformsLib, RectAreaLightTexturesLib, LightProbeGenerator, TiledLighting. Use when configuring direct/indirect light, shadows, probes, or area lights; for IES file loading use threejs-loaders; for node-based light graphs use threejs-node-tsl; for debug helpers use threejs-helpers."
4
+ ---
5
+
6
+ ## When to use this skill
7
+
8
+ **ALWAYS use this skill when the user mentions:**
9
+
10
+ - Enabling `castShadow` / `receiveShadow`, shadow map size, bias, normal bias, camera frusta for shadow casters
11
+ - Physical lights: intensity, distance/decay, angle/penumbra for spots, rect area setup
12
+ - `LightProbe` for irradiance-style probes; `IESSpotLight` with IES data
13
+
14
+ **IMPORTANT: lights vs loaders vs node-tsl**
15
+
16
+ | Topic | Skill |
17
+ |-------|--------|
18
+ | Light classes and shadows | **threejs-lights** |
19
+ | Loading IES/HDR files | **threejs-loaders** |
20
+ | LightNode / TSL lighting | **threejs-node-tsl** |
21
+
22
+ **Trigger phrases include:**
23
+
24
+ - "DirectionalLight", "SpotLight", "RectAreaLight", "castShadow", "shadow map"
25
+ - "阴影", "点光源", "面光源", "LightProbe"
26
+
27
+ ## How to use this skill
28
+
29
+ 1. **Base recipe**: ambient/hemisphere fill + directional sun + local points/spots.
30
+ 2. **Shadows**: enable on renderer, mark casters/receivers, tune map size vs performance, adjust bias to remove acne/peter-panning.
31
+ 3. **RectArea**: initialize addon libs per docs page before using light type.
32
+ 4. **Probes**: place probes; generate data via addon generator when applicable; relate to materials env reflections (**threejs-materials**, **threejs-textures**).
33
+ 5. **IES**: load profile via loader skill, attach to `IESSpotLight` per docs.
34
+ 6. **Performance**: limit shadow-casting lights; use layers (**threejs-objects**) to exclude objects.
35
+
36
+ ### Example: Shadow setup with validation
37
+
38
+ ```javascript
39
+ // 1. Enable shadows on renderer
40
+ renderer.shadowMap.enabled = true;
41
+
42
+ // 2. Configure light as shadow caster
43
+ const light = new THREE.DirectionalLight(0xffffff, 1);
44
+ light.castShadow = true;
45
+ light.shadow.mapSize.set(2048, 2048);
46
+ light.shadow.bias = -0.0001; // Adjust to remove shadow acne
47
+
48
+ // 3. Validate: verify shadow appears before tuning bias
49
+ // Set castShadow on meshes, receiveShadow on ground
50
+ mesh.castShadow = true;
51
+ ground.receiveShadow = true;
52
+ ```
53
+
54
+ See [examples/workflow-directional-shadow.md](examples/workflow-directional-shadow.md).
55
+
56
+ ## Doc map (official)
57
+
58
+ | Docs section | Representative links |
59
+ |--------------|----------------------|
60
+ | Lights | https://threejs.org/docs/Light.html |
61
+ | Directional | https://threejs.org/docs/DirectionalLight.html |
62
+ | Spot | https://threejs.org/docs/SpotLight.html |
63
+ | Rect area | https://threejs.org/docs/RectAreaLight.html |
64
+
65
+ ## Scope
66
+
67
+ - **In scope:** Core lights, shadow maps, probes, listed addons for rect area and probe generation.
68
+ - **Out of scope:** CSM deep theory (see addon Csm docs if user names it); baked lightmaps in DCC.
69
+
70
+ ## Common pitfalls and best practices
71
+
72
+ - Shadow map resolution must match scene scale—tiny shadows on huge worlds look blocky.
73
+ - Point light shadows are six-face expensive—use wisely.
74
+ - `RectAreaLight` without required libs yields black or wrong shading—verify init.
75
+ - Mismatched physical units (intensity vs exposure) with **threejs-renderers** tone mapping causes blown or dim scenes.
76
+ - Shadow **bias** / **normalBias** trade-offs: acne vs peter-paning—tune with helper frusta (**threejs-helpers**).
77
+
78
+ ## Documentation and version
79
+
80
+ Light and shadow classes live under [Lights](https://threejs.org/docs/#Lights) in [three.js docs](https://threejs.org/docs/). `RectAreaLight` and probe addons depend on extra init from **Addons → Lights**; IES profiles require **threejs-loaders** for file fetch before the light API is usable.
81
+
82
+ ## Agent response checklist
83
+
84
+ When answering under this skill, prefer responses that:
85
+
86
+ 1. Link the concrete light type (`DirectionalLight`, `SpotLight`, …) and shadow pages when shadows are on.
87
+ 2. Separate **IES loading** to **threejs-loaders** and **LightNode** topics to **threejs-node-tsl**.
88
+ 3. Give practical shadow map size / bias guidance with **threejs-helpers** for frustum visualization.
89
+ 4. Mention `renderer.shadowMap.enabled` alongside light `castShadow` (see **threejs-renderers**).
90
+ 5. Note performance cost of multiple shadow-casting lights.
91
+
92
+ ## References
93
+
94
+ - https://threejs.org/docs/#Lights
95
+ - https://threejs.org/docs/DirectionalLight.html
96
+ - https://threejs.org/docs/SpotLight.html
97
+ - https://threejs.org/docs/LightShadow.html
98
+
99
+ ## Keywords
100
+
101
+ **English:** lights, shadows, directional, spotlight, rectarea, lightprobe, three.js
102
+
103
+ **中文:** 灯光、阴影、平行光、聚光灯、面光源、LightProbe、three.js
@@ -0,0 +1,17 @@
1
+ # Workflow: directional sun with shadows
2
+
3
+ ## Steps
4
+
5
+ 1. `renderer.shadowMap.enabled = true;` (**threejs-renderers**).
6
+
7
+ 2. Create `DirectionalLight`, `light.castShadow = true`, position and `target`.
8
+
9
+ 3. Tune `light.shadow.mapSize`, `camera` frustum on `light.shadow.camera` for your scene bounds.
10
+
11
+ 4. Mark meshes: `mesh.castShadow` / `receiveShadow` as needed.
12
+
13
+ 5. Adjust `bias` / `normalBias` if acne or peter-panning appears.
14
+
15
+ 6. Use `CameraHelper(light.shadow.camera)` temporarily (**threejs-helpers**).
16
+
17
+ Official reference: https://threejs.org/docs/DirectionalLight.html
@@ -0,0 +1,89 @@
1
+ ---
2
+ name: threejs-loaders
3
+ description: "three.js asset I/O using LoadingManager, Cache, FileLoader, image and texture loaders, GLTFLoader with DRACOLoader and KTX2Loader, and common format loaders under Addons; symmetric exporters such as GLTFExporter and texture/buffer exporters. Use when loading or exporting models, HDR, LUT, fonts, or compressed textures; for runtime Texture object parameters after load use threejs-textures; for scene graph placement use threejs-objects."
4
+ ---
5
+
6
+ ## When to use this skill
7
+
8
+ **ALWAYS use this skill when the user mentions:**
9
+
10
+ - `GLTFLoader`, `DRACOLoader`, `KTX2Loader`, `FBXLoader`, `OBJLoader`, progress and error handling
11
+ - `LoadingManager` for global progress, `Cache` for HTTP caching control
12
+ - Export: `GLTFExporter`, `OBJExporter`, HDR/KTX2 export pipelines
13
+ - IES, UltraHDR, or domain-specific loaders listed under Addons Loaders in docs
14
+
15
+ **IMPORTANT: loaders vs textures**
16
+
17
+ - **threejs-loaders** = fetch/decode/parse files into three objects.
18
+ - **threejs-textures** = `Texture`/`DataTexture` parameters, sampling, PMREM after you already have image buffers.
19
+
20
+ **IMPORTANT: loaders vs dev-setup**
21
+
22
+ - Import path issues belong to **threejs-dev-setup**; this skill assumes imports resolve.
23
+
24
+ **Trigger phrases include:**
25
+
26
+ - "GLTFLoader", "DRACO", "KTX2", "LoadingManager", "export gltf"
27
+ - "加载模型", "导出", "进度条"
28
+
29
+ ## How to use this skill
30
+
31
+ 1. **Pick loader** by format; prefer glTF for PBR interchange when possible.
32
+ 2. **Wire LoadingManager** for multi-asset batches; surface `onStart`/`onLoad`/`onProgress`/`onError`.
33
+ 3. **glTF + Draco**: instantiate `DRACOLoader`, set decoder path, attach to `GLTFLoader.setDRACOLoader` per current docs.
34
+ 4. **glTF + KTX2**: configure `KTX2Loader` with transcoder path and connect to `GLTFLoader` when using Basis textures.
35
+ 5. **Export**: use `GLTFExporter` with options matching round-trip needs; note large scenes and binary vs JSON.
36
+ 6. **Security**: only load user URLs with validation; mention CORS for cross-origin assets.
37
+ 7. **After load**: traverse scene for materials/meshes—hand off material tuning to **threejs-materials**.
38
+
39
+ See [examples/workflow-gltf-draco.md](examples/workflow-gltf-draco.md).
40
+
41
+ ## Doc map (official)
42
+
43
+ | Docs section | Representative links |
44
+ |--------------|----------------------|
45
+ | Core Loaders | https://threejs.org/docs/LoadingManager.html |
46
+ | Core Loaders | https://threejs.org/docs/GLTFLoader.html |
47
+ | Addons Exporters | https://threejs.org/docs/GLTFExporter.html |
48
+ | Addons Loaders | https://threejs.org/docs/DRACOLoader.html |
49
+
50
+ Extended list: [references/official-sections.md](references/official-sections.md).
51
+
52
+ ## Scope
53
+
54
+ - **In scope:** Loader and exporter classes, manager/cache, format choice, plugin wiring for Draco/KTX2, export basics.
55
+ - **Out of scope:** Server-side transcoding pipelines; physics or game engine asset tooling outside three docs.
56
+
57
+ ## Common pitfalls and best practices
58
+
59
+ - Draco/KTX2 **decoder paths** must match deployed files; broken paths fail silently until onError surfaces.
60
+ - Duplicate texture instances after merge—consider `renderer.initTexture` implications when cloning materials.
61
+ - Exporters may not round-trip custom shaders; document limitations.
62
+ - Always dispose geometries/materials when replacing loaded scenes to avoid GPU leaks.
63
+
64
+ ## Documentation and version
65
+
66
+ Loader and exporter APIs (especially `GLTFLoader` + `DRACOLoader` / `KTX2Loader` wiring) change between three.js versions. Follow [Loaders](https://threejs.org/docs/#Loaders) and **Addons → Loaders / Exporters** in [three.js docs](https://threejs.org/docs/); decoder WASM paths are deployment-specific, not library-version alone.
67
+
68
+ ## Agent response checklist
69
+
70
+ When answering under this skill, prefer responses that:
71
+
72
+ 1. Link `LoadingManager`, `GLTFLoader`, or the relevant format page on https://threejs.org/docs/.
73
+ 2. Separate **loading** (this skill) from **texture/material tuning** after decode (**threejs-textures**, **threejs-materials**).
74
+ 3. Document Draco/KTX2 **decoder path** and CORS when assets fail silently.
75
+ 4. Mention exporter limitations (custom shaders, extensions) honestly.
76
+ 5. Encourage `dispose()` when replacing entire loaded scenes.
77
+
78
+ ## References
79
+
80
+ - https://threejs.org/docs/#Loaders
81
+ - https://threejs.org/docs/LoadingManager.html
82
+ - https://threejs.org/docs/GLTFLoader.html
83
+ - https://threejs.org/docs/GLTFExporter.html
84
+
85
+ ## Keywords
86
+
87
+ **English:** gltf, gltfloader, dracoloader, ktx2, loadingmanager, cache, exporter, asset pipeline, three.js
88
+
89
+ **中文:** GLTFLoader、加载器、Draco、KTX2、导出、资源、进度、three.js
@@ -0,0 +1,22 @@
1
+ # Workflow: GLTFLoader with DRACOLoader
2
+
3
+ ## Preconditions
4
+
5
+ - **threejs-dev-setup** resolves `three/addons/loaders/GLTFLoader.js` and `DRACOLoader.js`.
6
+ - Draco decoder WASM/js files are hosted at a known URL prefix (often copied to `public/draco/`).
7
+
8
+ ## Steps
9
+
10
+ 1. Create `DRACOLoader()` and `setDecoderPath('/draco/')` (adjust to deployment).
11
+
12
+ 2. Create `GLTFLoader()` and `loader.setDRACOLoader(dracoLoader)`.
13
+
14
+ 3. Call `loader.load('model.glb', onLoad, onProgress, onError)`.
15
+
16
+ 4. In `onLoad`, use `gltf.scene` as root **Object3D**; animations → **threejs-animation**; materials may need color pipeline checks → **threejs-renderers** / **threejs-textures**.
17
+
18
+ 5. Dispose previous scene graphs when swapping models.
19
+
20
+ ## Note
21
+
22
+ Exact API names follow the current [GLTFLoader](https://threejs.org/docs/GLTFLoader.html) page—verify when upgrading three.js major versions.
@@ -0,0 +1,27 @@
1
+ # Loaders and exporters (frequently used)
2
+
3
+ **Core**
4
+
5
+ - https://threejs.org/docs/Loader.html
6
+ - https://threejs.org/docs/LoadingManager.html
7
+ - https://threejs.org/docs/Cache.html
8
+ - https://threejs.org/docs/FileLoader.html
9
+ - https://threejs.org/docs/TextureLoader.html
10
+ - https://threejs.org/docs/GLTFLoader.html
11
+
12
+ **Addons (examples)**
13
+
14
+ - https://threejs.org/docs/DRACOLoader.html
15
+ - https://threejs.org/docs/KTX2Loader.html
16
+ - https://threejs.org/docs/FBXLoader.html
17
+ - https://threejs.org/docs/OBJLoader.html
18
+ - https://threejs.org/docs/HDRLoader.html
19
+ - https://threejs.org/docs/RGBELoader.html (if listed under HDRLoader migration in your version—check index)
20
+
21
+ **Exporters**
22
+
23
+ - https://threejs.org/docs/GLTFExporter.html
24
+ - https://threejs.org/docs/OBJExporter.html
25
+ - https://threejs.org/docs/EXRExporter.html
26
+
27
+ Refresh against https://threejs.org/docs/#Loaders and **Addons → Exporters** for your installed version.