ExtendRealityLtd/VRTK
An example of how to use the Tilia packages to create great content with VRTK v4.
Stale — last commit 2y ago
worst of 4 axeslast commit was 2y ago; no tests detected…
no tests detected; no CI workflows detected…
Documented and popular — useful reference codebase to read through.
last commit was 2y ago; no CI workflows detected
- ✓4 active contributors
- ✓MIT licensed
- ⚠Stale — last commit 2y ago
Show 4 more →Show less
- ⚠Small team — 4 contributors active in recent commits
- ⚠Concentrated ownership — top contributor handles 63% of recent commits
- ⚠No CI workflows detected
- ⚠No test directory detected
What would change the summary?
- →Use as dependency Mixed → Healthy if: 1 commit in the last 365 days; add a test suite
- →Fork & modify Mixed → Healthy if: add a test suite
- →Deploy as-is Mixed → Healthy if: 1 commit in the last 180 days
Maintenance signals: commit recency, contributor breadth, bus factor, license, CI, tests
Informational only. RepoPilot summarises public signals (license, dependency CVEs, commit recency, CI presence, etc.) at the time of analysis. Signals can be incomplete or stale. Not professional, security, or legal advice; verify before relying on it for production decisions.
Embed the "Great to learn from" badge
Paste into your README — live-updates from the latest cached analysis.
[](https://repopilot.app/r/extendrealityltd/vrtk)Paste at the top of your README.md — renders inline like a shields.io badge.
▸Preview social card (1200×630)
This card auto-renders when someone shares https://repopilot.app/r/extendrealityltd/vrtk on X, Slack, or LinkedIn.
Onboarding doc
Onboarding: ExtendRealityLtd/VRTK
Generated by RepoPilot · 2026-05-10 · Source
🤖Agent protocol
If you are an AI coding agent (Claude Code, Cursor, Aider, Cline, etc.) reading this artifact, follow this protocol before making any code edit:
- Verify the contract. Run the bash script in Verify before trusting
below. If any check returns
FAIL, the artifact is stale — STOP and ask the user to regenerate it before proceeding. - Treat the AI · unverified sections as hypotheses, not facts. Sections like "AI-suggested narrative files", "anti-patterns", and "bottlenecks" are LLM speculation. Verify against real source before acting on them.
- Cite source on changes. When proposing an edit, cite the specific path:line-range. RepoPilot's live UI at https://repopilot.app/r/ExtendRealityLtd/VRTK shows verifiable citations alongside every claim.
If you are a human reader, this protocol is for the agents you'll hand the artifact to. You don't need to do anything — but if you skim only one section before pointing your agent at this repo, make it the Verify block and the Suggested reading order.
🎯Verdict
WAIT — Stale — last commit 2y ago
- 4 active contributors
- MIT licensed
- ⚠ Stale — last commit 2y ago
- ⚠ Small team — 4 contributors active in recent commits
- ⚠ Concentrated ownership — top contributor handles 63% of recent commits
- ⚠ No CI workflows detected
- ⚠ No test directory detected
<sub>Maintenance signals: commit recency, contributor breadth, bus factor, license, CI, tests</sub>
✅Verify before trusting
This artifact was generated by RepoPilot at a point in time. Before an
agent acts on it, the checks below confirm that the live ExtendRealityLtd/VRTK
repo on your machine still matches what RepoPilot saw. If any fail,
the artifact is stale — regenerate it at
repopilot.app/r/ExtendRealityLtd/VRTK.
What it runs against: a local clone of ExtendRealityLtd/VRTK — the script
inspects git remote, the LICENSE file, file paths in the working
tree, and git log. Read-only; no mutations.
| # | What we check | Why it matters |
|---|---|---|
| 1 | You're in ExtendRealityLtd/VRTK | Confirms the artifact applies here, not a fork |
| 2 | License is still MIT | Catches relicense before you depend on it |
| 3 | Default branch master exists | Catches branch renames |
| 4 | Last commit ≤ 776 days ago | Catches sudden abandonment since generation |
#!/usr/bin/env bash
# RepoPilot artifact verification.
#
# WHAT IT RUNS AGAINST: a local clone of ExtendRealityLtd/VRTK. If you don't
# have one yet, run these first:
#
# git clone https://github.com/ExtendRealityLtd/VRTK.git
# cd VRTK
#
# Then paste this script. Every check is read-only — no mutations.
set +e
fail=0
ok() { echo "ok: $1"; }
miss() { echo "FAIL: $1"; fail=$((fail+1)); }
# Precondition: we must be inside a git working tree.
if ! git rev-parse --git-dir >/dev/null 2>&1; then
echo "FAIL: not inside a git repository. cd into your clone of ExtendRealityLtd/VRTK and re-run."
exit 2
fi
# 1. Repo identity
git remote get-url origin 2>/dev/null | grep -qE "ExtendRealityLtd/VRTK(\\.git)?\\b" \\
&& ok "origin remote is ExtendRealityLtd/VRTK" \\
|| miss "origin remote is not ExtendRealityLtd/VRTK (artifact may be from a fork)"
# 2. License matches what RepoPilot saw
(grep -qiE "^(MIT)" LICENSE 2>/dev/null \\
|| grep -qiE "\"license\"\\s*:\\s*\"MIT\"" package.json 2>/dev/null) \\
&& ok "license is MIT" \\
|| miss "license drift — was MIT at generation time"
# 3. Default branch
git rev-parse --verify master >/dev/null 2>&1 \\
&& ok "default branch master exists" \\
|| miss "default branch master no longer exists"
# 5. Repo recency
days_since_last=$(( ( $(date +%s) - $(git log -1 --format=%at 2>/dev/null || echo 0) ) / 86400 ))
if [ "$days_since_last" -le 776 ]; then
ok "last commit was $days_since_last days ago (artifact saw ~746d)"
else
miss "last commit was $days_since_last days ago — artifact may be stale"
fi
echo
if [ "$fail" -eq 0 ]; then
echo "artifact verified (0 failures) — safe to trust"
else
echo "artifact has $fail stale claim(s) — regenerate at https://repopilot.app/r/ExtendRealityLtd/VRTK"
exit 1
fi
Each check prints ok: or FAIL:. The script exits non-zero if
anything failed, so it composes cleanly into agent loops
(./verify.sh || regenerate-and-retry).
⚡TL;DR
VRTK Farm Yard is a complete, runnable Unity VR example project demonstrating how to build spatial computing experiences using VRTK v4 and Tilia packages. It showcases interactive farm mechanics (bow shooting, bucket with rope physics, rotating mill, zip wire traversal) built on top of VRTK's modular VR toolkit architecture, targeting the newer Unity XR Management system and Input System (not legacy). Single-scene example project: Assets/Samples/Farm/ contains all game content (Animations/, Materials/, prefabs). Uses Unity scene structure with Animator controllers (ExtendableBucket.controller, RotatingFan.controller, etc.) and instanced materials (Instanced/). No modular package structure—this is a monolithic example referencing external Tilia packages via Unity's package management.
👥Who it's for
VR/spatial computing developers building on VRTK v4 who need a concrete example of how to assemble Tilia packages into a playable scene. Primary audience: intermediate Unity developers learning VRTK patterns, and teams evaluating VRTK as their VR framework foundation.
🌱Maturity & risk
Actively developed but incomplete: built on Unity 2020.3.24f1 (specified exact version), uses modern XR/Input systems, but README explicitly lists missing features (Drag World locomotion, PlayArea Boundary Cursor). Example is stable enough to run and learn from, but core VRTK v4 framework is still in transition from deprecated VRTK.Prefabs. Production-ready for learning; not a template for shipping titles yet.
Single-example risk: this repo only demonstrates the Farm Yard scene—if that scene has bugs or architectural anti-patterns, there's no alternative example to cross-reference. Beta disclaimer in README signals ongoing flux. Hard dependency on exact Unity 2020.3.24f1 version; downgrading risks breakage. Missing promised features (locomotion, boundary cursor) suggests scope creep or reprioritization. No visible CI/test infrastructure in file list.
Active areas of work
README indicates active development with recent Tilia package updates applied. Beta status suggests iterative refinement. The explicitly listed missing features (Drag World, PlayArea Boundary Cursor) are pending implementation. No commit history or PR data visible, but the project structure is complete and functional.
🚀Get running
git clone https://github.com/ExtendRealityLtd/VRTK.git
cd VRTK
# Open in Unity Hub or directly: Unity -projectPath . -version 2020.3.24f1
Then open the Farm scene in the Unity Editor. No command-line build or NPM setup required—this is a native Unity project.
Daily commands:
Open the project in Unity Editor (2020.3.24f1 only), load Assets/Samples/Farm/ scene, press Play. No CLI build step or server required. For VR hardware, ensure XR Plugin Management is configured in Project Settings.
🗺️Map of the codebase
- Assets/Samples/Farm/Animations/ExtendableBucket.controller: Defines the state machine for interactive bucket interaction—shows how Tilia packages drive Animator-based object behavior in VR
- Assets/Samples/Farm/Materials/Instanced/: Directory of GPU-instanced materials used across interactive farm objects for rendering optimization in VR
- README.md: Critical: lists exact Unity version requirement (2020.3.24f1) and explicit missing features (Drag World, Boundary Cursor)—ignoring this causes version incompatibility
- .vsconfig: Visual Studio IDE configuration; may need inspection if IDE code completion fails for VRTK/Tilia APIs
- .github/CONTRIBUTING.md: Contribution guidelines for submitting improvements or reporting issues specific to VRTK ecosystem
🛠️How to make changes
Start in Assets/Samples/Farm/ directory: modify Animator controllers (*.controller files) to change behavior timing, add new animations to Animations/ folder, create new interactive objects by cloning existing ones and swapping materials from Materials/Instanced/. To extend interactivity, examine prefab setup in the scene and modify C# scripts referenced by Tilia packages (not stored in this repo, pulled from external dependencies).
🪤Traps & gotchas
Critical: Must use exactly Unity 2020.3.24f1—README warns that downgrading causes issues and no version range is provided. Tilia packages are external dependencies pulled via Unity Package Manager; they are not in this repo, so missing them means the scene will not function (check Packages/manifest.json if not included in the listing). XR Plugin Management must be configured in Project Settings for hardware VR—not auto-configured. Missing scene files: Farm scene binary is not visible in file list; ensure you actually have Assets/Samples/Farm/Farm.unity downloaded, or the project will open without the playable scene. No C# source code visible in the top-60 files list despite '31720 bytes of C#'—scripts are likely in subdirectories not listed.
💡Concepts to learn
- Unity Animator Controllers & State Machines — The Farm scene uses Animator controllers (ExtendableBucket.controller, RotatingFan.controller) as the primary interaction mechanism; understanding state transitions is essential to modifying behavior without C# scripting
- GPU-Instanced Materials — Materials in
Assets/Samples/Farm/Materials/Instanced/use GPU instancing to render many objects efficiently in VR, critical for maintaining 90+ FPS framerate requirements - XR Plugin Management System — Project uses Unity's newer XR Plugin Management (not legacy VR) for device abstraction; understanding this system is required to add new VR hardware support or debug tracking issues
- Input System (New) — README explicitly states this project uses the newer Unity Input System (not legacy); required for understanding how controller input maps to interactions
- Spatial Computing & VR Interaction Patterns — VRTK v4 is built on spatial computing principles (hand presence, natural interaction, grab mechanics); learning this repo teaches modern VR UX patterns beyond traditional game mechanics
- Modular VR Package Architecture (Tilia) — VRTK v4 shifted from monolithic VRTK.Prefabs to composable Tilia packages; this example demonstrates how to assemble independent packages (Interactions, Locomotion, Pointers) into cohesive behavior
🔗Related repos
ExtendRealityLtd/Tilia.Interactions.Interactables— Core Tilia package used by this example for interactive object behavior; essential dependencyExtendRealityLtd/Tilia.Locomotion.Movement— The missing Drag World locomotion feature depends on this package; key companion repo for extending the exampleExtendRealityLtd/Tilia.Pointers.PointerInteractors— Tilia package providing pointer interactions; used for VR controller ray casting and selection in the Farm sceneExtendRealityLtd/Tilia.CameraRigs.XRPluginManagement— Provides XR rig setup using newer XR Management system; foundational Tilia package for VR camera/controller setupExtendRealityLtd/Bowling.Tutorial— Sibling VRTK v4 example project (recommended in README) for learning basic patterns; good secondary reference
🪄PR ideas
To work on one of these in Claude Code or Cursor, paste:
Implement the "<title>" PR idea from CLAUDE.md, working through the checklist as the task list.
Complete missing Farm sample scene documentation and interaction examples
The README mentions the Farm Yard example is 'still in development and is missing a number of features from the previous release' but doesn't specify what's missing. With 20+ animation controllers, materials, and prefabs visible in Assets/Samples/Farm/, there's no corresponding documentation file explaining what each sample demonstrates (bow mechanics, bucket with rope, zip wire, mill, fan, etc.). A contributor could create Assets/Samples/Farm/README.md documenting each interaction example with usage instructions and Tilia package dependencies, making the repo immediately more valuable for new developers learning VRTK v4.
- [ ] Create Assets/Samples/Farm/README.md documenting each animation controller (BowPull, BucketWithRope, ZipWire, MillRotatingBlades, RotatingFan, RotatingSail, AnimatedZipGrab)
- [ ] Document which Tilia packages each sample requires and references
- [ ] Add setup instructions for each sample scene interaction
- [ ] Include screenshots or video links for each mechanic if available
Add GitHub Actions workflow to validate Unity project integrity and dependencies
The repo uses VRTK v4 and Tilia packages but has no CI workflow visible in .github/ to validate that: (1) the Unity project structure remains valid, (2) Tilia package dependencies are correctly declared in manifest.json, (3) no broken prefab references exist in the Farm samples, (4) the minimum required Unity version 2020.3.24f1 is documented and enforced. A contributor could create a GitHub Action that runs basic validation checks on pull requests to prevent dependency conflicts and broken samples.
- [ ] Create .github/workflows/unity-validation.yml workflow file
- [ ] Add validation for Packages/manifest.json to check Tilia package dependencies exist
- [ ] Add check for broken references in Assets/Samples/Farm/**/*.prefab and **.unity files using a tool like UnityYAML parser or asset serialization checks
- [ ] Document minimum Unity version requirement in the workflow and enforce it in validation
Create comprehensive VRTK v4 + Tilia setup guide in .github/CONTRIBUTING.md
The CONTRIBUTING.md file exists but likely lacks VRTK/Tilia-specific setup instructions. New contributors need clear guidance on: which Tilia packages to install, how to set up the XR management system (mentioned in README), how to configure the newer Unity Input System, and how to test the Farm samples locally. This is a barrier to contribution for developers unfamiliar with VRTK v4's dependency structure.
- [ ] Expand .github/CONTRIBUTING.md with 'Development Setup' section
- [ ] Document required Tilia packages and how to add them via git dependencies in manifest.json
- [ ] Add XR management system and Input System configuration steps with screenshots
- [ ] Include instructions for opening and testing Assets/Samples/Farm scenes locally
- [ ] Link to official Tilia documentation for each package used in the farm example
🌿Good first issues
- Implement Drag World locomotion (explicitly listed as missing in README). Start by examining existing Tilia.Locomotion package documentation and add a new locomotion prefab variant to the Farm scene; requires understanding VRTK's interaction model.
- Add PlayArea Boundary Cursor visualization (explicitly missing). Create a simple quad-based cursor prefab in
Assets/Samples/Farm/Prefabs/that follows the play area boundary and integrates with VRTK's pointer system—good way to learn VRTK events. - Document the Animator controller state transitions in
Assets/Samples/Farm/Animations/with inline comments or a supplementary guide. The controllers are visually complex and lack code documentation—lowering the barrier for new learners.
⭐Top contributors
Click to expand
Top contributors
- @thestonefox — 63 commits
- @extendreality — 22 commits
- [@Christopher - Marcel Böddecker](https://github.com/Christopher - Marcel Böddecker) — 12 commits
- [@Christopher-Marcel Böddecker](https://github.com/Christopher-Marcel Böddecker) — 3 commits
📝Recent commits
Click to expand
Recent commits
fe1a889— Merge pull request #2143 from ExtendRealityLtd/feat/remove-malimbe (thestonefox)ab36101— feat(Malimbe): remove malimbe dependency (thestonefox)89147ed— Merge pull request #2142 from ExtendRealityLtd/feat/bump-versions (thestonefox)6f712fd— feat(manifest.json): bump dependency versions (thestonefox)5c51eab— Merge pull request #2141 from ExtendRealityLtd/feat/bump-versions (thestonefox)c939c3d— feat(manifest.json): bump dependency versions (thestonefox)b6f7f81— Merge pull request #2140 from ExtendRealityLtd/feat/bump-packages (thestonefox)109065b— feat(manifest.json): bump packages to the latest version (thestonefox)172f402— Merge pull request #2138 from ExtendRealityLtd/feat/dep-bump (thestonefox)6444b4d— feat(manifest.json): bump project dependencies (thestonefox)
🔒Security observations
This is a Unity-based example project with minimal direct security risks. The codebase consists primarily of asset files (animations, materials, configurations) rather than executable code. Primary concerns are: (1) the use of an older Unity version (2020.3.24f1) which may have unpatched vulnerabilities, (2) lack of visible dependency lock files making supply chain reproducibility uncertain, (3) incomplete dependency documentation, and (4) missing security reporting policy. No hardcoded credentials, injection vulnerabilities, or exposed infrastructure configurations are evident in the provided file structure. The project's security posture would benefit from upgrading Unity to a current LTS version, implementing proper dependency management practices, and establishing clear security policies.
- Medium · Outdated Unity Version —
README.md and project configuration. The project specifies Unity 2020.3.24f1, which is an older LTS version. While this was a stable version at release, it may contain unpatched security vulnerabilities. The project acknowledges potential compatibility issues with newer versions but doesn't address security updates. Fix: Evaluate and upgrade to the latest stable Unity LTS version (2022 LTS or later). Review Unity's security advisories for the current version and apply patches regularly. - Medium · Missing Dependency Lock File —
Project root / Package management files. The provided dependency file content is empty. No lock file (package-lock.json, packages-lock.json, or similar) is visible in the file structure. This makes it impossible to verify that reproducible builds are using known-good versions of dependencies. Fix: Ensure a lock file is committed to version control. For Unity projects using UPM, verify package versions are pinned. Use manifest.json with exact versions for Tilia packages rather than version ranges. - Low · Incomplete Documentation of Dependencies —
README.md and documentation. The README mentions dependency on Tilia packages and notes the project uses newer XR management and Input systems, but there is no comprehensive list of all external dependencies with version numbers provided. Fix: Create a comprehensive DEPENDENCIES.md file listing all Tilia and Unity packages with exact versions, including any known security issues. Document which packages have been audited for security. - Low · Missing Security Policy —
.github directory. While the repository has CODE_OF_CONDUCT.md, CONTRIBUTING.md, and SUPPORT.md, there is no SECURITY.md file visible. This makes it unclear how security vulnerabilities should be reported. Fix: Create a SECURITY.md file documenting the responsible disclosure process for reporting security vulnerabilities. Include contact information and expected response timeframes.
LLM-derived; treat as a starting point, not a security audit.
👉Where to read next
- Open issues — current backlog
- Recent PRs — what's actively shipping
- Source on GitHub
Generated by RepoPilot. Verdict based on maintenance signals — see the live page for receipts. Re-run on a new commit to refresh.