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 Italink/UnrealClientProtocol --skill unreal-modeling-normalsgit clone --depth 1 https://github.com/Italink/UnrealClientProtocolWrote 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/italink/unrealclientprotocol/unreal-modeling-normals)<a href="https://agentmods.dev/skills/italink/unrealclientprotocol/unreal-modeling-normals"><img src="https://agentmods.dev/badge/skills/italink/unrealclientprotocol/unreal-modeling-normals/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/italink/unrealclientprotocol/unreal-modeling-normals"><img src="https://agentmods.dev/badge/skills/italink/unrealclientprotocol/unreal-modeling-normals.svg" alt="Reviewed on agentmods" width="80" height="20"></a>- NVIDIA SkillSpector pass
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.00045 | $0.01535 |
| Opus 5 | $0.00023 | $0.00767 |
| Sonnet 5 | $0.00009 | $0.00307 |
| Haiku 4.5 | $0.00005 | $0.00153 |
Grade A, and why
unreal-modeling-normals 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 11d 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 — 112 lines — stays where its author put it; the contents beside it link to each section on GitHub.
建模 — 法线与切线
前置条件:先阅读 unreal-modeling。
库
CDO:/Script/GeometryScriptingCore.Default__GeometryScriptLibrary_MeshNormalsFunctions
TargetMesh 为 UDynamicMesh* 路径字符串。Debug 省略。需要 FGeometryScriptMeshSelection 的函数,用 MeshOperationLibrary 桥接。需要 FGeometryScriptVectorList 的函数,用 MakeVectorList/GetVectorListArray 桥接。
主要函数
法线计算
| 函数 | 关键参数 | 说明 |
|---|---|---|
SetPerVertexNormals |
TargetMesh |
平滑法线(无硬边) |
SetPerFaceNormals |
TargetMesh |
面法线(每条边都是硬边) |
RecomputeNormals |
TargetMesh, CalculateOptions, bDeferChangeNotifications |
保留已有分裂,重新计算法线 |
RecomputeNormalsForMeshSelection |
TargetMesh, Selection, CalculateOptions |
对选中区域重算法线 |
ComputeSplitNormals |
TargetMesh, SplitOptions, CalculateOptions |
按角度/Polygroup 重建分裂后重算法线 |
AutoRepairNormals |
TargetMesh |
修复不一致的法线方向(闭合 mesh 效果最佳) |
法线翻转
| 函数 | 关键参数 | 说明 |
|---|---|---|
FlipNormals |
TargetMesh |
翻转全部法线并反转三角形绕序 |
FlipTriangleSelectionNormals |
TargetMesh, Selection, bFlipTriangleOrientation, bFlipNormalDirection |
翻转选中区域法线 |
法线读写
| 函数 | 关键参数 | 说明 |
|---|---|---|
SetMeshTriangleNormals |
TargetMesh, TriangleID, Normals(FGeometryScriptTriangle) |
设置单个三角形三个角的法线。out:bIsValidTriangle |
SetMeshPerVertexNormals |
TargetMesh, VertexNormalList |
批量设置每顶点法线(列表大小 = MaxVertexID) |
GetMeshPerVertexNormals |
TargetMesh, bAverageSplitVertexValues |
out:NormalList、bIsValidNormalSet、bHasVertexIDGaps |
UpdateVertexNormal |
TargetMesh, VertexID, bUpdateNormal, NewNormal, bUpdateTangents, NewTangentX, NewTangentY |
更新单个顶点的法线和/或切线 |
SetSplitNormalsAlongSelectedEdges |
TargetMesh, Selection, bSplit, bRecalculateNormals, CalculateOptions |
沿选中边分裂/合并法线 |
切线
| 函数 | 关键参数 | 说明 |
|---|---|---|
ComputeTangents |
TargetMesh, Options |
计算切线(需要有效法线 + UV) |
SetMeshPerVertexTangents |
TargetMesh, TangentXList, TangentYList |
批量设置切线 |
GetMeshPerVertexTangents |
TargetMesh, bAverageSplitVertexValues |
out:TangentXList、TangentYList |
GetMeshHasTangents |
TargetMesh |
out:bHasTangents |
DiscardTangents |
TargetMesh |
移除切线层 |
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.
- 11d ago First seen · 112 lines · 45 tokens per session scan A 14e62a64ef3e
unreal-modeling-normals is a skill published in the GitHub repository Italink/UnrealClientProtocol (125 stars, last pushed 13d ago), licensed MIT. It adds 45 tokens to every session and 1,535 once invoked, about $0.0002 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-30.
Other skills, from other repositories
roblox-luau-core
Use for Luau language semantics, tables, control flow, string patterns, scope, closures, and cross-language translation errors.
roblox-audio
Use when implementing Roblox audio playback, spatial sound, music, sound effects, SoundGroups, or dynamic audio effects.
roblox-camera
Use when scripting Roblox camera behavior, CFrame placement, screen raycasts, first or third-person views, or cutscenes.
roblox-input
Use when handling Roblox keyboard, mouse, gamepad, touch, motion input, or cross-platform action binding.
roblox-lighting
Use for Roblox lighting, atmosphere, day/night, or post-processing effects.
roblox-localization
Use when implementing Roblox multi-language support, translation tables, auto-translation, locale-specific content, or region detection.