Repository navigation
Conversation
The frontmatter description was 1185 characters, which fails the skill-creator quick_validate check (max 1024). Shorten it while keeping the trigger keywords, add a length check to validate_b3sty_skill.py so CI catches it, and tidy the README (list server.cfg.example, group the Memory section with the structure docs, drop the user-specific path). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01VSf2U7JNwmAocuwkaxZQyP
Full content audit of skills/, memory/, references/server.cfg.example
and packaging docs. Each finding was independently verified against the
native references and FXServer/oxmysql/ox_lib sources before fixing, then
the resulting diff was reviewed again for regressions and cross-file
contradictions.
Highlights:
- security-performance: fix buy example that granted items on a 0-row
conditional debit, string `sender` in explosionEvent, lock leak on
error, math.floor(nil) validation, server-origin `source` guard
("" not 65535), weaponType unsigned hash, convar descriptions.
- natives: correct BOOL/int result marshalling (1/false, ResultAsInteger),
float coercion for named calls, PointerValue* behavior, RDR3 struct
packing, server-side build gating, shared ammo-by-type hashes.
- nui/networking: SetNuiFocus hasCursor, FiveM-only built-in events,
`for` keyword in msgpack scope data, routing bucket inheritance,
NetworkGetEntityOwner -1, sv_filterRequestControl modes.
- runtime/database/style: ensure vs start, exports proxy never nil,
CfxLua require cannot load resource files, oxmysql error semantics,
transaction 0-row caveat, `^=` is XOR, license2 preference.
- memory: non-yielding onResourceStop flush, reachable save-failure path,
corrected ammo wrapper, state bag clear, dated entries.
- server.cfg.example: secrets first, no semicolons in comments,
sv_endpointPrivacy/sv_master1/sv_authMinTrust/sv_requestParanoia
descriptions corrected, sv_filterRequestControl 4 audit warning.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01VSf2U7JNwmAocuwkaxZQyP
- skills/common/frameworks.md: ESX, QBCore, Qbox, VORP, and RSG player lookup, character IDs, overdraft-safe money handling, items, jobs, lifecycle events, and a minimal server bridge. API shapes checked against each framework's current source. - commands/b3sty-review.md: /b3sty-review walks entry points in the SKILL.md review priority order and reports verified findings by severity. - commands/b3sty-new-resource.md: /b3sty-new-resource scaffolds a resource that follows the rules (manifest, controllers, validated prefixed events, cleanup, optional bridge/NUI/DB). - Shipped as plugin commands, not nested SKILL.md files, so the root skill still uploads as a single skill; the validator now rejects nested SKILL.md files and checks command frontmatter. - Wire the new files into SKILL.md routing, README, and AGENTS.md. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01VSf2U7JNwmAocuwkaxZQyP
- scripts/check_lua_examples.py compiles every ```lua block in the rule, memory, and command docs with Lua 5.4 after rewriting CfxLua compound assignment and backtick hashes; CI installs lua5.4 and runs it. - validate_b3sty_skill.py now requires every native hash and CAPS native name cited in the rules to exist in references/natives/ (CFX natives cited with their docs link and a short list of non-native constants are exempt). - The new check caught a non-existent native in the native-usage name conversion examples; replaced it with SET_PED_AMMO_BY_TYPE. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01VSf2U7JNwmAocuwkaxZQyP
- skills/common/network-performance.md: net event cost model, FXServer rate limiters and what each does when exceeded (drop vs kick), latent events (per-target bps, reassembly), msgpack payload shape, snapshot-then-deltas caching, audience, and state bag cost. - debugging.md: netEventLog/netgraph/net_statsFile/cl_drawPerf, the developer-mode gate, server vs network thread hitches, measured vs estimated figures; server resmon is Windows GUI only. - security-performance.md Performance Rules: GetGamePool scans, per-frame allocations, GetHashKey in loops, yielding long server loops. - commands/b3sty-perf.md: /b3sty-perf performance pass with a measured/estimated report. Facts were checked against the citizenfx/fivem source and fivem-docs. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01VSf2U7JNwmAocuwkaxZQyP
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
This PR has five commits.
SKILL.mddescription was over the 1024-char limit. The frontmatter description was 1185 characters, which failed skill-creatorquick_validate.py. It is now under the limit and keeps every trigger keyword.scripts/validate_b3sty_skill.pynow enforces the limit. The README was also tidied.Content audit. I audited
skills/,memory/,references/server.cfg.exampleand the packaging docs. Before any fix, a separate skeptic checked each finding against the native references and the FXServer, oxmysql and ox_lib sources. A second review then checked the resulting diff for regressions and contradictions between files.Framework rules and two slash commands.
skills/common/frameworks.mdcovers ESX, QBCore, Qbox, VORP and RSG: player lookup, character IDs, overdraft-safe money handling, items, jobs, lifecycle events, and a minimal server bridge. Each API was checked against the framework's current source./b3sty-reviewreviews a resource and reports findings by severity./b3sty-new-resourcescaffolds a resource that follows the rules.commands/. A nestedSKILL.mdwould break single-skill upload, and the validator now rejects one.CI checks for Lua examples and native references.
scripts/check_lua_examples.pycompiles everyluablock with Lua 5.4. It first rewrites the CfxLua compound operators and backtick hashes. CI installslua5.4and runs it.references/natives/. This check caught one native that does not exist, and the example was fixed.Network performance rules and
/b3sty-perf.skills/common/network-performance.mdcovers:bpsand reassemblydebugging.mdnow coversnetEventLog,netgraph,cl_drawPerf, the developer-mode gate, and server vs network thread hitches. It also corrects an earlier claim: serverresmonexists only in the Windows GUI.GetGamePoolscans, per-frame allocations,GetHashKeyin loops, and yielding long server loops./b3sty-perfruns a performance pass and reports each figure as measured or estimated.Notable corrections (commit 2)
explosionEventcompared a stringsenderwith a number.math.floor(nil)crashed input validation.sourceguard now checks"", not65535.weaponTypeis an unsigned hash.license2.1/false.ResultAsInteger().PointerValue*behavior and RDR3 struct packing.sv_enforceGameBuild.SetNuiFocus(hasFocus, hasCursor).cbmakes the NUI request time out.NetworkGetEntityOwnercan return-1.sv_filterRequestControlmodes.ensurevsstart.exportsproxy is never nil.requirecannot load resource files.^=is XOR.onResourceStopflush does not yield, the save-failure path is reachable, and the ammo wrapper is corrected.server.cfg.example: secrets are exec'd first, semicolons are removed from comments, and thesv_master1,sv_endpointPrivacyandsv_filterRequestControl 4notes are corrected.Verification
python scripts/validate_b3sty_skill.pypasses locally and in CI.python scripts/check_lua_examples.pypasses all 45 blocks, locally and in CI.quick_validate.py .reportsSkill is valid!.🤖 Generated with Claude Code
https://claude.ai/code/session_01VSf2U7JNwmAocuwkaxZQyP