discovery-question-form
Lets your agent create a form to ask for missing information. This helps ensure all important details are collected.
What it does
This tool creates a form for you to fill out with important information the AI needs to start a project. It asks specific questions to ensure all necessary details are gathered before beginning.
When to use it
- ✓When starting a new project and the AI needs details.
- ✓When the AI doesn't have enough information to proceed.
- ✓To ensure the final output meets your expectations.
Example of what to ask your AI
“I need a form to define the audience, format, and language for a presentation.”
Want more? Open the sections below.
How to use
The easiest way: copy the message below and paste it into Claude, ChatGPT, Cursor or any AI. It reads the skill and follows the instructions.
Skill link
Ready-to-paste message
How it works
The AI presents a form with questions. You fill in the answers directly in the chat. The AI uses these answers to better understand what you need.
Installation
Easiest way: copy the skill link and paste it into Claude, ChatGPT or Cursor asking it to follow the instructions.
In the terminal (Claude Code, Codex, Cursor), in your project folder:
npx skills add nexu-io/open-design --skill discovery-question-formOr download just the file:
curl -L https://raw.githubusercontent.com/nexu-io/open-design/main/plugins/_official/atoms/discovery-question-form/SKILL.md -o SKILL.mdTechnical content (original SKILL.md)
Original text by the author, straight from GitHub.
Discovery question form
This atom defines the <question-form> protocol. It does not decide whether
clarification is required. Follow the active skill and core prompt's
requirements-clarification policy. When they identify unresolved information
that would materially change the design direction, content structure, or
delivery format, surface the smallest possible set of questions that unblocks
the workflow.
The questions are rendered as a <question-form> artifact inline in the
originating assistant message. This is assistant text parsed by the host, not a
plugin GenUI surface or a native tool call. Submitted answers return as the
next user message, beginning with [form answers — <form-id>].
Activation boundary
- A first turn or new project does not by itself require a form.
- A
discoverypipeline stage only makes this protocol available; declaring or entering the stage does not trigger a form. - Missing metadata is not automatically a question. First use the request, conversation, plugin inputs, memory, active skill, and design system.
- If enough information is available to proceed safely, do not emit a form.
- If a material blocker remains, ask only for that unresolved information.
Emission shape
Emit the form as a question-form block whose body is a JSON object with a
top-level questions array. Do not emit a bare question object by itself; the
renderer only recognizes the wrapped form contract.
The example below shows field shapes, not a fixed questionnaire. Include only unresolved questions and derive their recommendations from the actual brief; these example values are not fallback answers. A reference file remains unanswered until supplied.
<question-form id="discovery" title="Quick brief — 30 seconds">
{
"description": "I'll lock these in before building. Skip what doesn't apply — I'll fill defaults.",
"questions": [
{
"id": "audience",
"label": "Who's the primary audience?",
"type": "checkbox",
"default": ["Customer"],
"options": ["VC", "Customer", "Internal team"],
"maxSelections": 2,
"required": true
},
{
"id": "format",
"label": "Which format should I use?",
"type": "radio",
"default": "landscape",
"options": [
{ "label": "Portrait", "value": "portrait" },
{ "label": "Landscape", "value": "landscape" }
]
},
{
"id": "language",
"label": "Which language should the promo use?",
"type": "select",
"default": "en",
"options": [
{ "label": "Chinese", "value": "zh-CN" },
{ "label": "English", "value": "en" },
{ "label": "French", "value": "fr" },
{ "label": "German", "value": "de" },
{ "label": "Japanese", "value": "ja" },
{ "label": "Spanish", "value": "es" }
]
},
{
"id": "reference",
"label": "Add a reference file if available",
"type": "file",
"required": false
}
]
}
</question-form>
Question object shape
Each entry in the top-level questions array uses:
id: stable answer key, for exampleaudience.label: user-facing question copy.type: one ofradio,checkbox,select,text,textarea,number,range,date,time,datetime-local,color,url,email,tel,file, orswitch.default: the recommended answer inferred from the brief, project metadata, plugin inputs, and known context. Use an option's stablevalueforradioorselect, an array of option values forcheckbox, and concrete suggested text for free-text fields. String options use the exact option string as their value. RespectmaxSelections; never substitute localized labels for stable values. The host also accepts thedefaultValuealias; emit only one of these fields per question.- Prefill each non-visual question suitable for a recommendation; omit
defaultonly when no reasonable recommendation exists, such as a file upload. Do not invent a missing fact or select the first option merely because it is first. A recommendation written only indescriptiondoes not preselect an answer: encode it in the default field. Place that field beforeoptionsso it arrives before a long option list during streaming. options: required for choice controls; strings are allowed, or objects with localizedlabeland stablevalue.
…
FAQ
What happens if I don't answer a question?
If a question is marked as required, the AI cannot proceed until you answer it. Non-required questions may use a default value.
Can I skip questions?
You can skip questions that don't apply to you or are not required. The AI will try to use a default value or ask for more information later.
How does the AI know which questions to ask?
The AI analyzes your request and identifies missing information that is crucial for the project's success.
Details
Original description by the author
Structured clarification form for unresolved material requirements.
repo: nexu-io/open-design
Popularity
- GitHub stars
- 101k
- Ranking position
- #524
- License
- Apache-2.0
- Updated
- 10/16/2026
Comments
- …
More skills from this repository
sample-plugin
Makes your agent create a metadata file for tests. It helps ensure code works correctly in different situations.
nexu-io/open-design
aster-atelier
Helps your agent create an artistic website with a classic look. It uses elegant imagery, blue skies, and serif fonts for a cinematic feel.
nexu-io/open-design
audio-jingle
Makes your agent generate audio like jingles and sound effects. It can create music and voices, saving the result as an audio file.
nexu-io/open-design
blog-post
Helps your agent write long articles or blog posts. It includes space for images, quotes, and author information.
nexu-io/open-design
Similar skills
intent-driven-development
Helps your agent turn ideas into clear, testable plans. Defines criteria to ensure changes are made correctly and safely.
affaan-m/ECC
product-capability
Guides your agent in turning product ideas into clear plans. It defines what needs to be done, the limits, and decisions before development.
affaan-m/ECC
article-writing
Writes long-form content like articles, guides, and blog posts with a unique style. It's useful when you need well-written texts with a consistent voice and credibility.
affaan-m/ECC