OptionaldeploymentDeployment settings for UI Action and UI Builder
OptionaldescriptionDetailed explanation of what the skill does, shown on the skill detail page
OptionalinputsInput attributes for the skill Define as an inline array — type inference is automatic
Display name shown in the NowAssist skill picker and admin views
OptionaloutputsSkill output attributes (optional). The 5 standard outputs (response, provider, errorcode, status, error) are always created. If omitted or partially provided, missing standard outputs are auto-generated with derived IDs. On transform, all outputs (including auto-generated ones) are synced back to code.
// Explicit standard outputs (recommended for stable identity)
outputs: [
{ $id: Now.ID['my_skill_response_output'], name: 'response', dataType: 'string' },
{ $id: Now.ID['my_skill_provider_output'], name: 'provider', dataType: 'string' },
{ $id: Now.ID['my_skill_errorcode_output'], name: 'errorcode', dataType: 'string' },
{ $id: Now.ID['my_skill_status_output'], name: 'status', dataType: 'string' },
{ $id: Now.ID['my_skill_error_output'], name: 'error', dataType: 'string' },
{ $id: Now.ID['my_custom_out'], name: 'myCustomField', dataType: 'string', description: 'Extra output' },
]
// Or omit entirely — standard outputs are auto-generated
Security controls for user access and role restrictions MANDATORY: Must be provided for all skills Defines who can access the skill and what roles it can inherit during execution
OptionalshortBrief one-line summary displayed in skill listings and search results
OptionalskillSkill-level settings including providers
OptionalstateSkill state Set to "published" to publish the skill (state = 1) If not provided, skill will be in draft state (state = 0)
OptionaltoolsTool graph configuration (optional) Define tools that the skill can use during execution
IMPORTANT: Return tool handles to enable type-safe tool output access in prompts!
Supported Tool Types:
tools: (t) => ({
createIncident: t.FlowAction('CreateIncident', {
$id: Now.ID['my_skill_create_incident_tool'],
actionId: 'flow_action_sys_id',
inputs: [
{ name: 'short_description', type: 'string', value: t.input.incidentNumber },
{ name: 'priority', type: 'string', value: t.input.priority }
],
outputs: [
{ name: 'sys_id', type: 'string' },
{ name: 'number', type: 'string' }
]
}),
searchKB: t.WebSearch('SearchKB', {
$id: Now.ID['my_skill_search_kb_tool'],
searchType: 'ai_answers',
query: t.input.query
})
})
Skill definition — the first argument to NowAssistSkillConfig() Contains all skill metadata, inputs, outputs, tools, and settings.
TypeScript infers
TInputsfrom theinputsproperty andTToolsfrom thetoolscallback return type. Because both live in this first argument, they are fully resolved before the second argument (SkillPromptConfig) is contextually typed, which guarantees correct IntelliSense forp.tool.*andp.input.*in prompt builder callbacks.Example