fivem-basics

Helps you write and organize code for FiveM game servers using Lua scripts and events.

Installation
Run `npx skills add "https://github.com/germanfndez/fiveai-skills" --skill "fivem-basics"` to install this skill, then follow its SKILL.md instructions for my next request.

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.

The systems behind these skills get built for partners every week.

Partner with us