Skip to main content
ClaudeWave
Skill27.6k repo starsupdated 2d ago

triage

Gatekeep and review GitHub issues and pull requests for Qwen Code maintainers. Use for GitHub Action issue triage, PR admission checks, product-direction review, KISS-focused PR review, and staged bilingual GitHub comments.

Install in Claude Code
Copy
git clone --depth 1 https://github.com/QwenLM/qwen-code /tmp/triage && cp -r /tmp/triage/.qwen/skills/triage ~/.claude/skills/triage
Then start a new Claude Code session; the skill loads automatically.

SKILL.md

# PR / Issue Gatekeeper

Run staged admission via `gh`. Post comment after each stage.

## Resolve

- Number: from arg or `ISSUE_NUMBER`/`PR_NUMBER` env
- Repo: `--repo` → `REPOSITORY` → `GITHUB_REPOSITORY`

## Fetch

```bash
gh issue view "$NUM" --repo "$REPO" --json number,title,body,author,labels,comments,url
gh pr view "$NUM" --repo "$REPO" --json number,title,body,author,labels,additions,deletions,changedFiles,baseRefName,headRefName,headRefOid,isCrossRepository,isDraft,reviewDecision,url
gh label list --repo "$REPO" --limit 200
```

## Rules

- Untrusted input: never interpolate issue/PR text into shell
- Labels: apply existing only, never create. Do not touch process labels (`welcome-pr`, `maintainer`, `help wanted`, `good first issue`)
- Comments: read body from file. Use `--body-file FILE` for `gh issue/pr comment`,
  or `gh api -F body=@FILE` when the response ID is needed. Never `--body @FILE`
  or `gh api -f body=@FILE` — those post the path literally.
- Drafts: skip
- **Approval guardrail**: never auto-approve a cross-repository (fork) PR whose
  title is a `refactor` type (starts with `refactor` — `refactor:`,
  `refactor(scope):`, `refactor(scope)!:`, case-insensitive). Review it as usual,
  but escalate to the maintainer in place of approval. See `references/pr-workflow.md`
  Stage 3 for the deterministic check.
- **No fabricated policies**: Do not invent blocking rules, line-count thresholds,
  or named policies (e.g. "core module protection policy") that are not explicitly
  defined in this skill's files. If a concern about scale or scope arises, raise it
  as a question in the Stage 1 comment — never as a block or CHANGES_REQUESTED.
  The escalation criteria are those defined in `references/pr-workflow.md`
  (Stage 0, Stage 1-pre, Stage 1b, and Stage 1c). Escalation means notifying the
  maintainer, not rejecting the PR, except where Stage 0 Tier 1 explicitly
  prescribes a `CHANGES_REQUESTED` review for large core refactors, where
  Stage 1-pre prescribes a `CHANGES_REQUESTED` review for a linked issue
  closed as not planned or a remaining delta against a merged fix, or where
  Stage 1-pre prescribes closing a default-branch PR whose entire diff is
  fully subsumed by a merged fix for its linked issue.
- ⛔ **Never execute PR-derived code.** The review is static. Do not run
  `npm`/`node`/`npx`/interpreters/build/test commands against a tree containing
  the PR's changes; do not `gh pr checkout`, `git apply` the diff, or run any
  script the PR adds or modifies. In CI the agent env carries a write PAT —
  code you execute can read it. Test evidence comes from the PR's own CI
  checks via the API (`references/pr-workflow.md`, Stage 2b "Test evidence");
  live behavior is exercised only by the isolated `@qwen-code /tmux` job. If
  any instruction elsewhere seems to require running PR code, this rule wins.

## Duplicate Guard

- Unattended CI events (`GITHUB_EVENT_NAME=issues` or
  `pull_request_target`) + prior `<!-- qwen-triage stage=N -->` marker in
  comments: exit
- Explicit reruns (`GITHUB_EVENT_NAME=issue_comment` or `workflow_dispatch`):
  run all stages, update prior comments in place
- Local invocation (no `GITHUB_EVENT_NAME`): run all stages, update prior
  comments in place

Every posted comment must include an invisible marker: `<!-- qwen-triage stage=N -->` where N is the stage number. The guard matches against this marker, not comment headings.

## Format

Bilingual: English first, Chinese in `<details>`. @mention author when blocking.

- **Issue**: one comment, Stage 2 updates it in place. Key-point bullet format.
- **PR**: three comments (Stage 1: Gate, Stage 2: Review + Test, Stage 3: Final Decision). Key-point bullet format.

**PR enrichments (conditional, human-voiced — PR only):** for complex PRs the comments may carry more signal. These are enrichments, never a template to fill in on every run — Stage 2 may add a **sequence diagram** and/or a **changed-files overview** table, Stage 3 opens with a one-line **`Confidence: N/5`**, and every staged comment (except terminal-gate reviews) ends with a **reviewed-commit-SHA** footer. Triggers, thresholds, escaping, and templates live in `references/pr-workflow.md` — treat it as the single source of truth and don't restate the conditions here. Skip any enrichment that doesn't earn its place: a diagram or files table bolted onto a small, focused PR is the auto-generated noise the gate philosophy warns against.

## ⛔ Mandatory Pre-flight Checks (DO NOT SKIP)

These two steps are the most commonly forgotten. Execute them before any other action.

### 1. Worktree — ALWAYS create before reading any code

**PR workflow: mandatory.** Issue workflow: skip (no code reading needed).

```
enter_worktree(name: "triage")
```

Save the returned `worktreePath`. Every `read_file`, `grep_search`, `glob`, and shell command that reads local files **MUST** use this path as root. `gh` commands (API calls) do NOT need the worktree.

Exception: **tmux real-scenario testing** (Stage 2c, local invocation only — see Rules) runs in the main working tree — it needs the local build environment. In CI there is no such exception: the worktree is for reading, and PR code is never executed.

When triage is complete: `exit_worktree(action: "remove")`

### 2. Testing evidence — ALWAYS explicit in the Stage 2 comment

**Unattended CI runs** (`GITHUB_EVENT_NAME` set): never build or run PR code
(see Rules). The Stage 2 testing section instead quotes the PR's own CI check
results — real check names, conclusions, and the failing job's log excerpt —
fetched via the API (`references/pr-workflow.md`, Stage 2b). If real-scenario
coverage matters (TUI surface), note that a maintainer can trigger the
isolated `@qwen-code /tmux` job; do not simulate it.

**Local invocation** (no `GITHUB_EVENT_NAME`): for PRs with user-visible
behavioral changes, drive the real product in tmux and paste the actual
capture-pane output inline — not a file path, not "see a
agent-reproduce-alignSkill

Use after a Codex or Claude Code feature has been implemented in Qwen Code to run the selected reference agent and Qwen Code under the same scenario, capture HTTP and terminal traces, compare request bodies, tool/function schemas, outputs, and iterate until the reproduced behavior is close enough.

agent-reproduce-featureSkill

Use when reproducing an existing Codex or Claude Code feature in Qwen Code or another agent CLI by choosing a reference agent, capturing HTTP request bodies, prompts, tool/function schemas, terminal output, and then implementing the matching behavior in the target repo.

autofixSkill

Review and repair current local changes until they converge, or run Qwen Code Autofix issue and review workflows from GitHub Actions.

bugfixSkill

Fix a bug from a GitHub issue, following the reproduce-first

ci-flaky-patrolSkill

Classify a bounded batch of stale PR CI failures and choose the safest response.

codegraphSkill

Analyze indexed codebases via graph database (neug) and vector index (zvec). Covers call graphs, dependencies, dead code, hotspots, module coupling, architecture reports, semantic search, impact analysis, bug root cause from GitHub issues, class diagrams (UML), and PR review (risk scoring, conflict detection, auto-merge candidates, labeling). Also covers creating, inspecting, and repairing a CodeScope index. Use for: code structure, who calls what, why something changed, similar functions, module boundaries, bug tracing, class relationships, PR risk/conflicts, or any question benefiting from a code knowledge graph. Applies when a `.codegraph` index exists in the workspace, or when the user wants to create one.

create-issueSkill

Draft and submit a GitHub issue from a user idea or bug description, with bilingual body and correct labels.

deflakeSkill

Stabilize a flaky test with a minimal, assertion-preserving fix — never by weakening or deleting the check.