mcpField
A
apply-conventions

apply-conventions

github.com/playcanvasDevelopment31312 installsUpdated 1w ago
Repository

About apply-conventions

A conventions skill for working with the PlayCanvas engine. It records coordinate, API, camera, material, and bounds guidance, and stresses checking results in the running app.

Key features

  1. 01Coordinate and orientation conventions
  2. 02Current PlayCanvas API usage guidance
  3. 03Camera control and FOV notes
  4. 04Material editing and bounds guidance
  5. 05Runtime verification practices

Use cases

  1. 01Checking engine conventions before implementation
  2. 02Choosing current PlayCanvas APIs
  3. 03Debugging model orientation or lighting
  4. 04Verifying visual placement in a running app

Install

Copy the command and run it in a terminal.

$npx skills add https://github.com/playcanvas/skills --skill apply-conventions

After installing, type/apply-conventionsin Claude Code to confirm it loaded.

Details

From the project README

Engine conventions

Check version-sensitive APIs against installed playcanvas declarations.

Coordinates

  • Right-handed, +Y up, metres. entity.forward, cameras, and lookAt use -Z.
  • Directional and spot lights shine along local -Y, straight down by default. Aim them with setEulerAngles, not lookAt.
  • glTF models usually face +Z; record per-model yaw with calibrate-model.
  • Angle APIs take degrees in XYZ order. Keep pitch, yaw, and roll as app state; never feed getEulerAngles() back into setEulerAngles(). Interpolate with math.lerpAngle or Quat.slerp.
  • Use world setters on semantic roots and setLocal* below a parent. Never scale rigid-body roots or skinned bones.

Current APIs

  • render and anim components, not model and animation.
  • ESM class X extends Script with static scriptName, not createScript.
  • Mesh.fromGeometry(device, new BoxGeometry()), not createBox and the other create* helpers.
  • Named imports from playcanvas; shipped scripts only from playcanvas/scripts/esm/**.

Cameras

  • FOV is vertical, 45° by default. Check shipped camera scripts before writing controls (reuse-scripts).

Materials and bounds

  • StandardMaterial.useMetalness defaults to false; enable it before using metalness.
  • Call material.update() after property edits. Per-mesh values use meshInstance.setParameter() with no update or clone.
  • Clone shared materials, including imported ones, before editing them for some meshes.
  • setParameter uploads raw values; convert sRGB colours with Color#linear().
  • Back faces cull by default; counter-clockwise winding is the front face.
  • Entities have no aabb; union descendant meshInstance.aabb. If mesh.update() skips bounds, set mesh.aabb yourself, and expand it by any vertex-shader displacement.

Verify in the running app

Offline values cannot prove facing, poses, or placement. Read values from the running app with inspect-runtime, and judge visuals only from screenshots you have inspected. A saved file path is not evidence.

Comments

Markdown supported