Skip to content
Skillpedia
Writing101k · #524

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

https://github.com/nexu-io/open-design/blob/main/plugins/_official/atoms/discovery-question-form/SKILL.md

Ready-to-paste message

Use this skill to help me: https://github.com/nexu-io/open-design/blob/main/plugins/_official/atoms/discovery-question-form/SKILL.md Read the SKILL.md file at that link and follow its instructions for my task.
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-form

Or 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.md
Technical 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 discovery pipeline 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 example audience.
  • label: user-facing question copy.
  • type: one of radio, checkbox, select, text, textarea, number, range, date, time, datetime-local, color, url, email, tel, file, or switch.
  • default: the recommended answer inferred from the brief, project metadata, plugin inputs, and known context. Use an option's stable value for radio or select, an array of option values for checkbox, and concrete suggested text for free-text fields. String options use the exact option string as their value. Respect maxSelections; never substitute localized labels for stable values. The host also accepts the defaultValue alias; emit only one of these fields per question.
  • Prefill each non-visual question suitable for a recommendation; omit default only 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 in description does not preselect an answer: encode it in the default field. Place that field before options so it arrives before a long option list during streaming.
  • options: required for choice controls; strings are allowed, or objects with localized label and stable value.

…

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

Is this skill useful?

0

Sign in to vote.

Comments

  • …

More skills from this repository

Similar skills