{"_id":"@anx-scripts/fivem-skills","_rev":"4-59d5f52feb0c42c03f38feb3d94570fc","name":"@anx-scripts/fivem-skills","dist-tags":{"latest":"0.6.0"},"versions":{"0.4.2":{"name":"@anx-scripts/fivem-skills","version":"0.4.2","_id":"@anx-scripts/fivem-skills@0.4.2","maintainers":[{"name":"annexation","email":"thenorbiq@gmail.com"}],"homepage":"https://github.com/anx-scripts/fivem-skills#readme","bugs":{"url":"https://github.com/anx-scripts/fivem-skills/issues"},"bin":{"fivem-skills":"dist/cli.cjs"},"dist":{"shasum":"67c25606d3df065d7917033380276274fa8636ea","tarball":"https://registry.npmjs.org/@anx-scripts/fivem-skills/-/fivem-skills-0.4.2.tgz","fileCount":4,"integrity":"sha512-K5zbUQ+TjvXwefLxTeqy/n4JgTG+bHod5M3PKvOcAUqfs4ZMQ+3Hw7DZg4uh2jA/wSDkdCL/ZVVEtIR2ncroYg==","signatures":[{"sig":"MEUCIGLi65XMAGc5dxjL0Ra9n0HeZaV8mvTlt9UuF/oDlFkfAiEAgYnoRtKrf04Oe0j/pdz9NsqpQCA9g5WBMw5sw8nVbCU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":23842},"type":"module","gitHead":"8280ba6ab900daa2e25620b62f19363b5599080b","scripts":{"dev":"bun run src/cli.ts","build":"bun build src/cli.ts --outfile dist/cli.cjs --target node --format cjs","typecheck":"tsc --noEmit"},"_npmUser":{"name":"annexation","email":"thenorbiq@gmail.com"},"repository":{"url":"git+https://github.com/anx-scripts/fivem-skills.git","type":"git"},"_npmVersion":"11.6.2","description":"Local FiveM documentation mirrors (docs, natives, Overextended) with offline search CLI","directories":{},"_nodeVersion":"25.3.0","_hasShrinkwrap":false,"devDependencies":{"@types/bun":"latest","typescript":"^7.0.2"},"_npmOperationalInternal":{"tmp":"tmp/fivem-skills_0.4.2_1783700189911_0.22844082392276954","host":"s3://npm-registry-packages-npm-production"}},"0.5.0":{"name":"@anx-scripts/fivem-skills","version":"0.5.0","_id":"@anx-scripts/fivem-skills@0.5.0","maintainers":[{"name":"annexation","email":"thenorbiq@gmail.com"}],"homepage":"https://github.com/anx-scripts/fivem-skills#readme","bugs":{"url":"https://github.com/anx-scripts/fivem-skills/issues"},"bin":{"fivem-skills":"dist/cli.cjs"},"dist":{"shasum":"01d805d14d2fbd18126c12cfbbe174ce91f75833","tarball":"https://registry.npmjs.org/@anx-scripts/fivem-skills/-/fivem-skills-0.5.0.tgz","fileCount":4,"integrity":"sha512-JnsnhQT3DtaA0xqm9/YP+JPUNcw2N86DZn6X26e2r2sCsqeFZp8UwsF1RTdPAveWUhLqFsvzcv50SRDtgCGDRg==","signatures":[{"sig":"MEUCIH/UKzAFD9pTFoex2uOopljyfsgoMEXSEwn9xk86Dk55AiEA1TU3tyEDz8P9Y65JKPZqML/q+fVCB/WIZZWh3jloTjg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":23842},"type":"module","gitHead":"381ce1f48485be7cb7fbdf9dd7934649701d45f4","scripts":{"dev":"bun run src/cli.ts","build":"bun build src/cli.ts --outfile dist/cli.cjs --target node --format cjs","typecheck":"tsc --noEmit"},"_npmUser":{"name":"annexation","email":"thenorbiq@gmail.com"},"repository":{"url":"git+https://github.com/anx-scripts/fivem-skills.git","type":"git"},"_npmVersion":"11.6.2","description":"Local FiveM documentation mirrors (docs, natives, Overextended) with offline search CLI","directories":{},"_nodeVersion":"25.3.0","_hasShrinkwrap":false,"devDependencies":{"@types/bun":"latest","typescript":"^7.0.2"},"_npmOperationalInternal":{"tmp":"tmp/fivem-skills_0.5.0_1783700745271_0.4622301443775221","host":"s3://npm-registry-packages-npm-production"}},"0.5.1":{"name":"@anx-scripts/fivem-skills","version":"0.5.1","_id":"@anx-scripts/fivem-skills@0.5.1","maintainers":[{"name":"annexation","email":"thenorbiq@gmail.com"}],"homepage":"https://github.com/anx-scripts/fivem-skills#readme","bugs":{"url":"https://github.com/anx-scripts/fivem-skills/issues"},"bin":{"fivem-skills":"dist/cli.cjs"},"dist":{"shasum":"cdd8a1f161bb7b81e72a04d225a7493df4c42835","tarball":"https://registry.npmjs.org/@anx-scripts/fivem-skills/-/fivem-skills-0.5.1.tgz","fileCount":4,"integrity":"sha512-pZ8Vda8MEBktvRxlUrwfHM+ouK8ZQDo7omLn0zG3TZkWdSm/LpmG0ps55p+52aWpfwt496gGR0JFRNrDyBw5jg==","signatures":[{"sig":"MEUCICRpX6eXYH3e/qCASMxoO+Y4xv9rvsC2whzPDSLCrS0fAiEAn+Y4j6FfMkoll/xkoXol2pVYYvc3wlFAqb5DR7EeDwg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":23842},"type":"module","gitHead":"23f3fa0b202f2b2ef1357835f4a3553bf6dfa46e","scripts":{"dev":"bun run src/cli.ts","build":"bun build src/cli.ts --outfile dist/cli.cjs --target node --format cjs","typecheck":"tsc --noEmit"},"_npmUser":{"name":"annexation","email":"thenorbiq@gmail.com"},"repository":{"url":"git+https://github.com/anx-scripts/fivem-skills.git","type":"git"},"_npmVersion":"11.6.2","description":"Local FiveM documentation mirrors (docs, natives, Overextended) with offline search CLI","directories":{},"_nodeVersion":"25.3.0","_hasShrinkwrap":false,"devDependencies":{"@types/bun":"latest","typescript":"^7.0.2"},"_npmOperationalInternal":{"tmp":"tmp/fivem-skills_0.5.1_1783704484869_0.5011526267500876","host":"s3://npm-registry-packages-npm-production"}},"0.6.0":{"name":"@anx-scripts/fivem-skills","version":"0.6.0","description":"Local FiveM documentation mirrors (docs, natives, Overextended) with offline search CLI","type":"module","bin":{"fivem-skills":"dist/cli.cjs"},"scripts":{"dev":"bun run src/cli.ts","build":"bun build src/cli.ts --outfile dist/cli.cjs --target node --format cjs","typecheck":"tsc --noEmit"},"devDependencies":{"@types/bun":"latest","typescript":"^7.0.2"},"repository":{"type":"git","url":"git+https://github.com/anx-scripts/fivem-skills.git"},"gitHead":"2f45e61211714b1a9572b4a3f0a19f28f827e35e","_id":"@anx-scripts/fivem-skills@0.6.0","bugs":{"url":"https://github.com/anx-scripts/fivem-skills/issues"},"homepage":"https://github.com/anx-scripts/fivem-skills#readme","_nodeVersion":"25.3.0","_npmVersion":"11.6.2","dist":{"integrity":"sha512-h8AUIN+Kb+obJnyypBll0Bfn85XxJ1gh0hROwscs/Xk4hu1IPpz0otLSOvzzYjR1RrKrjP8WArpxHnQ2gihtIw==","shasum":"73ad1f9155fac7e6eda1d6ab3027cc71df51d39e","tarball":"https://registry.npmjs.org/@anx-scripts/fivem-skills/-/fivem-skills-0.6.0.tgz","fileCount":4,"unpackedSize":22654,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIG2+r50siYmWp13qEZgOsWDNryEtNg++8Zn78h+caYgmAiAlm5zw2MLYXWIsEjJIeo12rDAVHbhulvrwGnoVNh3nzw=="}]},"_npmUser":{"name":"annexation","email":"thenorbiq@gmail.com"},"directories":{},"maintainers":[{"name":"annexation","email":"thenorbiq@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/fivem-skills_0.6.0_1783789481223_0.8120223220696774"},"_hasShrinkwrap":false}},"time":{"created":"2026-07-10T16:16:29.662Z","modified":"2026-07-11T17:04:41.501Z","0.4.2":"2026-07-10T16:16:30.051Z","0.5.0":"2026-07-10T16:25:45.402Z","0.5.1":"2026-07-10T17:28:05.012Z","0.6.0":"2026-07-11T17:04:41.380Z"},"bugs":{"url":"https://github.com/anx-scripts/fivem-skills/issues"},"homepage":"https://github.com/anx-scripts/fivem-skills#readme","repository":{"type":"git","url":"git+https://github.com/anx-scripts/fivem-skills.git"},"description":"Local FiveM documentation mirrors (docs, natives, Overextended) with offline search CLI","maintainers":[{"name":"annexation","email":"thenorbiq@gmail.com"}],"readme":"# fivem-skills\r\n\r\nCLI that mirrors FiveM documentation locally and searches it offline — so AI agents (and humans) have the docs at hand without network access or scraping.\r\n\r\nSources:\r\n\r\n| Name      | Repository                                          | Content                                     |\r\n| --------- | ---------------------------------------------------- | ------------------------------------------- |\r\n| `docs`    | `citizenfx/fivem-docs` → `content/docs`               | Official FiveM documentation                |\r\n| `natives` | `citizenfx/natives`                                   | FiveM / GTA V / RDR3 native functions       |\r\n| `ox`      | `overextended/overextended.github.io` → `content/docs` | ox_lib, ox_inventory, oxmysql… docs         |\r\n\r\nData lands in `~/.fivem-skills/data/<source>/` (shallow git sparse clones — ~8 MB total).\r\n\r\n## Install\r\n\r\n```bash\r\nbun add -g @anx-scripts/fivem-skills   # or: npm install -g @anx-scripts/fivem-skills\r\nfivem-skills pull\r\n```\r\n\r\nFrom a local clone: `bun install && bun run build && bun link`.\r\n\r\n## Using with AI agents\r\n\r\nThe repo ships [`SKILL.md`](SKILL.md) — an agent skill teaching the search → read-the-printed-path workflow. Install it into a project with [skills](https://github.com/vercel-labs/skills):\r\n\r\n```bash\r\nbunx skills add anx-scripts/fivem-skills     # or: npx skills add anx-scripts/fivem-skills\r\n```\r\n\r\nThe skill tells the agent to prompt for a global CLI install when `fivem-skills` is missing, so installing the skill alone is enough to bootstrap.\r\n\r\n## Usage\r\n\r\n```bash\r\nfivem-skills pull                 # download/update all sources\r\nfivem-skills pull natives         # selected sources only\r\n\r\nfivem-skills search GetPlayerPed              # search everywhere\r\nfivem-skills search \"ox_lib callback\" -s ox   # AND within the ox source\r\nfivem-skills search \"SET_PED_.*\" -e -l 50     # regex, limit 50 files\r\n\r\nfivem-skills list                 # source status\r\n```\r\n\r\n## How search works\r\n\r\n- **Multiple words = AND** — a file matches when every word appears somewhere in it (file name or content). Force an exact phrase with regex: `-e \"register callback\"`.\r\n- **camelCase splitting** — query words are split on camelCase boundaries, so `SafePed` finds `GetSafeCoordForPed` just like `safe ped` would.\r\n- **Native name normalization** — `GET_PLAYER_PED`, `GetPlayerPed` and `getplayerped` are the same query; underscores and case don't matter when matching file names.\r\n- **Ranking** — exact file name match > partial file name match > content-only matches (sorted by number of matching lines).\r\n- Results show up to 5 matching lines per file, **preferring markdown headings** — for a native that surfaces its `## NATIVE_NAME` signature heading instead of enum entries.\r\n- Each result prints the file's **absolute on-disk path**. `search` only finds and previews — read a file by opening that path with your own editor/grep tools, so you pull just the lines you need (native files are tiny; the `docs/.../game-references/*` files are huge lookup tables — grep them, never read whole).\r\n- Output is colorized on interactive terminals only (respects `NO_COLOR`); piped output stays plain.\r\n\r\n## Development\r\n\r\n```bash\r\nbun run dev -- search callback    # run from src/ without building\r\nbun run typecheck\r\nbun run build                     # bundles src/cli.ts into dist/cli.cjs (CJS, zero dependencies)\r\n```\r\n\r\nDesign notes:\r\n\r\n- **Sparse clones instead of tarballs** — the full `citizenfx/fivem-docs` tarball weighs 274 MB (site assets); a sparse clone of `content/docs` alone is ~4 MB.\r\n- **`dist/cli.cjs` in CJS format** — the bundle runs under plain Node regardless of `\"type\": \"module\"` or whether a `package.json` sits next to it.\r\n- **Built-in sources only** — this repo will eventually ship a SKILL.md instructing agents; a fixed, known set of sources keeps their behavior predictable. New sources are added deliberately in code (`src/sources.ts`), not via configuration.\r\n","readmeFilename":"README.md"}