Debugging Local Replay
PostHog/posthog
Debugs why session recordings aren't appearing in the local dev environment.
Add or locate LunCoSim assets under assets/: USD components, WGSL shaders, Modelica models, SysML requirements, or event-driven Rhai policies.
$ npx skills add LunCoSim/lunco-sim --skill use-asset-library -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install LunCoSim/lunco-sim use-asset-library --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/LunCoSim/lunco-sim.git skills-src && mkdir -p .claude/skills && cp -r skills-src/skills/use-asset-library .claude/skills/use-asset-library && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "use-asset-library" agent skill from https://github.com/LunCoSim/lunco-sim/tree/main/skills/use-asset-library into .claude/skills/use-asset-library/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "use-asset-library", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/LunCoSim/lunco-sim/tree/main/skills/use-asset-libraryType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add LunCoSim/lunco-sim --skill use-asset-library -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install LunCoSim/lunco-sim use-asset-library --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/LunCoSim/lunco-sim.git skills-src && mkdir -p .agents/skills && cp -r skills-src/skills/use-asset-library .agents/skills/use-asset-library && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "use-asset-library" agent skill from https://github.com/LunCoSim/lunco-sim/tree/main/skills/use-asset-library into .agents/skills/use-asset-library/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "use-asset-library", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add LunCoSim/lunco-sim --skill use-asset-library -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install LunCoSim/lunco-sim use-asset-library --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/LunCoSim/lunco-sim.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/skills/use-asset-library .cursor/skills/use-asset-library && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "use-asset-library" agent skill from https://github.com/LunCoSim/lunco-sim/tree/main/skills/use-asset-library into .cursor/skills/use-asset-library/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "use-asset-library", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/LunCoSim/lunco-sim.git --path skills/use-asset-library--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add LunCoSim/lunco-sim --skill use-asset-library -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install LunCoSim/lunco-sim use-asset-library --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/LunCoSim/lunco-sim.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/skills/use-asset-library .gemini/skills/use-asset-library && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "use-asset-library" agent skill from https://github.com/LunCoSim/lunco-sim/tree/main/skills/use-asset-library into .gemini/skills/use-asset-library/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "use-asset-library", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install LunCoSim/lunco-sim use-asset-libraryInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add LunCoSim/lunco-sim --skill use-asset-library -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/LunCoSim/lunco-sim.git skills-src && mkdir -p .github/skills && cp -r skills-src/skills/use-asset-library .github/skills/use-asset-library && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "use-asset-library" agent skill from https://github.com/LunCoSim/lunco-sim/tree/main/skills/use-asset-library into .github/skills/use-asset-library/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "use-asset-library", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add LunCoSim/lunco-sim --skill use-asset-library -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install LunCoSim/lunco-sim use-asset-library --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/LunCoSim/lunco-sim.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/skills/use-asset-library .opencode/skills/use-asset-library && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "use-asset-library" agent skill from https://github.com/LunCoSim/lunco-sim/tree/main/skills/use-asset-library into .opencode/skills/use-asset-library/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "use-asset-library", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
use-asset-libraryAdd or locate LunCoSim assets under assets/: USD components, WGSL shaders, Modelica models, SysML requirements, or event-driven Rhai policies.
Use Asset Library is an agent skill from LunCoSim/lunco-sim. Add or locate LunCoSim assets under assets/: USD components, WGSL shaders, Modelica models, SysML requirements, or event-driven Rhai policies. Use for discovery, spawn palette entries, lunco:// references, Twin-mounted assets, source programs, or web manifests. This skill owns placement and resolution; use author-usd-component for USD authoring and validate-assets for pre-flight.
Its SKILL.md is about 4.8k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.
It sits in Backend & APIs, covering Shaders and Event-driven systems. It works with Rust. The repository describes itself as: Collaborative Multiphysics Cosimulator For Space Missions 🌎🚀🌚. The licence is Apache-2.0.
3 steps, taken from the first numbered list in SKILL.md.
Read from SKILL.md and the folder at commit 43f1301. It shows what the files ask for, not the result of running them.
Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.
From allowed-tools in the SKILL.md frontmatter.
Shell commands in SKILL.md call:
cargoFrom the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md.
From URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Use Asset Library loads about 4.8k tokens when it runs. Until then it costs about 101 tokens; SKILL.md has 2,165 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check found no risky patterns in SKILL.md.
Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.
The full file from LunCoSim/lunco-sim at commit 43f1301, republished under its Apache-2.0 licence (© LunCoSim). 2,165 words, ~4,755 tokens.
.claude/skills/use-asset-library/SKILL.md (or your agent's skills folder).Almost everything in LunCoSim is an asset file, not a Rust type. A part, a
vehicle, a material, a subsystem's physics, a mission script — all of them are
files under assets/ that the engine discovers at runtime.
Rust ships parameterized behaviours; it never hardcodes a thing. If you are about to add a Rust struct for a specific rover, habitat, or shader, stop and add a file instead.
Related: author-usd-component (how to write
the .usda), build-vehicle (assemble parts),
build-usd-scene (assemble a scene),
author-scenario (rhai),
run-modelica (.mo),
validate-assets (pre-flight before you run).
Design: 56-asset-resolution-and-cache.md,
50-usd-driven-visuals.md.
The canonical human/AI map is assets/README.md.
Read it before adding a file; the filesystem is the runtime manifest and the
README defines the stable taxonomy.
| Folder | Holds |
|---|---|
assets/components/ | reusable part prims referenced into vessels — domain folders include avionics/, cameras/, comms/, environment/, gnc/, lights/, mobility/, mounting/, payload/, power/, terrain/, thermal/ |
assets/vessels/ | whole vehicles — rovers/, landers/, satellites/, balloons/, plus control_profiles.usda |
assets/structures/ | surface installations — habitat, mast, ISRU plant, landing pad |
assets/props/ | simple scene objects — ball, ramp, wall |
assets/scenes/ | loadable stages — base/, luncosim/, tests/, celestial/ |
assets/models/ | behaviour sources: .mo (Modelica); .py only when the optional Python backend is explicitly enabled |
| Twin-owned requirement roots | .sysml / .kerml source files declared and indexed by twin.toml |
assets/scenarios/ | .rhai bound as a LunCoProgramAPI source |
assets/scripting/ | importable rhai modules — lib/, prelude/, policy/, tools/ |
assets/shaders/ | .wgsl |
assets/celestial/, missions/, tutorials/, lighting/, config/ | global/application data |
For a generic human/AI assembly workflow, use the hot-reloadable
assets/scripting/tools/model_authoring.rhai facade. Keep its reusable reads,
plans, and checks generic; put Twin-specific recipes beside the Twin. Pair any
observable asset/linter regression with a USD fixture and Rhai scene observer
under assets/scenes/tests/ and assets/scenarios/tests/.
Environment facts are produced by a distinct
components/environment/probe.usda source prim. Never make a Modelica/Python
consumer declare gravity_accel or a direction-target triplet as its own
output and connect that output back to itself. EnvironmentProbe outputs use
<target-id>_mount_x/y/z; reusable Modelica consumers use the generic
target_mount_x/y/z inputs, and their wires choose which object supplies the
direction.
The engine-recognized source extensions are walked into the discovery manifest
(crates/lunco-assets-runtime/src/discovery.rs): .usda, .wgsl, .rhai, .mo,
.py, .sysml, .kerml. .mo (Modelica), .py (optional Python), and
SysML/KerML sources are catalogued both because a .usda/Twin names them and
so they can be browsed directly. Python is not the standard scenario backend;
Rhai is. The Scenarios menu groups registered source files by type.
Non-source data (.json, .toml) is not walked: it is read by a subsystem or
evaluated ad hoc, not browsed as an authored asset.
lunco:// schemelunco://<rel> = the runtime assets/<rel>, with that root's packed cache and
the shared cache after authored assets. The runtime root is selected by
the fallible lunco_assets_core::assets_dir_abs() from LUNCO_ASSET_ROOT when
set, otherwise executable/package ancestry before current-directory ancestry.
An invalid override or unresolved library stops admission with an error;
callers propagate that error instead of inventing a root. The asset owner
provides typed Bevy load addresses, preserving literal # and % filenames.
The complete read order comes from lunco_assets_core::library_roots() in
crates/lunco-assets-core/src/lib.rs.
twin://<assigned-mount>/<rel> is the same shape one level down: the Twin's authored
root, its <twin>/.cache, then the global cache. This lets Twins reuse a
global downloaded product without putting a machine path into USD.
Authored bytes always win over materialised ones. Schemes are registered in
crates/lunco-assets-runtime/src/asset_sources.rs; twin:// is stateful, it is not a
second texture scheme. Use the existing logical lunco:// or twin:// identity
for every delivered artifact. Canonical URI construction, separator normalization,
and traversal validation come from the dependency-free lunco-assets-path crate;
source roots and bytes are admitted by lunco-assets-runtime using the identity
and cache contracts from lunco-assets-core. For reopened Twins, use the
authority returned by the current mount, never reconstruct it from the
manifest name or retain an outgoing address. Follow the canonical
mount identity contract
for provenance and scenario synchronization. Verify replacement content through
the production app; resolver seam tests alone do not prove Bevy cache behavior.
Native USD payloads, texture inputs, and Rhai asset sources use the
typed native admission contract.
Pass the stage's actual AssetServer path and current TwinRoots to the asset
owner; keep its Result<AssetPath> through loading and attach labels separately.
Verify a valid native filename with URI characters and a rejected foreign or
retired mount through the production consumer; do not register an unrestricted
file: source or enable unapproved paths to make a fixture load.
Anything the cache fallback can serve is DECLARED in an Assets.toml and
downloaded only on request (Settings ▸ Downloadable data, the Twin Browser
Files section's Twin assets rows, or the lunco-assets CLI) — the engine never
fetches on its own, so an asset that is merely declared resolves to nothing
until someone asks for it. The browser rows are only a view of
lunco_assets_datasets::DatasetRegistry; they must emit its typed
request/cancel commands and never create a second downloader or parse cache
paths. The optional lunco-assets package composes native workers from
lunco-assets-transport, lunco-assets-download, and
lunco-assets-processing; consumers that only inspect declarations or state should depend on
lunco-assets-datasets.
All requesters use the download section of the one settings file owned by
lunco-settings. DownloadSettings.max_attempts includes the first request;
retry waits are exponential and capped. Native and browser fetches retain
received bytes and resume with HTTP Range when the origin supports it.
Callers must pass the shared settings resource through the existing asset/API
surface rather than adding a local retry loop or path.
A bare relative path is not "wrong" — it is resolved against the anchoring document's directory, keeping that document's scheme. That is why it bites:
# ✅ engine library — works no matter who mounts this file
prepend references = @lunco://components/mobility/wheel.usda@
prepend references = @lunco://components/power/battery.usda@
# ✅ a file sitting next to a Twin scene
uniform asset info:sourceAsset = @twin://my_mission/gnc.rhai@
# ⚠️ only legal when this file is itself inside assets/ AND never Twin-mounted
uniform asset info:sourceAsset = @scenarios/foo.rhai@
# ❌ always — `..` escapes the root and returns NotFound
prepend references = @../../components/mobility/wheel.usda@The active program contract is visible in the runtime status. A Modelica or
optional Python source with no declared inputs:/outputs: is reported as source-only;
it is not treated as a running participant. AttachProgram is the canonical
way to add the source and its explicit scalar contract. "My model does nothing"
should be diagnosed by checking CosimStatus and GetBrokenConnections, not by
assuming a hidden fallback. The production scene-test catalog reports read and
parse status for every discovered .usd* asset, and the sandbox smoke
scenario asserts that shipped USD sources are readable and parseable. Only
validate-assets catches a broken references
arc before you launch.
Rhai
importuses the same canonical asset identity as USD. Use a logicallunco://…ortwin://…URI, an assets-root/…path, or a path relative to the importing script.RhaiSourceLoaderloads every literal import as a Bevy dependency; unused scripts are not preloaded.
The source asset owner qualifies default Bevy paths as lunco:// before it
publishes source text or prepared ASTs. Scenario roots, imports, and unloads use
the same canonical identity; Twin paths retain twin://. Consumers commit the
complete loaded import graph before binding or starting a source because Bevy
can report graph readiness before its Added messages are consumed.
Write one file = one spawnable thing. The full authoring reference is
author-usd-component; the library rules
are:
#usda 1.0
( defaultPrim = "Widget" # ← lunco:spawnable is ONLY read here
upAxis = "Y" metersPerUnit = 1.0
doc = """What this is." """ )
def Xform "Widget" ( kind = "component" prepend apiSchemas = ["LunCoCatalogAPI"] )
{
uniform bool lunco:spawnable = true
}How it reaches the palette (crates/lunco-scene-catalog/src/catalog.rs):
| Palette field | Derived from |
|---|---|
id | the file stem |
display_name | stem Title-cased (splits _ and -) |
category | the immediate parent folder, Title-cased |
| description | the stage's doc metadata |
So components/power/solar_panel.usda lands under "Power" — not
"Components". A file with no parent folder lands in "Other". Nothing is
hardcoded; moving the file changes its category.
lunco:spawnable defaults to false — it is opt-in.defaultPrim. On any other prim the palette never
sees it (child lunco:spawnable is a different feature — subpart selection).CATALOG: … unreadable.RescanSpawnCatalog — the scan
caches per asset. Adding a new file is picked up automatically on native
(the filesystem is the manifest)..wgsl)Drop it in assets/shaders/. It is walked into the manifest and registered into
the ShaderCatalog automatically (RescanShaders to re-read edits). Bind it
directly on the gprim:
uniform asset info:wgsl:sourceAsset = @lunco://shaders/rover_hull.wgsl@The tunable surface is reflected from a struct Material at
@group(2) @binding(0), annotated with //!@ comments
(crates/lunco-materials/src/dyn_params.rs). There are exactly three
directives — there is no //!@param:
struct Material {
//!@engine display_color
display_color: vec3<f32>,
//!@ui 0.0 1.0 "Wear"
wear: f32,
//!@default albedo 0.17,0.17,0.17
//!@ui color "Accent"
accent_color: vec3<f32>,
}| Directive | Effect |
|---|---|
//!@engine <name> | the engine fills this uniform — see the registry below |
//!@ui <name> [args] "Label" | color / int min max / min max (slider) / else free |
//!@default <name> <v>[,<v>…] | packed value when nothing else supplies one |
crates/lunco-materials/src/engine_params.rs is the provider registry — a
process-wide OnceLock, so the validator, the prop picker and the renderer all
read the same list.
//!@engine name | Filled from | Usable on a prop? |
|---|---|---|
display_color | the prim's composed primvars:displayColor element 0 | ✅ |
sun_vis | horizon ray-march visibility | ✅ |
sun_dir, sun_dir_world, sun_tan_radius | sun direction / angular radius | ❌ |
hf_size, hf_res, csm_far, shadow_cache_on | terrain heightfield + shadow state | ❌ |
The colour contract: author primvars:displayColor, the shader consumes it.
color3f[] primvars:displayColor = [(0.30, 0.72, 0.35)] # ARRAY, linearOne authored attribute, in the standard USD place, whether the part renders
through plain PBR or through WGSL. An authored inputs:<name> on the bound
Shader always wins over the engine fill — but authoring inputs:display_color
hides the colour from every other tool that reads USD, so use inputs: only for
what displayColor cannot express (accents, panel scale, wear, dust).
A shader using any ❌ param is refused by the prop material picker (it would
render black on a rover part) but still works as a scene shader — that is exactly
the not prop-pickable warning from
validate-assets. An unregistered //!@engine
name warns and packs to its //!@default (or zero) — nothing fills it.
.mo)For an acausal physical domain, author component class/nameplate facts and connector topology in USD. The runtime projector compiles each connected island into one Modelica model; never bind one solver program per electrical part.
Three gates, each of which silently does nothing when unmet:
.mo → Modelica,
.py → Python, .rhai → Rhai.inputs:/outputs: ⇒ never stepped. The cosimulation projector requires at least
one port-prefixed attribute. A model with no ports is a documentation-only
reference.realtimeSafe defaults to false, and the wiring pass then refuses the
prim a force/torque port on a client-predicted body. Author it true when
the program drives a force.And sourceAsset must be typed asset, never string — only an asset is
visible to the resolver, the reference closure, and packaging.
Write it branch-free. rumoca's solver path has no if/when in equations —
express clamps as der(x) = expr with max()/min().
validate-assets enforces this as an error;
assets/models/LunCo/Electrical/Battery.mo plus the reusable rover electrical
assemblies are the worked examples. Rhai is event and mission glue only;
production scenarios must not define on_tick. Authored tests may use it for
bounded state sampling and verdicts. Keep equations in Modelica and ordinary
progression in task/events.
Native runtime walks the filesystem, so adding a file needs no step at all.
The web build has no filesystem: it fetches assets/manifest.json
(crates/lunco-assets-runtime/src/discovery.rs). After adding or removing any catalogued source
(.usda/.wgsl/.rhai/.mo):
./scripts/build_web.sh build luncosimwhich rsyncs assets/ into dist/ and runs
cargo run -p lunco-assets --bin build_asset_manifest -- <dist>/assets
(scripts/build_web.sh). That generator calls the same
discovery::scan_library the native runtime uses, so the two cannot drift.
There is no standalone regenerate command.
Binary runtime assets are staged by the manifest-declared bundle target as part
of the same build. Add or change the bundle field on the authoritative
Assets.toml entry, then rebuild; do not add a second shell list. The staging
command validates the declared raw/processed artifact before copying it, so a
missing or incomplete asset fails the build instead of becoming a browser 404.
Bundle-qualified keys are for log identity; temporary download files use an
opaque process/attempt name, so adding a grouped asset never creates a
platform-dependent cache subdirectory.
"$LUNCOSIM_BIN" --validate assets/vessels/rovers/my_rover.usdaSeconds, no GPU, no app. Composes the whole reference closure — so it catches
the broken @lunco://…@ that would otherwise be a mystery at load — and runs the
strict wheel reader. See validate-assets.
USD composition is owned by lunco-usd-compose: lunco-assets-core supplies
canonical IDs and traversal-safe roots, while lunco-assets-runtime supplies
source bytes; composition interprets USD arcs into an
inert stage. Modelica, Rhai, behavior trees, physics, and rendering bind later
in their own layers. A tutorial only projects metadata from that stage.
@lunco://…@.@../../…@ anywhere — .. escapes the root and returns NotFound. There
are zero such refs in the tree; keep it that way.import — dependencies must be known while the
asset is loading, so the loader rejects it visibly.lunco:spawnable on a prim that is not the stage defaultPrim — invisible
to the palette.LunCoProgramAPI with no inputs:/outputs: and expecting it to run.info:sourceAsset typed string — must be asset.if/when in a .mo equation section — rumoca is branch-free.inputs:display_color instead of primvars:displayColor — it
works, and it hides the colour from every other USD consumer.build_web.sh.© LunCoSim, Apache-2.0. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
Just SKILL.md in skills/use-asset-library of LunCoSim/lunco-sim.
Open the folder on GitHubat commit 43f1301
Use Asset Library next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Use Asset Library this skillLunCoSim/lunco-sim | 107 | — | ~4.8k | Automated safety check: Pass | Apache-2.0 | |
| Debugging Local ReplayPostHog/posthog | 40k | — | ~1.9k | Automated safety check: Pass | Custom licence | |
| Monitoring Capture ServicePostHog/posthog | 40k | — | ~5k | Automated safety check: Pass | Custom licence | |
| Materialsarjun988/blender-skills | 283 | — | ~955 | Automated safety check: Pass | MIT | |
| Makepad Skillsaiskillstore/marketplace | 433 | 5 repos | ~198 | Automated safety check: Pass | None | |
| Stripe Projectsfossasia/eventyay | 1.7k | 5 repos | ~2k | Automated safety check: Notes | Apache-2.0 |
PostHog/posthog
Debugs why session recordings aren't appearing in the local dev environment.
PostHog/posthog
Guide for using the Grafana MCP to monitor and diagnose the capture service (rust/capture) in production.
arjun988/blender-skills
Blender PBR and stylized material creation for metal, wood, concrete, fabric, glass, dirt, rust, and procedural shaders.
aiskillstore/marketplace
Makepad UI development skills for Rust apps: setup, patterns, shaders, packaging, and troubleshooting.
fossasia/eventyay
A skill your agent uses when the user wants to provision infrastructure or third-party services using Stripe Projects.
emqx/MQTTX
Operates the `mqttx` command line client to connect, publish, subscribe, benchmark and simulate data against an MQTT broker, with TLS and MQTT 5 support.
LunCoSim/lunco-sim
Generate concise LunCoSim nightly GitHub release notes with platform downloads, installation guidance, an AI-agent mission prompt, and a changelog link.
LunCoSim/lunco-sim
Build or repair a reusable scene component through a live LunCoSim Editor session.
LunCoSim/lunco-sim
Build or review a componentized LunCoSim USD assembly with a realistic, dimensionally checkable presentation.
LunCoSim/lunco-sim
Author and review LunCoSim behavioral, asset-backed, component, mission, visual, and requirements-verification tests.
LunCoSim/lunco-sim
Create, extend, register, or debug a reusable LunCoSim Rhai tool library for live USD authoring, component linting, inspection, or test support.
LunCoSim/lunco-sim
Author an interactive tutorial, guided lesson, onboarding flow, coach-mark tour, or objectives checklist in LunCoSim.
Works with
Categories
Add or locate LunCoSim assets under assets/: USD components, WGSL shaders, Modelica models, SysML requirements, or event-driven Rhai policies. Use Asset Library is an agent skill from LunCoSim/lunco-sim. Add or locate LunCoSim assets under assets/: USD components, WGSL shaders, Modelica models, SysML requirements, or event-driven Rhai policies.
Use Asset Library fits situations like: spawn palette entries; lunco:// references; twin-mounted assets; source programs.
Run `npx skills add LunCoSim/lunco-sim --skill use-asset-library -a claude-code`. Or copy the skill folder (skills/use-asset-library in LunCoSim/lunco-sim) into .claude/skills/use-asset-library in your project. Claude Code loads it when a task matches its description.
Run `npx skills add LunCoSim/lunco-sim --skill use-asset-library -a codex`. Or copy the skill folder (skills/use-asset-library in LunCoSim/lunco-sim) into .agents/skills/use-asset-library in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add LunCoSim/lunco-sim --skill use-asset-library -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/use-asset-library, .gemini/skills/use-asset-library, .github/skills/use-asset-library and .opencode/skills/use-asset-library in your project.
Going by SKILL.md and its folder, Use Asset Library needs the command-line tools its instructions call (cargo). Our summary lists: Python 3.
SKILL.md contains no URLs. Any network use would come from the scripts or tools the agent runs. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.
Use Asset Library is published under the Apache-2.0 licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 4.8k tokens (SKILL.md is roughly 19k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.
Skills that share tags, products or a category with Use Asset Library: Debugging Local Replay (PostHog/posthog, 40k stars), Monitoring Capture Service (PostHog/posthog, 40k stars), Materials (arjun988/blender-skills, 283 stars) and Makepad Skills (aiskillstore/marketplace, 433 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
LunCoSim (a GitHub organization) maintains it in LunCoSim/lunco-sim, which has 107 GitHub stars. The repository holds 40 skills in this directory. The repository was last updated on October 10, 2026.
Source: LunCoSim/lunco-sim on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.