Package Exports
- shippie
- shippie/dist/server.mjs
This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (shippie) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.
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 shippie
Install dependencies:
npm install
Set 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.