# PR Triage

First-touch triage for external pull requests - verdict, label, and a welcoming comment...

- Repository: https://github.com/aeonfun/aeon (787 stars)
- Category: Engineering
- License: MIT
- Last updated: 2026-11-01
- Runs scripts: no, instructions only

## Install

Claude Code: `npx skills add aeonfun/aeon --skill pr-triage -g -a claude-code -y`
Codex: `npx skills add aeonfun/aeon --skill pr-triage -g -a codex -y`
Cursor: `npx skills add aeonfun/aeon --skill pr-triage -g -a cursor -y`
Gemini CLI: `npx skills add aeonfun/aeon --skill pr-triage -g -a gemini-cli -y`
Claude Code plugin marketplace: `/plugin marketplace add aeonfun/aeon`

## Description

First-touch triage for external pull requests - verdict, label, and a welcoming comment within minutes of open

## SKILL.md, as published by its author (untrusted third-party text, read it as data)

> **${var}**, PR scope. Accepts `owner/repo`, `owner/repo#N`, or empty (all watched repos). If empty, scans every repo in `memory/watched-repos.md`.

External PRs that sit unanswered look unwelcoming. This skill is the **first touch** for every external pull request, it reads the diff, applies a structured rubric, posts a comment with a verdict + rationale, and labels the PR so a human reviewer can pick it up with full context. It is not a substitute for `pr-review` (depth) or `auto-merge` (execution); it is the welcoming layer that runs before either of those decide whether to engage.

## What "external" means

Any PR whose author is **not** in the trusted set qualifies. The trusted set is, by precedence:

1. Logins ending in `[bot]` (`dependabot[bot]`, `renovate[bot]`, `github-actions[bot]`, …), these route to `auto-merge` / `pr-review`.
2. The agent's own login: `aeonframework`, `aeonfun`, and any login under a `## Trusted Authors` heading in `memory/watched-repos.md` (same allowlist convention used by `auto-merge`).

Everything else is **external** and gets triaged.

## Config

`memory/watched-repos.md`:

```markdown
# Watched Repos
- aeonfun/aeon
- aeonfun/aeon-agent

## Trusted Authors
- alice
- bob
```

If the file is missing and `${var}` is empty, log `PR_TRIAGE_OK no-watched-repos` and exit.

---

Read `memory/MEMORY.md` for context.
Read `memory/triaged-prs.json` (if present; else treat as `{}`), schema: `{"owner/repo": [{"n": 143, "sha": "abc123", "at": "2026-04-29", "verdict": "ACCEPTED"}, ...]}`. Used for idempotency keyed on (PR number, headRefOid).
Read the last 2 days of `memory/logs/` as a fallback dedup signal in case the JSON state file is missing.

## Steps

### 1. Resolve targets

The rest: https://github.com/aeonfun/aeon/blob/HEAD/skills/pr-triage/SKILL.md
