Use when reviewing PRs that touch the Reader's multi-protocol social surfaces (`client/reader/social/`, `client/reader/atmosphere/`, `client/reader/mastodon/`, `packages/api-core/src/reader-{atmosphere,mastodon}/`, `packages/api-queries/src/reader-{atmosphere,mastodon}.ts`). Captures the review rubric + the recurring smells from the CM-625 / CM-658 / CM-660 / CM-662 slice cycle.
npx skills add https://github.com/Automattic/wp-calypso --skill reader-protocol-pr-review
Use this when reviewing a PR in the Reader's social/atmosphere/mastodon territory — slice work for the protocol-adapter pattern, optimistic mutations, or the shared post-card components. The recurring findings are concrete enough to be a checklist; the rubric below comes from the CM-658/CM-660 cycle where the same issues appeared in both PRs.
For each finding write:
| Severity | File:line | Issue (1-2 sentences) | Suggested fix |
blocker (PR can't merge), important (real bug, would cause user-visible issues), nit (cleanup or hardening).gh api repos/Automattic/wp-calypso/pulls/{n}/comments to post inline replies (not top-level PR comments) when the line is in the diff.Approve / Request changes / Needs more discussion. If approve, list any follow-ups worth filing as separate tickets.Cap reviews at ~700 words. The reviewer's signal-to-noise ratio matters — detailed prose drowns out the actual blockers.
code-reviewer agentThe superpowers:code-reviewer agent is independent and reads the diff fresh. Dispatch it when:
Brief the agent with: PR number, branch path, what the PR does, and a list of recurring smells from references/common-smells.md to specifically check. The agent's response is the body of your review.
superpowers:receiving-code-review rules apply. State the fix or push back; actions speak.gh api repos/{owner}/{repo}/pulls/{pr}/comments/{id}/replies), not as top-level PR comments. The threading matters for context.*.wordpress.com URL. See a8c-url-shorthand:a8c-url-shorthand.See references/common-smells.md — checklist of 9+ recurring findings from the recent slice cycle. Walk it before submitting your review.
When two slice PRs are open simultaneously (CM-658 + CM-660 was the canonical case), review feedback on one almost always applies to the other. The architectural patterns mirror each other.
After landing a fix on PR A, check whether PR B has the same issue:
git -C /Users/pfefferle/Code/wp-calypso show <fix-commit-on-A> -- <relevant-paths>
git -C /Users/pfefferle/Code/wp-calypso show <branch-of-B>:<relevant-path> | grep <smell>
If yes, apply the fix to B too. Don't wait for the reviewer to file the same finding twice.
These are the Reader-protocol files that consistently need attention. Reviewers should check each:
| File pattern | What to verify |
|---|---|
| client/reader/social/components/post-card/{like,repost}-context.tsx | LikeAction/RepostAction interface has no dead fields; null-action default mirrors the live shape. |
| client/reader/social/components/post-card/{like,repost}-button.tsx | Renders a static-count fallback when !action.supported — not null. The fallback lives inside the button, not in <PostCardCounts>. |
| client/reader/social/components/post-card/post-card-counts.tsx | Always renders <LikeButton> / <RepostButton> (no connectionId ternary for the like/repost slot — the button handles supported / unsupported internally). |
| client/reader/{atmosphere,mastodon}/use-{protocol}-{like,repost}-action.ts | errorMessageFor* switch has a default: arm; trackError includes a logToLogstash call; cid/rkey guards before calling mutate. |
| packages/api-queries/src/reader-{atmosphere,mastodon}.ts | Optimistic patcher is connection-scoped; cancelQueries is wrapped in try/catch in onMutate; mutation factories take connectionId: number, not QueryClient. |
| packages/api-core/src/reader-{atmosphere,mastodon}/fetchers.ts | Path-interpolated wire IDs are encodeURIComponent-wrapped. |
references/common-smells.md — the smell catalog, with concrete examples from the slice cycle.client/reader/social/AGENTS.md — describes the provider-adapter pattern + naming convention.client/reader/AGENTS.md § "Optimistic-mutation hardening checklist" — engineering-side pre-flight for the patterns this skill reviews.Use when receiving code review feedback, before implementing suggestions, especially if feedback seems unclear or technically questionable - requires technical rigor and verification, not performative agreement or blind implementation
Use when completing tasks, implementing major features, or before merging to verify work meets requirements
Execute git commit with conventional commit message analysis, intelligent staging, and message generation. Use when user asks to commit changes, create a git commit, or mentions "/commit". Supports: (1) Auto-detecting type and scope from changes, (2) Generating conventional commit messages from diff, (3) Interactive commit with optional type/scope/description overrides, (4) Intelligent file staging for logical grouping
Comprehensive GitHub code review with AI-powered swarm coordination
Behavioral guidelines to reduce common LLM coding mistakes. Use when writing, reviewing, or refactoring code to avoid overcomplication, make surgical changes, surface assumptions, and define verifiable success criteria.
Use this skill to review code. It supports both local changes (staged or working tree) and remote Pull Requests (by ID or URL). It focuses on correctness, maintainability, and adherence to project standards.
Refactor bloated AGENTS.md, CLAUDE.md, or similar agent instruction files to follow progressive disclosure principles. Splits monolithic files into organized, linked documentation.
Create high-quality git commits: review/stage intended changes, split into logical commits, and write clear commit messages (including Conventional Commits). Use when the user asks to commit, craft a commit message, stage changes, or split work into multiple commits.
Take automattic/reader-protocol-pr-review from the repository into ~/.claude/skills for personal
use, or into .claude/skills inside a project.
The agent identifies a skill by the name field in its header. Two skills with the
same name cannot sit side by side — one of them will be ignored.