A CLI tool that runs Claude Code against a GitHub PR inside a Docker sandbox.
- Node.js v20 or later
- Docker installed and running
- A GitHub personal access token (for private repos)
- An Anthropic API key
# Install dependencies
npm installCreate a .eval-cc.json file in your working directory:
cp .eval-cc.json.example .eval-cc.jsonEdit the file with your settings:
{
"repository": "owner/repo",
"githubToken": "ghp_your_github_token",
"anthropicApiKey": "sk-ant-your_anthropic_key"
}You can also provide tokens via environment variables (they take precedence over the config file):
export GITHUB_TOKEN="ghp_your_github_token"
export ANTHROPIC_API_KEY="sk-ant-your_anthropic_key"npm run eval -- --prompt <path-to-prompt.md> --pr <pr-number>| Option | Alias | Required | Description |
|---|---|---|---|
--prompt |
-p |
Yes | Path to the prompt file |
--pr |
Yes | PR number to checkout | |
--config |
-c |
No | Path to config file (default: .eval-cc.json) |
--rebuild |
-r |
No | Force rebuild of Docker image |
--help |
-h |
No | Display help |
--version |
-V |
No | Display version |
# Run with a prompt file against PR #5
npm run eval -- --prompt prompts/review.md --pr 5
# Force rebuild the Docker image (after changing Dockerfile or entrypoint)
npm run eval -- --prompt prompts/review.md --pr 5 --rebuild
# Use a custom config file
npm run eval -- --prompt prompts/review.md --pr 5 --config ./my-config.json
# Show help
npm run eval -- --help- Loads configuration from
.eval-cc.json(or specified config file) - Reads the prompt file into memory
- Builds a Docker image with Claude Code installed (first run only)
- Runs a Docker container that:
- Clones the GitHub repository
- Fetches and checks out the specified PR
- Runs Claude Code with the prompt and restricted tool permissions
- Streams all output to your terminal
- Exits when Claude Code completes
Claude Code runs with the following tools enabled:
Bash(git diff:*)- View git diffsBash(git status:*)- Check git statusBash(git log:*)- View git historyBash(git show:*)- Show git objectsBash(git remote show:*)- Show remote infoRead- Read filesGlob- Find files by patternGrep- Search file contentsLS- List directoriesTask- Create subtasks
# Type check
npm run lintMIT