patch-picasso
v0.7.0
Published
Paints a witty image for your PR and posts it as a comment (using OpenAI + Vercel AI SDK).
Maintainers
Readme
patch-picasso
Paints a witty image for your Pull Request and posts it as a comment — self-contained in a GitHub Action using npx, Vercel AI SDK, and OpenAI.
What it does
- Reads PR details (title, body, changed files)
- Crafts a humorous image prompt with Vercel AI SDK
- Generates an image via OpenAI (
gpt-image-1) - Posts the image as a PR comment
- Skips if it already commented on the PR
Requirements
- Node.js 18+ in your GitHub Action runner
GITHUB_TOKEN(provided automatically by GitHub Actions)OPENAI_API_KEY(you provide)
Quick Start (GitHub Actions)
Copy this workflow into your repo at .github/workflows/patch-picasso.yml:
name: Patch Picasso
on:
pull_request:
types: [opened, synchronize, reopened]
jobs:
patch-picasso:
runs-on: ubuntu-latest
permissions:
contents: write
pull-requests: write
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Post witty image to PR
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
OPENAI_API_KEY: ${{ secrets.OPENAI_API_KEY }}
run: |
npx --yes patch-picasso \
--repo "${{ github.repository }}" \
--pr "${{ github.event.pull_request.number }}"Inputs
--repo:owner/repo(defaults toGITHUB_REPOSITORY)--pror--pr-number: pull request number (auto-detected onpull_requestevents)
How it works
- Uses GitHub REST API with
GITHUB_TOKENto read PR details and post a comment - Uses Vercel AI SDK (
ai,@ai-sdk/openai) to synthesize a witty image prompt and caption - Uses OpenAI Images (
gpt-image-1) to generate an image - Adds the image as a commit to the
patch-picasso-imagesbranch (configurable) - Adds a comment with the image to the PR
- Adds a hidden marker to detect if it has already commented, ensuring idempotency
Environment Variables
GITHUB_TOKEN: Provided automatically by GitHub Actions. Needed for GitHub API callsOPENAI_API_KEY: Your OpenAI API key. Add as a repository secret namedOPENAI_API_KEY
Local test
npm install
npm run build
GITHUB_TOKEN=ghp_example OPENAI_API_KEY=sk-example \
node dist/index.js --repo your-org/your-repo --pr 123Notes
- Forked PRs cannot receive uploaded images to the base repo by default; the fallback upload is skipped
- No GitHub App is required; everything uses the standard
GITHUB_TOKEN
License
MIT
