Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> Co-authored-by: raisedadead <1884376+raisedadead@users.noreply.github.com>
5.2 KiB
GitHub Copilot Code Review Instructions
Core Principles
CHECK REQUESTER AUTHORIZATION FIRST:
Before providing any review, verify if the person who requested the Copilot review is a member of the @freecodecamp/staff team.
-
If the requester is NOT part of
@freecodecamp/staff, respond with ONLY this message:Please use AI reviews in your local environment, and leave this feature to be used by fCC mods and Staff.Do not provide any other feedback or review comments.
-
If the requester IS part of
@freecodecamp/staff, proceed with the review following the guidelines below.
BE EXTREMELY MINIMAL. Only provide actionable feedback.
Skip all non-essential content:
- Do not generate "Pull request overview" sections
- Do not create "Changes:" lists describing what was changed
- Do not create "Reviewed changes" sections or tables
- Do not list files with change descriptions
- Do not count how many files were reviewed
- Do not summarize what the PR does (visible in the diff)
Focus only on problems:
- Comment ONLY on actual issues that need fixing
- Keep each comment 1-3 sentences
- If everything is correct, provide no output
Bad example (from PR 65578):
## Pull request overview
This PR addresses issue 65331 by replacing em dash characters...
### Reviewed changes
Copilot reviewed 4 out of 4 changed files...
| File | Description |
| ---- | ----------- |
| file1.md | Updated em dash in seed content |
Good example (actionable feedback only):
Line 46: Test will fail - `innerText` returns rendered `—`, not `—`.
Focus Areas
- Test Coverage - Ensuring adequate testing for code changes
- Pull Request Guidelines - Compliance with contribution standards
Focus Area 1: Test Coverage
When reviewing pull requests, ensure adequate test coverage for code changes in JavaScript, TypeScript, JSX, and TSX files.
Detailed test coverage rules are in
.github/instructions/testing.instructions.md
Quick Reference
| Location | Framework | File Pattern |
|---|---|---|
api/ |
Vitest | *.test.ts |
client/ |
Vitest | *.test.{ts,tsx} |
e2e/ |
Playwright | *.spec.ts |
When to Comment
Only leave a comment if:
- The PR modifies JavaScript/TypeScript/JSX/TSX code (bug fixes or new features)
- AND there are no corresponding test additions or updates
When NOT to Comment
Do not comment if:
- Changes are only to documentation, configuration, or non-JS/TS files
- The PR includes appropriate test coverage for the changes
- Changes are test-only modifications
Comment Style
If tests are missing, provide ONE brief comment:
Missing tests for [specific file]. Consider:
- [specific scenario]
- [edge case]
If test coverage is sufficient, DO NOT COMMENT. No "LGTM" needed.
Focus Area 2: Pull Request Guidelines
When reviewing pull requests, verify compliance with freeCodeCamp's contribution standards.
PR Title Format
Check that the title follows conventional commits format:
<type>([optional scope]): <description>
Valid types: fix, feat, refactor, docs, test
Common scopes: curriculum, client, api, i18n, a11y, tools
Flag if:
- Title is vague (e.g., "Update file", "Fix bug", "Changes")
- Missing type prefix
- Description exceeds ~50 characters
- Type doesn't match the actual changes
Example of good title:
fix(client): resolve login button alignment on mobile
Example of bad title:
Fixed stuff
PR Description & Issue Linking
Check for:
- Meaningful description explaining what changes were made and why
- Proper issue linking using
Closes #XXXXXformat (not just#XXXXX) - Screenshots included for UI/visual changes
Flag if:
- Description is empty or only contains template boilerplate
- Issue reference uses incorrect format (e.g.,
fixes XXXXXwithout#) - UI changes lack screenshots
Checklist Completion
Verify the PR template checklist items are completed:
- Boxes should be checked (
[x]) not left unchecked ([ ]) - Placeholder text like
#XXXXXshould be replaced with actual issue numbers
Flag if:
- Checklist boxes are left unchecked
- Placeholder issue number
#XXXXXremains unchanged
Comment Style
Keep feedback minimal (one line when possible):
Update PR title to format: `<type>(scope): description`
See: https://contribute.freecodecamp.org/how-to-open-a-pull-request
Link issue using: `Closes #XXXXX`
If PR guidelines are followed, DO NOT COMMENT. No "LGTM" needed.
General Guidelines
Focus on Actionable Issues Only
Strict Rules
- NO summaries, overviews, or descriptions of changes
- NO tables or file listings
- NO "LGTM" or affirmative comments when everything is fine
- Only comment when action is required
- Keep each comment brief and actionable
Prioritization
When multiple issues exist, address them in order of severity:
- Security vulnerabilities or critical bugs
- Missing test coverage for new functionality
- Outdated tests for modified functionality
- PR title/description compliance
Comment on all legitimate issues, but keep each comment concise.