From agent-system
Define how to verify Luau scripts without executing them — source-level checks, invariant assertions, pattern validation, and structural tests.
npx claudepluginhub nanana291/agent-system --plugin agent-systemThis skill uses the workspace's default tool permissions.
Use this skill when you need to verify a Luau script's correctness without a Roblox runtime.
Guides Next.js Cache Components and Partial Prerendering (PPR) with cacheComponents enabled. Implements 'use cache', cacheLife(), cacheTag(), revalidateTag(), static/dynamic optimization, and cache debugging.
Migrates code, prompts, and API calls from Claude Sonnet 4.0/4.5 or Opus 4.1 to Opus 4.5, updating model strings on Anthropic, AWS, GCP, Azure platforms.
Automates semantic versioning and release workflow for Claude Code plugins: bumps versions in package.json, marketplace.json, plugin.json; verifies builds; creates git tags, GitHub releases, changelogs.
Use this skill when you need to verify a Luau script's correctness without a Roblox runtime.
You cannot execute Luau outside Roblox. But you CAN verify structure, patterns, and invariants from the source. This skill defines what to check.
These check that the script has the right shape:
| Test | What to Check | Pass Condition |
|---|---|---|
| File parses | No syntax errors, balanced end, matching then | Zero parse errors |
| Library loads | LibSixtyTen/Obsidian loading with fallback | Has pcall + fallback URL |
| Entry point exists | Script has a clear "main" section after setup | Dashboard or UI build after locals |
| Balanced blocks | function/end, if/end, for/end, while/end match | Equal open/close counts |
| No orphan code | Code after early return or break that's unreachable | No dead code sections |
These check that critical safety patterns exist:
| Test | What to Check | Pass Condition |
|---|---|---|
| Remote protection | Every FireServer/InvokeServer inside pcall() | 100% covered |
| Character rebind | CharacterAdded:Connect(...) exists if Character is referenced | Present |
| Loop intervals | Every while has task.wait(n) with n >= 0.1 | All loops protected |
| Nil guards | if not Character then or :FindFirstChild before use | Present in loops |
No while true do | All infinite loops have a kill signal or task.wait | Kill signal present |
No raw getgenv() | Sensitive globals not used without validation | Validated or absent |
These check that known-good patterns are used:
| Test | What to Check | Ideal |
|---|---|---|
| pcallRef caching | local pcallRef = pcall at top | Present |
| Local consolidation | Multi-assignment for cached globals | <10 decl lines |
| StartLoop/StopLoop | Toggle lifecycle management | Present for loop features |
| Status paragraphs | BuildBasicStatus or BuildDetailedStatus | Per feature |
| Thread identity check | local loopId = activeLoop + if activeLoop ~= loopId then return | Present |
| Circuit breaker | Failure counter with hard disable | Present for hot remotes |
These check that a V2 matches the original:
| Test | What to Check | Pass |
|---|---|---|
| Feature count | Same number of features (sections/toggles) | Original count = V2 count |
| Remote coverage | Same remotes called (may be restructured) | All original remotes present |
| Keybind preservation | Same keybinds registered | Original keybinds = V2 keybinds |
| Config compatibility | Config system present | SaveManager or equivalent |
| Original untouched | Original file checksum unchanged | md5sum match |
These check that the UI is correctly wired:
| Test | What to Check | Pass |
|---|---|---|
| Toggle → state | Each toggle sets a state variable | No orphan toggles |
| State → loop | Each state variable controls a loop or action | No disconnected state |
| Paragraph → state | Each status paragraph reads state | Reactive (function), not static |
| Master → children | Master toggle gates child controls | Child controls inside master's section |
| No hover dependency | Callbacks don't rely on hover state | Mobile-compatible |
Run these grep searches to get counts:
FireServer / InvokeServer → remote countpcall / pcallRef → protection countwhile → loop counttask.wait → interval countCharacterAdded → respawn handlingBuildToggle / BuildSection → UI control countFor each remote call: verify it's inside a pcall block. For each loop: verify it has task.wait and a nil guard. For each callback: verify it doesn't inline the action (should call a function or toggle state).
Trace one complete path: UI toggle → state change → loop start → remote fire → status update. If one path works, the pattern is likely correct for others.
Check for:
while true do without task.waitInvokeServer inside a loopgetgenv() or loadstring() with user input[LUAU TEST REPORT] <filename>
─────────────────────────────────────────
Structural tests: <passed>/<total>
Safety invariants: <passed>/<total>
Pattern tests: <passed>/<total>
Feature parity: <passed>/<total> (or N/A)
UI wiring tests: <passed>/<total> (or N/A)
Failed tests:
❌ <test-name> — <what failed, line reference>
❌ <test-name> — <what failed, line reference>
Skipped tests:
⏭️ <test-name> — <reason>
Verdict: PASS / WARN / FAIL
─────────────────────────────────────────