Language Reference¶
KiketScript files are YAML documents parsed into strongly-typed objects. This reference covers the common structures shared across workflows, boards, manifests, and future agents.
Conventions¶
- All keys are lower_snake_case unless noted.
- Only
.yaml/.ymlextensions are supported. Files must be UTF-8 encoded. - Comments are allowed with the standard
#YAML syntax.
Scalars¶
- String – UTF-8 string.
- Number – Integer or float. Use quotes when precision matters.
- Boolean –
trueorfalse. - Enum – Validated strings such as
kanban,scrum,service,todo. - Duration – Strings using ISO 8601 duration or shorthand (e.g.,
4h,2d).
Common Blocks¶
metadata– Optional object containingname,description,provenance.conditions– Array of predicates. Each predicate is a hash withfield,operator,value.actions– Map of action keys to descriptors (see below).hooks– Keyed by event name; each hook runs one or more actions.
Actions¶
actions:
assign_to_team:
kind: system
command: assignments.assign
params:
team: triage
notify_slack:
kind: http
url: https://hooks.slack.com/services/...
method: POST
body:
text: "Issue {{ issue.key }} needs attention"
kind values: system, http, command, extension, ai.
- params supports nested objects; templating uses Liquid-style {{ }} placeholders.
Built-in Action Types¶
| Type | Description |
|---|---|
assign |
Assign issue to user/team using strategies (round_robin, least_loaded, ai_select) |
notify |
Send notifications to users or roles |
add_labels |
Add labels to an issue |
update_fields |
Update issue fields with interpolated values |
webhook |
Make HTTP requests to external services |
workflow_call |
Invoke another workflow (see Workflow Orchestration) |
ai_generate |
Generate content using AI agents |
ai_analyze |
Analyze issues using AI agents |
ai_suggest |
Get AI-powered suggestions |
anchor_data |
Anchor custom data to blockchain for compliance (Professional+ only, state hooks only) |
Conditions¶
conditions:
- field: priority
operator: in
value: ["high", "urgent"]
- field: labels
operator: includes
value: "customer-blocker"
equals, not_equals, in, includes, gt, lt, gte, lte, matches (regex), changed, present, blank.
- When multiple predicates are listed they are ANDed. Use any: / all: blocks for more complex logic.
Templates¶
YAML supports !include via MkDocs snippets or use Git anchors:
Validation¶
- Files run through schema validation during sync; invalid files cause the sync job to fail with detailed error messages.
- Use
kiket workflows lintto validate files locally before committing.
Refer to the specialised pages for constructs unique to workflows, boards, and manifests.