eddiebelaval/squire/review
Claude Code and agent skill by eddiebelaval/squire
- community
Checking that the SKILL.md file is still in the repository.
Pre-landing PR review. Analyzes diff against main for type safety issues, security boundaries, silent failures, and structural problems that tests don't catch. Two-pass: CRITICAL (blocking) vs INFORMATIONAL. Adapted from gstack for TypeScript/Next.js/Supabase.
Install
npx vskill@latest install eddiebelaval/squire/reviewSKILL.md
Pre-Landing PR Review
You are running the /review workflow. Analyze the current branch's diff against main for structural issues that tests don't catch.
Step 1: Check branch
- Run
git branch --show-currentto get the current branch. - If on
main, output: "Nothing to review -- you're on main or have no changes against main." and stop. - Run
git fetch origin main --quiet && git diff origin/main --statto check if there's a diff. If no diff, output the same message and stop.
Step 2: Get the diff
Fetch the latest main to avoid false positives:
Run git diff origin/main to get the full diff. This includes both committed and uncommitted changes.
Step 3: Two-pass review
Apply the checklist against the diff in two passes:
- Pass 1 (CRITICAL): Type Safety, Auth & Data Safety, Security Boundaries
- Pass 2 (INFORMATIONAL): Silent Failures, Dead Code, Test Gaps, Performance, UI/UX
Follow the output format. Respect the suppressions.
Step 4: Output findings
Always output ALL findings -- both critical and informational.
- If CRITICAL issues found: output all findings, then for EACH critical issue use a separate AskUserQuestion with the problem, your recommended fix, and options (A: Fix it now, B: Acknowledge, C: False positive).
After all critical questions are answered, if any A chosen, apply fixes. If only B/C, no action needed.
- If only non-critical: output findings. No further action needed.
- If no issues: output
Pre-Landing Review: No issues found.
Important Rules
- Read the FULL diff before commenting. Do not flag issues already addressed in the diff.
- Read-only by default. Only modify files if the user explicitly chooses "Fix it now."
- Be terse. One line problem, one line fix. No preamble.
- Only flag real problems. Skip anything that's fine.
Review Checklist
Pass 1 -- CRITICAL (blocks /ship)
Type Safety
as anyoras unknown as Xcasts that bypass type checking on user input or API responses- Missing null checks on
.datafrom Supabase queries (always check.errorfirst) !non-null assertions on values that could genuinely be null at runtime- Generic
catch (e)without typing -- usecatch (e: unknown)and narrow
Auth & Data Safety
- Supabase queries missing RLS context (using service role key when anon key + RLS would suffice)
- Direct object access without ownership check (user A accessing user B's data via ID manipulation)
- API routes missing auth middleware or session validation
update()ordelete()without.eq('user_id', userId)-- relies solely on RLS (verify RLS exists)- String interpolation in raw SQL (use parameterized queries)
Security Boundaries
- Unsafe HTML rendering (React's dangerous innerHTML prop) on user-controlled or LLM-generated content without sanitization (use DOMPurify or similar)
- LLM-generated values (URLs, emails, names) written to DB without format validation
- API keys or secrets in client-side code (anything in
app/withoutuse server) - Missing CORS or CSP headers on new API routes
- Dynamic code execution patterns with user-controlled strings
Pass 2 -- INFORMATIONAL (non-blocking)
Silent Failures
catchblocks that swallow errors (empty catch, or onlyconsole.log)- Async functions without error handling (
awaitwithout try/catch and no.catch()) - Conditional side effects where one branch forgets an important action
- Supabase
.single()without handling the "no rows" case
Dead Code & Consistency
- Variables assigned but never read
- Imports that are unused after refactoring
- Comments/docstrings that describe old behavior after the code changed
- Inconsistent naming (mixing camelCase and snake_case in same module)
Test Gaps
- New API routes without corresponding test files
- Negative-path tests that assert status but not the error message/body
- Missing edge case tests for new validation logic
- Security features (rate limiting, auth checks) without integration tests
Performance
- N+1 queries: Supabase
.select()in a loop instead of batch query - Missing indexes on columns used in
.eq(),.order(), or.filter()queries - Large data fetched client-side that should be server-side (RSC opportunity)
useEffectwith missing or overly broad dependency arrays causing re-renders- Images without
next/imageoptimization
UI/UX
- Missing loading states for async operations
- Missing error states (what does the user see when the API call fails?)
- Form submissions without optimistic updates or loading indicators
- Missing
aria-labelorroleon interactive elements - Hardcoded strings that should be in a constants file or i18n
Gate Classification
Suppressions -- DO NOT flag these
- Style-only suggestions (formatting, import ordering) -- let prettier/eslint handle it
- "Add a comment explaining why" -- comments rot, code should be self-explanatory
- "This could be more generic" -- premature abstraction is worse than repetition
- Suggesting consistency-only changes that don't affect behavior
- console.log in development-only code paths
- Harmless type widening that doesn't affect runtime behavior
- ANYTHING already addressed in the diff you're reviewing
Security
- Security scanPassed, 95 of 100Pattern checks on the skill's files.
- Model reviewPassed
Quality evaluation
- Task evaluationNot runNo evaluation yet. Run one in Skill Studio.
Source
- SKILL.md in the repositoryCheckingskills/review/SKILL.md
Popularity
- Repository stars
- 21
- Repository forks
- 7
- 7-day trend score
- 20
Stars and forks are for the whole GitHub repository, not this skill alone. Not refreshed yet.
Works with
Any agent vskill installs to: 56 targets in all. These 39 have a page on this site.
- Claude Code
- Cursor
- GitHub Copilot
- Windsurf
- Codex
- Gemini CLI
- Cline
- Amp
- Roo Code
- Goose
- Continue
- Kilo Code
- Junie
- Trae
- OpenHands
- Qwen Code
- AI Agent
- Tabnine Chat
- Sourcegraph Cody
- Amazon Q
- Firebase Genkit
- Sweep
- Devin
- Phind
- Mentat
- Claude Desktop
- Aider
- GPT Pilot
- Plandex
- bolt.new
- v0
- Replit Agent
- Anse
- TypingMind
- BetterChatGPT
- LibreChat
- Warp AI
- Pieces
- Fig AI
Embed badge
[](https://verified-skill.com/skills/eddiebelaval/squire/review)