# Ralph Two Pass Scan

> Skill: Ralph — Two-Pass Issue Scanning

- Skill: `azure-samples/ralph-two-pass-scan` (Agent Skill)
- Install (CLI): `npx skillmds@latest add azure-samples/ralph-two-pass-scan`
- Raw SKILL.md: https://api.skillmd.com/api/skills/azure-samples/ralph-two-pass-scan/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- Author: Azure-Samples (https://skillmd.com/u/azure-samples)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/azure-samples/ralph-two-pass-scan

---

# Skill: Ralph — Two-Pass Issue Scanning
**Confidence:** high
**Domain:** work-monitoring
**Last validated:** 2026-03-24

## Context
Cuts GitHub API calls from N+1 to ~7 per round (~72% reduction) by separating list scanning from full hydration.
Addresses the scanning inefficiency described in issue #596.

## Pattern

### Pass 1 — Lightweight Scan

```
gh issue list --state open --json number,title,labels,assignees --limit 100
```

**Skip hydration if ANY of these match:**

| Condition | Skip reason |
|-----------|-------------|
| `assignees` non-empty AND no `status:needs-review` | Already owned |
| Labels contain `status:blocked` or `status:waiting-external` | Externally gated |
| Labels contain `status:done` or `status:postponed` | Closed loop |
| Title matches stale/noisy pattern (`[chore]`, `[auto]`) | Low-signal |

### Pass 2 — Selective Hydration

For each issue surviving Pass 1:

```
gh issue view <number> --json number,title,body,labels,assignees,comments,state
```

Then apply normal Ralph triage logic. Rule of thumb: hydrate ≤ 30% of scanned list. If more than 30% survive Pass 1, tighten filter rules.

