skillZs
★ LIVE SKILL TAGS ★
>>> LIVE SKILLS INDEX <<<
* OPEN SOURCE *
NO LOGIN, NO TRACKING
※ REAL INSTALL DATA ※
← back to all skills
germanfndez/fiveai-skills513 installs

fivem-nui

Trigger: NUI, ui_page, SendNUIMessage, SetNUIFocus, RegisterNUICallback, HTML/CSS/JS for FiveM, FiveM menu UI. Build FiveM NUI pages, wire Lua-browser messaging, callbacks and focus.

How do I install this agent skill?

npx skills add https://github.com/germanfndez/fiveai-skills --skill fivem-nui
view source ↗

Is this agent skill safe to install?

  • Gen Agent Trust Hubpass

    The skill provides comprehensive instructions and best practices for developing FiveM NUI interfaces. It emphasizes security measures such as input validation and server-side verification. No malicious patterns were detected.

  • Socketpass

    No alerts

  • Snykpass

    Risk: LOW · No issues

  • Runlayerwarn

    6/6 files flagged

  • ZeroLeakspass

    Score: 93/100 · 2 sections analyzed

What does this agent skill do?

FiveM NUI

HTML/CSS/JS interfaces for FiveM: manifest setup, Lua-to-browser messages, NUI callbacks and focus handling.

Activation Contract

Load this skill when the user asks to create or edit a FiveM UI, writes HTML/CSS/JS inside a resource, sets ui_page, or asks about SendNUIMessage, SetNUIFocus or RegisterNUICallback.

Hard Rules

  • Declare ui_page and include every UI file in files in fxmanifest.lua; a missing file silently fails to load.
  • Reference assets with https://cfx-nui-<resource>/path; the nui:// protocol is deprecated.
  • RegisterNUICallback handlers must ALWAYS call cb(...) (at least cb({})), or the browser request hangs.
  • Browser calls callbacks with fetch('https://' + GetParentResourceName() + '/<name>', { method: 'POST', body: JSON.stringify(...) }); the URL name must match the registered name exactly.
  • SetNUIFocus(keyboard, mouse): always call SetNUIFocus(false, false) when closing the UI.
  • NUI callbacks run on the CLIENT. Validate their data client-side, then re-validate on the server before any state change; never trust UI-sent prices, amounts or ids.
  • Minimize SendNUIMessage calls: batch updates rather than sending per frame.
  • Debug with F8 and Chrome DevTools; test the page in a browser with a mock mode.

Decision Gates

DirectionMechanism
Lua to browserSendNUIMessage({ type = ..., data = ... }) + window.addEventListener('message')
Browser to Luafetch POST to https://<resource>/<callback> + RegisterNUICallback
Browser wants server datacallback to Lua client, then a server callback
Show / hide cursorSetNUIFocus(true, true) / SetNUIFocus(false, false)
Keyboard onlySetNUIFocus(true, false)

Execution Steps

  1. Add ui_page and files to the manifest (read rules/setup.md).
  2. Build index.html, CSS and JS; listen for message events keyed by type.
  3. Register Lua callbacks for every action the UI can request; call cb on every path.
  4. Manage focus on open/close; handle Escape to close.
  5. Forward any state-changing action to the server and validate there.

Output Contract

Return the manifest entries, the HTML/CSS/JS files, and the Lua client script with callbacks and focus handling. Keep security-relevant logic on the server.

References

  • rules/setup.md — folder layout, manifest, build tools, common mistakes.
  • rules/fullscreen-nui.md — SendNUIMessage, SetNUIFocus, focus stack, assets, devtools.
  • rules/nui-callbacks.md — RegisterNUICallback, fetch, async, errors, security.
  • rules/best-practices.md — performance, security, state, error handling, testing.
  • rules/reference-links.md — official docs and natives reference.

Upstream docs: https://docs.fivem.net/docs/scripting-manual/nui-development/

Add the canonical catalog link to the repository README so users can inspect current installs and available audits. The publishing guide covers the complete discovery path.

<a href="https://skillzs.dev/skills/germanfndez/fiveai-skills/fivem-nui">View fivem-nui on skillZs</a>