Skip to main content
T1 starter · engineering / any team — two data sources gathered in parallel, one model call, one file on disk. Your first taste of « the boring parts run themselves ».

The job

Every morning you reconstruct yesterday from memory. Your git history already knows. This workflow reads the commits since yesterday, stamps the date from a builtin (not from the model’s imagination), and writes the three standup bullets in your tone.

The shape

The file

t1-standup-digest.nika.yaml
nika: v1
workflow: standup-digest
description: "Read yesterday's commits, write today's standup note"

model: mock/echo            # deterministic · swap for ollama/llama3.1 (local · zero key)

tasks:
  # No deps between these two → the engine runs them in parallel.
  - id: today
    invoke:
      tool: "nika:date"
      args: { op: now }

  - id: history
    exec:
      command: "git log --since=yesterday --oneline --no-merges"

  - id: digest
    depends_on: [today, history]
    infer:
      prompt: |
        Date · ${{ tasks.today.output }}
        Commits since yesterday ·
        ${{ tasks.history.output }}

        Write my standup note · 3 bullets · done / doing / blocked.
        Plain words · no fluff.

  - id: save
    depends_on: [digest]
    invoke:
      tool: "nika:write"
      args:
        path: "./standup-note.md"
        content: "${{ tasks.digest.output }}"

outputs:
  note: ${{ tasks.digest.output }}

How it works

1

Two tasks start together

today and history declare no depends_on — the engine runs them in parallel. Parallelism is the default, not an option you switch on.
2

The digest waits for both

depends_on: [today, history] makes digest the merge point. Its prompt interpolates both outputs with ${{ tasks.X.output }}.
3

The note lands on disk

nika:write takes an explicit content: — a write without content writes nothing. The workflow also returns the note via outputs:.

Constructs you just used

ConstructWhereReference
implicit parallelismtoday + historyDAG shape
exec:historyThe 4 verbs
nika:date · nika:writetoday · saveBuiltins
outputs:envelope tailYAML syntax

Make it yours

  • Point --since at your sprint cadence (--since=friday for Monday standups).
  • Swap mock/echo for anthropic/claude-haiku-4-5 — a one-liner job wants a fast model.
  • Add a nika:notify task to post the note straight into your team channel — see Release notes for the pattern.

Next · Meeting actions

Same tier, one new idea: structured output — the model returns typed JSON, not prose.