asset-pipeline
Skill179 starsChanged 13 days agoApache-2.0View on GitHub
Asset manifests, hash verification, and boot-time resolution for Capsem VM images. Use when debugging boot failures, manifest issues, or hash mismatches.
6 other projects use a version of this.
Adopted by
Most recently taken up by
- Arnie016/universal-modder-mactheir own version, first seen Nov 1, 2026
- AhmedTahaAtiya/universal-modder-unrestrictedtheir own version, first seen Oct 11, 2026
- Fixed-Seed/game-changertheir own version, first seen Oct 11, 2026
- levy-street/world-of-claudecrafttheir own version, first seen Oct 8, 2026
- rehan-remade/universal-moddertheir own version, first seen Sep 30, 2026
- INERATE/ateliertheir own version, first seen Sep 22, 2026
Used with
Projects with it also use game-automation, game-recon and 7 more.
Other files people use alongside this one.
Files found in the same public projects as a version of this one, more often than they turn up anywhere else. Each project counts once, large collections count for less, and this file's own repository is left out.
rehan-remadeSkillgame-automation
Launch, see and drive a real game so an agent can test its own mods. Covers launching via Steam or the exe, windowed mode at a fixed size, screenshots of the game window (GPU-safe capture), clicking and typing into menus, holding keys, relative mouse, crash-reporter cleanup, killing by PID, reading logs, scripted test scenes, and an in-game JSON bridge that lets an agent observe and act. Windows-first (also from WSL), with notes for Linux and macOS. Use when a mod must be verified in game, when navigating menus automatically, or when building a repeatable test or demo scene.
Also in 4 projects that use this
rehan-remadeSkillgame-recon
Figure out how a specific installed game can be modded, before writing any mod code. Covers where it's installed, the engine and version, managed vs native code, anti-cheat, loaders already present, save and config folders, and the community's modding route. Also whether this machine can run it (a Windows game on macOS or Linux, x64 on ARM). Use when the user asks "can I mod <game>?", "what engine is <game>", "how do people mod <game>", or at the start of any modding task. Produces MODDING_PLAN.md.
Also in 4 projects that use this
SamuelFerfortSkillshowcase-video
Make polished motion-design product videos (launch, promo, showcase, teaser, demo reel) entirely in code. Scenes are frame-exact HTML rendered with headless Chromium and ffmpeg, with an original synthesized soundtrack and SFX synced to one timeline. It researches reference launch videos and the real product's UI and brand, then proposes distinct concepts rooted in that product. The user approves one plan (storyboard and assets). After that it produces autonomously in a build → review → fix loop, with an independent reviewer and automated QA, until the video passes. Use it whenever someone asks for a promo, launch, showcase, explainer or motion-design video, an animated demo of their app or SaaS, "un vídeo promocional / de lanzamiento", or to fix or iterate on one of these videos, even if they never say "motion design".
Also in 4 projects that use this
QiuChenlySkillreverse-engineering
专业二进制逆向工程分析技能。使用IDA Pro MCP工具分析二进制文件、反编译代码、识别漏洞、理解程序逻辑。当用户要求分析可执行文件、反汇编、逆向工程、漏洞挖掘、恶意软件分析时使用此技能。
Also in 4 projects that use this
- +5 more from rehan-remade
Other versions6 projects use a version of this.
Word for word · 0
None found.
Edited · 0
None found.
Wrote their own version · 6
- rehan-remade/universal-modder★ 9.5ksame name
- levy-street/world-of-claudecraft★ 2.3ksame name
- AhmedTahaAtiya/universal-modder-unrestricted★ 23same name
- Fixed-Seed/game-changer★ 8same name
- INERATE/atelier★ 2same name
- Arnie016/universal-modder-mac★ 0same name
How matches are found. Word for word: the exact same text. Edited: shares passages with this file (“99% same” means 99% of its five-word phrases also appear here; 10% or more counts). Their own version: similar meaning, or, weakest, the same name. We can’t tell which project had it first. Projects are counted among the 200 most-starred candidates, and mentions are links to the repository we found, up to 50 per site, so both counts are a floor.
In this repository37 other files it gives its agents.
- AGENTS.mdAGENTS.md
- build-imagesSkill
- build-initrdSkill
- citadelSkill
- dev-benchmarkSkill
- dev-bug-reviewSkill
- dev-cacheSkill
- dev-capsem-doctorSkill
- dev-capsemSkill
- dev-ciSkill
- dev-debuggingSkill
- dev-gateSkill
- dev-installationSkill
- dev-justSkill
- dev-mcpSkill
- dev-mitm-proxySkill
- dev-rust-patternsSkill
- dev-session-debugSkill
- dev-setupSkill
- dev-skillsSkill
- dev-sprintSkill
- dev-startSkill
- dev-testing-frontendSkill
- dev-testing-hypervisorSkill
- dev-testing-pythonSkill
- dev-testingSkill
- dev-testing-vmSkill
- frontend-designSkill
- ironbankSkill
- meta-find-skillsSkill
- meta-organize-skillsSkill
- meta-skill-creationSkill
- release-processSkill
- site-architectureSkill
- site-infraSkill
- site-marketingSkill
- use-capsemSkill
The file
We split this skill into the rules it gives an agent
3 rules. 0 are common, 0 are distinctive, and 3 are very specific to this project.
0
Common
Most of the 6 edited versions we read keep these.
0
Distinctive
This author's own choices. Worth a look.
3
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Very specific: line 12
Read references/manifest-and-storage.md before changing the v2 manifest schema, digest generation or enrichment, corporate/local manifest …
- Very specific: line 15
Read references/release-channel-publication.md before changing channel graph generation, binary/runtime publication, channel switching, …
- Very specific: line 126
Hashes silently skipped: If build.rs can't extract hashes (manifest missing, wrong format), option_env!() returns None and verification is …
“Common” is measured: kept by at least 6 in 10 of the 6 edited versions of this file we could read. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
Asset Pipeline
How VM assets (kernel, initrd, rootfs) are built, checksummed, resolved, and verified at boot.
Reference routing
- Read
references/manifest-and-storage.mdbefore changing the v2 manifest schema, digest generation or enrichment, corporate/local manifest inputs, installed asset layout, package manifest metadata, or cache naming. - Read
references/release-channel-publication.mdbefore changing channel graph generation, binary/runtime publication, channel switching, deployment, Cloudflare readiness, evidence or attestation checks, or cache headers.
Manifest Authority
The selected manifest is the bible: if an artifact is not in that manifest, it does not exist for the release, update, cache, or boot path. Never infer membership from a cache directory, release attachment, filename, channel name, or prior run. Fetch mutable manifests fresh. Cache only immutable artifact bytes, address each cache entry directly by the digest recorded in the manifest, and re-verify that digest before every use. Artifact cache identity is channel-independent; the manifest decides which digest set belongs to a channel at that moment.
For published application EROFS roots, keep the verified file descriptor through
kernel loop setup. mount -o loop /proc/self/fd/N canonicalizes the name and
reopens it; a read-only VirtioFS share can deny that second open even while the
verified descriptor remains readable. The guest launcher uses LOOP_CONFIGURE
with that descriptor, read-only and auto-clear flags, and a read-only loop handle
held through unmount. A writable loop handle conflicts with exclusive mounting.
tests/fixtures/oci/test_launch_loop.py guards descriptor identity and cleanup;
the saved-session Ironbank test proves create, reopen, preserved state and resize.
Versioning
Binary and asset versions are independent:
- Binary:
1.3.{unix_timestamp}on the current release line -- changes every build - Assets:
YYYY.MMDD.patch-- changes only on kernel/rootfs/initrd rebuilds
The manifest tracks both with compatibility ranges (min_binary, min_assets).
Runtime asset selection enforces both directions: older binaries do not hydrate
asset releases whose min_binary requires a newer binary, and new
session/download selection skips releases marked deprecated: true.
Key Commands
| Command | When to use |
just _build-assets | Full rebuild: kernel + rootfs + checksums (slow, needs docker) |
just shell | Daily driver: repack initrd, build, sign, boot (~10s) |
just shell "capsem-doctor" | Verify VM boots correctly after changes |
On macOS, just _build-assets, just _pack-initrd, and any Docker-backed
asset recipe depend on Colima. If Docker cannot connect but Colima appears to
be running, follow /dev-setup's Colima recovery discipline before treating
the asset build as blocked: check colima list, docker version, and
colima ssh -- docker ps; then try colima stop && colima start once and
rerun the failing recipe.
File Locations
| What | Where |
| Runtime source config | config/docker/image/ |
| Guest artifacts | guest/artifacts/ |
| Built assets (dev) | cache/target/assets/{arch}/vmlinuz, initrd.img, rootfs.erofs |
| Installed assets | ~/.capsem/assets/{name}-{hash16}.{ext} (flat, hash-based) |
| Manifest | cache/target/assets/manifest.json |
| Asset channel deploy root | cache/target/release/distribution/ |
| Asset channel manifest | cache/target/release/distribution/assets/<channel>/manifest.json |
| Asset channel human site | build_system/release_site/ Astro app, built from cache/target/release/distribution/ JSON |
| Checksums | cache/target/assets/B3SUMS |
| Manifest generator | capsem-admin manifest generate <assets_dir> |
| Asset types + cleanup | crates/capsem-core/src/asset_manager.rs |
| Hash extraction for build.rs | crates/capsem-core/src/manifest_compat.rs |
Boot-Time Resolution
- Dev mode: Service detects arch subdirs, passes
--kernel cache/target/assets/{arch}/vmlinuzetc. to capsem-process - Installed mode: Service reads v2 manifest, resolves
ManifestV2::resolve(binary_version, arch, base_dir)to get hash-based file paths, passes--kernel,--initrd,--rootfsindividually to capsem-process - Hash check at boot:
VmConfig::builder().build()verifies BLAKE3 against compile-time hashes if available
Cleanup
cleanup_unused_assets(base_dir, manifest) removes hash-named files not referenced by any non-deprecated asset release. Also removes legacy v*/ directories.
Existing VM pins are preserved by the VM pinning rail; deprecation blocks new
selection rather than rewriting running VMs.
Persistent resume boots the registry entry's own asset pins, never the current runtime set. A runtime image advance and a deprecated pin preserve the VM; an explicit installed-manifest revocation, a missing pinned asset, invalid rootfs geometry, or a registry entry from before profiles were removed blocks it. The active policy is re-materialized from current settings and corp config at every boot. Any cached resume verdict must fingerprint the installed manifest, rootfs metadata, and pinned asset metadata so a revocation or repair is visible immediately.
Common Issues
Hash mismatch at boot: Assets on disk don't match the hashes baked into the binary. Fix: just shell (repacks initrd, regenerates manifest, touches build.rs to force recompile).
Hash mismatch where expected and actual look identical: the two values differ
only by an algorithm tag. Digests reach boot in two spellings — asset manifests
carry bare hex, release-graph digests and the runtime pins derived from them
carry blake3:<hex>.
VmConfigBuilder::verify_hash resolves both, in the one place that decides what
an expected hash means, and refuses a non-blake3 algorithm outright rather than
letting a sha256: pin masquerade as corruption it can never match. Do not add
a second reconciliation at a call site.
Log pins in full, never truncated. A 16-character slice renders both
spellings as plausible prefixes (blake3:de1d58193 looks like a hash), so a
truncated audit line hides exactly the mismatch it exists to catch.
Boot verifies the booting runtime's pins. The caller passes
expected_asset_hashes for the runtime image set it is starting; nothing
infers them from a cache directory or channel name. Absent is a hard error,
not permission to boot unverified.
Hashes silently skipped: If build.rs can't extract hashes (manifest missing, wrong format), option_env!() returns None and verification is skipped.
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

