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.