Install
$ agentstack add skill-nice3point-revit-skills-revit-utils-extensions ✓ scanned · ✓ verified — works with Claude Code, Cursor, and more.
Security review
✓ PassedNo issues found. Passed automated security review. · v0.1.0 How review works →
- ✓ Prompt-injection patterns
- ✓ Secret / credential exfiltration
- ✓ Dangerous shell & filesystem operations
- ✓ Untrusted network calls
- ✓ Known-malicious package signatures
What it can access
- ✓ Network access No
- ✓ Filesystem access No
- ✓ Shell / process execution No
- ✓ Environment & secrets No
- ✓ Dynamic code execution No
From automated source analysis of v0.1.0. “Used” means the capability is present in the source — more access means more to trust, not that it’s unsafe.
About
Revit Utils Extensions
Nice3point.Revit.Extensions turns the Revit API into fluent, receiver-first calls of two kinds. Facades re-express verbose *Utils static classes and *Manager getters as a call on the natural receiver — same behavior, read more clearly. Replace the raw call with the facade. Conveniences add what the raw API has no single call for — enum/id/color converters, unit and numeric helpers, safe casts. Use them directly; there is nothing to replace. A missing member means the Nice3point.Revit.Extensions package is not referenced.
When to use
- Reaching for any
SomeUtils.Operation(document, id, …)static call or a verbose*Managergetter. - Converting a
BuiltInParameter/BuiltInCategory/ForgeTypeId, formatting or parsing a unit, or reading a color as hex or RGB.
When not to use
- Finding a set of elements in the model — use
revit-element-collector. - Reading or writing a parameter on an element you already hold — use
revit-element-and-parameter-access.
Recognize and replace
When the raw call is SomeUtils.Operation(document, element.Id, …) or a long getter, the facade is a method on the natural receiver.
ElementTransformUtils.MoveElement(document, element.Id, new XYZ(1, 1, 0)); // raw
element.Move(1, 1, 0); // facade
LabelUtils.GetLabelFor(BuiltInParameter.WALL_TOP_OFFSET); // raw
BuiltInParameter.WALL_TOP_OFFSET.ToLabel(); // facade
UnitUtils.ConvertToInternalUnits(69, UnitTypeId.Millimeters); // raw
69d.FromMillimeters(); // facade
SolidUtils.SplitVolumes(solid); // raw
solid.SplitVolumes(); // facade
Many members are conveniences with no raw equivalent — use them directly rather than hand-writing the conversion:
ElementId wallsId = BuiltInCategory.OST_Walls.ToElementId(); // enum -> id
Category category = BuiltInCategory.OST_Walls.ToCategory(document); // enum -> object
string hex = color.ToHex(); // Color -> "#RRGGBB"
References
Each reference lists its domain's extensions in full — member, purpose, and a grounded example on the real receiver — with the raw *Utils class named in each section heading. Load the one that matches the task instead of guessing a signature.
- [references/transforms-and-modeling.md](references/transforms-and-modeling.md) — Load when: moving, copying, joining, or cutting elements, or working with families, hosts, parts, assemblies, adaptive components, or masses.
- [references/geometry.md](references/geometry.md) — Load when: building or querying solids, bounding boxes, curves, points, tessellation, or view geometry.
- [references/units-labels-forge.md](references/units-labels-forge.md) — Load when: converting or formatting units, producing user-visible labels, or inspecting a
ForgeTypeIdspec, unit, or parameter. - [references/converters-and-helpers.md](references/converters-and-helpers.md) — Load when: converting an enum to an id or object, reading a color representation, or reaching for numeric, string, cast, or application-capability helpers.
- [references/document-and-storage.md](references/document-and-storage.md) — Load when: reading the document version, getting a manager, working with global or project parameters, filtering parameters, or using extensible storage.
- [references/disciplines-and-interop.md](references/disciplines-and-interop.md) — Load when: working with MEP, structure, or analytical elements, or with model paths, worksharing, coordination models, export, external references, or DirectContext3D.
A newer Extensions package may expose members not shown here. If the Utils wrapper not found, read the package README.
Validation
- [ ] Raw
*Utilsstatic calls and*Managergetters are replaced by the receiver-first facade. - [ ] Behavior is unchanged — facades add no new logic.
- [ ] Unit and label conversions use the extensions, not manual
UnitUtils/LabelUtilscalls. - [ ] Converters and helpers (
ToElementId,ToHex,Round, …) replace hand-written equivalents.
Common Pitfalls
| Pitfall | Correct approach | |------------------------------------------------------|-----------------------------------------------------------------------------------| | ElementTransformUtils.MoveElement(document, id, v) | element.Move(x, y, z). | | LabelUtils.GetLabelFor(parameter) | parameter.ToLabel(). | | document.Format(spec, value, forEditing) | Format lives on Units: document.GetUnits().Format(spec, value, forEditing). | | Assuming a facade changes behavior | Facades only re-express the raw API; semantics match. | | Hand-writing an id, color, or unit converter | Use the built-in ToElementId/ToHex/FromMillimeters conveniences. | | Extension not found | The Nice3point.Revit.Extensions package is not referenced. |
Source & license
This open-source skill is cataloged on AgentStack and links to its original source — we do not rehost the code.
- Author: Nice3point
- Source: Nice3point/revit-skills
- License: MIT
Install and usage instructions live in the source repository linked above.
Reviews
No reviews yet — be the first.
Write a review
Versions
- v0.1.0 Imported from the upstream source.