name: Work on Unblocked Issues on: issues: types: [closed] jobs: detect-unblocked: runs-on: ubuntu-latest permissions: issues: read outputs: matrix: ${{ steps.finder.outputs.issues }} found: ${{ steps.finder.outputs.has_issues }} steps: - name: Find Unblocked Issues id: finder uses: google-labs-code/on-unblocked@v1 implement: needs: detect-unblocked if: needs.detect-unblocked.outputs.found == 'true' runs-on: ubuntu-latest permissions: contents: read issues: read strategy: matrix: issue-number: ${{ fromJson(needs.detect-unblocked.outputs.matrix) }} steps: - name: Get issue details id: get_issue uses: actions/github-script@v7 with: script: | const issue = await github.rest.issues.get({ owner: context.repo.owner, repo: context.repo.repo, issue_number: ${{ matrix.issue-number }} }); return issue.data; - name: Invoke Jules on Unblocked Issue # SECURITY: Only allow trusted users' issues if: ${{ contains(fromJSON('["your-username", "trusted-collaborator"]'), fromJson(steps.get_issue.outputs.result).user.login) }} uses: google-labs-code/jules-invoke@v1 with: prompt: | An issue has been unblocked and is ready for implementation: ## ${{ fromJson(steps.get_issue.outputs.result).title }} ${{ fromJson(steps.get_issue.outputs.result).body }} Please implement this feature following the project's coding standards. jules_api_key: ${{ secrets.JULES_API_KEY }}