Install
openclaw skills install repo-guardianAutomated 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.
openclaw skills install repo-guardianAutomated repository maintenance with cross-model review consensus.
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.
gh queries belong to the github skillEvery 6 hours (configurable), Repo Guardian:
# Run the guardian script via OpenClaw cron
# Add to ~/.openclaw/cron/jobs.json:
{
"repo-guardian": {
"schedule": "0 */6 * * *",
"agent": "<your-agent-name>",
"message": "Run repo-guardian for your-org/your-repo",
"skill": "repo-guardian"
}
}
Or run manually:
bash <skill_dir>/scripts/guardian.sh your-org/your-repo
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"
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
Each model evaluates independently against:
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"
}
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)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.
skip-guardian label--dry-run flag)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.
| 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 toopenai-codex/gpt-5.4with fallbackanthropic/claude-sonnet-4-6.
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: