Skip to content
atomize
GitHub

Templates

Add conditions

Development docs · main. Your installed version may differ.

Conditions are checked against each Story when you preview or generate. They decide whether a task is created and which percentage it receives. They never change the Story.

Tasks with a condition are only created when the condition evaluates to true. Conditions are structured objects evaluated against the parent story at generate time. When a conditional task is skipped, its estimation is redistributed to other tasks proportionally.

tasks:
- title: "Security Review"
estimationPercent: 10
condition:
field: "tags"
operator: "contains"
value: "security"
- title: "Database Migration"
estimationPercent: 15
condition:
all:
- field: "tags"
operator: "contains"
value: "database"
- field: "estimation"
operator: "gt"
value: 5

See the condition field reference for simple and compound clause shapes, comparison values and supported operators.

field: estimation compares against the raw Story Estimate, before any conversion, read from estimation.source when one is set. Existing point-based conditions keep their meaning, and categories work with equals/not-equals, e.g. { field: estimation, operator: equals, value: L }. A numeric operator (gt, lt, gte, lte) against a non-numeric Story Estimate such as L is an evaluation error: the task is skipped and the reason is reported.

Compound clauses:

  • { all: [...] } means every nested clause must match
  • { any: [...] } means at least one nested clause must match

VS Code snippets: atm-condition (tags), atm-condition-field (text fields such as state or areaPath), atm-condition-number (estimation, priority), atm-condition-custom, atm-condition-all and atm-condition-any. Each snippet offers only the operators its field supports.

tasks:
- title: "Enterprise Review"
condition:
customField: "Custom.ClientTier"
operator: "equals"
value: "Enterprise"

Use estimationPercentCondition to adapt a task's percentage based on story properties. Rules are evaluated in order; the first matching rule wins. The estimationPercent field serves as the fallback.

tasks:
- title: "Implementation"
estimationPercent: 50 # Default/fallback
estimationPercentCondition:
- condition:
field: "tags"
operator: "contains"
value: "critical"
percent: 60 # Higher weight for critical stories
- condition:
field: "estimation"
operator: "gte"
value: 13
percent: 55 # More work for large stories
- condition:
field: "tags"
operator: "contains"
value: "fullstack"
percent: 40 # Less backend work for fullstack stories

Key behaviors:

  • Rules are evaluated in order; first match wins
  • If no condition matches, estimationPercent is used
  • Normalization uses the resolved percentages (including skipped tasks)
  • Conditional percentages participate correctly in the 100% distribution

Conditions on estimation compare the raw Story Estimate. See Estimate Tasks for how it differs from the Task Estimate.