Agent skill · Audited from source
playcanvas-engine
skill · freshtechbro/claudedesignskillsMIT licenceAudited 31 Oct 2026 · source 2b2fd871ca33
Is it safe? Yes — SAFE, grade B (89/100). We read this skill's source at commit 2b2fd871ca33 and found no filesystem, network or shell access and no hard-coded secrets. What it does: Lightweight WebGL/WebGPU game engine with entity-component architecture and visual editor integration. Use this skill when building browser-based games, interactive 3D applications, or performance-critical web…
Cite
Cite this page
ModelsAtlas. “playcanvas-engine (freshtechbro/claudedesignskills)”. Retrieved 31 Oct 2026. https://modelsatlas.com/skills/freshtechbro/playcanvas-engine
Trust audit
Audit 0.4.1 · source read 31 Oct 2026
SAFE means nothing in the source contradicts what the skill says it does. Grade B is shared by 16,667 of 17,602 audited skills.
What the source does
- FilesystemNone observedNo reads or writes in the source
- NetworkNone observedNo outbound calls in the source
- ShellNone observedNo commands run in the source
- DependenciesPinnedNothing floats
- SecretsNone foundNo keys in source
Five audit layers
| Layer | What we check | Result | Findings |
|---|---|---|---|
L0 Provenance | Repo owner, licence, archive status, activity | PASS | 0 |
L1 Static source | Secrets, path traversal, supply chain, hidden code | PASS | 0 |
L2 Instructions | Prompt injection, authority framing, hidden directives | PASS | 1 |
L3 Inventory | The files and declarations match the source | PASS | 0 |
L4 Sandbox | Run in isolation and watch behaviour | SKIPPED why | 0 |
Gates applied: no behavioural pass.
Findings (1)
INFOPrompt injectionprompt.authority_framing · references/editor_workflow.md:663
- Owner (full access)
- Why
- No further detail recorded for this rule.
- Fix
- —
Audit 0.4.1 · source sha 2b2fd871ca33 · 31 Oct 2026Report an issue or request a re-scan
Provenance
Who published it, and what the verdict is pinned to
- Publisherfreshtechbro GitHub userOwner of the repository this skill is read from
- Source folderfreshtechbro/claudedesignskills/.claude/skills/playcanvas-engineThe exact folder we audited
- LicenceMITAs the repository states it
- Commit pinned for this verdict2b2fd871ca33A new audit runs when the source changes
- Repository statusNot archivedLast push 345 days ago
- Sandboxed runNot runSkills are read, not executed; layer L4 is skipped
What it tells the agent
Full source on GitHub ↗Its description: Lightweight WebGL/WebGPU game engine with entity-component architecture and visual editor integration. Use this skill when building browser-based games, interactive 3D applications, or performance-critical web…
---
name: playcanvas-engine
description: Lightweight WebGL/WebGPU game engine with entity-component architecture and visual editor integration. Use this skill when building browser-based games, interactive 3D applications, or performance-critical web experiences. Triggers on tasks involving PlayCanvas, entity-component systems, game engine development, WebGL games, 3D browser applications, editor-first workflows, or real-time 3D rendering. Alternative to Three.js with game-specific features and integrated development environment.
---
# PlayCanvas Engine Skill
Lightweight WebGL/WebGPU game engine with entity-component architecture, visual editor integration, and performance-focused design.
## When to Use This Skill
Trigger this skill when you see:
- "PlayCanvas engine"
- "WebGL game engine"
- "entity component system"
- "PlayCanvas application"
- "3D browser games"
- "online 3D editor"
- "lightweight 3D engine"
- Need for editor-first workflow
Compare with:
- **Three.js**: Lower-level, more flexible but requires more setup
- **Babylon.js**: Feature-rich but heavier, has editor but less mature
- **A-Frame**: VR-focused, declarative HTML approach
- Use PlayCanvas for: Game projects, editor-first workflow, performance-critical apps
---
## Core Concepts
### 1. Application
The root PlayCanvas application manages the rendering loop.
```javascript
import * as pc from 'playcanvas';
// Create canvas
const canvas = document.createElement('canvas');
document.body.appendChild(canvas);
// Create application
const app = new pc.Application(canvas, {
keyboard: new pc.Keyboard(window),
mouse: new pc.Mouse(canvas),
touch: new pc.TouchDevice(canvas),
gamepads: new pc.GamePads()
});
// Configure canvas
app.setCanvasFillMode(pc.FILLMODE_FILL_WINDOW);
app.setCanvasResolution(pc.RESOLUTION_AUTO);
// Handle resize
window.addEventListener('resize', () => app.resizeCanvas());
// Start the application
app.start();
```
---
### 2. Entity-Component System
PlayCanvas uses ECS architecture: Entities contain Components.
```javascript
// Create entity
const entity = new pc.Entity('myEntity');
// Add to scene hierarchy
app.root.addChild(entity);
// Add components
entity.addComponent('model', {
type: 'box'
});
entity.addComponent('script');
// Transform
entity.setPosition(0, 1, 0);
entity.setEulerAngles(0, 45, 0);
entity.setLocalScale(2, 2, 2);
// Parent-child hierarchy
const parent = new pc.Entity('parent');
const child = new pc.Entity('child');
parent.addChild(child);
```
---
### 3. Update Loop
The application fires events during the update loop.
```javascript
app.on('update', (dt) => {
// dt is delta time in seconds
entity.rotate(0, 10 * dt, 0);
});
app.on('prerender', () => {
// Before rendering
});
app.on('postrender', () => {
// After rendering
});
```
---
### 4. Components
Core components extend entity functionality:
**Model Component**:
```javascript
entity.addComponent('model', {
type: 'box', // 'box', 'sphere', 'cylinder', 'cone', 'capsule', 'asset'
material: material,
castShadows: true,
receiveShadows: true
});
```
**Camera Component**:
```javascript
entity.addComponent('camera', {
clearColor: new pc.Color(0.1, 0.2, 0.3),
fov: 45,
nearClip: 0.1,
farClip: 1000,
projection: pc.PROJECTION_PERSPECTIVE // or PROJECTION_ORTHOGRAPHIC
});
```
**Light Component**:
```javascript
entity.addComponent('light', {
type: pc.LIGHTTYPE_DIRECTIONAL, // DIRECTIONAL, POINT, SPOT
color: new pc.Color(1, 1, 1),
intensity: 1,
castShadows: true,
shadowDistance: 50
});
```
**Rigidbody Component** (requires physics):
```javascript
entity.addComponent('rigidbody', {
type: pc.BODYTYPE_DYNAMIC, // STATIC, DYNAMIC, KINEMATIC
mass: 1,
friction: 0.5,
restitution: 0.3
});
entity.addComponent('collision', {
type: 'box',
halfExtents: new pc.Vec3(0.5, 0.5, 0.5)
});
```
---
## Common Patterns
### Pattern 1: Basic Scene Setup
Create a complete scene with camera, light, and models.
```javascript
import * as pc from 'playcanvas';
// Initialize application
const canvas = document.createElement('canvas');
document.body.appendChild(canvas);
const app = new pc.Application(canvas);
app.setCanvasFillMode(pc.FILLMODE_FILL_WINDOW);
app.setCanvasResolution(pc.RESOLUTION_AUTO);
window.addEventListener('resize', () => app.resizeCanvas());
// Create camera
const camera = new pc.Entity('camera');
camera.addComponent('camera', {
clearColor: new pc.Color(0.2, 0.3, 0.4)
});
camera.setPosition(0, 2, 5);
camera.lookAt(0, 0, 0);
app.root.addChild(camera);
// Create directional light
const light = new pc.Entity('light');
light.addComponent('light', {
type: pc.LIGHTTYPE_DIRECTIONAL,
castShadows: true
});
light.setEulerAngles(45, 30, 0);
app.root.addChild(light);
// Create ground
const ground = new pc.Entity('ground');
ground.addComponent('model', {
type: 'plane'
});
ground.setLocalScale(10, 1, 10);
app.root.addChild(ground);
// Create cube
const cube = new pc.Entity('cube');
cube.addComponent('model', {
type: 'box',
castShadows: true
});
cube.setPosition(0, 1, 0);
app.root.addChild(cube);
// Animate cube
app.on('update', (dt) => {
cube.rotate(10 * dt, 20 * dt, 30 * dt);
});
app.start();
```
---
### Pattern 2: Loading GLTF Models
Load external 3D models with asset management.
```javascript
// Create asset for model
const modelAsset = new pc.Asset('model', 'container', {
url: '/models/character.glb'
});
// Add to asset registry
app.assets.add(modelAsset);
// Load asset
modelAsset.ready((asset) => {
// Create entity from loaded model
const entity = asset.resource.instantiateRenderEntity();
app.root.addChild(entity);
// Scale and position
entity.setLocalScale(2, 2, 2);
entity.setPosition(0, 0, 0);
});
app.assets.load(modelAsset);
```
**With error handling**:
```javascript
modelAsset.ready((asset) => {
console.log('Model loaded:', asset.name);
const entity = asset.resource.instantiateRenderEntity();
app.root.addChildExcerpt, first 6,000 characters of SKILL.md, verbatim from the audited commit. It is text from someone else’s repository, quoted so you can judge it before your agent reads it.
Install
Pinned to the audited commit 2b2fd87
npm i -g vercel
git clone https://github.com/freshtechbro/claudedesignskills git -C claudedesignskills checkout 2b2fd871ca33
Commands as the repository documents them: shown, never run by us. Our verdict covers commit 2b2fd871ca33 only.
Works in
The author has not said which agents this skill supports, and we have not tested it in any.
Audit history
Every audit, every source change
- ✓SAFE B 89 / 100
first audit · source
2b2fd871ca33
README badge
For maintainers · shows the latest audit
[](https://modelsatlas.com/skills/freshtechbro/playcanvas-engine/)
The badge shows our verdict and grade for this skill, and links back to this page. It changes when the audit does.
Similar skills
obra/superpowers
Use when creating new skills, editing existing skills, or verifying skills work before deployment
mattpocock/skills
A relentless interview to sharpen a plan or design, which also creates docs (ADR's and glossary) as we go.
mattpocock/skills
Grill the user relentlessly about a plan, decision, or idea. Use when the user wants to stress-test their thinking, or uses any 'grill' trigger phrases.
Add this badge to your README
[](https://modelsatlas.com/skills/freshtechbro/playcanvas-engine/)
<a href="https://modelsatlas.com/skills/freshtechbro/playcanvas-engine/"><img src="https://modelsatlas.com/skills/freshtechbro/playcanvas-engine/badge.svg" alt="ModelsAtlas: SAFE B"></a>
Questions about playcanvas-engine
What does the playcanvas-engine skill do?
Is playcanvas-engine safe to install?
What can playcanvas-engine access on my machine?
How current is this page?
Sources
- github.com/freshtechbro/claudedesignskills/tree/main/.claude/ski — the audited source at commit 2b2fd871ca33 and every finding aboveObserved · 31 Oct 2026
Spotted something wrong? Report a correction · Methodology
Keep going in your AI
Opens with this page as the source. We add nothing else to the prompt.
- What does the playcanvas-engine skill do?
- Is playcanvas-engine safe to install?
- What can playcanvas-engine access on my machine?