CtrlK
BlogDocsLog inGet started
Tessl Logo
SkillPublic

threejs-interaction

Three.js interaction - raycasting, controls, mouse/touch input, object selection. Use when handling user input, implementing click detection, adding camera controls, or creating interactive 3D experiences.

Quality

78%

Does it follow best practices?

Run evals on this skill

Adds up to 20 points to the overall score

View guide
SecuritybySnyk

Passed

No findings from the security scan

Fix and improve this skill with Tessl

tessl review fix ./.agents/skills/threejs-interaction/SKILL.md

The canonical home for this skill is threejs-interaction in CloudAI-X/threejs-skills

SKILL.md
Quality
Evals
Security

Quality

Content

63%Weight 40%Scale 1-5

Reviews the quality of instructions and guidance provided to agents. Good implementation is clear, handles edge cases, and produces reliable results.

A well-organized, highly actionable reference catalog with executable code covering the full interaction surface. Its weaknesses are structural: heavy inline duplication of the mouse-conversion pattern, a large monolithic body with no progressive disclosure into reference files, and a few minor accuracy/stub issues.

Suggestions

Define the mouse-to-NDC conversion once (a helper or a single snippet) and reuse it across the Quick Start, selection, hover, and touch sections instead of repeating it six times.

Split the per-control API listings and selection-system details into one-level-deep reference files (e.g. references/controls.md, references/selection.md), keeping SKILL.md as a concise overview with a Quick Start and clearly signaled links.

Complete the InteractionManager.dispose() implementation, replace the removed `Face3` type in the intersection-shape comment, and add the missing keyup handling in the PointerLockControls example so all snippets are fully executable.

DimensionReasoningScore

Conciseness

Prose is minimal and code-heavy with no concept explanations, but the same mouse-to-NDC conversion snippet is repeated roughly six times (Quick Start, 'Basic Raycasting' setup, 'Mouse Position Conversion', 'Touch Support', 'Click to Select', 'Box Selection') and sections like the OrbitControls parameter list restate API defaults Claude already knows — matching 'mostly efficient but includes some unnecessary explanation or could be tightened'.

3 / 5

Actionability

Nearly all code is concrete, copy-paste ready, and covers the common cases (click select, hover, touch, drag, five control types with their update-loop calls), fitting 'mostly executable guidance; concrete code or commands with minor gaps'. Minor gaps: InteractionManager.dispose() is an empty stub with a '// Remove event listeners' comment, the deprecated `Face3` type appears in the intersection listing, and the PointerLockControls keyboard handler never resets flags on keyup.

4 / 5

Workflow Clarity

As a pattern catalog rather than a linear workflow, each section still presents a complete, correctly-ordered sequence — construct controls, configure options, call controls.update() in the animate loop (explicitly flagged 'Required for damping and auto-rotate'), and disable orbit controls while dragging via 'dragging-changed'. This matches 'clear sequence with most checkpoints present; minor validation gaps'; no destructive or batch operations exist that would require validation checkpoints.

4 / 5

Progressive Disclosure

Section headers are clear and well-ordered, but the entire ~650-line catalog is inlined in SKILL.md with no bundle files — the per-control API listings (FlyControls, FirstPersonControls, TrackballControls, MapControls) and the selection-system details would fit naturally in one-level-deep reference files, matching 'some structure... content that should be separate is inline'.

3 / 5

Total

14

/

20

Passed

Description

83%Weight 40%Scale 1-5

Based on the skill's description, can an agent find and select it at the right time? Clear, specific descriptions lead to better discovery.

A strong description: it pairs a concise capability list with an explicit, multi-scenario 'Use when' clause in neutral voice. Its main limitations are minor — a few natural trigger synonyms are absent and some body-covered features (hover, keyboard input) go unmentioned.

DimensionReasoningScore

Specificity

The description names the domain and lists several concrete capabilities — 'raycasting, controls, mouse/touch input, object selection' — comparable to the anchor example 'Extracts text from PDF files, fills forms, converts pages to images'. Minor gaps in coverage (hover effects, keyboard input, world/screen coordinate conversion are covered in the body but unmentioned) keep it below the comprehensive level 5.

4 / 5

Completeness

It explicitly answers both what ('raycasting, controls, mouse/touch input, object selection') and when ('Use when handling user input, implementing click detection, adding camera controls, or creating interactive 3D experiences') with concrete trigger phrases, directly matching the level-5 anchor pattern. The 'when' clause is present, specific, and multi-scenario.

5 / 5

Trigger Term Quality

Trigger phrases like 'handling user input', 'implementing click detection', 'adding camera controls', and 'creating interactive 3D experiences' are natural phrases users would say, matching 'Good keyword coverage; a few natural terms missing'. It misses common synonyms and specifics users might mention ('3D picking', 'hover', 'OrbitControls', 'drag and drop'), so it falls short of the comprehensive synonym coverage of level 5.

4 / 5

Distinctiveness Conflict Risk

'Three.js interaction' carves a clear niche with distinct interaction-specific triggers, but phrases like 'adding camera controls' and 'creating interactive 3D experiences' carry minor overlap risk with closely related sibling skills (threejs-fundamentals, threejs-animation referenced in See Also), matching 'Mostly distinct; minor overlap risk with closely related skills'.

4 / 5

Total

17

/

20

Passed

Validation

93%

Checks the skill against the spec for correct structure and formatting. All validation checks must pass before discovery and implementation can be scored.

Validation — 15 / 16 Passed

Validation for skill structure

CriteriaDescriptionResult

skill_md_line_count

SKILL.md is long (661 lines); consider splitting into references/ and linking

Warning

Total

15

/

16

Passed

Repository

calesthio/OpenMontage

Path

.agents/skills/threejs-interaction/SKILL.md

Reviewed

Table of Contents

Is this your skill?

If you maintain this skill, you can claim it as your own. Once claimed, you can manage eval scenarios, bundle related skills, attach documentation or rules, and ensure cross-agent compatibility.