Repo Guardian
by @corbin-breton
Automated GitHub PR review governance and repository maintenance automation. Use when reviewing pull requests with dual-model consensus, enforcing merge gate...
clawhub install repo-guardianπ About This Skill
name: repo-guardian description: > Automated GitHub PR review governance and repository maintenance automation. Use when reviewing pull requests with dual-model consensus, enforcing merge gates, auto-merging approved PRs, and triaging repo state on a cron schedule. Not for implementing issue fixes end-to-end (use gh-issues) or general GitHub CLI operations (use the github skill). Works on any GitHub repository. version: 1.4.1 homepage: https://clawhub.ai/corbin-breton/repo-guardian metadata: openclaw: requires: env: - GH_TOKEN - GUARDIAN_AGENT - GUARDIAN_REVIEWER_B_AGENT - GUARDIAN_REPO - GUARDIAN_AUTO_MERGE - GUARDIAN_AUTO_FIX - GUARDIAN_MAX_PRS - GUARDIAN_MAX_ISSUES bins: - openclaw - python3 - curl primaryEnv: GH_TOKEN
Repo Guardian β Dual-Model PR Review & Issue Triage
Automated repository maintenance with cross-model review consensus.
Scope & Boundaries
Repo Guardian handles PR review governance and repo maintenance automation: reviewing PRs, enforcing quality via dual-model consensus, auto-merging when approved, and triaging repository state.
It is not the issue-to-fix implementation pipeline. If the job is to fetch issues, spawn coding agents, implement fixes, open PRs, and monitor review feedback, use gh-issues instead.
It is also not a general-purpose GitHub CLI toolkit. For direct gh CLI
operations such as listing PRs, commenting, checking CI, or making ad hoc API
queries, use the github skill.
NOT For
gh queries belong to the github skillWhat It Does
Every 6 hours (configurable), Repo Guardian:
1. Checks for open PRs on the target repo 2. Reviews each PR with two independent models (Opus + GPT-5.4) 3. Merges if both models approve 4. Requests changes if either model finds issues 5. Optionally prepares follow-up remediation for review-discovered issues 6. Checks for open issues and triages them for the appropriate next step
Cron Setup
# Run the guardian script via OpenClaw cron
Add to ~/.openclaw/cron/jobs.json:
{
"repo-guardian": {
"schedule": "0 */6 * * *",
"agent": "",
"message": "Run repo-guardian for your-org/your-repo",
"skill": "repo-guardian"
}
}
Or run manually:
bash /scripts/guardian.sh your-org/your-repo
Review Process
PR Review (Dual-Model Consensus)
Open PR detected
β
βββ Opus reviews (security, architecture, correctness)
βββ Sonnet reviews (code quality, edge cases, tests)
β (fallback: Haiku if Sonnet unavailable)
β
ββ Both APPROVE β auto-merge (squash)
ββ One APPROVE, one REQUEST_CHANGES β post review comments, do not merge
ββ Both REQUEST_CHANGES β post review comments, do not merge
ββ Either finds CRITICAL issue β post comments + label "needs-fix"
Issue Triage
Open issue detected
β
ββ Assess complexity and routing (ready for automation vs needs human)
ββ Ready for implementation: hand off to the issue-fix pipeline (gh-issues)
ββ Complex or unclear: add label "needs-human", post analysis comment
Review Criteria
Each model evaluates independently against:
1. Correctness β Does the code do what the PR claims? 2. Security β Any vulnerabilities, secret exposure, injection risks? 3. Tests β Are changes tested? Do existing tests still pass? 4. Scope β Does the PR stay within its stated purpose? 5. Quality β Code style, error handling, edge cases, naming
Each model returns a structured verdict:
{
"verdict": "APPROVE|REQUEST_CHANGES|CRITICAL",
"summary": "One-line summary",
"findings": [
{"severity": "critical|major|minor", "file": "...", "line": 0, "issue": "...", "fix": "..."}
],
"confidence": "high|medium|low"
}
Configuration
Environment variables (set in shell or .env):
GH_TOKEN β GitHub token with repo access (required)GUARDIAN_AGENT β OpenClaw agent name for Reviewer A (default: $OPENCLAW_AGENT or default)GUARDIAN_REVIEWER_B_AGENT β OpenClaw agent name for Reviewer B (default: same as GUARDIAN_AGENT; set to a different agent for true cross-model review)GUARDIAN_REPO β Default repo (e.g., your-org/your-repo)GUARDIAN_AUTO_MERGE β Enable auto-merge on consensus (true/false, default: true)GUARDIAN_AUTO_FIX β Enable auto-fix for issues (true/false, default: false)GUARDIAN_MAX_PRS β Max PRs to review per run (default: 5)GUARDIAN_MAX_ISSUES β Max issues to process per run (default: 3)Data Flow & Privacy
Repo Guardian sends PR diffs and file listings to the configured OpenClaw agent models for review. This means:
GH_TOKEN is used only for GitHub API calls and is never passed to AI model promptsjson.dumps() to prevent injectionRecommended GH_TOKEN scopes: repo (read) for review-only mode; add repo (write) only if auto-merge is enabled. Use a fine-grained token scoped to the specific repository when possible.
Safety
skip-guardian label--dry-run flag)Run Trace Logging
Each Repo Guardian run emits a structured trace for audit and performance tracking. After completing all PR reviews and issue triages, write a trace entry:
### [YYYY-MM-DD HH:MM] repo-guardian run
Repo: [owner/repo]
PRs reviewed: [count] (merged: N, changes requested: N, critical: N)
Issues triaged: [count] (routed to gh-issues: N, labeled needs-human: N)
Model agreement rate: [% of PRs where both models reached same verdict]
Duration: [approx time]
Anomalies: [any unexpected behavior, timeouts, model disagreements worth noting]
Write traces to memory/performance/skill-runs.md (following the standard skill execution logging protocol). The model agreement rate is a key health metric β if it drops below 70% over 5+ runs, the review criteria may need recalibration.
Models Used
| Role | Primary | Fallback | |------|---------|----------| | Reviewer A | anthropic/claude-opus-4-6 | anthropic/claude-sonnet-4-6 | | Reviewer B | anthropic/claude-sonnet-4-6 | anthropic/claude-haiku-4-5 | | Issue triage | anthropic/claude-sonnet-4-6 | anthropic/claude-haiku-4-5 |
> Note: GPT-5.4 (openai-codex/gpt-5.4) can be used as Reviewer B if the OpenAI Codex agent is configured and available in your deployment. When using GPT, set Reviewer B primary to openai-codex/gpt-5.4 with fallback anthropic/claude-sonnet-4-6.
Requirements
Required environment variables:
GH_TOKEN β A GitHub Personal Access Token. Must be set explicitly (the script will not fall back to gh auth token to avoid inadvertent scope leakage). Use a fine-grained PAT scoped to the specific target repository with read/write permissions for pull requests and issues.Required binaries (must be on PATH):
openclaw β OpenClaw CLI (dispatches review prompts to configured model agents)python3 β JSON construction and data parsingcurl β GitHub API callsRequired OpenClaw configuration:
βοΈ Configuration
Environment variables (set in shell or .env):
GH_TOKEN β GitHub token with repo access (required)GUARDIAN_AGENT β OpenClaw agent name for Reviewer A (default: $OPENCLAW_AGENT or default)GUARDIAN_REVIEWER_B_AGENT β OpenClaw agent name for Reviewer B (default: same as GUARDIAN_AGENT; set to a different agent for true cross-model review)GUARDIAN_REPO β Default repo (e.g., your-org/your-repo)GUARDIAN_AUTO_MERGE β Enable auto-merge on consensus (true/false, default: true)GUARDIAN_AUTO_FIX β Enable auto-fix for issues (true/false, default: false)GUARDIAN_MAX_PRS β Max PRs to review per run (default: 5)GUARDIAN_MAX_ISSUES β Max issues to process per run (default: 3)