name: raise-pr description: Create a GitHub PR for FlashList. Ensures no AI/Claude attribution in commits or PR body, follows repo conventions for title, description, and test plan.
Raise a FlashList PR
Rules
- NEVER push directly to
main— always create a branch and open a PR. - NEVER mention Claude, AI, or any AI tool in commit messages, PR title, PR body, or comments. No
Co-Authored-ByAI lines. The PR must read as if written entirely by a human. - Only raise a PR when explicitly asked by the user.
- All checks must pass first:
yarn test,yarn type-check,yarn lint.
Step 1 — Verify Checks Pass
yarn test && yarn type-check && yarn lint
If any fail, fix them before proceeding.
Step 2 — Create Branch and Commit
Branch naming
fix/issue-<number>-<short-slug>
feat/<short-slug>
refactor/<short-slug>
Commit message format
fix(<scope>): <concise description>
Fixes #<number>
Scope examples: layout, hooks, scroll, sticky-headers, recycling, viewability.
Do NOT include:
Co-Authored-Bylines- Any mention of Claude, AI, Anthropic, or automated tools
Generated byorAssisted byattributions
Commands
git checkout -b fix/issue-<number>-<short-slug>
git add <specific files>
git commit -m "$(cat <<'EOF'
fix(<scope>): <description>
Fixes #<number>
EOF
)"
git push -u origin fix/issue-<number>-<short-slug>
Step 2b — Self-Review Before Creating PR
Always review your own diff before creating the PR. Run git diff HEAD~1 (or git diff main...HEAD) and check for:
- Orphaned or misplaced JSDoc comments — moving code can separate a JSDoc from its function
- Unnecessary
as anycasts — use specific types wherever possible (e.g.,as React.ComponentType<any>instead ofas any) - Leftover debug code —
console.log,fetch("http://localhost:..."), temporary comments - Unrelated changes — files or hunks that aren't part of the fix
- Formatting issues — the diff should be clean and minimal
Fix any issues found, then amend the commit before proceeding to Step 3.
Step 3 — Create the PR
PR title
- Under 70 characters
- Same format as commit:
fix(<scope>): <description>
PR body template
gh pr create \
--repo Shopify/flash-list \
--title "fix(<scope>): <description>" \
--body "$(cat <<'EOF'
## Description
<1-3 sentences: what the bug was and how the fix works>
Fixes #<number>
## Reviewers' hat-rack :tophat:
<What reviewers should focus on — layout logic, hook behavior, edge cases, etc.>
## Screenshots or videos
<Before/after screenshots if applicable>
## Test plan
- [ ] Unit tests pass (`yarn test`)
- [ ] Type check passes (`yarn type-check`)
- [ ] Lint passes (`yarn lint`)
- [ ] Verified on iOS simulator
- [ ] No regressions on related screens
EOF
)"
Review the PR body before submitting
Before running gh pr create, double-check:
- No mention of Claude, AI, Anthropic, or any AI tool anywhere
- No
Co-Authored-Bylines in any commit (git log --format=fullto check) - Description explains the "what" and "why" clearly
- Test plan is specific to the change
Step 4 — Post-Creation
Return the PR URL to the user.
If the user asks to update the PR:
# Amend and force-push (only if user explicitly asks)
git add <files>
git commit --amend --no-edit
git push --force-with-lease
Common Mistakes
- Leftover
Co-Authored-Byfrom default git hooks — check withgit log -1 --format=fullbefore pushing - Debug
console.logorfetch("http://localhost:9876")left in source — search before committing:grep -r "console\.\(log\|warn\)\|localhost:9876" src/ --include="*.ts" --include="*.tsx" - Including unrelated files — use
git add <specific files>, nevergit add .orgit add -A - Fixture
index.jsleft withforceRTL(true)— always check and revert before committing