npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

@luxuride-pi/unity-vrchat

v0.1.2

Published

pi extension: live Unity Editor integration for VRChat projects on Unity 2022.3 LTS (C# editor bridge, project workspaces, render, scene inspection)

Readme

pi-unity-vrchat

Pi extension: live Unity Editor integration for VRChat projects on Unity 2022.3 LTS (the version the VRChat SDK pins). The agent gets unity_* tools and a /unity command that operate on a real, running Unity Editor.

This is not a general-purpose Unity extension for current Unity releases: the bridge and its workarounds are measured against 2022.3, and a future Unity 6 extension would be a separate package.

Tools

Registered tools (unity_*, 24). The full inventory with parameters and behaviour notes lives in docs/DESIGN.md.

| Tool | What it does | |---|---| | unity_workspace_init | generate a fresh 3D project or adopt an existing one; opens the Editor | | unity_execute_csharp | run C# live in the Editor from script.cs or inline | | unity_session_context | current workspace, selection, mode, last render | | unity_scene_info | scene graph with world+local pos/rot/scale | | unity_bones | humanoid bones by HumanBodyBones name + full rig by transform path | | unity_inspect | serialized properties exactly as the Inspector shows them | | unity_set_property | write one serialized property (parsed by type, undoable) | | unity_set_transform | set a GameObject's or rig bone's transform, world/local, undoable | | unity_source_models | find/export real model files from the project | | unity_prefab_info | children/materials/bounds without instantiating | | unity_instantiate_prefab | place a prefab in the scene; returns its scene path | | unity_compose_prefab | build a prefab of prefabs (nested references, never merged) | | unity_geometry_probe | bounds/axis/interpenetration/topology, read-only | | unity_vrc | avatar helpers: package/optimizer readiness, VRCFury, lilToon, bone paths | | unity_world | world helpers (light volumes, Udon, AudioLink, toolkit): 37 actions | | unity_render | render from the camera — how the game looks | | unity_capture_view | capture the Scene view — what you built | | unity_save_view | save a named camera/view | | unity_set_tool | select the active Editor tool | | unity_module_run | run one module's script against a checkpointed scene | | unity_module_revert | restore the scene checkpoint from before a module run | | unity_log_critique | append a scored critique to critique.log | | unity_bridge_status | bridge alive/busy/locked and on what | | unity_await_compile | block until a script compile settles, return its verdict |

The /unity command engages manager mode over these tools; child agents (unity-worker, unity-critic, unity-diagnostician, unity-finalizer, vrchat-unity-avatar, vrchat-unity-world) do the tool-level work.

Install

pi install npm:@luxuride-pi/unity-vrchat

The child agents above must also exist in $PI_AGENT_DIR/agents. The extension ships its agent templates, so install them once from the installed copy:

node scripts/install-agents.mjs            # dry run: print resolved paths
node scripts/install-agents.mjs --write    # install into $PI_AGENT_DIR/agents

The Unity Editor is autodetected (UNITY_PATH, macOS app bundle, newest install under the Unity Hub, PATH). Set UNITY_PATH if yours lives elsewhere.

Usage, workspace semantics, environment variables and per-tool behaviour: docs/DESIGN.md.

Releases

Every release is both a git tag and an npm package. The package publishes as @luxuride-pi/unity-vrchat from the release workflow via npm trusted publishing (OIDC from GitHub Actions — no publish token exists anywhere).

pi can also install this extension from a git ref: pi clones, checks out the ref, runs npm install --legacy-peer-deps, and loads the extension's TypeScript straight from source — so a tag is the artifact; there is no build step and nothing to compile.

Install a release

pi install npm:@luxuride-pi/unity-vrchat@^<version>
# or, pinned to a git tag:
pi install git:github.com/luxuride-pi-extensions/pi-unity-vrchat@v<version>

Cut a release

  1. Bump version in package.json and commit that on its own.
  2. Tag the commit that contains the bump — the tag and the version must agree:
    git tag v<version> && git push origin master --tags
  3. .github/workflows/release.yml packs the tarball, checks it, and publishes the release with generated notes.

The workflow refuses to guess: it fails when the tag is not on the commit being released, and again when the tag does not match package.json's version. Bump the version before tagging; the tag is not the place to bump.

License

MIT