Keyboard shortcuts

Press ← or β†’ to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Review Output Template

Use this as the structure for PR review summary comments. Copy and fill in the sections.

For PR Summary Comment

## Code Review Summary

**Verdict: [Approved βœ… | Changes Requested πŸ”΄ | Reviewed πŸ’¬]** ([N] issues, [N] suggestions)

**PR:** #[number] β€” [title]
**Author:** @[username]
**Files changed:** [N] (+[additions] -[deletions])

### πŸ”΄ Critical
<!-- Issues that MUST be fixed before merge -->
- **file.py:line** β€” [description]. Suggestion: [fix].

### ⚠️ Warnings
<!-- Issues that SHOULD be fixed, but not strictly blocking -->
- **file.py:line** β€” [description].

### πŸ’‘ Suggestions
<!-- Non-blocking improvements, style preferences, future considerations -->
- **file.py:line** β€” [description].

### βœ… Looks Good
<!-- Call out things done well β€” positive reinforcement -->
- [aspect that was done well]

---
*Reviewed by Hermes Agent*

Severity Guide

LevelIconWhen to useBlocks merge?
CriticalπŸ”΄Security vulnerabilities, data loss risk, crashes, broken core functionalityYes
Warning⚠️Bugs in non-critical paths, missing error handling, missing tests for new codeUsually yes
SuggestionπŸ’‘Style improvements, refactoring ideas, performance hints, documentation gapsNo
Looks Goodβœ…Clean patterns, good test coverage, clear naming, smart design decisionsN/A

Verdict Decision

  • Approved βœ… β€” Zero critical/warning items. Only suggestions or all clear.
  • Changes Requested πŸ”΄ β€” Any critical or warning item exists.
  • Reviewed πŸ’¬ β€” Observations only (draft PRs, uncertain findings, informational).

For Inline Comments

Prefix inline comments with the severity icon so they’re scannable:

πŸ”΄ **Critical:** User input passed directly to SQL query β€” use parameterized queries to prevent injection.
⚠️ **Warning:** This error is silently swallowed. At minimum, log it.
πŸ’‘ **Suggestion:** This could be simplified with a dict comprehension:
`{k: v for k, v in items if v is not None}`
βœ… **Nice:** Good use of context manager here β€” ensures cleanup on exceptions.

For Local (Pre-Push) Review

When reviewing locally before push, use the same structure but present it as a message to the user instead of a PR comment. Skip the PR metadata header and just start with the severity sections.