Guide

AI prompt recipes

Copy-paste prompts for common task types you can build with the AI editor.

These prompts are starting points for the experiment-editor AI. Paste one in, then refine with follow-up messages. Each keeps settings in config.js and preserves the platform data protocol.

Adapt the specifics (stimuli, keys, counts) to your study — the AI works best when you are concrete about the data you want recorded.

Reaction-time task

Keypress reaction-time task

Build a keypress reaction-time task with jsPsych for the VibeMyExpt platform.

- Keep all tunable settings in config.js on a CONFIG object: number of trials, the stimulus set, valid response keys, fixation duration, and inter-trial interval.
- In experiment.js, show a fixation cross, then a stimulus, then wait for one of the CONFIG response keys.
- Record per trial: stimulus, response key, correct (boolean), and rt (ms).
- Randomize trial order. Add a short instructions screen at the start and a thank-you screen at the end.
- Ensure initJsPsych posts vibemyexpt:trial_data on on_data_update and vibemyexpt:experiment_complete on on_finish. Do not change that protocol.

Likert survey

Likert-scale survey

Add a Likert-scale survey to this experiment using jsPsych for the VibeMyExpt platform.

- Put the list of questions and the scale labels (e.g. Strongly disagree … Strongly agree) in config.js on CONFIG so I can edit them without touching experiment.js.
- Render each question on the scale; require an answer before continuing.
- Save one data field per question using stable field names derived from CONFIG (not free-form), plus the numeric scale value.
- Keep the existing initJsPsych data protocol (vibemyexpt:trial_data / vibemyexpt:experiment_complete) unchanged.

Timed image stimulus

Timed stimulus with response window

Add a timed image-stimulus trial to this experiment with jsPsych for the VibeMyExpt platform.

- Reference images from the assets folder using the __ASSETS map (e.g. __ASSETS['stimulus.png']) — do not hardcode URLs.
- In config.js on CONFIG, expose: stimulus display duration (ms), the response window (ms), and the valid response keys.
- Show the stimulus for the display duration, then accept a response until the response window closes; record response and rt, and whether the response was in time.
- Keep the existing initJsPsych data protocol (vibemyexpt:trial_data / vibemyexpt:experiment_complete) unchanged.

Lab markers (EEG, eye tracking)

Event markers for LSL or a TTL trigger box

Add event markers to this experiment for a lab recording (EEG / eye tracking via Lab Streaming Layer or a TTL trigger box).

- Use window.__TRIGGER only. It is always defined; do not feature-detect it. Do not write LSL, WebSocket or serial code — the platform delivers the markers.
- Put the codes in CONFIG.triggers as DISTINCT integers 1-255, e.g. { fixation: 1, stim_onset: 10, response: 20, feedback: 30 }.
- Send stimulus-onset markers in the trial's on_load: this.trigger_t = __TRIGGER.send(CONFIG.triggers.stim_onset). Send response markers in on_finish. Never inside setTimeout, never awaited.
- Add trigger_code and trigger_t to each trial's data.
- Mark block boundaries with __TRIGGER.mark('block_1_start') / __TRIGGER.mark('block_1_end').
- Keep the existing initJsPsych data protocol (vibemyexpt:trial_data / vibemyexpt:experiment_complete) unchanged.

Voice recording

Ask the AI editor to add a voice-recording trial in plain language (what to show, what to say, how long they may speak). See the Voice recording guide for testing notes — uploads only work in a published participant session, not preview.

Video recording

Ask the AI editor to add a webcam-video trial in plain language (what to show, how long they may record, whether to include audio). See the Video recording guide — uploads only work in a published participant session, not preview.