Skip to main content
Drop in a JSON array of commit messages and get back polished, grouped release notes. The factory node spins up one classifier agent per commit — up to three running concurrently — then a second agent aggregates all the labels into a markdown changelog.

What it demonstrates

  • factory node iterating over a runtime list
  • concurrency to control parallel instance count
  • {{ item }} and {{ index }} loop variables inside factory inputs
  • Passing a JSON array via input.message for the factory’s for_each
  • Chaining factory output into a downstream agent via {{ classify_commits.output }}

Run it

Pass your own commits as a JSON array:

Workflow

docs/cookbook/changelog-annotator/workflow.yaml
for_each must resolve to a valid JSON array. Pass commits as a JSON string via --input or set input.message to a JSON array literal in the workflow file. The factory resolves the string with json.loads() at runtime.

How data flows

  1. classify_commits resolves for_each: "{{ inputs.message }}" to a list of commit strings.
  2. One classifier instance runs per commit (up to 3 concurrently). Each receives commit: <item> as its user message and replies with <category>: <summary>.
  3. All instance outputs are joined into a single newline-separated string at working.classify_commits.output.
  4. write_notes receives that string in its system prompt via {{ classify_commits.output }} and groups the entries into structured release notes.

Graph

Next steps

GitHub Issues Triage

Factory iterating over live GitHub issues fetched from the API.

1000 Monkeys

Swrm fan-out: five agents on the same prompt, curator picks the best.