templates/forms/.agents/skills/form-publishing/SKILL.md
Form lifecycle management: draft, published, closed. Use when publishing forms, understanding public URLs, configuring captcha, or managing form branding.
npx skillsauth add BuilderIO/agent-native form-publishingInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Forms move through three statuses:
| Status | Meaning | Public access |
| ----------- | ------------------------------------ | ------------- |
| draft | Work in progress, not publicly available | No |
| published | Live and accepting responses | Yes |
| closed | No longer accepting responses | Shows closed message |
# Create as draft (default)
pnpm action create-form --title "Survey" --fields '[...]'
# Publish when ready
pnpm action update-form --id <form-id> --status published
# Close when done collecting responses
pnpm action update-form --id <form-id> --status closed
Published forms are accessible at:
/f/<slug>
The slug is auto-generated from the title + a short unique suffix:
contact-form/a1b2c3https://yourapp.com/f/contact-form/a1b2c3The slug updates automatically when the title changes.
Public form submissions can be protected with Cloudflare Turnstile (opt-in). This prevents bot submissions without degrading the user experience.
Public forms display a "Built with Agent Native" badge by default. This can be configured in the form settings.
Each form has a settings JSON object:
{
"submitText": "Submit",
"successMessage": "Thank you! Your response has been recorded.",
"redirectUrl": null,
"showProgressBar": false,
"integrations": []
}
| Setting | Type | Description |
| ------------------ | ------- | ------------------------------------------ |
| submitText | string | Custom submit button text |
| successMessage | string | Message shown after successful submission |
| redirectUrl | string | URL to redirect to after submission |
| showProgressBar | boolean | Show progress bar for multi-section forms |
| integrations | array | Webhook/Slack/Discord notification configs |
Forms can notify external services on submission:
| Type | Description |
| --------------- | ------------------------------- |
| webhook | POST JSON to any URL |
| slack | Send to a Slack channel |
| discord | Send to a Discord webhook |
| google-sheets | Append row to a Google Sheet |
tools
Public booking flow — the state machine, animations, and URL/app-state sync.
tools
Trigger-based automations — reminders, follow-ups, webhooks — across the booking lifecycle.
tools
Team event types, round-robin assignment, collective bookings, host weights, and no-show calibration.
development
The pure `computeAvailableSlots` function — inputs, outputs, invariants, and debugging guide.