Review all changes on the current branch. Use when the user asks for a code review or PR review.
Review all changes on the current branch compared to the upstream branch.
{{branch}}
IMPORTANT: This repository uses develop as the integration branch, not master or main.
Use develop as the default base branch for all comparisons:
git diff origin/develop...HEAD
Verify by checking GitHub workflows if unsure - look at .github/workflows/*.yml for pull_request.branches targets
Use the correct git diff syntax:
origin/develop...HEAD - shows changes in current branch since it diverged from developgit log --oneline origin/develop..HEAD to see commits being reviewedBefore launching subagents, analyze what files changed:
git diff origin/develop...HEAD --name-only
Conservative skip rules (only skip when 100% safe):
| Reviewer | Run | Notes |
| ----------------------- | ----------- | --------------------------------------------------- |
| reviewer-prettier | ✅ Always | Formats .md, .json, .ts, .tsx, etc. |
| reviewer-versioning | ✅ Always | Fast validation, can fail early |
| reviewer-changelog | ✅ Always | Fast validation, can fail early |
| reviewer-dependencies | Conditional | Run if ANY package.json changed |
| reviewer-typescript | Conditional | Skip ONLY if NO .ts/.tsx in packages/ changed |
| reviewer-eslint | Conditional | Skip ONLY if NO .ts/.tsx in packages/ changed |
| reviewer-tests | Conditional | Skip ONLY if NO .ts/.tsx in packages/ changed |
| reviewer-complexity | Conditional | Skip ONLY if NO .ts/.tsx in packages/ changed |
When in doubt, run the check. Fast failures are better than missed issues.
IMPORTANT: Launch ALL applicable subagents in a SINGLE parallel batch. Do NOT wait for one group to finish before starting another.
In one tool call batch, launch all applicable reviewers:
reviewer-prettier (always)reviewer-versioning (always)reviewer-changelog (always)reviewer-dependencies (if any package.json changed)reviewer-typescript (if .ts/.tsx in packages/ changed)reviewer-eslint (if .ts/.tsx in packages/ changed)reviewer-tests (if .ts/.tsx in packages/ changed)reviewer-complexity (if .ts/.tsx in packages/ changed)Note: reviewer-dependencies checks changelog documentation but does NOT create/modify changelogs. If both changelog and dependency changes exist, both reviewers run in parallel - the dependency reviewer only reads existing changelogs.
Check for:
Code Quality & Bugs:
.cursor/rules/*)Standards & Compliance:
reviewer-typescript subagent to check for TypeScript errorsreviewer-eslint subagent to check for linting violationsreviewer-prettier subagent to check for formatting issuesFuryStack Library-Specific:
defineService, defineStore, defineDataSet, injector.get/bind/invalidate/createScope, useSystemIdentityContext, throw-by-default store tokens)ObservableValue, subscriptions)Symbol.dispose, Symbol.asyncDispose, factory onDispose)Shades Patterns:
Flag useState() used only for CSS-representable states (hover, focus, active)
Recommend using css property with pseudo-selectors instead:
// ❌ Anti-pattern to flag
const [isHovered, setIsHovered] = useState('hover', false)
<div onMouseEnter={() => setIsHovered(true)} style={{ opacity: isHovered ? 1 : 0.7 }} />
// ✅ Recommend instead
css: { opacity: '0.7', '&:hover': { opacity: '1' } }
Static style props in Shade definitions should use css instead
Flag usage of element in render function destructuring or body -- it was removed, use useHostProps or useRef instead
Flag usage of onAttach or onDetach in ShadeOptions -- they were removed, use useDisposable instead
Flag direct DOM manipulation inside render() that should use useHostProps (e.g. this.setAttribute(...), this.style.xxx = ...)
Recommend useRef + queueMicrotask for deferred child element access instead of direct DOM queries
Complexity Audit:
reviewer-complexity subagent to flag overgrown components, services, and REST actions introduced or worsened by the branch (heuristics from .cursor/rules/COMPLEXITY.mdc)Testing & Coverage:
reviewer-tests subagent to run unit tests and assess coveragePerformance & Security:
Versioning & Changelog:
reviewer-versioning subagent to validate version bumpsreviewer-changelog subagent to validate changelog entriesDependencies:
reviewer-dependencies subagent to validate dependency consistency across packagesDocumentation:
ESLint Rule Opportunities:
Look for patterns in the diff that suggest a new custom ESLint rule should be added to @furystack/eslint-plugin. Signals to watch for:
X with Y in 5+ places). If a human has to remember to avoid it, a lint rule can enforce it.defineService, defineStore, defineDataSet, token-based resolution), Observables (ObservableValue, subscriptions, disposal), Shades rendering (render hooks, JSX patterns), REST actions (RequestError, validation), and data access (DataSetToken, StoreToken).When evaluating a potential rule:
packages/eslint-plugin/src/rules/ to verify the pattern isn't already covered. The plugin currently has rules for: DI consistency, observable disposal, Shades render hooks, REST action validation, custom element naming, removed APIs, and more.recommended (general FuryStack patterns) or shades (Shades UI framework patterns)?IMPORTANT: Only include subagent results in the final output if they found errors or issues.
reviewer-typescript passes → Do NOT mention it in the outputreviewer-eslint passes → Do NOT mention it in the outputreviewer-prettier passes → Do NOT mention it in the outputreviewer-tests passes → Do NOT mention it in the outputreviewer-versioning passes → Do NOT mention it in the outputreviewer-changelog passes → Do NOT mention it in the outputreviewer-dependencies passes → Do NOT mention it in the outputreviewer-complexity passes → Do NOT mention it in the outputOnly report subagent findings when they detect actual problems.
1. Summary: Brief overview of changes (2-3 sentences max)
2. Issues by Priority:
For each issue, be specific: package, file, line, problem, suggested fix.
3. Test Coverage: Assess coverage quality. Warn if public APIs lack tests.
4. Breaking Changes: List any breaking changes and suggest migration guide if needed.
5. ESLint Rule Suggestions: If any patterns were identified that could become custom ESLint rules, list them here. For each suggestion include:
recommended or shadesOmit this section entirely if no rule opportunities were found.
6. Changelog: Generate a short, consistent changelog as a copyable markdown code block.
Format:
Example:
- Add user profile validation
- Fix observable memory leak in cache
- Update dependency injection patterns
7. Pull Request Description: Generate as a copyable markdown code block with:
## 📋 Remaining Tasks
### 💀 Critical
- [ ] Fix TypeScript error in `packages/core/src/foo.ts:42`
### 🔥 High
- [ ] Add missing test for `handleSubmit` function
### 🤔 Medium
- [ ] Address memory leak in observable subscription
Omit empty priority sections. If no issues found, omit the entire Remaining Tasks section.
Style: Be critical, specific, and concise. Focus on library quality and API surface area. If unsure, ask for clarification.
Search for places (restaurants, cafes, etc.) via Google Places API proxy on localhost.
Interact with GitHub using the `gh` CLI. Use `gh issue`, `gh pr`, `gh run`, and `gh api` for issues, PRs, CI runs, and advanced queries.
Create or update AgentSkills. Use when designing, structuring, or packaging skills with scripts, references, and assets.
Start voice calls via the OpenClaw voice-call plugin.
Notion API for creating and managing pages, databases, and blocks.
Gemini CLI for one-shot Q&A, summaries, and generation.
Category:developer