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.
Installs into .claude/skills of the current project.
Are you the author of Raise Pr?
Add the live security badge to your README. It updates with every re-scan.
[](https://www.skillsdirectory.com/skills/diegosouzapw-raise-pr)
---
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
1. **NEVER push directly to `main`** — always create a branch and open a PR.
2. **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.
3. **Only raise a PR when explicitly asked** by the user.
4. **All checks must pass first**: `yarn test`, `yarn type-check`, `yarn lint`.
---
## Step 1 — Verify Checks Pass
```bash
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
```bash
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
```bash
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-By` lines in any commit (`git log --format=full` to 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:
```bash
# 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-By` from default git hooks** — check with `git log -1 --format=full` before pushing
- **Debug `console.log` or `fetch("http://localhost:9876")` left in source** — search before committing:
```bash
grep -r "console\.\(log\|warn\)\|localhost:9876" src/ --include="*.ts" --include="*.tsx"
```
- **Including unrelated files** — use `git add <specific files>`, never `git add .` or `git add -A`
- **Fixture `index.js` left with `forceRTL(true)`** — always check and revert before committing