Agent skill

Lua Helper

by shepherdjerred in shepherdjerred/monorepo

Current Lua guidance for portable Lua, LuaJIT, Neovim's Lua interface, WezTerm configuration, LuaLS, formatting, linting, testing, and security.

GPL-3.0Auto-check passedDevelopment

Install Lua Helper

skills CLI
$ npx skills add shepherdjerred/monorepo --skill lua-helper -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install shepherdjerred/monorepo lua-helper --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/shepherdjerred/monorepo.git skills-src && mkdir -p .claude/skills && cp -r skills-src/packages/dotfiles/dot_agents/skills/lua-helper .claude/skills/lua-helper && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
lua-helper
GitHub stars
112
Token cost
~1.7k tokens
SKILL.md length
757 words
Files
6 (incl. references)
Skills in repo
63
Repo updated
First seen
Licence
GPL-3.0

At a glance

Current Lua guidance for portable Lua, LuaJIT, Neovim's Lua interface, WezTerm configuration, LuaLS, formatting, linting, testing, and security.

  • Works in 4 steps: Lua language/interface version. → Whether the runtime is PUC Lua, LuaJIT,… → Host application version and… → …
  • Neovim plugins/config
  • SKILL.md covers Current baselines, Select the runtime, Error discipline and Tables and sequences, plus 5 more sections
  • Instructions only: no scripts, shell commands, URLs or credentials in SKILL.md

What it does

Lua Helper is an agent skill from shepherdjerred/monorepo. Current Lua guidance for portable Lua, LuaJIT, Neovim's Lua interface, WezTerm configuration, LuaLS, formatting, linting, testing, and security. Use when writing or reviewing Lua, Neovim plugins/config, WezTerm config, rockspecs, or Lua tooling.

Its SKILL.md is about 1.7k tokens, which your agent loads only when the skill is triggered. The skill folder holds 6 other files, including reference files (for example `references/core-language.md`, `references/neovim.md` and `references/releases.md`).

It sits in Development, covering Linting and formatting. It works with Lua. The repository describes itself as: Monorepo for all of my projects. The licence is GPL-3.0.

When your agent uses it

  • Neovim plugins/config
  • Tasks that involve Linting and formatting

Example prompts

  • “/lua-helper”

Workflow steps

4 steps, taken from the first numbered list in SKILL.md.

  1. Lua language/interface version.
  2. Whether the runtime is PUC Lua, LuaJIT, or a host embedding.
  3. Host application version and stable/nightly channel.
  4. Tooling version and project configuration.

What it can do on your machine

Read from SKILL.md and the folder at commit 46ddf2f. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    No scripts in the folder and no shell commands in SKILL.md (its code samples are lua and bash).

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    No URLs in SKILL.md.

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

Lua Helper loads about 1.7k tokens when it runs, and up to ~6.1k if it reads all its reference files. Until then it costs about 64 tokens; SKILL.md has 757 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~64
When it runs · the whole SKILL.md, loaded when a task matches
~1.7k
With references · SKILL.md plus every file in references/, read only if the agent opens them
~6.1k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check passed

The automated check found no risky patterns in SKILL.md.

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.

SKILL.md

The full file from shepherdjerred/monorepo at commit 46ddf2f, republished under its GPL-3.0 licence (© shepherdjerred). 757 words, ~1,711 tokens.

Download SKILL.mdSave it as .claude/skills/lua-helper/SKILL.md (or your agent's skills folder). This skill also uses 5 other files; get the full folder from GitHub.
name
lua-helper
description
Current Lua guidance for portable Lua, LuaJIT, Neovim's Lua interface, WezTerm configuration, LuaLS, formatting, linting, testing, and security. Use when writing or reviewing Lua, Neovim plugins/config, WezTerm config, rockspecs, or Lua tooling.

Lua Helper

Identify the host before writing Lua. Portable Lua 5.5, Neovim's Lua 5.1 interface, optional LuaJIT extensions, and WezTerm's Lua 5.4 runtime have different APIs and semantics.

Current baselines

Verified 2026-08-03:

Host or toolCurrent baselineCompatibility boundary
Lua5.5.0; maintained 5.4 line at 5.4.8Version-gate APIs newer than the project's minimum
LuaJITActive rolling 2.1 branchLua 5.1-compatible with implementation extensions and build flags
Neovim0.12.4Permanent Lua 5.1 interface; may use LuaJIT or a compatible fork
WezTermStable release still dated 2024Embeds Lua 5.4; online docs can describe nightly-only APIs
LuaLS3.18.2Annotations and diagnostics are tooling, not runtime validation
StyLua2.5.2Pin/configure per repository
LuaRocks3.13.0Installation runs package build logic and mutates environments

Read references/releases.md for the 68-page research ledger. Read references/core-language.md for portable Lua and LuaJIT differences. Read references/neovim.md for current LSP, diagnostics, process, trust, and buffer APIs. Read references/wezterm.md for configuration evaluation, strict mode, events, subprocesses, and mux domains. Read references/tooling-and-security.md for LuaLS, formatters, linters, tests, rocks, and security.

Select the runtime

Before using an API, establish:

  1. Lua language/interface version.
  2. Whether the runtime is PUC Lua, LuaJIT, or a host embedding.
  3. Host application version and stable/nightly channel.
  4. Tooling version and project configuration.

In Neovim, target the documented Lua 5.1 interface and check jit before LuaJIT-specific behavior. In WezTerm, target Lua 5.4 and check the API's “Since” version against the installed binary.

Error discipline

Lua APIs commonly return nil, error or status tuples. Check every open, read, write, close, subprocess, and host callback result whose failure matters.

lua
local function read_file(path)
  local file, open_error = io.open(path, "rb")
  if not file then
    return nil, open_error
  end

  local content, read_error = file:read("*a")
  local close_ok, close_error = file:close()
  if not content then
    return nil, read_error
  end
  if not close_ok then
    return nil, close_error
  end
  return content
end

Do not bind an unchecked io.open result as a to-be-closed value. Preserve close failures when durability matters.

Tables and sequences

The length operator does not count arbitrary table keys. For a table with holes, #table returns a valid border and is not a reliable element count. Model sequences as contiguous integer keys or count explicitly.

Version-gate table.move, table.unpack, rawlen, __pairs, and related APIs. Lua 5.1 uses global unpack; LuaJIT compatibility libraries can depend on build flags.

Avoid memoization keys built from table.concat({...}): they reject many value types and can collide. Use nested tables keyed by arguments or a deliberately encoded, restricted input domain.

Neovim

Current native LSP setup uses vim.lsp.config and vim.lsp.enable. This replaces nvim-lspconfig's deprecated legacy require('lspconfig').setup framework; nvim-lspconfig itself remains maintained and supplies server definitions.

Use current APIs:

  • vim.hl.hl_op() for yank highlighting.
  • vim.diagnostic.jump({ count = 1 }) and negative count for navigation.
  • vim.api.nvim_set_option_value(name, value, { buf = buffer }) for scoped options.
  • vim.system({ program, argument }, { text = true }):wait() for ordinary subprocesses, checking code, signal, and stderr.

Use :trust and vim.secure for project-local configuration. exrc executes project code and is a trust boundary.

Show full SKILL.md (320 more words)Show less

WezTerm

Create the configuration with strict mode so invalid options fail:

lua
local wezterm = require("wezterm")
local config = wezterm.config_builder()
config:set_strict_mode(true)

return config

WezTerm may evaluate configuration repeatedly. Keep top-level evaluation idempotent and free of side effects such as spawning processes. Config precedence includes CLI and environment overrides before standard paths.

wezterm.run_child_process returns success, stdout, and stderr. Inspect success. Returning false from a wezterm.on callback stops later callbacks and the default action.

Tooling

bash
stylua --check .
luacheck .
selene .
busted

Use the tools configured by the project. Choose Luacheck or Selene deliberately instead of layering both without purpose. Use Busted for behavior-style suites or LuaUnit for lightweight xUnit tests. Use headless Neovim/Plenary only when host integration is part of the contract.

LuaLS supports .luarc.json / .luarc.jsonc, annotations, diagnostics, addons, and stricter type-checking modes. Loading the entire Neovim runtime as a workspace library is valid but broad; prefer an addon or narrow explicit paths when sufficient.

Security

  • Load untrusted source only as text with a constrained environment; never accept untrusted binary chunks.
  • Avoid shell construction in os.execute and string-form vim.fn.system. Never concatenate untrusted input into a shell command.
  • WezTerm and Neovim config execute arbitrary code. Keep secrets out of config and use protected identity/agent mechanisms.
  • WezTerm config can execute more than once; repeated evaluation magnifies side effects.
  • LuaRocks installation executes rock build/package logic. Inspect sources and rockspecs and pin versions in reproducible environments.
  • LuaJIT FFI is an implementation extension with native-memory safety implications; do not assume it exists or is sandboxed.

Review checklist

  • Identify portable Lua, LuaJIT, Neovim, or WezTerm before choosing APIs.
  • Version-gate language, host, and online-documentation features.
  • Check file, process, callback, and cleanup results.
  • Do not use # as a general map size or unsafe concatenated memo keys.
  • Use current Neovim LSP, highlight, diagnostic, option, and process APIs.
  • Make WezTerm config strict, idempotent, and side-effect free at top level.
  • Configure LuaLS and one intentional lint/test workflow.
  • Treat project config, shells, rocks, binary chunks, and FFI as trust boundaries.
  • Preserve the distinction between Neovim's Lua 5.1 interface and optional LuaJIT implementation.

© shepherdjerred, GPL-3.0. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

SKILL.md and 5 other files (references) in packages/dotfiles/dot_agents/skills/lua-helper of shepherdjerred/monorepo.

  • SKILL.md
  • references/core-language.md
  • references/neovim.md
  • references/releases.md
  • references/tooling-and-security.md
  • references/wezterm.md

Open the folder on GitHubat commit 46ddf2f

Compare with similar skills

Lua Helper next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

Lua Helper compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Lua Helper this skillshepherdjerred/monorepo112—~1.7kAutomated safety check: PassGPL-3.0
Checking Files With LspSidiora-Labs/centra-llm-agents115—~1.9kAutomated safety check: PassCustom licence
Install Anti-Slop Oxlint Rulesdmmulroy/anti-slop5.2k—~2.2kAutomated safety check: PassMIT
Babysit PR To Pass CIsgl-project/sglang37k2 repos~3kAutomated safety check: PassApache-2.0
Rust Best Practicesfarm-fe/farm5.6k3 repos~1.1kAutomated safety check: PassMIT
Go Pedantrychromedp/chromedp13k—~3.7kAutomated safety check: PassMIT

Similar skills

  • Checking Files With Lsp

    Sidiora-Labs/centra-llm-agents

    A skill your agent uses when you need to check, verify, validate or understand code or structure of a file (often code related files or markdown) - automatically detects file type, finds appropriate…

    115 GitHub stars~1.9k tokensUpdated 19 days ago
    DevelopmentAuto-check passed
  • Installs, updates or migrates the vendored anti-slop Oxlint plugin in a repository, keeping local rule changes and the plugin's license and provenance files.

    5.2k GitHub stars~2.2k tokensUpdated 27 days ago
    DevelopmentAuto-check passed
  • Babysit PR To Pass CI

    sgl-project/sglang

    Start and persistently pursue a goal to babysit an SGLang pull request until selected GitHub Actions workflows pass on the latest PR head.

    37k GitHub starsUsed in 2 repos~3k tokens
    DevelopmentAuto-check passed
  • Guide for writing idiomatic Rust code based on Apollo GraphQL's best practices handbook.

    5.6k GitHub starsUsed in 3 repos~1.1k tokens
    DevelopmentAuto-check passed
  • Go Pedantry

    chromedp/chromedp

    This skill should be used when the user is writing Go code and needs guidance on Go-specific pedantry: error wrapping with fmt.Errorf and %w, interface design (accept interfaces return structs)…

    13k GitHub stars~3.7k tokensUpdated yesterday
    DevelopmentAuto-check passed
  • Kedro Babysit

    kedro-org/kedro

    Run Kedro's local lint / format / type-check / tests on changed files (uses the project's pre-commit hooks, ruff, mypy, pytest, lint-imports, detect-secrets, Make targets — in the right venv), or…

    11k GitHub stars~4k tokensUpdated yesterday
    DevelopmentAuto-check passed

More from shepherdjerred/monorepo

All 63 skills in this repo
  • Bun Runtime Best Practices

    shepherdjerred/monorepo

    Bun runtime APIs and current operational patterns for files, processes, modules, networking, databases, tests, and deployment.

    112 GitHub stars~2k tokensUpdated today
    Auto-check passed
  • Bun Test Patterns

    shepherdjerred/monorepo

    Current Bun test runner guidance for discovery, isolation, parallelism, sharding, changed tests, mocks, timers, snapshots, coverage, DOM Testing Library, and integration teardown.

    112 GitHub stars~2k tokensUpdated today
    Auto-check passed
  • Bun Workspaces

    shepherdjerred/monorepo

    Current Bun workspace guidance for isolated and hoisted linkers, catalogs, filters, scripts, dependency classes, lockfiles, lifecycle trust, caches, publishing, TypeScript package exports, and…

    112 GitHub stars~2.2k tokensUpdated today
    Auto-check passed
  • Deep Research

    shepherdjerred/monorepo

    This skill should be used when the user asks to "deep research", "research this topic", "investigate thoroughly", "do a deep dive on", "comprehensive research on", "find everything about", "survey…

    112 GitHub stars~4.7k tokensUpdated today
    Auto-check: notes
  • Figma Use

    shepherdjerred/monorepo

    This skill should be used when the user asks to "create a Figma design", "design in Figma", "make a Figma mockup", "create an app icon", "design UI", "render JSX to Figma", "export from Figma"…

    112 GitHub stars~946 tokensUpdated today
    Auto-check passed
  • Fish Helper

    shepherdjerred/monorepo

    Current Fish shell scripting, functions, abbreviations, completions, variables, events, configuration, plugins, testing, and safety guidance.

    112 GitHub stars~2k tokensUpdated today
    Auto-check passed

Works with

Categories

Questions about Lua Helper

What does Lua Helper do?

Current Lua guidance for portable Lua, LuaJIT, Neovim's Lua interface, WezTerm configuration, LuaLS, formatting, linting, testing, and security. Lua Helper is an agent skill from shepherdjerred/monorepo. Current Lua guidance for portable Lua, LuaJIT, Neovim's Lua interface, WezTerm configuration, LuaLS, formatting, linting, testing, and security.

When should I use Lua Helper?

Lua Helper fits situations like: neovim plugins/config; tasks that involve Linting and formatting.

How do I install Lua Helper in Claude Code?

Run `npx skills add shepherdjerred/monorepo --skill lua-helper -a claude-code`. Or copy the skill folder (packages/dotfiles/dot_agents/skills/lua-helper in shepherdjerred/monorepo) into .claude/skills/lua-helper in your project. Claude Code loads it when a task matches its description.

How do I install Lua Helper in Codex?

Run `npx skills add shepherdjerred/monorepo --skill lua-helper -a codex`. Or copy the skill folder (packages/dotfiles/dot_agents/skills/lua-helper in shepherdjerred/monorepo) into .agents/skills/lua-helper in your project. Codex loads it when a task matches its description.

Can I use Lua Helper in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add shepherdjerred/monorepo --skill lua-helper -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/lua-helper, .gemini/skills/lua-helper, .github/skills/lua-helper and .opencode/skills/lua-helper in your project.

What does Lua Helper need to run?

SKILL.md names no scripts, command-line tools or credentials: Lua Helper is instructions for the agent only.

Does Lua Helper access the network?

SKILL.md contains no URLs. Any network use would come from the scripts or tools the agent runs. This is read from the text; nothing was executed.

Is Lua Helper safe to install?

Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.

What licence does Lua Helper use?

Lua Helper is published under the GPL-3.0 licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Lua Helper use?

About 1.7k tokens (SKILL.md is roughly 6.8k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full. Its references folder adds about 4.4k tokens, read only when the agent opens those files.

What are the alternatives to Lua Helper?

Skills that share tags, products or a category with Lua Helper: Checking Files With Lsp (Sidiora-Labs/centra-llm-agents, 115 stars), Install Anti-Slop Oxlint Rules (dmmulroy/anti-slop, 5.2k stars), Babysit PR To Pass CI (sgl-project/sglang, 37k stars) and Rust Best Practices (farm-fe/farm, 5.6k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Lua Helper?

shepherdjerred (a GitHub user) maintains it in shepherdjerred/monorepo, which has 112 GitHub stars. The repository holds 63 skills in this directory. The repository was last updated on October 7, 2026.

Source: shepherdjerred/monorepo on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.