Getting it into your agent
One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.
npx skills add akaieuan/Hologram --skill pose-authoringgit clone --depth 1 https://github.com/akaieuan/HologramWrote this? Show the measurements
A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.
[](https://agentmods.dev/skills/akaieuan/hologram/pose-authoring)<a href="https://agentmods.dev/skills/akaieuan/hologram/pose-authoring"><img src="https://agentmods.dev/badge/skills/akaieuan/hologram/pose-authoring/github.svg" alt="Measured on agentmods" height="20"></a>Or the 80×15 button, for a site that already has a row of RSS and ATOM ones. Only the verdict fits; the numbers stay here.
<a href="https://agentmods.dev/skills/akaieuan/hologram/pose-authoring"><img src="https://agentmods.dev/badge/skills/akaieuan/hologram/pose-authoring.svg" alt="Reviewed on agentmods" width="80" height="20"></a>What it costs to keep this loaded
Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.
| Model | Per session | Once invoked |
|---|---|---|
| Fable 5.1 | $0.00086 | $0.01121 |
| Opus 5 | $0.00043 | $0.00561 |
| Sonnet 5 | $0.00017 | $0.00224 |
| Haiku 4.5 | $0.00009 | $0.00112 |
Grade A, and why
Author a pose via IK and bake scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 12d ago.
A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.
Nothing flagged
None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.
How it starts
The opening of the file, as written. The whole thing — 76 lines — stays where its author put it; the contents beside it link to each section on GitHub.
Author a pose via IK + bake
The contract this workflow enforces: authoring solves IK, runtime never does. A pose is solved once in Blender, baked to plain FK rotations, and stored as data the runtime replays. Runtime IK is a per-frame solver fighting your animation blend; baked FK is a lookup.
Works over a live Blender session when a Blender MCP is connected (probe it
first — e.g. a get_scene_info-style tool); otherwise write the same steps as
a headless bpy script the user runs with blender --background --python.
Preconditions
- A rigged character GLB and an item GLB whose grip points are marked with
Socket_*empties (e.g.Socket_Gripfor the primary hand,Socket_Foregripfor the support hand). No sockets → author them first (/hologram:glb-standards). - A pose registry in the project — wherever this project persists authored poses
(a Python dict module, JSON file, or similar that its export scripts read).
If none exists, propose one: a
POSES = {name: {bone: {"rotation_euler": (x, y, z)}}}module the export script iterates. - The pose name must be new; overwriting an existing pose needs explicit user approval.
Workflow
- Snapshot the scene. Record existing object/action/collection names so cleanup can remove exactly what this run adds. The live scene is a sandbox — the only persistent outputs are the registry entry and the re-export.
- Import into a fresh collection (fail if a previous run's collection is
still there). Import the character, then the item; parent the item to the
hand bone (
parent_type = "BONE",matrix_parent_inversefrom the inverted world @ pose-bone matrix) so it rides the rig exactly as it will at runtime. - Place IK targets at the sockets. One empty per involved hand, positioned
with the socket's
matrix_world. Two-handed items: primary hand →Socket_Grip, support hand →Socket_Foregrip. One-handed: primary only. - Constrain the hand bones. An IK constraint per involved hand, targeting
its empty,
chain_count = 3(hand → forearm → upper arm). Optional pre-pose before solving (e.g. dip the neck for an aim stance). - Screenshot and get approval. Show the solve; accept nudges to the IK targets ("move the left target up 2cm") and re-screenshot until the user approves or cancels. Cancel → cleanup, write nothing.
- Bake. First force full keying — Blender 5.2's "Only Insert Needed"
preference silently skips redundant keys and melts hold poses:
bpy.context.preferences.edit.use_keyframe_insert_needed = False. Thenbpy.ops.nla.bake(frame_start=0, frame_end=2, only_selected=True, visual_keying=True, clear_constraints=True, bake_types={"POSE"}). - Read the resolved rotations. For every bone the bake keyed, take
pose_bone.matrix_basis.to_euler("XYZ")in degrees, rounded to 2 decimals (sub-centidegree differences are imperceptible and the diff stays readable). Pick ONE Euler order and use it everywhere — mixing orders corrupts poses. - Persist to the registry in the project's existing format, with a comment header (what, why, authoring date). Then clean up: delete the run's collection, its objects, and the temporary baked action.
- Re-export the character through the project's export path so the pose ships in the GLB, then tell the user how to verify (equip the item; the pose should match the approved screenshot).
What this file has done since we first saw it
Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.
- 12d ago First seen · 76 lines · 86 tokens per session scan A d5b237034178
Author a pose via IK and bake is a skill published in the GitHub repository akaieuan/Hologram (2 stars, last pushed 1mo ago), licensed MIT. It adds 86 tokens to every session and 1,121 once invoked, about $0.0004 per session on Opus 5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-31.
Other skills, from other repositories
3d_scene
Choose how to build a 3dscene asset. Do not default to one pipeline for every task: what the user specified about the scene's appearance matters more than the scene type, and generative reconstruction is the least stable route here.
audio
Use this Skill when a game plan requires dialogue, voice lines, sound effects, foley, ambience, or other offline WAV assets. This is asset generation, not a runtime audio-playback contract; use the selected engine context after an asset has passed review.
image
Use this Skill when a game plan needs a single-subject concept image, a character reference cleaned for image-to-3D, or a front-facing transparent T-pose image for downstream character reconstruction. T-pose generation is an image-generation and image-editing task; it is not a separate asset category.
game-cg-director
Convert game CG intent and optional media references into validated, model-specific directing envelopes for opening, cutscene, ultimate, or promo clips. Use for standalone CG prompt direction or as a child capability of a game-generation Harness. Supports T2VA/text-only, I2VA/first-frame image…
blender-director
Use when starting any Blender asset task, planning a production pipeline, coordinating multiple disciplines, or matching a reference photo/concept art. Invoke for game-ready assets, hard surface, environment, character, creature, export, or any multi-skill Blender workflow.
environment-artist
AAA environment art for modular kits, buildings, terrain, vegetation, architecture, and scene composition. Use for game-optimized environments, storytelling through space, and modular asset pipelines in Blender via MCP.