Loop: Builder #210
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: "Loop: Builder" | |
| # Generated by `micro loop init`. A dispatch role of the autonomous loop: on a | |
| # cadence it opens a fresh tracking issue and posts the instruction in | |
| # .github/loop/prompts/builder.md to the agent (@codex). | |
| # | |
| # The workflow is the MECHANISM; that prompt file is the editable POLICY — | |
| # change what this role does by editing the prompt, not this YAML. A FRESH | |
| # issue per run is deliberate: agents derive the PR branch name from the | |
| # triggering issue, so reusing one tracker collapses every run onto one branch. | |
| # | |
| # Gated on CODEX_TRIGGER_TOKEN: the agent ignores @mentions from the | |
| # github-actions bot, so dispatch posts as a real user (a PAT). No token → no-op. | |
| on: | |
| workflow_dispatch: {} | |
| schedule: | |
| - cron: "29 * * * *" | |
| permissions: | |
| issues: write | |
| concurrency: | |
| group: loop-builder | |
| cancel-in-progress: false | |
| jobs: | |
| dispatch: | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v4 # needed to read the prompt file | |
| - name: Dispatch builder | |
| env: | |
| GH_TOKEN: ${{ secrets.CODEX_TRIGGER_TOKEN || github.token }} | |
| HAS_TOKEN: ${{ secrets.CODEX_TRIGGER_TOKEN != '' }} | |
| REPO: ${{ github.repository }} | |
| RUN_NUMBER: ${{ github.run_number }} | |
| run: | | |
| if [ "$HAS_TOKEN" != "true" ]; then | |
| echo "CODEX_TRIGGER_TOKEN is not set — skipping (the agent ignores bot @mentions)." | |
| exit 0 | |
| fi | |
| PROMPT=".github/loop/prompts/builder.md" | |
| if [ ! -f "$PROMPT" ]; then | |
| echo "missing $PROMPT — run 'micro loop init'." >&2 | |
| exit 1 | |
| fi | |
| ISSUE_URL=$(gh issue create --repo "$REPO" \ | |
| --title "Loop: build increment #$RUN_NUMBER" \ | |
| --body "Autonomous builder pass. Direction: .github/loop/NORTH_STAR.md; queue: .github/loop/PRIORITIES.md.") | |
| ISSUE_NUM="${ISSUE_URL##*/}" | |
| echo "Opened issue #$ISSUE_NUM — dispatching builder." | |
| # The prompt file is the policy; strip its editorial <!-- --> header and | |
| # substitute the tracking issue number (__ISSUE__) at runtime. | |
| { | |
| echo "@codex" | |
| echo | |
| sed -e '/<!--/,/-->/d' -e "s/__ISSUE__/$ISSUE_NUM/g" "$PROMPT" | |
| } > "$RUNNER_TEMP/loop-body.md" | |
| gh issue comment "$ISSUE_NUM" --repo "$REPO" --body-file "$RUNNER_TEMP/loop-body.md" |