Contribution Checker — Single PR Evaluator
Evaluate a single PR against the target repository's CONTRIBUTING.md for compliance and quality
MCP get_skill({ skillId: "contribution-checker-single-pr-evaluator-e7fc3b94" })Use this skill with your agent
Create a free account and connect via MCP
# Contribution Checker — Single PR Evaluator
You receive a PR reference (`owner/repo#number`), evaluate it against the repository's `CONTRIBUTING.md`, and return a structured verdict.
## Input
PR reference in `owner/repo#number` format. Parse owner, repo, and PR number.
## Step 1: Fetch Contributing Guidelines
If CONTRIBUTING.md was provided inline (in `<contributing-guidelines>` tags), use it and skip this step. If inline content is `# No CONTRIBUTING.md found`, return a single row with verdict `❓` and quality `no-guidelines`.
Otherwise, fetch the target repo's guidelines. Use the **first one found**:
1. `CONTRIBUTING.md` (repo root)
2. `.github/CONTRIBUTING.md`
3. `docs/CONTRIBUTING.md`
If none exist, return verdict `❓`, quality `no-guidelines`.
Extract rules, expectations, and focus areas the project defines. These vary per project — adapt to the document.
## Step 2: Gather PR Data
Retrieve:
- number, title, body, author, author_association, labels
- changed file paths (`get_files`)
- diff (`get_diff`)
## Step 2.5: Targeted Context
- Read the diff and changed files to understand what's changing.
- If the body references an issue, read it for original requirements.
Do not browse the repo, read surrounding code, or search for duplicate PRs.
## Step 3: Run the Checklist
Answer each question using only facts from PR metadata, diff, and the contributing guidelines.
1. **On-topic** — Does the PR align with the project's stated focus areas, priorities, or accepted contribution types? Answer `yes`, `no`, or `unclear` (if CONTRIBUTING.md doesn't define focus areas).
2. **Follows process** — Did the author follow the contribution process described in CONTRIBUTING.md (e.g. "discuss first", "open an issue first", size limits, PR description requirements)? Answer `yes`, `no`, or `n/a`.
3. **Focused** — Does the PR do one thing, or does it mix unrelated changes? Answer `yes` or `no`.
4. **New deps** — Does the diff add a new entry to a dependency manifest (package.json, go.mod, Cargo.toml, etc.)? Answer `yes` or `no`.
5. **Has tests** — Does the diff include changes to test files? Answer `yes` or `no`.
6. **Has description** — Does the PR body contain a non-empty summary of what and why? Answer `yes` or `no`.
7. **Diff size** — Total lines changed (additions + deletions). Report the number.
## Step 4: Apply Verdict Rules
- **🔴 Off-Guidelines** — on-topic is `no`, OR follows-process is `no` with a clear violation.
- **⚠️ Needs Focus** — focused is `no` (mixes unrelated changes).
- **🟡 Needs Discussion** — new deps is `yes`, OR on-topic is `unclear`, OR follows-process indicates discussion was required but not done.
- **🟢 Aligned** — none of the above triggered.
## Step 5: Assign Quality Signal
- **`spam`** — 🔴 with no description and no clear purpose.
- **`needs-work`** — ⚠️, or 🟡, or missing tests, or missing description.
- **`lgtm`** — 🟢 with tests and description present.
## Output Format
Return a single **JSON object** (no extra text):
```json
{
"number": 4521,
"verdict": "🟢",
"on_topic": "yes",
"focused": "yes",
"deps": "no",
"tests": "yes",
"lines": 125,
"quality": "lgtm",
"existing_labels": ["bug", "area: cli"],
"title": "Fix CLI flag parsing for unicode args",
"author": "alice",
"comment": "..."
}
```
Where:
- `verdict` is one of: `🔴`, `⚠️`, `🟡`, `🟢`, `❓`
- `on_topic` is `yes`, `no`, or `unclear`
- `focused` is `yes` or `no`
- `deps` is `yes` or `no`
- `tests` is `yes` or `no`
- `lines` is the total lines changed (integer)
- `quality` is one of: `spam`, `needs-work`, `lgtm`, `no-guidelines`
- `existing_labels` is an array of the PR's current labels, or `[]` if none
- `title` is the PR title
- `author` is the PR author's username
### Comment Field
Markdown string posted to the PR. Must contain:
1. **Encouraging opening** — acknowledge the contribution and mention something specific (feature, bug area).
2. **Actionable feedback** — if quality is `needs-work` or verdict is 🟡/⚠️/🔴, list concrete suggestions tied to checklist results (missing tests, unfocused diff, missing description). Constructive and specific.
3. **Agentic prompt** — a fenced ` ```prompt ` block with a ready-to-use instruction the contributor can assign to their AI agent.
If quality is `lgtm`, congratulate and note the PR looks ready for review. The prompt block can be omitted.
Example for a `needs-work` PR:
```markdown
Hey @alice 👋 — thanks for working on the auth refactor! Here are a few things that would help get this across the finish line:
- **Add tests** — the new rate-limiting logic in `src/auth/limiter.ts` doesn't have coverage yet. Unit tests for the happy path and the throttled case would go a long way.
- **Split the PR** — this mixes the auth refactor with the rate-limiting feature. Consider separating them so reviewers can focus on one thing at a time.
If you'd like a hand, you can assign this prompt to your coding agent:
` `` prompt
Add unit tests for the rate-limiting middleware in src/auth/limiter.ts.
Cover the following scenarios:
1. Request under the limit — should pass through.
2. Request at the limit — should return 429.
3. Limit reset after window expires.
` ``
```
## Important
- **Read-only** — NEVER write to the target repo. No comments, no labels.
- **Adapt to the project** — every CONTRIBUTING.md differs. Don't assume goals, boundaries, or labels not in the document.
- Be constructive — assessments help maintainers prioritize, not gatekeep.
- Be deterministic — apply rules mechanically without hedging.Related Skills
More skills in Software Engineering
Accessibility Standards
Comprehensive web accessibility standards based on WCAG 2.2 AA, with 38+ anti-patterns, legal enforcement context (EAA, ADA Title II), WAI-ARIA patterns, and framework-specific fixes for modern web frameworks and libraries.
Accord
Authoring unified specification packages across Business/Development/Design teams via staged elaboration (L0 Vision → L1 Requirements → L2 Team Detail → L3 Acceptance Criteria). No code. Use when authoring cross-team specs, building L0-L3 packages, or aligning Biz/Dev/Design on a single source of truth.
Acquire Codebase Knowledge
Use this skill when the user explicitly asks to map, document, or onboard into an existing codebase. Trigger for prompts like "map this codebase", "document this architecture", "onboard me to this repo", or "create codebase docs". Do not trigger for routine feature implementation, bug fixes, or narrow code edits unless the user asks for repository-level discovery.
Acreadiness Assess
Run the AgentRC readiness assessment on the current repository and produce a static HTML dashboard at reports/index.html. Wraps `npx github:microsoft/agentrc readiness` and hands off rendering to the @ai-readiness-reporter custom agent. Supports policies (--policy) for org-specific scoring. Use when asked to assess, audit, or score the AI readiness of a repo.
Acreadiness Generate Instructions
Generate tailored AI agent instruction files via AgentRC instructions command. Produces .github/copilot-instructions.md (default, recommended for Copilot in VS Code) plus optional per-area .instructions.md files with applyTo globs for monorepos. Use after running /acreadiness-assess to close gaps in the AI Tooling pillar.
Acreadiness Policy
Help the user pick, write, or apply an AgentRC policy. Policies customise readiness scoring by disabling irrelevant checks, overriding impact/level, setting pass-rate thresholds, or chaining org baselines with team overrides. Use when the user asks about strict mode, AI-only scoring, custom weights, CI gating, or wants org-wide standardisation.
Explore Other Categories
Skills from other categories with shared topics
Add New Safe Output Type
Adding a New Safe Output Type to GitHub Agentic Workflows
Agentic Workflows
Route gh-aw workflow design/create/debug/upgrade requests to the right prompts.
CI Cleaner Agent
Tidies up the repository CI state by formatting sources, running linters, fixing issues, running tests, and recompiling workflows