Example AI Prompts
Copy these prompts and fill in the [PLACEHOLDER] sections. Always paste the contents of PULSE_DOCS.md (generated by rb docs in your project) before your prompt so the AI has framework context.
caution
Use scripts only on games you own or have permission to test on, and for learning purposes only. Do not use automation in games without the owner's permission.
How to use these prompts
- Run
rb docsin your project to generatePULSE_DOCS.md - Open your AI assistant (Claude, ChatGPT, etc.)
- Paste the full contents of
PULSE_DOCS.mdas your first message - Copy one of the prompts below, fill in the placeholders, and send it
Prompt: Basic feature component
Using the Pulse TypeScript framework from the context above, create a component called [COMPONENT_NAME].
It should:
- Use signal(false) for 'enabled' and add [ADDITIONAL_SIGNALS]
- Return a toggle widget "Enable [FEATURE_NAME]" bound to enabled
- [DESCRIBE WHAT THE FEATURE DOES WHEN ENABLED]
- Use on.heartbeat({ when: enabled, every: [INTERVAL] }, ...) for the main loop
- Log with Pulse.Log.info('[COMPONENT_NAME]', ...) when starting and stopping
- Use _PulseGetHumanoid() with a null check for any humanoid access
- Wrap workspace/camera access in task.spawn with game.IsLoaded() check if needed
Follow the TypeScript component syntax: defineComponent('Name', () => { ... return [...widgets] })
Prompt: ESP / visual overlay component
Using the Pulse TypeScript framework from the context above, create a Pulse component called [COMPONENT_NAME]ESP.
It should:
- Have signals: enabled (boolean)
- Use Pulse.Loop at 1.0 second interval with on.signal(enabled, ...) to start/stop
- For each entity in [DESCRIBE HOW TO GET ENTITIES — e.g. players filtered by IsEnemy]:
- Create a Highlight instance parented to CoreGui (NOT the entity's parent) with Adornee = entity's character
- Store the highlight reference in a local Map
- Destroy the highlight when the entity is no longer tracked
- On disable: destroy all highlights and stop the loop
- Log with tag "[COMPONENT_NAME]ESP" using Pulse.Log.info for each entity highlighted
- Return: toggle widget "Enable [COMPONENT_NAME] ESP" bound to enabled with default: true
Handle errors with pcall around the loop body and log with Pulse.Log.warn on failure.
Prompt: Targeting / lock-on feature
Using the Pulse TypeScript framework from the context above, create a Pulse component called [COMPONENT_NAME].
It should:
- Have signals: enabled (boolean, default false), radius (number, default 300), showCircle (boolean, default true)
- Use Pulse.Aim.locker() with:
- getPos: returns the position of [DESCRIBE TARGET PART, e.g. the Nape hitbox or Head]
- validate: returns false if target is nil, has no Parent, or [DESCRIBE DEAD CONDITION]
- On right mouse button (MouseButton2) press while enabled:
- If already locked: release
- If not locked: call Pulse.Aim.findNearest([DESCRIBE CANDIDATE LIST]) with fovRadius = radius()
- Use a custom getRoot function that returns [DESCRIBE WHICH PART TO USE FOR FOV CHECK]
- Run the lock loop via on.renderStepped({ when: enabled }, ...)
- Show a FOV circle using Pulse.Draw.circle, updated in on.renderStepped
- Use on.signal(enabled, ...) to create/destroy the circle
- Log with Pulse.Log.info when locking/releasing/losing a target
- Return: toggle, slider for radius [50, 800], toggle for showCircle, button "Lock Nearest"
Prompt: Hitbox expansion component
Using the Pulse TypeScript framework from the context above, create a Pulse component called [COMPONENT_NAME]Hitbox.
It should:
- Have signals: sizeEnabled (boolean), highlightEnabled (boolean), hitboxSize (number, default 30)
- Use Pulse.Hitbox.new("[UNIQUE_KEY]") for size management
- Run a Pulse.Loop at 0.5 second interval controlled by on.signal(sizeEnabled, ...)
- The loop:
- Iterates [DESCRIBE HOW TO GET ENTITIES]
- For each enemy entity, finds the hitbox part [DESCRIBE WHICH PART, e.g. HumanoidRootPart]
- Calls hm.apply(part, hitboxSize()) when sizeEnabled is true
- Calls Pulse.Draw.selectionBox when highlightEnabled is true
- Restores size and removes selection box when entity is no longer an enemy
- On disable (both signals false): calls hm.restoreAll()
- When hitboxSize signal changes: re-apply to all currently active entities
- Log with Pulse.Log.trace for each entity, throttled at 5s for "no enemies" state
- Return: slider "Hitbox Size" bound to hitboxSize [1, 50], toggle for sizeEnabled, toggle for highlightEnabled
Prompt: Auto action on interval
Using the Pulse TypeScript framework from the context above, create a Pulse component called [COMPONENT_NAME].
It should:
- Have signals: enabled (boolean), interval (number, default [DEFAULT_INTERVAL])
- Use Pulse.Loop.new with on.signal(enabled, ...) to start/stop
- Each tick: [DESCRIBE WHAT THE FEATURE DOES, e.g. "check humanoid.Health and if below 50, set to MaxHealth"]
- Use _PulseGetHumanoid() with a null check if the action touches the character
- Use Pulse.Cooldown.new([COOLDOWN_SECONDS]) if the action should not fire every tick
- Use on.respawn(...) to re-apply state if character refs changed
- Log with Pulse.Log.debug each tick when action is taken
- Return: toggle "Enable [NAME]" bound to enabled, slider "Interval" bound to interval [[MIN], [MAX]]
After the AI responds
Before running the generated code, check for:
signal()used for table/array values → change toletvariablewait()→ change totask.wait()- Direct
_PulseGetHumanoid()!.Propertywithout null check → addif (!h) return - Raw
RunService.Heartbeat.Connect(...)→ useon.heartbeat(...)instead - Hardcoded paths like
workspace.Enemies→ verify these match your game - Missing game load guard for workspace access → wrap in
task.spawn(() => { if (!game.IsLoaded()) game.Loaded.Wait(); ... })