Skip to main content
unreleased_changes writes a note for every commit since the latest release, four commits at a time, and joins the notes into one changelog.

Run steps for each commit with map

The notes step is a map:
  • over is the list, here the commits from git_log.
  • do holds the steps that run once per item. {{item}} is the current commit.
  • concurrency: 4 runs four commits at a time.
Each item’s result is the result of its last step, and {{notes.results}} lists them in the same order as the commits.

Join the notes with reduce

The changelog step is a reduce. It runs do once per note, in order:
  • {{accumulator}} starts as initial, and each run’s result becomes the next {{accumulator}}.
  • Here each run adds the note {{item.text}} as a new line under the text so far.
The final value is {{changelog.result}}.

Run it

stderr shows the map starting four commits at once, then the reduce working through the notes:
The changelog on stdout has one line per commit:

Select items with filter

Keep only the items that matter before working on them.

Compose plans

Call a plan from a body for nested iteration.

Delegate a step to an agent

Give a step that needs judgment to an agent.