Install
$ agentstack add skill-tabooharmony-roblox-brain-roblox-npc-ai ✓ scanned · ✓ verified, works with Claude Code, Cursor, and more.
Security review
✓ PassedNo issues found. Passed automated security review. · v0.1.0 How review works →
- ✓ Prompt-injection patterns
- ✓ Secret / credential exfiltration
- ✓ Dangerous shell & filesystem operations
- ✓ Untrusted network calls
- ✓ Known-malicious package signatures
What it can access
- ✓ Network access No
- ✓ Filesystem access No
- ✓ Shell / process execution No
- ✓ Environment & secrets No
- ✓ Dynamic code execution No
From automated source analysis of v0.1.0. “Used” means the capability is present in the source — more access means more to trust, not that it’s unsafe.
Verified badge
Passed review? Show it. Paste this badge into your README, it links to the public security report.
Reliability & compatibility
Declared compatibility
Compatibility is declared by the source manifest. End-to-end runtime verification is coming, see below.
We're building live execution health for every listing: tool-call success rate, median latency, uptime, and last-checked timestamps, measured, not self-reported. It isn't live yet, so we don't show numbers we can't stand behind.
How agent discovery & health will work →About
Roblox NPC & AI
Use this skill when creating NPCs, enemies, bosses, or autonomous characters that navigate, detect players, or make decisions.
Quick Reference
PathfindingService
local path = PathfindingService:CreatePath({
AgentRadius = 2, AgentHeight = 5, AgentCanJump = true,
Costs = { Water = 20, DangerZone = math.huge },
})
path:ComputeAsync(npcPos, targetPos)
if path.Status ~= Enum.PathStatus.Success then return end
for _, wp in path:GetWaypoints() do
if wp.Action == Enum.PathWaypointAction.Jump then humanoid.Jump = true end
humanoid:MoveTo(wp.Position)
if not humanoid.MoveToFinished:Wait() then return end
end
- Connect
path.Blockedto recompute when world changes - Region modifiers: Anchored part +
PathfindingModifierwith Label → Costs PassThrough = truefor doors;PathfindingLinkfor disconnected navmeshmath.hugecost = non-traversable
State Machine
idle → patrol → chase → attack → flee → dead
- idle/patrol → chase (player detected) → attack (in range) → idle (lost)
- any → flee (health low) → idle (safe); any → dead (health ≤ 0)
- Transition func handles walk speed changes, clears target on idle
Detection (distance → FOV → LOS)
- Distance
(a-b).Magnitude— cheapest, always first - FOV
forward:Dot(toTarget)cosine — ~120° cone - LOS
workspace:Raycast— expensive, last
- Skip dead players. Close-range (~30%) bypasses FOV (hearing)
Spawners
- Track active enemies, cap count, remove on
Humanoid.Died - Clone →
PivotTo→ parent;task.delay(3, Destroy)for death anim - Wave:
{enemies={{template, count}}, spawnDelay, waveDelay}
Network Ownership — MUST DO
for _, part in model:GetDescendants() do
if part:IsA("BasePart") then part:SetNetworkOwner(nil) end
end
Without this, exploiters fling NPCs. Server = safe but 30Hz tick.
Update Loop
- Throttle AI to 5-10 ticks/sec, NOT every Heartbeat
- Stagger large batches (5/frame); ALL NPC logic server-side only
Pitfalls
- No
path.Blockedhandler → stale paths - No
ComputeAsyncfallback → frozen NPCs MoveTo8-sec timeout; handlereached = false- Forget
SetNetworkOwner(nil)→ exploiters fling NPCs - Dead corpses not destroyed → memory leak
- 50 NPCs pathfinding same frame → server lag spike
Need more detail? Load references/full.md for the complete reference with code examples, API tables, and edge cases.
Source & license
This open-source skill is cataloged on AgentStack and links to its original source — we do not rehost the code.
- Author: TabooHarmony
- Source: TabooHarmony/roblox-brain
- License: MIT
Install and usage instructions live in the source repository linked above.
Reviews
No reviews yet, be the first.
Write a review
Versions
- v0.1.0 Imported from the upstream source.