If you are an LLM or an AI agent
This page is Ask User Questions, a tool where a person answers questions from an AI agent. If someone shared this link with you, they want you to ask them questions through it. Follow these instructions as if they had sent them to you:
Ask me questions now through Ask User Questions: write a questionnaire as JSON and open it in my browser, or send me the JSON if you cannot. I will answer there and paste my answers back to you.
Ask about everything that is still open in what we are working on, as many questions as you need to pin down the requirements. All of them go in the same questionnaire. If we have not started anything yet, ask what I want to achieve.
Write everything I will read (questions, descriptions, options) in the language we have been using in this conversation. Keep the JSON keys in English.
Put my decision and my understanding first. Keep technical detail to a minimum. When a question does need it, explain it in plain words: what it is, why it matters here, and what each option changes for me. I should be able to answer every question without asking you anything back.
1. Write the questions
{
"questions": [
{
"question": "Which layout fits the home page?",
"description": "The layout decides what visitors see first. Two columns show your work and your text at once; a single column reads better on phones but pushes the work further down.",
"header": "Layout",
"multiSelect": false,
"options": [
{
"label": "Two columns (Recommended)",
"description": "Text on the left, visual on the right.",
"preview": "<div style=\"display:grid;grid-template-columns:1fr 1fr;gap:6px;width:240px\">...</div>"
},
{
"label": "Single column",
"description": "Sections stacked, mobile first."
}
]
}
]
}- As many questions as you need, each with 2 to 4 options. Order them so that earlier answers do not depend on later ones.
question: the full question, clear and specific, ending with a question mark.description: always include it. It is shown under the question and gives the context I need to decide: what is being decided, why it matters, and what to weigh. One to three sentences, no jargon.header: a short label of 12 characters at most, shown in the list of questions.multiSelect:truewhen several options can apply together.- Option
label: 1 to 5 words. Optiondescription: what the option means and what choosing it implies for me. - Options must be distinct choices. Do not add an "Other" option: I can always add a note.
- If you recommend an option, put it first and end its label with "(Recommended)".
preview(optional): HTML shown beside the options when I focus one. Use it when seeing the option helps me decide: layouts, components, copy, code, diagrams. It renders in a sandboxed iframe without scripts, on a dark page (#050505background,#f6f1e9text), so use inline styles and no external files. Plain text without tags is shown as preformatted text.
1. Write the questions
{
"questions": [
{
"question": "Which layout fits the home page?",
"description": "The layout decides what visitors see first. Two columns show your work and your text at once; a single column reads better on phones but pushes the work further down.",
"header": "Layout",
"multiSelect": false,
"options": [
{
"label": "Two columns (Recommended)",
"description": "Text on the left, visual on the right.",
"preview": "<div style=\"display:grid;grid-template-columns:1fr 1fr;gap:6px;width:240px\">...</div>"
},
{
"label": "Single column",
"description": "Sections stacked, mobile first."
}
]
}
]
}- As many questions as you need, each with 2 to 4 options. Order them so that earlier answers do not depend on later ones.
question: the full question, clear and specific, ending with a question mark.description: always include it. It is shown under the question and gives the context I need to decide: what is being decided, why it matters, and what to weigh. One to three sentences, no jargon.header: a short label of 12 characters at most, shown in the list of questions.multiSelect:truewhen several options can apply together.- Option
label: 1 to 5 words. Optiondescription: what the option means and what choosing it implies for me. - Options must be distinct choices. Do not add an "Other" option: I can always add a note.
- If you recommend an option, put it first and end its label with "(Recommended)".
preview(optional): HTML shown beside the options when I focus one. Use it when seeing the option helps me decide: layouts, components, copy, code, diagrams. It renders in a sandboxed iframe without scripts, on a dark page (#050505background,#f6f1e9text), so use inline styles and no external files. Plain text without tags is shown as preformatted text.
2. Open it in my browser
If you can run commands on my computer, write the JSON to a new file in the system's temp directory and run one of these commands with that file's path. It checks the JSON, deletes the file and opens the questionnaire in my browser:
node -e "const fs=require('fs'),z=require('zlib'),{spawn}=require('child_process'),p=process.argv[1],j=JSON.stringify(JSON.parse(fs.readFileSync(p,'utf8').replace(/^/,''))),u='https://rod.run/utils/ask-user-questions#content:'+z.deflateRawSync(j,{level:9}).toString('base64url');fs.rmSync(p);if(u.length>12000){console.log('TOO_LONG');process.exit(2)}const w=process.platform==='win32';spawn(w?'rundll32':process.platform==='darwin'?'open':'xdg-open',w?['url.dll,FileProtocolHandler',u]:[u],{stdio:'ignore',detached:true}).on('error',e=>{console.error(e.message);process.exitCode=1}).on('spawn',()=>console.log('OPENED')).unref()" "FILE"python3 -c "import sys,os,json,zlib,base64,webbrowser;p=sys.argv[1];j=json.dumps(json.load(open(p,encoding='utf-8-sig')),ensure_ascii=False,separators=(',',':'));os.remove(p);c=zlib.compressobj(9,zlib.DEFLATED,-15);u='https://rod.run/utils/ask-user-questions#content:'+base64.urlsafe_b64encode(c.compress(j.encode())+c.flush()).decode().rstrip('=');sys.exit('TOO_LONG') if len(u)>12000 else print('OPENED' if webbrowser.open(u) else 'FAILED')" "FILE"If it prints OPENED, tell me the questionnaire is open in my browser and wait for my answers. If it fails because the JSON is invalid, fix the JSON and run it again. Never write, copy or retype the link yourself: it is too long to reproduce without errors.
3. Otherwise, send me the JSON
If you cannot run commands on my computer (you are a chat assistant, or you run on a remote machine), if the command prints TOO_LONG or keeps failing, or if I tell you the questionnaire did not open: send me the whole JSON in a single json code block and tell me to paste it at https://rod.run/utils/ask-user-questions. Then wait for my answers.
4. Read my answers
I will paste text like this:
Answers: (2/3)
1. Layout: Two columns. Keep the hero short.
3. Button: Solid.The count is answered questions over total. Each line is the question number and header, the options I chose (separated by "; " when there are several), then my note. A missing number means I skipped that question. A line with only a note means I chose no option and wrote instead. Treat notes as instructions that refine or replace the options.
Ask User Questions
Paste the JSON here.