CtrlK
BlogDocsLog inGet started
Tessl Logo
SkillPublic

3d-underwater-god-rays

Add volumetric underwater god rays to a Three.js scene, marching one drifting swell field along every view ray at half resolution so the light shafts converge on the sun, parallax with the camera and carry rippling caustic streaks, with a shimmering surface underside, a sun that wobbles through the ripples, and the same light dappling fish as they swim through the beams. Use for underwater scenes, oceans seen from below, aquariums, reefs, kelp forests, diving and shipwreck scenes, schools of fish, sunbeams or light shafts through water, caustics, "rays of light shining through the ocean", or watery ripples on a background. Includes a reusable module and the Blue Hour sardine-school demo.

72

Quality

91%

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

SKILL.md
Quality
Evals
Security

Quality

Content

81%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 strong, unusually well-engineered body: shipped constants instead of hand-waving, rules each tied to the failure they prevent, an explicit frame ordering, and a diagnostic verification checklist. The remaining gaps are minor — a partially sketched shader-integration example, some non-actionable provenance/version detail, and two demo references that are not present in the bundle.

Suggestions

Complete the water/fish shader integration with a minimal copy-paste-ready material example (vertex + fragment main() using ${LIGHT_GLSL}${WATER_GLSL}), since the current comment-style sketch leaves the most fragile step to the reader.

Remove or relocate the version-pinned stack line ('Three.js r170') and the Blue Hour provenance/cost anecdotes to a short 'Verified with' or changelog note, keeping the body to what changes the reader's actions.

Fix the dangling references: either include demo/index.html and demo/build.mjs in the bundle or drop the links to them, so every path a reader can follow actually exists.

DimensionReasoningScore

Conciseness

The body is largely lean and assumes competence — the constants table, the failure-annotated rules, and the per-frame ordering are exactly what Claude cannot derive itself, with no filler explaining Three.js or ray marching basics. It falls short of the 5 anchor because of minor trimmable material: the version-pinned stack line ('Three.js r170') and the provenance/cost anecdotes ('Source: extracted from Blue Hour...', 'load average about 60') are context that doesn't change the action, and the rubric flags unpinned version numbers specifically.

4 / 5

Actionability

The integration path is mostly executable: a real copy step, a concrete import (verified against the actual bundle module's exports), an explicit uniforms object, `createUnderwaterLight` setup, and an ordered per-frame sequence. It sits at the 4 anchor rather than 5 because the water and fish shader integration is given as comments ('Declare uSunDirection... then add ${LIGHT_GLSL}${WATER_GLSL} and in main()...') rather than copy-paste-ready shader code, leaving the host to assemble the final materials.

4 / 5

Workflow Clarity

The sequence is explicit and ordered — copy the module, build shared uniforms, create the light before the materials, then 'Every frame, in this order' with the march, scene passes, and tone map — and the Verify section is a true validation checklist where each item includes a symptom-to-cause diagnostic ('If they move with the lens, they are painted in screen space'). This matches the 5 anchor's explicit validation steps with feedback for error recovery; the 4 anchor's 'minor validation gaps' does not apply.

5 / 5

Progressive Disclosure

Structure is good: a single clearly signaled one-level reference to the reusable module [assets/underwater-light.mjs](assets/underwater-light.mjs) — which exists and exports what the SKILL.md imports — with the bulk detail appropriately in that file and a compact overview inline. It falls below the 5 anchor because two of the three referenced paths ([The demo](demo/index.html) and `demo/build.mjs`) do not exist in the provided bundle, breaking navigation for a reader following those links.

4 / 5

Total

17

/

20

Passed

Description

100%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.

An exemplary description: third-person voice, dense with concrete capabilities, an explicit 'Use for' clause covering a broad set of natural trigger phrases including a quoted user phrasing, and a tightly scoped underwater niche that keeps conflict risk with sibling lighting/water skills low. The length is dense rather than padded — every clause adds either a capability or a trigger.

DimensionReasoningScore

Specificity

The description lists multiple concrete capabilities — 'marching one drifting swell field along every view ray at half resolution', 'light shafts converge on the sun', 'parallax with the camera', 'rippling caustic streaks', 'shimmering surface underside', 'the same light dappling fish' — each a specific, verifiable action rather than generic language. It matches the 5 anchor (multiple specific concrete actions, comprehensive coverage) and is clearly above the 4 anchor, which allows coverage gaps; every major effect component is named.

5 / 5

Completeness

Both questions are answered explicitly: the 'what' is the detailed first sentence (add god rays with specific rendering behaviors), and the 'when' is the explicit 'Use for underwater scenes, oceans seen from below, aquariums...' clause with concrete trigger phrases. This is the 5 anchor verbatim in structure; the 4 anchor's 'when could be more explicit' does not apply.

5 / 5

Trigger Term Quality

Trigger coverage is comprehensive and natural: 'underwater scenes', 'oceans seen from below', 'aquariums', 'reefs', 'kelp forests', 'diving and shipwreck scenes', 'schools of fish', 'sunbeams or light shafts through water', 'caustics', 'watery ripples', plus the quoted user phrase '"rays of light shining through the ocean"' and 'god rays' in the capability clause. This matches the 5 anchor (natural terms including synonyms); file extensions are not applicable to a scene-effect skill.

5 / 5

Distinctiveness Conflict Risk

The niche is clear — volumetric underwater god rays in Three.js — and every trigger term ('underwater', 'oceans seen from below', 'aquariums', 'caustics') is water-specific, so overlap with sky-ray or surface-water skills is minimal. It matches the 5 anchor (clear niche, distinct triggers, minimal conflict risk) rather than the 4 anchor, which requires some overlap risk with closely related skills.

5 / 5

Total

20

/

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

relative_links

Relative link issues: 1 missing

Warning

Total

15

/

16

Passed

Repository

MengTo/Skills

Path

agent-skills/3d/3d-underwater-god-rays/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.