skills/cygnusfear/review-changes/SKILL.md
Code review of current git changes, compare to related plan if exists, identify bad engineering, over-engineering, or suboptimal solutions. Use when user asks to review changes, check git diff, validate implementation quality, or assess code changes.
npx skillsauth add aiskillstore/marketplace review-changesInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Perform thorough code review of current working copy changes, optionally compare to plan, and identify engineering issues.
# See changed files
git status
# See detailed diff
git diff
# See staged changes separately
git diff --cached
# See both staged and unstaged
git diff HEAD
Search for related plan file:
.plans/ directory for relevant planIf plan exists:
Group files by type:
Create todo list with one item per changed file to review.
For EACH changed file in the todo list:
Read git diff to see exactly what changed:
If plan exists, check:
Does implementation match plan?
Scope adherence:
REMOVAL SPEC compliance:
Check for Bad Engineering:
any, missing types, wrong typesCheck for Over-Engineering:
Check for Suboptimal Solutions:
Store in memory:
File: path/to/file.ts
Change Type: [New|Modified|Deleted]
Plan Compliance: [Matches|Deviates|Not in plan]
Issues:
Bad Engineering:
- [Specific issue with line number]
Over-Engineering:
- [Specific issue with line number]
Suboptimal:
- [Specific issue with line number]
Severity: [CRITICAL|HIGH|MEDIUM|LOW]
Mark file as reviewed in todo list.
CRITICAL: Before completing the review, verify that 100% of the original issue/task requirements are implemented.
Locate the original requirements from:
gh issue view <number>).plans/Create exhaustive checklist:
| # | Requirement | Status | Evidence | |---|-------------|--------|----------| | 1 | [requirement] | ✅/❌/⚠️ | file:line or "Missing" |
Requirements Coverage = (Implemented / Total) × 100%
Anything less than 100% = REQUEST CHANGES immediately
Add to report:
## Issue/Task Coverage
**Source**: [Issue #X / Plan file]
**Coverage**: X% (Y of Z requirements)
### Missing Requirements
- ❌ [Requirement X]: Not implemented
- ❌ [Requirement Y]: Partially implemented - [what's missing]
**VERDICT**: Coverage incomplete. Cannot approve until 100% implemented.
After reviewing all files:
Create report at .reviews/code-review-[timestamp].md:
# Code Review Report
**Date**: [timestamp]
**Branch**: [branch name]
**Related Plan**: [plan file or "None"]
**Files Changed**: X
**Issues Found**: Y
---
## Executive Summary
- **Critical Issues**: X (must fix before merge)
- **High Priority**: Y (should fix)
- **Medium Priority**: Z (consider fixing)
- **Low Priority**: W (suggestions)
**Overall Assessment**: [APPROVE|REQUEST CHANGES|REJECT]
---
## Plan Compliance (if applicable)
### Matches Plan ✅
- Feature X implemented correctly
- Architecture follows design
- File naming conventions followed
### Deviates from Plan ⚠️
- Implementation differs from planned approach in [area]
- Missing feature Y from plan
- Scope creep: Added Z not in plan
### REMOVAL SPEC Status
- ✅ Old code removed from `file.ts:50-100`
- ❌ Legacy function still exists in `auth.ts:42` (should be removed)
---
## Issues by Severity
### CRITICAL: Bad Engineering
#### Logic Bug in `src/services/auth.ts:125`
```typescript
// Current code:
if (user.role = 'admin') { // Assignment instead of comparison
grantAccess()
}
Issue: Assignment operator used instead of equality check. This always evaluates to true and grants everyone admin access.
Severity: CRITICAL - Security vulnerability
Fix: Change = to ===
src/api/client.ts:67// Current code:
fetchData().then(data => process(data)) // No error handling
Issue: Promise rejection not handled, will crash silently
Severity: CRITICAL - Application stability
Fix: Add .catch() or use try/catch with async/await
src/utils/formatter.ts// Current code: 50 lines of abstraction
class FormatterFactory {
createFormatter(type: string): IFormatter { /* ... */ }
}
class StringFormatter implements IFormatter { /* ... */ }
// ... only used once for simple string formatting
Issue: Complex factory pattern for single use case
Severity: HIGH - Maintenance burden
Better Approach: Simple function formatString(value: string): string
src/components/Files: user-form.tsx, admin-form.tsx
Issue: Both contain identical validation logic (30 lines duplicated)
Severity: MEDIUM - Maintenance issue
Better Approach: Extract to src/utils/form-validation.ts
src/types/user.ts// Current code:
interface UserData {
id: string
email: string
name: string
}
// But `User` type already exists with same fields in `src/models/user.ts`
Issue: Duplicate type definition
Severity: MEDIUM - Type inconsistency risk
Fix: Import and use existing User type
src/services/database-connection-manager.tsIssue: Overly verbose filename
Suggestion: Simplify to src/services/database.service.ts
auth.ts:200 marked with TODOtemp-processor.ts addedPlan Compliance: Matches Changes: 45 lines added, 20 removed Issues:
Plan Compliance: Not in plan (scope creep) Changes: 150 lines added Issues:
[Continue for all changed files]
By Severity:
By Category:
By File Type:
auth.ts:125 - Security issueclient.ts:67 - Stability issuetemp-processor.ts - Plan violationRecommendation: REQUEST CHANGES
Reasoning:
After Fixes: Changes will be solid. Core implementation is sound, just needs cleanup and bug fixes.
### Phase 5: Summary for User
Provide concise summary:
```markdown
# Code Review Complete
## Assessment: [APPROVE|REQUEST CHANGES|REJECT]
## Critical Issues (X)
- Security bug in `auth.ts:125` - assignment vs equality
- Unhandled promise in `client.ts:67` - will crash
## High Priority (Y)
- Over-engineering in `formatter.ts` - unnecessary abstraction
- Missing error handling in multiple files
## Medium Priority (Z)
- Code duplication between forms
- Not using existing types
## Plan Compliance
- ✅ Core features implemented correctly
- ⚠️ Some scope creep (user-form not in plan)
- ❌ REMOVAL SPEC incomplete (legacy code still exists)
## Must Fix Before Merge
1. Fix logic bug in auth.ts
2. Add error handling
3. Remove legacy code per REMOVAL SPEC
**Full Report**: `.reviews/code-review-[timestamp].md`
A complete code review includes:
CRITICAL: If issue/task coverage is less than 100%, the review MUST request changes regardless of code quality.
development
Apple Human Interface Guidelines for content display components. Use this skill when the user asks about charts component, collection view, image view, web view, color well, image well, activity view, lockup, data visualization, content display, displaying images, rendering web content, color pickers, or presenting collections of items in Apple apps. Also use when the user says how should I display charts, what's the best way to show images, should I use a web view, how do I build a grid of items, what component shows media, or how do I present a share sheet. Cross-references: hig-foundations for color/typography/accessibility, hig-patterns for data visualization patterns, hig-components-layout for structural containers, hig-platforms for platform-specific component behavior.
tools
Automate HelpDesk tasks via Rube MCP (Composio): list tickets, manage views, use canned responses, and configure custom fields. Always search tools first for current schemas.
testing
Expert Haskell engineer specializing in advanced type systems, pure functional design, and high-reliability software. Use PROACTIVELY for type-level programming, concurrency, and architecture guidance.
tools
GraphQL gives clients exactly the data they need - no more, no less. One endpoint, typed schema, introspection. But the flexibility that makes it powerful also makes it dangerous. Without proper controls, clients can craft queries that bring down your server. This skill covers schema design, resolvers, DataLoader for N+1 prevention, federation for microservices, and client integration with Apollo/urql. Key insight: GraphQL is a contract. The schema is the API documentation. Design it carefully.