Install
$ agentstack add skill-playcanvas-skills-build-app ✓ scanned · ✓ verified, works with Claude Code, Cursor, and more.
Security review
✓ PassedNo issues found. Passed automated security review. · v0.1.0 How review works →
- ✓ Prompt-injection patterns
- ✓ Secret / credential exfiltration
- ✓ Dangerous shell & filesystem operations
- ✓ Untrusted network calls
- ✓ Known-malicious package signatures
What it can access
- ✓ Network access No
- ✓ Filesystem access No
- ✓ Shell / process execution No
- ✓ Environment & secrets No
- ✓ Dynamic code execution No
From automated source analysis of v0.1.0. “Used” means the capability is present in the source — more access means more to trust, not that it’s unsafe.
Verified badge
Passed review? Show it. Paste this badge into your README, it links to the public security report.
Reliability & compatibility
Declared compatibility
Compatibility is declared by the source manifest. End-to-end runtime verification is coming, see below.
We're building live execution health for every listing: tool-call success rate, median latency, uptime, and last-checked timestamps, measured, not self-reported. It isn't live yet, so we don't show numbers we can't stand behind.
How agent discovery & health will work →About
Build an Engine application
Read package.json and the application entry point before changing its structure. Choose the authoring surface from the code being edited:
- read [references/react.md](references/react.md) for
@playcanvas/reactimports and JSX; - read [references/web-components.md](references/web-components.md) for
pc-*elements or
@playcanvas/web-components imports;
- read [references/direct-engine.md](references/direct-engine.md) for direct
playcanvasbootstrap
code without a wrapper-owned lifecycle.
Installed dependencies alone are insufficient when a project contains more than one surface. Preserve the surface that owns the current entry point and lifecycle.
Render at an intentional density
PlayCanvas defaults graphicsDevice.maxPixelRatio to 1 for predictable fill-rate cost. In a quality-oriented browser app, set it deliberately after the application exists and before its initial automatic resize; Math.min(window.devicePixelRatio, 2) is a practical high-DPI starting point. Keep 1 only as a measured performance decision, and resize the canvas again after changing the value.
Verify the real backbuffer in a browser: for automatic resolution, canvas.width / canvas.clientWidth and the height ratio should match the chosen pixel ratio. CSS dimensions and a screenshot filepath do not prove rendering density.
For every surface:
- verify version-sensitive APIs against installed declarations or source;
- keep one owner for application creation, assets, entities, update callbacks, and teardown;
- prefer the surface's declarative or lifecycle primitives before reaching into the Engine;
- put per-entity and per-frame behavior in an Engine
Scriptwhen page or view state is not its
natural owner;
- clamp the per-frame delta before advancing gameplay, timers, physics, or a state clock, so a
backgrounded tab or a slow frame cannot inject one large integration step;
- clean up external events and resources in the lifecycle that created them.
Source & license
This open-source skill is cataloged on AgentStack and links to its original source — we do not rehost the code.
- Author: playcanvas
- Source: playcanvas/skills
- License: MIT
- Homepage: https://developer.playcanvas.com/
Install and usage instructions live in the source repository linked above.
Reviews
No reviews yet, be the first.
Write a review
Versions
- v0.1.0 Imported from the upstream source.