| 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-By AI 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-By lines
- Any mention of Claude, AI, Anthropic, or automated tools
Generated by or Assisted by attributions
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 any casts — use specific types wherever possible (e.g., as React.ComponentType<any> instead of as 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:
Step 4 — Post-Creation
Return the PR URL to the user.
If the user asks to update the PR:
git add <files>
git commit --amend --no-edit
git push --force-with-lease
Common Mistakes