shippie
v0.21.2
Published
an extensible code review agent
Maintainers
Readme
Shippie 🚢 (formerly Code Review GPT)
Helps you ship faster
Shippie is a prebuilt code-review agent built on flue. It runs an agent loop (on pi) that reads your diff, explores the codebase with real developer tools, and posts focused review comments — picking up issues a human reviewer would, such as:
- Exposed secrets
- Slow or inefficient code
- Potential bugs or unhandled edge cases
The agent uses flue's built-in pi tools (read, write, edit, bash, grep, glob, task) plus shippie's suggest_change tool for inline comments. It can also act as a Model Context Protocol (MCP) client to reach external tools like browser automation, infrastructure, and observability.
Demo
https://github.com/mattzcarey/shippie/assets/77928207/92029baf-f691-465f-8d15-e1363fcb808e
Ethos 💭
- A prebuilt review workflow, not a bespoke CLI — the agent loop runs on flue +
pi. - Runs anywhere flue deploys: Node, Cloudflare, GitHub Actions, GitLab CI.
- Functions as a human code reviewer, using flue's built-in tools instead of a hand-rolled tool registry.
- Provider-agnostic: Anthropic, OpenAI, OpenRouter, and Cloudflare Workers AI out of the box.
- Acts as an MCP client (remote HTTP/SSE) for integration with external tools.
Quick start 🚀
GitHub Action
Run npx shippie init to scaffold the workflow below, then add your provider API key as a repo secret. Or add it manually — it needs a full checkout (fetch-depth: 0), PR write permissions, and a provider API key.
# .github/workflows/shippie.yml
name: Shippie
on:
pull_request:
permissions:
pull-requests: write
contents: read
jobs:
review:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
- uses: mattzcarey/shippie@v0
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
ANTHROPIC_API_KEY: ${{ secrets.ANTHROPIC_API_KEY }}See Action Options for all inputs (MODEL, THINKING_LEVEL, IGNORE, CUSTOM_INSTRUCTIONS, MCP_SERVERS, and the provider keys).
Local
Run the review workflow locally with no server. Local mode reviews your staged changes (git diff --cached) and writes results to .shippie/review/local_*.md:
flue run review --target node --payload '{"platform":"local"}'Or via the package script:
npm run reviewRun on demand with /shippie
Comment /shippie review on a pull request to run shippie on demand — either via a GitHub Actions workflow (no server) or a deployed webhook channel. See Run Shippie on demand.
Setup Instructions 💫
See the setup instructions for more docs on how to set up shippie in your CI/CD pipeline and run it locally.
Additional Documentation
- Setup - Get shippie running in CI and locally
- AI Provider Configuration - Configure Anthropic, OpenAI, OpenRouter, and Cloudflare Workers AI
- Action Options - GitHub Action configuration options
- Model Context Protocol (MCP) - Give shippie access to external tools
- Rules Files - Inject project context via
AGENTS.md/CLAUDE.mdand Agent Skills - Subagent Tool - Delegate work to flue subagents with the
tasktool - On-demand /shippie - Run shippie by commenting
/shippie(Actions or webhook)
Development 🔧
This repo targets Node >= 22.19 with npm.
Clone the repository:
git clone https://github.com/mattzcarey/shippie.git cd shippieInstall dependencies:
npm installSet up your API key:
- Copy
.env.exampleto.env. - Set the provider key you want to use, e.g.
ANTHROPIC_API_KEY(orOPENAI_API_KEY,OPENROUTER_API_KEY,CLOUDFLARE_API_KEY+CLOUDFLARE_ACCOUNT_ID).
- Copy
Run the review workflow:
npm run reviewUseful commands:
npm run dev— run flue in dev modenpm run build— build a publishable Node server todist/server.mjs(run it withnpm run start, thenPOST /workflows/review?wait=result)npm run check— lint/format with biomenpm run check:types— typecheck with tscnpm test— run tests
See
package.jsonfor the full list of scripts.Make a PR 🎉
We use release-please on this project. If you want to create a new release from your PR, please make sure your PR title follows the Conventional Commits format. The release-please bot will automatically create a new release for you when your PR is merged.
- fix: which represents bug fixes, and correlates to a patch version.
- feat: which represents a new feature, and correlates to a SemVer minor.
- feat!:, or fix!:, refactor!:, etc., which represent a breaking change (indicated by the !) and will result in a major version.
Contributors 🙏
Thanks to our wonderful contributors!
Roadmap 🌏
Have a look at the discussion tab for the latest chat and ideas. I am actively working on the items in todo.md.
