Code Review logo

Code Review

Community
shawnpang
code-review

When the user asks for a code review, shares code for feedback, or says "review this", "check my code", "what's wrong with this". Also activate when reviewing a pull request or diff.

Overview

Publishershawnpang
Repositorystartup-founder-skills
Skill namecode-review
Stars
368
Forks
43
Bundled files
Instructions only
LicenseMIT
Links
  • Markdown instructions

    A SKILL.md file the model loads on demand, so it only costs tokens when a request actually matches.

  • Works with any LLM

    AI skills are plain Markdown, not provider-specific code, so this works with GPT, Claude, Gemini, Grok, or a local model.

  • Self-contained

    Everything the model needs lives in the instructions — no extra files to sync.

  • Open source

    Published by shawnpang on GitHub. Read the source before you install it.

Installation

Install the Code Review AI skill in TypingMind to use it with any LLM, or drop it into another agent that reads SKILL.md.

1

Install in TypingMind

TypingMind installs a skill straight from its GitHub folder — it reads SKILL.md, bundles the resource files, and stores the result locally.

  1. Open the app and go to Plugins → Skills.
  2. Choose "Install from GitHub".
  3. Paste the skill folder URL below and confirm.
    https://github.com/shawnpang/startup-founder-skills/tree/main/skills/code-review
  4. Enable the skill in any chat where you want it available.
Plugins → Skills → Add skill → From GitHub URL, then paste the folder URL and press Continue.
2

Install in another agent

Any agent that reads the Agent Skills format can use this skill — copy the folder into that agent's skills directory.

Claude Code — .claude/skills
git clone --depth 1 https://github.com/shawnpang/startup-founder-skills.git /tmp/startup-founder-skills
mkdir -p .claude/skills
cp -r /tmp/startup-founder-skills/skills/code-review .claude/skills/code-review
Restart Claude Code after copying so it picks up the new skill.

Use it in TypingMind

Enable Code Review in any TypingMind chat and the model takes it from there. Its name and description sit in the system prompt, and the moment a request matches, the model loads the full instructions itself — you never invoke it by hand, and it costs no tokens until it is actually used.

The model loads Code Review on its own as soon as a request matches it.

Works with any AI model

AI skills are plain Markdown instructions rather than provider-specific code, so Code Review is not tied to the model it was written for. Install it once in TypingMind and use it with GPT-5, Claude, Gemini, Grok, DeepSeek, Mistral, Llama, or a local model you run yourself — all on your own API keys.

  • Loaded only when it is needed

    The system prompt carries just the name and description. The instructions are fetched on the first matching request, so an idle skill costs nothing.

  • Switch models mid-chat

    Because the skill is instructions rather than code, changing model does not break it — the next model reads the same SKILL.md.

Skill instructions

This is the SKILL.md content the model loads. Read it before installing — a skill is instructions your model will follow.

Code Review

When to Use

  • The user shares code (file, snippet, or diff) and asks for feedback
  • They paste a pull request or want to know if code is production-ready
  • Pre-merge quality gate or bug hunting
  • Reviewing architectural decisions in a PR

Context Required

From startup-context: tech stack, product stage, team size. Also need from the user:

  • The code or diff to review
  • What the code is supposed to do (PR purpose or feature context)
  • Any specific concerns (performance, security, correctness)
  • Language and framework if not obvious from the code

Workflow

Follow a structured five-step methodology. Each step must be completed before moving to the next.

  1. Context — Understand and summarize the PR's purpose before any analysis. Recap the intent back to the user in 1-2 sentences. If unclear, ask before proceeding. Never start reviewing without understanding what the code is trying to accomplish.
  2. Structure — Evaluate architectural decisions and design patterns:
    • Does the code belong in the right module/layer?
    • Are abstractions appropriate (not too many, not too few)?
    • Does this change align with the existing codebase patterns?
    • For non-obvious design choices, acknowledge the author's reasoning before proposing alternatives.
  3. Details — Assess code quality across multiple dimensions:
    • Correctness: Logic errors, off-by-one bugs, null/undefined handling, race conditions, edge cases
    • Security: OWASP Top 10 baseline — injection, broken auth, data exposure, XSS, access control, misconfig, insecure deserialization, vulnerable components
    • Performance: N+1 queries, unnecessary re-renders, O(n^2) on large datasets, missing caching, memory leaks
    • Naming and clarity: Do names communicate intent? Are functions focused on a single responsibility?
  4. Tests — Validate test coverage with equal rigor as code review:
    • Are behavioral assertions present (not just implementation testing)?
    • Are edge cases and error paths covered?
    • Are tests brittle or resilient to refactoring?
    • What test cases are missing?
  5. Feedback — Generate a prioritized, categorized report with specific code examples and concrete improvements. Recognize strong patterns and good decisions explicitly.

Output Format

markdown
# Code Review: [Feature/File Name]

## Summary
One-paragraph assessment: what the PR does, whether it is ready to merge, needs minor fixes, or needs rework.

## Findings

### Critical (must fix before merge)
- **[CRT-1] Title** — file:line — description, why it matters, suggested fix with code example

### Major (should fix before merge)
- **[MAJ-1] Title** — file:line — description, why it matters, suggested fix

### Minor (fix when convenient)
- **[MIN-1] Title** — file:line — description, suggestion

### Positive (things done well)
- **[POS-1] Title** — file:line — what was done well and why it matters

## Questions
Clarifying questions about non-obvious design choices before blocking on them.

## Suggested Tests
- Test case 1
- Test case 2

Frameworks & Best Practices

Severity Definitions

SeverityDefinitionAction
CriticalSecurity vulnerability, data loss risk, crash in production, broken core functionalityBlock merge
MajorSignificant bug, performance regression, missing error handling on critical path, architectural violationShould fix before merge
MinorStyle issue, naming improvement, minor optimization, documentation gapFix when convenient
PositiveWell-written code, good pattern usage, thoughtful error handlingAcknowledge and reinforce

Review Principles

  • Always ground feedback in specifics. Every finding must reference a file, line, and include a concrete improvement — not just "this could be better."
  • Recognize good work explicitly. Call out strong patterns, clean abstractions, and thoughtful error handling. Reviews that only flag problems are demoralizing and incomplete.
  • Acknowledge author reasoning. For non-obvious choices, assume the author had a reason. Ask before overriding. Phrase as "I see you chose X — was that because of Y? If so, consider Z as an alternative."
  • Do not block on style when automated tooling handles it. Linting and formatting are the job of CI, not reviewers. Focus on logic, architecture, and correctness.
  • Treat test review with equal weight. Tests are not an afterthought. Missing tests for critical paths is a major finding, not a minor one.

OWASP Top 10 Quick Checks

  1. Injection — Are user inputs parameterized? Check SQL, NoSQL, OS command, LDAP
  2. Broken Auth — Sessions secure? Tokens rotated? Passwords hashed (bcrypt/argon2)?
  3. Sensitive Data Exposure — Secrets in env vars (not code)? PII encrypted at rest?
  4. XXE — XML parsing disabled or configured to reject external entities?
  5. Broken Access Control — Every endpoint checks authorization, not just authentication?
  6. Misconfiguration — Debug modes off? CORS restrictive? Security headers set?
  7. XSS — Outputs encoded? No dangerouslySetInnerHTML / v-html with user data?
  8. Insecure Deserialization — Serialized objects from untrusted sources validated?
  9. Vulnerable Components — Dependencies up to date? Any known CVEs?
  10. Insufficient Logging — Auth failures, access violations, and errors logged?

N+1 Query Detection

  • Looping over a collection and making a DB call per item
  • ORM lazy loading inside a loop (e.g., user.posts in a for user in users loop)
  • GraphQL resolvers fetching related data per parent without DataLoader
  • Fix: Eager loading, batch queries, or DataLoader pattern

Language-Agnostic Red Flags

  • Functions longer than 40 lines or more than 3 levels of nesting
  • Boolean params that change behavior (use separate functions)
  • Catch blocks that swallow exceptions silently
  • Hardcoded values that should be configuration
  • Missing input validation on public API boundaries

Related Skills

  • security-review — chain for a deep-dive security audit when critical security findings surface
  • architecture-design — chain when code review reveals structural problems that need architectural rethinking

Examples

Example prompt: "Review this Express route handler for creating users."

Good output snippet:

# Code Review: POST /api/users Handler

## Summary
The handler creates users but has a critical SQL injection vulnerability and missing
input validation. Needs fixes before merge. Clean async/await usage is a positive.

## Findings
### Critical
- **[CRT-1] SQL Injection** — routes/users.js:14 — Email interpolated
  directly into SQL string. Use parameterized queries:
  `db.query('INSERT INTO users (email) VALUES ($1)', [email])`

### Major
- **[MAJ-1] No input validation** — routes/users.js:12 — Email from
  `req.body` used with no validation. Add zod/joi schema validation.
- **[MAJ-2] Missing error handling** — routes/users.js:18 — DB errors
  propagate as 500 with stack trace. Wrap in try/catch, return generic error.

### Positive
- **[POS-1] Clean async/await** — routes/users.js:11 — Easy to follow,
  no callback nesting.

## Questions
- Is there a validation middleware already in the project that should be reused here?

Frequently asked questions

What does the Code Review AI skill do?

When the user asks for a code review, shares code for feedback, or says "review this", "check my code", "what's wrong with this". Also activate when reviewing a pull request or diff.

Why use Code Review on TypingMind?

Because you install it once and use it with any model. Code Review is plain Markdown rather than provider-specific code, so the same skill runs on GPT-5, Claude, Gemini, Grok, or a local model — and you can switch model mid-chat without it breaking. TypingMind runs on your own API keys, so you pay providers directly instead of a per-seat subscription, and your skills and chats stay in your own storage.

How do I install Code Review in TypingMind?

Open Plugins → Skills → Install from GitHub in TypingMind and paste https://github.com/shawnpang/startup-founder-skills/tree/main/skills/code-review. TypingMind reads its SKILL.md and installs it as a skill you can enable per chat.

Which AI models can use Code Review?

Any model you connect in TypingMind. AI skills are plain Markdown instructions rather than provider-specific code, so GPT, Claude, Gemini, Grok, and local models can all load this skill when a request matches it.

How many AI models can I use with Code Review?

As many as you like. As long as a model supports skills, you can use Code Review with it — GPT, Claude, Gemini, Grok, DeepSeek, Mistral, Llama and more — all on TypingMind with your own API keys.

Is the Code Review AI skill free?

Yes. It is published on GitHub by shawnpang under the MIT license. You only pay your own AI provider for the tokens you use.

What are AI skills?

An AI skill is a reusable instruction bundle that teaches an AI model how to do one specific task. It follows the open Agent Skills format: a SKILL.md file with a name and description, plus any scripts, templates or reference files the model may need. The model reads the instructions only when your request matches the skill, so an installed skill costs nothing until it is used.

How are AI skills different from plugins or MCP servers?

A plugin or MCP server gives a model new tools to call — code that runs somewhere and returns a result. An AI skill gives the model knowledge and process instead: how to approach a task, which steps to follow, what good output looks like. Skills are plain Markdown, so they need no server, no API key and no runtime, and they work with any model.

View all

Set up your own AI workspace now

Get notified about new features and future giveaways by subscribing to our newsletter 👇