MCPInstall

fivem-dev

FiveM development orchestrator for QBox, QBCore, and ESX frameworks. Dynamically fetches natives, framework APIs, and guides to assets. Supports Lua and NUI (JavaScript/TypeScript).

Installs
488
Last 24h
—
Trending rank
—
Security
Not audited

Install

Works with every agent the skills CLI supports.

npx skills add https://github.com/melihbozkurt10/fivem-dev-plugin --skill fivem-dev
  1. 01

    Install

    Run the command in your project. The CLI asks which agents to install for.

  2. 02

    Describe the task

    Ask your agent for something this skill covers. It loads fivem-dev automatically when relevant.

  3. 03

    Review the result

    The agent follows the SKILL.md steps, scripts and references bundled with the skill.

SKILL.md

The instructions your agent reads when the skill is triggered.

FiveM Development

Dynamic documentation orchestrator for FiveM resource development. Supports QBox, QBCore, ESX frameworks with Lua and NUI (JS/TS).

Philosophy

  1. Fetch, don't memorize - Always get latest from authoritative sources
  2. Framework-agnostic thinking - Understand patterns, adapt to framework
  3. Performance-first - FiveM has strict tick budgets
  4. Security-aware - Server-side validation is non-negotiable

CRITICAL: No Hallucination Policy

NEVER invent or guess native functions, framework APIs, or parameters.

Rules:

  1. If unsure about a native → MUST fetch from https://docs.fivem.net/natives/
  2. If unsure about framework API → MUST fetch from official docs
  3. If function doesn't exist → Tell user honestly, suggest alternatives
  4. 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:

TypeSourceAction
Native functionshttps://docs.fivem.net/natives/WebFetch or tell user to check
QBox APIhttps://docs.qbox.re/WebFetch
QBCore APIhttps://docs.qbcore.org/WebFetch
ESX APIhttps://docs.esx-framework.org/WebFetch
ox_libhttps://overextended.dev/ox_libWebFetch
Props/Vehicleshttps://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:

FileDescriptionWhen to Read
frameworks/framework-detection.mdDetect active frameworkStarting new task
frameworks/qbox.mdQBox exports, patternsQBox project
frameworks/qbcore.mdQBCore events, exportsQBCore project
frameworks/esx.mdESX xPlayer, eventsESX project
scripting/lua-patterns.mdLua idioms for FiveMWriting Lua
scripting/nui-guide.mdNUI HTML/CSS/JS patternsBuilding UI
scripting/client-server.mdArchitecture patternsNew resource
scripting/thread-management.mdPerformance patternsOptimization
resources/manifest.mdfxmanifest.lua referenceResource setup
resources/ox-lib-guide.mdox_lib utilitiesUsing ox_lib
assets/asset-discovery.mdFinding GTA V assetsProps, 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, manifestREAD local files
Best practices, patternsREAD 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:

CategoryContains
PLAYERGetPlayerPed, GetPlayerServerId, PlayerId
VEHICLECreateVehicle, SetVehicleMod, GetVehicleClass
PEDCreatePed, SetPedComponentVariation, IsPedInVehicle
ENTITYGetEntityCoords, SetEntityHeading, DeleteEntity
GRAPHICSDrawRect, DrawText3D, DrawMarker
UISetTextEntry, BeginTextCommandDisplayText
CAMCreateCam, SetCamActive, RenderScriptCams
AUDIOPlaySoundFrontend, PlayAmbientSpeech1
WEAPONGiveWeaponToPed, GetSelectedPedWeapon
CFXStatebags, 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

RuleWhy
Avoid Wait(0) in loopsBurns CPU, causes lag
Cache player pedlocal ped = cache.ped or PlayerPedId()
Use ox_lib targetBetter than distance checks
Statebags over eventsMore efficient state sync

Security Rules

RuleReason
Server-side validationClient can be tampered
Sanitize player inputPrevent injection
Use callbacksPrevent event exploitation
Rate limit operationsPrevent 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'tDo
while true do Wait(0)Use appropriate wait or events
Trust client dataAlways validate on server
Hardcode frameworkDetect dynamically
Fetch data every frameCache with refresh interval
Global variablesUse local, encapsulate

Related Skills

NeedSkill
NUI designfrontend-design
Database designdatabase-design
Security auditvulnerability-scanner
Performanceperformance-profiling

FAQ

What does the fivem-dev skill do?

FiveM development orchestrator for QBox, QBCore, and ESX frameworks. Dynamically fetches natives, framework APIs, and guides to assets. Supports Lua and NUI (JavaScript/TypeScript).

How do I install fivem-dev?

Run npx skills add https://github.com/melihbozkurt10/fivem-dev-plugin --skill fivem-dev in your project. The skills CLI detects the agents you use and copies the skill into the right folder. For Claude Code you can also place the skill folder at ~/.claude/skills/fivem-dev/ (personal) or .claude/skills/fivem-dev/ (project).

Which AI agents can use fivem-dev?

Any agent that supports the open Agent Skills format (a folder with a SKILL.md file), including Claude Code, Codex, Cursor, GitHub Copilot, Gemini CLI, Windsurf, Cline, OpenCode and more.

Is fivem-dev safe to install?

No partner security audit is available yet. Skills can run commands and scripts, so read the SKILL.md and any bundled files before installing.

Who maintains fivem-dev?

It is published by melihbozkurt10 in melihbozkurt10/fivem-dev-plugin. It has 488 recorded installs.

Popular code quality & workflow skills

View category →

grill-me

mattpocock/skills

A relentless interview to sharpen a plan or design.

Scan a codebase for deepening opportunities, present them as a visual HTML report, then grill through whichever one you pick.

handoff

mattpocock/skills

Compact the current conversation into a handoff document for another agent to pick up.

domain-modeling

mattpocock/skills

Build and sharpen a project's domain model. Use when discussing codebase terminology, writing or editing a GLOSSARY.md, or recording or editing an ADR.

codebase-design

mattpocock/skills

Shared vocabulary for designing deep modules. Use when the user wants to design or improve a module's interface, find deepening opportunities, decide where a seam goes, make code more testable or AI-navigable, or when another skill needs the deep-module vocabulary.

diagnosing-bugs

mattpocock/skills

Diagnosis loop for hard bugs and performance regressions. Use when the user says "diagnose"/"debug this", or reports something broken/throwing/failing/slow.