Colin McDonnell 70b365fca1 Clean up msgs
2025-09-10 15:01:45 -07:00
2025-09-10 00:36:03 -07:00
2025-09-10 00:31:21 -07:00
2025-09-09 17:19:59 -07:00
2025-09-10 15:01:45 -07:00
2025-08-27 16:53:48 -07:00
2025-09-10 15:01:45 -07:00
2025-09-10 00:32:54 -07:00
2025-09-10 00:56:50 -07:00
2025-09-09 16:54:36 -07:00

Pullfrog Action

GitHub Action for running Claude Code and other agents via Pullfrog.

Quick Start

# Install dependencies
pnpm install

# Test with default prompt
npm run play              # Run locally on your machine
npm run play -- --act     # Run in Docker (simulates GitHub Actions)

Testing with play.ts

The play.ts script provides two ways to test the action:

Local Mode (Default)

npm run play                        # Uses fixtures/play.txt
npm run play fixtures/complex.txt   # Custom prompt file
  • Clones the scratch repository to .temp
  • Runs Claude Code directly on your machine
  • Fast iteration for development

Docker Mode (--act flag)

npm run play -- --act                        # Uses fixtures/play.txt
npm run play fixtures/simple.txt -- --act    # Custom prompt file
  • Builds fresh bundles with esbuild
  • Creates minimal distribution without node_modules
  • Runs in Docker container via act
  • Simulates GitHub Actions environment

Prompt Files

Supports .txt, .json, and .ts files:

npm run play prompt.txt           # Plain text prompt
npm run play config.json          # JSON configuration
npm run play dynamic.ts           # TypeScript with default export

Building

pnpm build        # Production build (bundles & removes node_modules)
pnpm build:dev    # Development build (keeps node_modules)
pnpm dev          # Watch mode

The action is bundled into entry.cjs with all dependencies included, eliminating runtime dependency on node_modules.

Environment Variables

Create .env in /action:

ANTHROPIC_API_KEY=sk-ant-api03-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx  # Claude API key

Architecture

  • entry.cjs: Bundled action entry point (self-contained)
  • agents/: Agent implementations (Claude, etc.)
  • utils/: Utilities for subprocess, act, and formatting
  • fixtures/: Test prompt files

Why No node_modules?

pnpm uses symlinks that cause "invalid symlink" errors when act copies the action to Docker. Our solution:

  1. Bundle everything into entry.cjs
  2. Remove node_modules after building
  3. Create minimal .act-dist for Docker testing
S
Description
Self-hosted Ollama-powered code review bot for Gitea Actions based on pullfrog
Readme MIT 27 MiB
Languages
TypeScript 97.9%
Shell 0.7%
Dockerfile 0.7%
JavaScript 0.7%