Hi - I answer from the OpenSmartRoute documentation: routing, the API, plans and quotas, self-hosting. Ask away, or open a support ticket if you need a person.
Grounded in the docs - follow a source before acting on it.
forms - Skill - OpenSmartRoute
Skillv1.0.0
forms
USE WHEN: Constructing forms, validating inputs, and managing form state with Zod schemas.
Instruction file imported from omergulcicek/omergulcicek.com (.cursor/rules/forms.mdc). Copyright stays with the author.
Form Management
Constraints
Library: Use react-hook-form + @hookform/resolvers/zod.
Schema: Store schemas in features/[feature]/schemas/.
Defaults: Define defaultValues fully using z.infer from the schema.
Performance: Use useWatch or Controller instead of watch.
Submission: Use handleSubmit. Prevent double clicks with isSubmitting.
Errors: Map server errors using setError.
Bans
Manually managing native form submit events.
Using watch() at the root level.
Synchronizing form state with useEffect.
Defining schemas inside component files.
Managing form inputs with useState.
Correct Implementation
Incorrect Implementation
Use it
Copy one of these into your project. Installing also returns the manifest and these snippets.
# after Install: the listing is in your workspace's routing pool - a plan picks it for its slot
curl -s -X POST https://api.opensmartroute.ai/api/v1/route -H 'Authorization: Bearer $OSR_API_KEY' -H 'Content-Type: application/json' -d '{"text": "...", "plan": true}'
Manifest
An Open Capability Manifest: the router reads it to know what this does, what it costs and when to pick it.