fivem-basics
Helps you write and organize code for FiveM game servers using Lua scripts and events.
Installation
Paste this into Claude Code, Cursor, or any agent that can run commands.
SKILL.mdShow the author's original SKILL.md
--- name: fivem-basics description: "Trigger: FiveM resource, fxmanifest, client/server script, RegisterNetEvent, TriggerServerEvent, TriggerClientEvent, exports, F8 logs, how FiveM works. Structure resources, manifests, events and exports for FiveM Lua." license: MIT metadata: author: germanfndez version: "1.0.0" --- # FiveM basics Resource structure, fxmanifest, client/server split, events, exports and debugging for FiveM Lua. ## Activation Contract Load this skill when the user creates or edits any FiveM resource, `fxmanifest.lua`, `client*.lua` or `server*.lua`, asks how client/server, events or exports work, or reports a bug that needs server vs F8 logs. ## Hard Rules - Manifest: `fx_version 'cerulean'` and `game 'gta5'` (or `'rdr3'` / `'common'`); every client-served file goes in `files`. - Register networked events with `RegisterNetEvent`; local-only events use `AddEventHandler` alone, never `RegisterNetEvent`. - Server handlers read the sender from `source`; broadcast with `TriggerClientEvent(event, -1, ...)`. - `GetInvokingResource()` is nil for every net event that crosses the network; it is not an authentication check. Validate types, ranges and server-owned state instead. - Never handle money or item transactions on the client; validate and apply on the server. - No game natives in `shared_scripts` unless guarded by environment. - Use `PlayerPedId()` not `GetPlayerPed(-1)`; use `#(a - b)` not `GetDistanceBetweenCoords`. - Prefer `local`; prefer variable `Wait()` over fixed `Wait(0)`. - Resource names use underscores, no spaces or special characters. ## Decision Gates | Need | Use | |---|---| | Client to server | `TriggerServerEvent(event, ...)` | | Server to one / all clients | `TriggerClientEvent(event, playerId \| -1, ...)` | | Same side only | `TriggerEvent` + `AddEventHandler` | | Data back across the network | a callback (ox_lib / framework), not paired events | | Single-resource, non-networked call | a plain function, not an event | | Cross-resource function | `exports` / `server_export` in manifest, `exports.res:fn()` | | Bug with clean server console | ask for F8 client logs | ## Execution Steps 1. Lay out `client/`, `server/`, `shared/` and the manifest; read rules/structure.md and rules/fxmanifest.md. 2. Decide the side for each piece of logic (natives on client, data and validation on server). 3. Wire communication from Decision Gates; name events `resource:side:action`. 4. Validate every server handler argument; add distance and state checks. 5. Point to https://docs.fivem.net/natives/ for native lookups. ## Output Contract Return the manifest plus runnable Lua split by side, with event names, validation and `source` handling explicit. ## References - rules/structure.md — scope, client/server separation, naming. - rules/fxmanifest.md — manifest entries, globbing, minimal example. - rules/client-server.md — what runs where and how sides communicate. - rules/events.md — register, trigger, naming, events vs functions, security. - rules/exports.md — defining and consuming exports. - rules/debugging.md — server console vs F8 logs. - rules/optimization.md — locals, tables, natives, loops, security. - rules/reference-links.md — official docs and natives reference. Upstream docs: https://docs.fivem.net/docs/
Ships with 8 supporting files:
- rules/client-server.md
- rules/debugging.md
- rules/events.md
- rules/exports.md
- rules/fxmanifest.md
- rules/optimization.md
- rules/reference-links.md
- rules/structure.md
Mirrored from the author's public source. Install counts from the open skills registry.