How to use
- Copy the installation command and review the source package before installing it in your own agent environment.
- Check the source document for required tools, credentials and supported hosts.
- Describe your input and desired deliverable; review the output against the source material.
npx skills add https://github.com/factorialco/factorial-code-skills --skill fcode-json-schemaBefore you start
- Installation does not include a model subscription, API allowance or permission to access your files.
- Repository stars and installation counts describe activity, not an independent quality or security test.
Rendered from the source repository. Headings, examples, code, tables, links, and referenced images are preserved.
Factorial Code — input parameter schemas
A process's input parameters are defined by a JSON Schema in parametersSchema.json. The same schema is what fcode-forms renders as a web form, so designing the schema is designing the form. Values arrive in code as fcode.context.parameters (see fcode-javascript / fcode-python).
Schemas render with react-jsonschema-form, so its ui: options apply.
How to author one
- Top level is
"type": "object"with apropertiesmap (one entry per field)
and an optional required array.
- Pick a
typeper field (string,integer,number,boolean,array,
object) and add validation (minimum/maximum, format, enum/oneOf, uniqueItems, nested properties).
- Control rendering with a per-field
uiobject (e.g.
"ui": { "ui:widget": "textarea" }).
- Open `assets/parametersSchema.sample.json` for a complete, copy-pasteable
schema exercising every supported type — adapt fields from it rather than guessing the shape.
Field types & widgets (in the sample)
- Text —
"type": "string";format: "email";ui:widgetoftextarea,
color, hidden, or file.
- Secret —
"isSensitive": truemasks the input (e.g. passwords/tokens). - Numbers —
integer/numberwithminimum/maximum. - Boolean —
"type": "boolean". - Choices —
enum(select),oneOfof{ const, title }(labeled radio
with ui:widget: "radio"), or an array with ui:widget: "checkboxes" + uniqueItems.
- Structured — nested
objectwith its ownproperties/required; arrays
of strings or of objects (type: "array" + items); raw JSON via "ui": { "ui:field": "json" }.
- Conditional fields — use top-level
dependenciesto show/hide fields based
on another field's value (see anotherBooleanField in the sample).
- Content around a field — a per-field
markdownobject withbefore/
after strings renders block markdown (full GFM, incl. tables) above/below the field. Detail and a worked example in fcode-forms (references/advanced.md).
- Long forms — split roughly ten or more fields into steps with a root-level
ui:steps node; see fcode-forms §Multi-step forms.
- Connect an external account — a
stringorbooleanwith
"ui": { "ui:widget": "oauth", "ui:options": { "authorizationUrl": … } } renders a button that completes an OAuth flow in a popup ("ui:field": "oauth" for an object; see oneOauthConnectField in the sample). Contract and callback in fcode-forms §Connect an external account.
Gotchas
- A file field (
"ui:widget": "file") is auto-uploaded to Storage before
the process runs; the parameter arrives as an fcode.storage://… reference, not the file contents. Strip the prefix before fcode.storage.download(...).
- `isSensitive: true` only affects display/masking — still read the value
from a secret variable, never hardcode it.
- **An oauth field's
authorizationUrlmust be injected with
{ "$ref": "#/variables/x" }** from a preRenderProcess variable — never {{x}}, which Mustache HTML-escapes into a URL the widget refuses (the button renders disabled with a console warning).
- The schema is the single source of the form's fields — to change fields, edit
the schema, not the form embed code.
- The schema is data, not code — no executable JavaScript, and all form
text is markdown (raw HTML is never rendered). Client-side behaviour belongs in the embedding page — see fcode-forms.
- Visible text can be translated: schema strings (titles, descriptions,
ui:placeholder) accept fcode.i18n("key") tokens, substituted server-side before the form is served — see fcode-i18n.




