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.RegisterServerCallback exports.es_extended: Action: Detect framework → Fetch from appropriate docs RULE 3: ox_lib Detection Triggers when: lib. functions exports.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
fivem-dev
安装
npx skills add https://github.com/melihbozkurt10/fivem-dev-plugin --skill fivem-dev