{"id":40063,"plugin_id":"plugin_asdk_app_6a0d57fd4ad0819185fdac9300e2beef","kind":"skill","collection_source":"plugin_package","comparison_source":null,"observed_at":"2026-10-24T12:51:02.352Z","digest":"a5d5fe1eee1f34b308db3a1fbde68a350f64a1fd6ce933b95e0cc037b08d9168","against":null,"payload":{"description":"Create complete FormHug registration forms, application forms, surveys, contact forms, order forms, lead-capture forms, and other unscored forms from a user brief. Use when the user asks to build, generate, or set up a new FormHug form. Do not use for scored quizzes or assessments; use formhug-create-quiz instead.","included_files":[{"relative_path":"agents/openai.yaml","size_in_bytes":483}],"name":"formhug-create-form","skill_md_contents":"---\nname: formhug-create-form\ndescription: Create complete FormHug registration forms, application forms, surveys, contact forms, order forms, lead-capture forms, and other unscored forms from a user brief. Use when the user asks to build, generate, or set up a new FormHug form. Do not use for scored quizzes or assessments; use formhug-create-quiz instead.\n---\n\n# Create a FormHug form\n\nTurn the user's brief into a usable form, not merely a call to `create_form`.\n\n## Workflow\n\n1. Extract the form's purpose, respondents, requested language, required information, and desired post-submission outcome from the prompt. Ask only for missing information that would materially change the form; otherwise make conservative defaults and state them briefly.\n2. Use `list_folders` only when the user requests a folder or an existing organization scheme matters. Never invent folder tokens.\n3. Read `formhug://field-types` before composing fields. Follow any linked per-type resource for an advanced field. If direct resource access is unavailable, use `read_reference` with the same URI.\n4. Design the shortest field sequence that fulfills the purpose:\n   - Put easy, low-friction questions first and sensitive or open-ended questions later.\n   - Mark a field required only when the workflow truly needs it.\n   - Use the narrowest valid field type instead of approximating everything with text fields.\n   - Keep choice labels parallel and unambiguous. Pass choices as objects such as `{ \"label\": \"Option\" }`, never as strings.\n   - Use `description` fields for necessary instructions; avoid decorative copy that lengthens the form.\n5. Call `create_form` once with the complete initial structure. Do not pass `api_code` on new fields. Provide `header_image` as one or two concrete English keywords. Default to `classic`; use `card` only when the user explicitly requests a conversational, one-question-at-a-time flow.\n   - Once `create_form` returns a form token, retain it for every remaining step. If a later call fails or its outcome is uncertain, inspect that form and retry only the failed step; never create a replacement form automatically.\n6. Configure only the behavior supported by the brief:\n   - Use `update_form_settings` for locale, timezone, thank-you message or redirect, availability, access control, and submission options. It is a partial merge: omitted keys remain unchanged, while explicit `null` clears a value.\n   - After creation, use `get_form` to obtain field and choice api_codes before defining conditional logic. Read `formhug://field-rules`, then use `update_field_rules` with the full desired list for every rule kind being changed.\n   - Read `formhug://themes` before using `update_form_theme`. Do not add theme work when the user only asked for form structure.\n7. Verify the saved result with `preview_form` or `get_form`. Check that every requested field exists, required flags are intentional, choices are complete, the locale is correct, and conditional-rule targets occur after their triggers.\n8. Report the form name, a compact field summary, assumptions made, and the most relevant FormHug URLs. Always include the public form URL after creation; include edit or share URLs when they are useful next steps.\n\n## Guardrails\n\n- If FormHug tools are unavailable, pause and ask the user to connect the FormHug app. On an authentication or authorization error, ask the user to reconnect or reauthorize rather than repeatedly retrying.\n- If direct access to any `formhug://` resource is unavailable, call `read_reference` with the same URI.\n- If a tool returns a validation error, correct the payload from that error and the relevant MCP resource. On a network error or uncertain write result, read the current form state before retrying. Never invent a form token, URL, or successful result.\n- Never delete or overwrite an existing form while creating a new one.\n- Avoid requesting credentials, government identifiers, health data, payment-card data, or other sensitive information unless the user explicitly needs it and FormHug has an appropriate field and handling path.\n- Preserve the user's wording when it carries legal, consent, brand, or eligibility meaning. Improve ordinary labels for clarity without changing intent.\n- If a requested image or attachment requires file bytes, call the relevant prepare-upload tool, have the client PUT the original bytes to the returned upload URL with the exact content type, then use the documented commit or attachment-reference step. If the PUT cannot be completed, do not claim that the image was uploaded.\n- If the request becomes a scored quiz or assessment, switch to `formhug-create-quiz` rather than improvising scoring here.\n"},"changes":[],"summary":"First saved snapshot. No earlier version is available for comparison.","summary_kind":"deterministic","summary_metadata":{}}