fivem-dev
FiveM Development
Dynamic documentation orchestrator for FiveM resource development. Supports QBox, QBCore, ESX frameworks with Lua and NUI (JS/TS).
Philosophy
- Fetch, don't memorize - Always get latest from authoritative sources
- Framework-agnostic thinking - Understand patterns, adapt to framework
- Performance-first - FiveM has strict tick budgets
- Security-aware - Server-side validation is non-negotiable
CRITICAL: No Hallucination Policy
NEVER invent or guess native functions, framework APIs, or parameters.
Rules:
- If unsure about a native → MUST fetch from https://docs.fivem.net/natives/
- If unsure about framework API → MUST fetch from official docs
- If function doesn't exist → Tell user honestly, suggest alternatives
- If parameters unknown → Fetch documentation, don't guess
Before writing any native or API call:
- Is this a real FiveM native? → Verify at docs.fivem.net/natives
- Is this the correct function name? → Check exact spelling
- Are these the correct parameters? → Verify parameter order and types
- Does this work on client/server/both? → Check availability
When you don't know:
"I'm not 100% certain about this native/API. Let me fetch the documentation..."
[Use WebFetch to get accurate info]
Verification Sources:
| Type | Source | Action |
|---|---|---|
| Native functions | https://docs.fivem.net/natives/ | WebFetch or tell user to check |
| QBox API | https://docs.qbox.re/ | WebFetch |
| QBCore API | https://docs.qbcore.org/ | WebFetch |
| ESX API | https://docs.esx-framework.org/ | WebFetch |
| ox_lib | https://overextended.dev/ox_lib | WebFetch |
| Props/Vehicles | https://forge.plebmasters.de/ | Guide user to search |
Example - WRONG:
-- DON'T: Inventing a native that might not exist
SetPlayerInvincible(playerId, true) -- Is this real? What are the params?
Example - RIGHT:
-- DO: Use verified native with correct params
SetEntityInvincible(PlayerPedId(), true) -- Verified at docs.fivem.net
Content Map
Read ONLY relevant files based on the request:
| File | Description | When to Read |
|---|---|---|
frameworks/framework-detection.md |
Detect active framework | Starting new task |
frameworks/qbox.md |
QBox exports, patterns | QBox project |
frameworks/qbcore.md |
QBCore events, exports | QBCore project |
frameworks/esx.md |
ESX xPlayer, events | ESX project |
scripting/lua-patterns.md |
Lua idioms for FiveM | Writing Lua |
scripting/nui-guide.md |
NUI HTML/CSS/JS patterns | Building UI |
scripting/client-server.md |
Architecture patterns | New resource |
scripting/thread-management.md |
Performance patterns | Optimization |
resources/manifest.md |
fxmanifest.lua reference | Resource setup |
resources/ox-lib-guide.md |
ox_lib utilities | Using ox_lib |
assets/asset-discovery.md |
Finding GTA V assets | Props, vehicles, peds |
Dynamic Fetching - Decision Tree
Step 1: Classify the Request
| If user asks about... | Action |
|---|---|
| Native function (GetPlayerPed, CreateVehicle, etc.) | FETCH from natives |
| Framework API (QBCore.Functions, ESX.GetPlayerData) | FETCH from framework docs |
| ox_lib feature (lib.callback, lib.notify) | FETCH from ox_lib docs |
| GTA V asset (prop, vehicle, ped model) | GUIDE to PlebMasters |
| Resource structure, manifest | READ local files |
| Best practices, patterns | READ local files |
Step 2: WebFetch URLs
Native Functions
Base URL: https://docs.fivem.net/natives/
WebFetch(
url: "https://docs.fivem.net/natives/",
prompt: "Find documentation for the native function '{FUNCTION_NAME}'.
Include: parameters, return values, usage examples,
client/server availability."
)
Native Categories:
| Category | Contains |
|---|---|
| PLAYER | GetPlayerPed, GetPlayerServerId, PlayerId |
| VEHICLE | CreateVehicle, SetVehicleMod, GetVehicleClass |
| PED | CreatePed, SetPedComponentVariation, IsPedInVehicle |
| ENTITY | GetEntityCoords, SetEntityHeading, DeleteEntity |
| GRAPHICS | DrawRect, DrawText3D, DrawMarker |
| UI | SetTextEntry, BeginTextCommandDisplayText |
| CAM | CreateCam, SetCamActive, RenderScriptCams |
| AUDIO | PlaySoundFrontend, PlayAmbientSpeech1 |
| WEAPON | GiveWeaponToPed, GetSelectedPedWeapon |
| CFX | Statebags, server-specific natives |
Framework Documentation
QBox:
WebFetch(
url: "https://docs.qbox.re/",
prompt: "Find documentation for QBox '{FEATURE}'.
Include exports, events, and usage examples."
)
QBCore:
WebFetch(
url: "https://docs.qbcore.org/qbcore-documentation/",
prompt: "Find documentation for QBCore '{FEATURE}'.
Include: function signature, parameters, examples."
)
ESX Legacy:
WebFetch(
url: "https://docs.esx-framework.org/",
prompt: "Find documentation for ESX '{FEATURE}'.
Include: xPlayer methods, events, server/client functions."
)
ox_lib:
WebFetch(
url: "https://overextended.dev/ox_lib",
prompt: "Find documentation for ox_lib '{MODULE}'.
Include: function signatures, options, examples."
)
Asset Discovery
PlebMasters Forge:
WebFetch(
url: "https://forge.plebmasters.de/",
prompt: "Search for GTA V {ASSET_TYPE} matching '{SEARCH_TERM}'.
Return model names/hashes that can be used in FiveM."
)
Asset Types: objects, vehicles, peds, weapons, clothes, animations
Request Router - Pattern Matching
RULE 1: Native Detection
Triggers when:
- Specific native name (PascalCase like
GetPlayerPed,CreateVehicle) - "native function", "GTA native", "FiveM native"
- Hash reference (
0x...)
Action: Fetch from https://docs.fivem.net/natives/
RULE 2: Framework API Detection
Triggers when:
QBCore.Functions.*,QBCore.Player.*exports.qbx_core:*,exports['qb-core']:*ESX.Get*,xPlayer:*,ESX.RegisterServerCallbackexports.es_extended:*
Action: Detect framework → Fetch from appropriate docs
RULE 3: ox_lib Detection
Triggers when:
lib.*functionsexports.ox_lib:*- Modules: callback, notify, menu, context, progress, zones, target
Action: Fetch from https://overextended.dev/ox_lib
RULE 4: Asset Discovery
Triggers when:
- "What's the model for...", "prop name for...", "vehicle spawn name"
- Object placement, ped models, weapon models
Action: Guide to PlebMasters Forge + provide usage example
RULE 5: Local Knowledge
Triggers when:
- fxmanifest.lua structure
- Client/server patterns
- Thread management
- Project structure
Action: Read relevant local markdown file
Framework Auto-Detection
When starting a task, detect the active framework from project files:
Check fxmanifest.lua
-- QBox indicators
dependency 'qbx_core'
dependency 'ox_lib'
-- QBCore indicators
dependency 'qb-core'
-- ESX indicators
dependency 'es_extended'
dependency 'esx_core'
Check code imports
-- QBox
local QBX = exports.qbx_core:GetCoreObject()
-- QBCore
local QBCore = exports['qb-core']:GetCoreObject()
-- ESX
local ESX = exports.es_extended:getSharedObject()
Best Practices (Quick Reference)
Performance Rules
| Rule | Why |
|---|---|
Avoid Wait(0) in loops |
Burns CPU, causes lag |
| Cache player ped | local ped = cache.ped or PlayerPedId() |
| Use ox_lib target | Better than distance checks |
| Statebags over events | More efficient state sync |
Security Rules
| Rule | Reason |
|---|---|
| Server-side validation | Client can be tampered |
| Sanitize player input | Prevent injection |
| Use callbacks | Prevent event exploitation |
| Rate limit operations | Prevent spam/abuse |
Resource Structure
resource_name/
├── fxmanifest.lua
├── config.lua
├── client/
│ └── main.lua
├── server/
│ └── main.lua
├── shared/
│ └── config.lua
└── html/ # NUI
├── index.html
├── style.css
└── script.js
Framework-Agnostic Pattern
local Framework = {}
if GetResourceState('qbx_core') ~= 'missing' then
Framework.Core = exports.qbx_core:GetCoreObject()
Framework.Type = 'qbox'
elseif GetResourceState('qb-core') ~= 'missing' then
Framework.Core = exports['qb-core']:GetCoreObject()
Framework.Type = 'qbcore'
elseif GetResourceState('es_extended') ~= 'missing' then
Framework.Core = exports.es_extended:getSharedObject()
Framework.Type = 'esx'
end
return Framework
Anti-Patterns
| Don't | Do |
|---|---|
while true do Wait(0) |
Use appropriate wait or events |
| Trust client data | Always validate on server |
| Hardcode framework | Detect dynamically |
| Fetch data every frame | Cache with refresh interval |
| Global variables | Use local, encapsulate |
Related Skills
| Need | Skill |
|---|---|
| NUI design | frontend-design |
| Database design | database-design |
| Security audit | vulnerability-scanner |
| Performance | performance-profiling |