commit
FreeCreate a conventional commit for all uncommitted changes
The English summary is being prepared. Showing the original description.
Run a disciplined review of the pending changes (uncommitted work plus the branch delta against main) across four dimensions: security, correctness, performance, and repo consistency. Fans out exploration subagents per dimension, then the main agent acts as judge: every finding is re-verified against the actual code before it is reported, and the result is saved to `.agents/local/reviews/` and replied verbatim. Use when asked to review the changes, review before a PR, check my work, audit this branch, or run a pre-merge review. Use `security-review` instead for a security-only pass, and `simplify` for quality-only cleanup with no bug hunting. Skip for reviewing a single function in conversation or code outside this repo.
The English summary is being prepared. Showing the original description.
Run score Not tested
See how to installReview the instructions the agent will receive before you install.
This skill is the methodology for reviewing what is about to become a PR. The shape is explore -> judge -> report (-> fix). Subagents gather candidate findings; the main agent verifies each one against the code and rejects what does not survive. A finding that was never re-read in context is a guess, and guesses do not go in the review.
git fetch origin (offline is fine; note it and continue).git status + git diff HEAD --stat for uncommitted work, git log --oneline origin/main..HEAD and git diff origin/main...HEAD --stat for the branch delta. On main with uncommitted work, the uncommitted set IS the review scope.git log --oneline HEAD..origin/main. If upstream landed commits touching the same files, read those commits first and review against the merged reality, not the stale base. Overlaps and likely conflicts go in the review header.src/proto/gen/** from the review set. Generated code is never reviewed; review the .proto source and confirm ./manage.py proto was run (a proto edit without its regenerated files is itself a finding)..agents/local/plans/backlogs/ for a companion backlog. It carries the intent; a review that does not know what the change was trying to do misjudges half of it.The rules in .agents/rules/ are the judging criteria, not background reading. A finding that contradicts a rule file is wrong; a diff that contradicts a rule file is a finding.
| Changed paths | Rules to read |
|---|---|
| anything | architecture.md, permissions.md, comment-discipline.md, CLAUDE.md "Two Product Targets" |
src/uniffy/**, src/proto/schema/** | backend.md |
src/ui/** | frontend.md |
src/mobile/** | mobile.md |
| files / chat / calls / agents / notes / mentions domains | the matching domain rule file |
src/landing/** content | landing-voice.md |
Also scan .agents/local/scaling-reviews/ (including resolved/). A limit already registered there is not a finding; a new "correct today, falls over at scale" discovery becomes a file there, not a bug in the review.
One subagent per dimension, scaled down for small diffs (a docs-only change does not need a performance pass). Subagents explore and report candidates; they do not judge and they do not fix.
| Dimension | What to hunt |
|---|---|
| Security | the full standard vulnerability sweep first, as if this were any exposed web app: injection of every kind (SQL, command, template, header), SSRF on any URL the server fetches, XSS and unsafe HTML/markdown rendering, path traversal on file and asset routes, authn/authz bypass and privilege escalation, IDOR, CSRF on state-changing routes, open redirects, unsafe deserialization, race conditions with security effect (double-spend, TOCTOU), timing and enumeration leaks, weak or homemade crypto, token/session lifetime and revocation, file upload abuse (type confusion, zip bombs, stored payloads), new dependencies (typosquats, postinstall scripts, telemetry). Then the repo-specific layer on top: every new RPC/route gates inside domain operations; organization_id scoping on every query; no org/domain admin content bypass (the hardest rule in permissions.md); actor vs target id confusion; secrets through OrgCipher/settings stores, never plaintext or shared-key; except Exception responds with the literal "Internal server error", never str(e); additions to PUBLIC_METHODS; missing cache invalidation after permission or membership mutations (a stale 600s perm cache is a live privilege) |
| Correctness | mutations paired with their cache invalidation in the same commit; transaction boundaries; races on hot rows; proto contract drift between backend and generated clients; deletions that orphan or break remaining callers (grep, do not assume); optional/HasField handling at proto boundaries; migration safety for "fresh deploy, no orgs yet" |
| Performance | every code diff: N+1 and UNION-per-N shapes, pagination caps on growable lists, LIKE on indexed text lookups, LLM/external HTTP or unbounded loops on the request thread, missing batch INSERT/UPSERT/DELETE, index coverage for new query predicates, per-render work and refetch storms on the frontend. Diffs touching domains/chat, domains/agents, or `core/auth |
| Consistency | an existing component/helper was reused instead of reinvented (pickers, tables, SubjectAvatar, formatting utils); both product targets hold (env fallback for external services, no cloud-only or self-hosted-only assumptions, no CDN fetches, new settings land in .env.example AND an admin surface); comment discipline (no phase/plan refs, no dividers, no numpydoc blocks, no New/legacy/V2 identifiers); named exports, lazy routes, theme variables on the frontend; no backwards-compat shims anywhere |
Subagent prompts MUST (per comment-discipline.md section 5, delegated agents do not auto-load rules):
file:line + a one-sentence claim + a concrete failure scenario ("as user X calling Y, Z happens");pnpm build, tsc, or full test suites (targeted -k runs only, inside the docker containers, never on the host);For each candidate, re-read the cited code yourself and try to refute it. Check the claim against the real gate order, the real call sites, the real cache keys. Only findings that survive the refutation attempt are reported, and each keeps the evidence that confirmed it. This is the project bar: findings are a few sentences with file/function/line specifics and a fix proposal that was actually verified during the review, no guesses.
Classify what survives:
.agents/local/scaling-reviews/{kebab-case}.md with the load at which it bites and the mitigation levers; the review links it.Known non-findings to reject on sight: an admin who cannot see a member's content (that is the permission model working); missing deprecation aliases or compat shims (pre-production, clean cuts are policy); generated-code diffs; missing docstrings on self-explanatory functions (comment discipline prefers deletion).
Write .agents/local/reviews/{kebab-case}.md and reply with the same content:
The skill's second hat is fixer. If the user asked for review-and-fix, apply the confirmed findings after reporting, one finding at a time:
docker exec uniffy-dev-backend python -m pytest <file> -k <case>) or the exact repro from the finding. No full suites, no linters during the loop..proto edit: ./manage.py proto, then restart the backend container (watchfiles does not reliably pick up generated-code changes)../manage.py lint -s backend / -s ui for touched sides plus the relevant test suites.tests/integration/ (local-only). Unit findings about filters belong there as row-level assertions.No reviews yet. Tell others what you thought.
No login needed. Share how it worked for you, ask a question, or note where it did not run.
No comments yet. Be the first to write one.
Create a conventional commit for all uncommitted changes
The English summary is being prepared. Showing the original description.
Create a Product Requirements Document from the current conversation and save it under `.agents/local/plans/`. Use when the user asks for a PRD, product specification, or requirements document for an Uniffy feature.
The English summary is being prepared. Showing the original description.
Execute or resume an implementation plan from `.agents/local/plans/`, keeping its companion backlog and validation evidence current. Use when the user asks to implement a saved plan or continue planned multi-phase work.
The English summary is being prepared. Showing the original description.
Create distinctive, production-grade frontend interfaces with high design quality. Use this skill when the user asks to build web components, pages, or applications. Generates creative, polished code that avoids generic AI aesthetics.
The English summary is being prepared. Showing the original description.
Audit the in-tree model catalog against each provider's live API (Anthropic, OpenAI, Google, OpenRouter, xAI) using the keys in .env. Surfaces new models the catalog is missing, catalog models a provider no longer returns, and price/context drift on the curated OpenRouter subset, so the catalog stays current. Works on both stacks (docker containers or host venv). Run periodically or when a provider ships new models / changes pricing.
The English summary is being prepared. Showing the original description.
Create a comprehensive Uniffy feature plan in `.agents/local/plans/` through deep codebase analysis, applicable rules, verified patterns, risks, tests, and executable validation steps. Use when the user asks to plan a feature or prepare implementation work without writing product code.
The English summary is being prepared. Showing the original description.