Pixijs
RSamaium/CanvasEngine
Use this skill first for ANY PixiJS v8 task; it routes to the right specialized skill for the job.
ALWAYS use when porting an existing D3D12 engine or renderer to AGFX — translating ID3D12Device/CommandList/PipelineState/RootSignature/DescriptorHeap code to…
$ npx skills add AmelieHeinrich/agfx --skill agfx-porting-from-d3d12 -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install AmelieHeinrich/agfx agfx-porting-from-d3d12 --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/AmelieHeinrich/agfx.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.claude/skills/agfx-porting-from-d3d12 .claude/skills/agfx-porting-from-d3d12 && 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 "agfx-porting-from-d3d12" agent skill from https://github.com/AmelieHeinrich/agfx/tree/main/.claude/skills/agfx-porting-from-d3d12 into .claude/skills/agfx-porting-from-d3d12/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "agfx-porting-from-d3d12", 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/AmelieHeinrich/agfx/tree/main/.claude/skills/agfx-porting-from-d3d12Type 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 AmelieHeinrich/agfx --skill agfx-porting-from-d3d12 -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install AmelieHeinrich/agfx agfx-porting-from-d3d12 --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/AmelieHeinrich/agfx.git skills-src && mkdir -p .agents/skills && cp -r skills-src/.claude/skills/agfx-porting-from-d3d12 .agents/skills/agfx-porting-from-d3d12 && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "agfx-porting-from-d3d12" agent skill from https://github.com/AmelieHeinrich/agfx/tree/main/.claude/skills/agfx-porting-from-d3d12 into .agents/skills/agfx-porting-from-d3d12/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "agfx-porting-from-d3d12", 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 AmelieHeinrich/agfx --skill agfx-porting-from-d3d12 -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install AmelieHeinrich/agfx agfx-porting-from-d3d12 --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/AmelieHeinrich/agfx.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/.claude/skills/agfx-porting-from-d3d12 .cursor/skills/agfx-porting-from-d3d12 && 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 "agfx-porting-from-d3d12" agent skill from https://github.com/AmelieHeinrich/agfx/tree/main/.claude/skills/agfx-porting-from-d3d12 into .cursor/skills/agfx-porting-from-d3d12/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "agfx-porting-from-d3d12", 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/AmelieHeinrich/agfx.git --path .claude/skills/agfx-porting-from-d3d12--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 AmelieHeinrich/agfx --skill agfx-porting-from-d3d12 -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install AmelieHeinrich/agfx agfx-porting-from-d3d12 --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/AmelieHeinrich/agfx.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/.claude/skills/agfx-porting-from-d3d12 .gemini/skills/agfx-porting-from-d3d12 && 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 "agfx-porting-from-d3d12" agent skill from https://github.com/AmelieHeinrich/agfx/tree/main/.claude/skills/agfx-porting-from-d3d12 into .gemini/skills/agfx-porting-from-d3d12/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "agfx-porting-from-d3d12", 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 AmelieHeinrich/agfx agfx-porting-from-d3d12Installs 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 AmelieHeinrich/agfx --skill agfx-porting-from-d3d12 -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/AmelieHeinrich/agfx.git skills-src && mkdir -p .github/skills && cp -r skills-src/.claude/skills/agfx-porting-from-d3d12 .github/skills/agfx-porting-from-d3d12 && 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 "agfx-porting-from-d3d12" agent skill from https://github.com/AmelieHeinrich/agfx/tree/main/.claude/skills/agfx-porting-from-d3d12 into .github/skills/agfx-porting-from-d3d12/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "agfx-porting-from-d3d12", 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 AmelieHeinrich/agfx --skill agfx-porting-from-d3d12 -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install AmelieHeinrich/agfx agfx-porting-from-d3d12 --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/AmelieHeinrich/agfx.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/.claude/skills/agfx-porting-from-d3d12 .opencode/skills/agfx-porting-from-d3d12 && 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 "agfx-porting-from-d3d12" agent skill from https://github.com/AmelieHeinrich/agfx/tree/main/.claude/skills/agfx-porting-from-d3d12 into .opencode/skills/agfx-porting-from-d3d12/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "agfx-porting-from-d3d12", 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.
agfx-porting-from-d3d12ALWAYS use when porting an existing D3D12 engine or renderer to AGFX — translating ID3D12Device/CommandList/PipelineState/RootSignature/DescriptorHeap code to…
Agfx Porting From D3d12 is an agent skill from AmelieHeinrich/agfx. ALWAYS use when porting an existing D3D12 engine or renderer to AGFX — translating ID3D12Device/CommandList/PipelineState/RootSignature/DescriptorHeap code to agfxDevice/agfxCommandBuffer/agfxRenderPipeline calls, converting HLSL from a D3D12 root-signature binding model to AGFX bindless, or mapping D3D12 concepts (fences, resource states, swap chain, descriptor heaps) onto their AGFX equivalents. Trigger on ID3D12, D3D12, root signature, descriptor heap/table, CreateCommittedResource, ResourceBarrier…
Its SKILL.md is about 3.4k 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 Game Development, covering Shaders and Translation. The licence is MIT.
7 steps, taken from the first numbered list in SKILL.md.
Read from SKILL.md and the folder at commit d8ad38b. 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.
No scripts in the folder and no shell commands in SKILL.md (its code samples are cpp).
From 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.
Agfx Porting From D3d12 loads about 3.4k tokens when it runs. Until then it costs about 218 tokens; SKILL.md has 1,381 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 AmelieHeinrich/agfx at commit d8ad38b, republished under its MIT licence (© AmelieHeinrich). 1,381 words, ~3,358 tokens.
.claude/skills/agfx-porting-from-d3d12/SKILL.md (or your agent's skills folder).AGFX is a thin (<10k LOC) bindless-first wrapper over D3D12, Metal 4, and Vulkan. Porting a D3D12 engine to it is mostly a simplification: AGFX collapses root signatures, descriptor tables, and per-draw descriptor binding into one bindless model (ResourceHandle + ResourceDescriptorHeap), so a lot of D3D12 binding machinery is deleted outright rather than translated. The parts that do translate 1:1 are resource creation, command recording, barriers, and pipeline state.
This skill is the index into the subsystem skills — read it first to get the map, then dispatch into the specific skill for the subsystem you're touching:
agfx-presentation-and-swapchain — swap chain / back bufferagfx-render-targets-and-passes — render targets, render passes, drawsagfx-synchronization — fences, barriers, frame pacingagfx-writing-bindless-shaders — HLSL shader changes (root signature → bindless)agfx-raytracing — acceleration structures, inline RayQuery (replaces DXR)agfx-mdi — indirect bundles (replaces ExecuteIndirect + command signatures)Owns:
SetGraphicsRootDescriptorTable calls) vs. what gets translatedDoesn't own:
agfx/agfx_metal4.mm and agfx/agfx_vulkan.cpp, useful only as curiosities, not something the porting engine author should touch)agfx/agfx.h is the entire public API surface — read it top to bottom once before starting; it's short enough to hold in full context. agfx/agfx_d3d12.cpp is AGFX's own D3D12 backend implementation — when unsure how a given AGFX call should behave in D3D12 terms, this is the authoritative answer (e.g. what resource states/flags it sets, how it maps agglomerate). agfx_demo/ (particularly deferred_renderer.cpp, agfx_demo_main.cpp) is a complete reference engine already written against AGFX — structurally a good target shape for what the ported engine should look like.
| D3D12 | AGFX | Notes |
|---|---|---|
ID3D12Device | agfxDevice* | agfxDeviceCreate also takes the allocator callbacks and picks the backend (D3D12/Metal 4/Vulkan) at compile time |
ID3D12CommandQueue | agfxCommandQueue* | agfxCommandQueueCreate, typed via agfxCommandQueueType |
ID3D12GraphicsCommandList | agfxCommandBuffer* | agfxCommandBufferCreate/Begin/End/Reset |
ID3D12Fence + SetEventOnCompletion/WaitForSingleObject | agfxFence* | one fence type for both CPU↔GPU and GPU↔GPU waits — see agfx-synchronization |
ID3D12RootSignature + descriptor tables | deleted | AGFX is bindless-first; there is no root signature to author. Resources are accessed via ResourceHandle pulled from ResourceDescriptorHeap/SamplerDescriptorHeap — see agfx-writing-bindless-shaders |
ID3D12DescriptorHeap (CBV/SRV/UAV, sampler) | implicit / internal | AGFX manages the bindless heap itself; you get handles back from view creation, you don't manage heap slots yourself |
Root constants (SetGraphicsRoot32BitConstants) | agfxRenderPassPushConstants/agfxComputePassPushConstants | bound at register(b0); the one binding mechanism that survives — see AGFX_PUSH_CONSTANTS in agfx-writing-bindless-shaders |
CreateCommittedResource/CreatePlacedResource (texture) | agfxTextureCreate | agfxTextureUsage replaces D3D12 resource flags (RENDER_TARGET, UNORDERED_ACCESS, etc.) |
CreateCommittedResource (buffer) | agfxBufferCreate | agfxBufferMemoryType replaces heap type (DEFAULT/UPLOAD/READBACK) |
SRV/UAV/CBV descriptor (CreateShaderResourceView etc.) | agfxTextureView/agfxBufferView | creation returns a ResourceHandle for bindless shader access, rather than writing into a caller-managed heap slot |
| Sampler descriptor | agfxSampler | agfxSamplerCreate, handle obtained the same way as texture/buffer views |
ResourceBarrier (transition) | agfxCommandBufferTextureBarrier (textures) / agfxCommandBufferMemoryBarrier (buffers, acceleration structures) | states map closely (agfxResourceState mirrors D3D12_RESOURCE_STATES); has an extra agglomerate flag D3D12 doesn't need — ignored on the D3D12 and Vulkan backends, meaningful on Metal — see agfx-synchronization. Unlike a legacy ResourceBarrier, agfxCommandBufferMemoryBarrier takes no resource argument (buffers/AS have no layout to transition, so it's a memory-wide barrier); AGFX's own D3D12 backend implements it as an Enhanced Barriers global barrier, not ResourceBarrier |
| UAV barrier | agfxComputePassTextureUAVBarrier/BufferUAVBarrier | scoped to within a compute pass |
OMSetRenderTargets + manual load/clear | agfxRenderTarget + agfxRenderPassBegin/agfxRenderPassCreateInfo attachments | load/store ops are explicit (agfxLoadOperation/agfxStoreOperation), similar to D3D12's render-pass API (BeginRenderPass) if the engine already uses that, otherwise new relative to bare OMSetRenderTargets |
IASetVertexBuffers/input layout | deleted — vertex pulling | AGFX shaders take SV_VertexID and manually load from a AGFXStructuredBuffer in the vertex shader; there is no input-assembler vertex buffer binding — see agfx-writing-bindless-shaders |
CreateGraphicsPipelineState | agfxRenderPipelineCreate | agfxRenderPipelineCreateInfo folds in blend/raster/depth-stencil state plus attachment formats (must match the render pass it's used in) |
CreateComputePipelineState | agfxComputePipelineCreate | straightforward 1:1 |
Root signature + .hlsl register(t/b/u/s, spaceN) | AGFX's agfx.h bindless header + ResourceHandle | shader HLSL itself needs rewriting, not just host code — see agfx-writing-bindless-shaders |
IDXGISwapChain | agfxSwapChain* | agfxSwapChainCreate/AcquireNextTexture/Present/Resize; HDR toggle is destroy+recreate, not in-place — see agfx-presentation-and-swapchain |
| Frame-in-flight command allocator/list rotation | per-slot agfxCommandBuffer + one agfxFence | pattern is the same shape as most D3D12 engines already use — see agfx-synchronization |
Porting shader-and-binding code before device/resource plumbing compiles but can't be tested; the reverse order lets you validate incrementally against a triangle/simple scene before tackling the whole renderer.
agfxDeviceCreate/agfxCommandQueueCreate/agfxSwapChainCreate wired up and clearing the back buffer to a solid color and presenting. This validates the build/link setup (see the repo's top-level README.md for libraries to link on each platform) before any rendering logic is ported.agfxFence + per-slot command buffers (agfx-synchronization). Do this before resource porting — later steps assume a working drain/wait mechanism, since resource creation/destruction during porting will otherwise race in-flight GPU work.CreateCommittedResource → agfxTextureCreate/agfxBufferCreate). Drop descriptor-heap-slot management entirely; keep the returned view handles instead.agfxRenderPassBegin/draw/End (agfx-render-targets-and-passes). Get one pass rendering a real mesh with the actual shaders before porting the rest of the pipeline — this is where root-signature-to-bindless mistakes surface fastest.register(t/b/u/s, spaceN) declarations tied to the old root signature, replace with AGFX_PUSH_CONSTANTS + ResourceHandle fields, replace register(t0)-style texture/buffer/sampler declarations with AGFXTexture2D/AGFXStructuredBuffer/AGFXSampler ::Create(handle) calls, replace input-assembler vertex fetch with vertex pulling from SV_VertexID (agfx-writing-bindless-shaders). Do this pass-by-pass alongside step 4, not as one giant shader-only pass — a shader rewritten without its host-side push-constant struct updated to match won't compile.ExecuteIndirect — all supported as of v1.2.0; see "Advanced features" below for what maps and what doesn't.All three are supported as of AGFX v1.2.0 (ray tracing landed in v1.1.0, multi-draw indirect in v1.2.0). Each is capability-gated — query once and keep the fallback path alive, since none are universal (in practice: Apple M3+, NVIDIA RTX 20+, AMD RX 6000+, or Intel Arc):
agfxDeviceInfo info = {};
agfxDeviceGetInfo(device, &info);
// info.supportsRayTracing / info.supportsMeshShaders / info.supportsMultiDrawIndirect| D3D12 | AGFX | Notes |
|---|---|---|
DispatchMesh + amplification/mesh pipeline | agfxRenderPassDrawMesh + meshShader/taskShader on agfxRenderPipelineCreateInfo | group sizes come from compiler reflection (meshSizeX/Y/Z), not hand-specified |
ID3D12Device5::CreateStateObject (RTPSO), DispatchRays, shader binding table | no equivalent — inline RayQuery in a compute shader only | see the mismatch note below |
BuildRaytracingAccelerationStructure, D3D12_RAYTRACING_GEOMETRY_DESC | agfxAccelerationStructureCreate + agfxComputePassBuildAccelerationStructure | two-level BLAS/TLAS, same shape |
ExecuteIndirect + ID3D12CommandSignature | agfxIndirectBundle + PrepareIndirectBundle/ExecuteIndirectBundle | AGFX owns the command signature internally; the argument-buffer layout matches D3D12's, so an existing culling shader's output format largely survives |
The one structural mismatch to flag early: AGFX supports inline ray tracing only — RayQuery/TraceRayInline from a compute shader. There is no ray-generation/any-hit/closest-hit pipeline, no hit groups, and no shader binding table. A source engine built around a ray-tracing pipeline needs those passes restructured into compute dispatches that trace inline and shade at the hit point themselves; that is a redesign, not a translation, and is worth surfacing to the user before starting.
Delegate the actual work: agfx-raytracing (acceleration structures, inline tracing), agfx-mdi (indirect bundles, GPU culling), agfx-writing-bindless-shaders (main_ms/main_as entry points, reflected group sizes) with agfx-render-targets-and-passes for agfxRenderPassDrawMesh.
ResourceHandle at view-creation time; there's no caller-managed heap index arithmetic.register(b0) (push constants). Any additional per-frame/per-scene constant buffer must go through the "handle nested in push constants, loaded as a one-element AGFXStructuredBuffer" pattern in agfx-writing-bindless-shaders, not a second binding slot.agglomerate backwards. It's silently correct on the D3D12 and Vulkan sides of a port (the flag is ignored there) and only breaks once the same code path is exercised on Metal — see agfx-synchronization before assuming a barrier port is done just because it builds and runs on Windows or Linux.ExecuteIndirect do map (see "Advanced features"), but AGFX has no ray-tracing pipeline — no DispatchRays, no shader binding table, no hit groups. An engine whose RT is built on an RTPSO needs those passes restructured into inline-RayQuery compute dispatches. Surface this early rather than discovering it mid-port.© AmelieHeinrich, MIT. 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 .claude/skills/agfx-porting-from-d3d12 of AmelieHeinrich/agfx.
Open the folder on GitHubat commit d8ad38b
Agfx Porting From D3d12 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 |
|---|---|---|---|---|---|---|
| Agfx Porting From D3d12 this skillAmelieHeinrich/agfx | 146 | — | ~3.4k | Automated safety check: Pass | MIT | |
| PixijsRSamaium/CanvasEngine | 401 | 2 repos | ~1.6k | Automated safety check: Pass | MIT | |
| New ExperimentTresjs/tres | 3.8k | — | ~782 | Automated safety check: Pass | MIT | |
| Anatomywheresryan22/anatomy | 500 | — | ~7.7k | Automated safety check: Pass | MIT | |
| Assets Shader List AllIvanMurzak/Unity-MCP | 4.4k | — | ~435 | Automated safety check: Pass | Apache-2.0 | |
| Handle Sdr Tonemap Lutclshortfuse/renodx | 4.5k | — | ~7.3k | Automated safety check: Pass | MIT |
RSamaium/CanvasEngine
Use this skill first for ANY PixiJS v8 task; it routes to the right specialized skill for the job.
Tresjs/tres
Create a new experiment in TresJS Lab with all necessary files
wheresryan22/anatomy
Build crafted, highly detailed, interactive isometric SVG figures that explain a technical idea as a real physical object (a test rig, a dial gauge, a cabinet of drawers, a plotter, a lock), with…
IvanMurzak/Unity-MCP
List all shaders available in the project assets and packages, sorted by name.
clshortfuse/renodx
RenoDX HLSL/Slang shader workflow for proven shader-side SDR tonemap, hard clip, LUT, color grade, and HDR bridge changes.
flopperam/unreal-engine-mcp
Walks an Unreal Engine MCP agent through building materials, Niagara particle systems, Chaos destruction, and curve assets with inspect-then-edit steps.
AmelieHeinrich/agfx
ALWAYS use when porting an existing D3D11 engine or renderer to AGFX — translating ID3D11Device/DeviceContext/InputLayout/state-object code to agfxDevice/agfxCommandBuffer/agfxRenderPipeline calls…
AmelieHeinrich/agfx
ALWAYS use when porting an existing OpenGL (or OpenGL ES) engine or renderer to AGFX — translating glGenTextures/glBindTexture/glBufferData/glUseProgram/FBO code to…
AmelieHeinrich/agfx
ALWAYS use when porting an existing Vulkan engine or renderer to AGFX — translating VkDevice/VkCommandBuffer/VkPipeline/VkDescriptorSet/VkRenderPass code to…
AmelieHeinrich/agfx
ALWAYS use when creating, resizing, or presenting through an agfxSwapChain in AGFX — window/layer handle setup, HDR toggling, vsync, resize handling, or back buffer acquire/present.
AmelieHeinrich/agfx
ALWAYS use when creating agfxRenderTarget or agfxRenderPass objects in AGFX, or wiring up color/depth attachments, load/store ops, viewport/scissor, or draw calls within a render pass.
AmelieHeinrich/agfx
ALWAYS use when working with AGFX fences, frames-in-flight pacing, queue signal/wait, resource-state barriers, or the barrier "agglomerate" flag.
Categories
ALWAYS use when porting an existing D3D12 engine or renderer to AGFX — translating ID3D12Device/CommandList/PipelineState/RootSignature/DescriptorHeap code to…. Agfx Porting From D3d12 is an agent skill from AmelieHeinrich/agfx. ALWAYS use when porting an existing D3D12 engine or renderer to AGFX — translating ID3D12Device/CommandList/PipelineState/RootSignature/DescriptorHeap code to agfxDevice/agfxCommandBuffer/agfxRenderPipeline calls, converting HLSL from a D3D12 root-signature binding model to AGFX bindless, or mapping D3D12 concepts (fences, resource states, swap chain, descriptor heaps) onto their AGFX equivalents.
Agfx Porting From D3d12 fits situations like: porting an existing D3D12 engine; converting HLSL from a D3D12 root-signature binding model to AGFX bindless; mapping D3D12 concepts (fences; resource states.
Run `npx skills add AmelieHeinrich/agfx --skill agfx-porting-from-d3d12 -a claude-code`. Or copy the skill folder (.claude/skills/agfx-porting-from-d3d12 in AmelieHeinrich/agfx) into .claude/skills/agfx-porting-from-d3d12 in your project. Claude Code loads it when a task matches its description.
Run `npx skills add AmelieHeinrich/agfx --skill agfx-porting-from-d3d12 -a codex`. Or copy the skill folder (.claude/skills/agfx-porting-from-d3d12 in AmelieHeinrich/agfx) into .agents/skills/agfx-porting-from-d3d12 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 AmelieHeinrich/agfx --skill agfx-porting-from-d3d12 -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/agfx-porting-from-d3d12, .gemini/skills/agfx-porting-from-d3d12, .github/skills/agfx-porting-from-d3d12 and .opencode/skills/agfx-porting-from-d3d12 in your project.
SKILL.md names no scripts, command-line tools or credentials: Agfx Porting From D3d12 is instructions for the agent only.
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.
Agfx Porting From D3d12 is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 3.4k tokens (SKILL.md is roughly 13k 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 Agfx Porting From D3d12: Pixijs (RSamaium/CanvasEngine, 401 stars), New Experiment (Tresjs/tres, 3.8k stars), Anatomy (wheresryan22/anatomy, 500 stars) and Assets Shader List All (IvanMurzak/Unity-MCP, 4.4k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
AmelieHeinrich (a GitHub user) maintains it in AmelieHeinrich/agfx, which has 146 GitHub stars. The repository holds 8 skills in this directory. The repository was last updated on September 27, 2026.
Source: AmelieHeinrich/agfx on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.