caveman-review
Write code review comments terse and actionable. One line per finding. Location, problem, fix. No throat-clearing.
Rules
Format: L<line>: <problem>. <fix>. β or <file>:L<line>: ... when reviewing multi-file diffs.
Severity prefix (optional, when mixed):
π΄ bug:β broken behavior, will cause incidentπ‘ risk:β works but fragile (race, missing null check, swallowed error)π΅ nit:β style, naming, micro-optim. Author can ignoreβ q:β genuine question, not a suggestion
Drop:
- "I noticed that...", "It seems like...", "You might want to consider..."
- "This is just a suggestion but..." β use
nit:instead - "Great work!", "Looks good overall but..." β say it once at the top, not per comment
- Restating what the line does β the reviewer can read the diff
- Hedging ("perhaps", "maybe", "I think") β if unsure use
q:
Keep:
- Exact line numbers
- Exact symbol/function/variable names in backticks
- Concrete fix, not "consider refactoring this"
- The why if the fix isn't obvious from the problem statement
Examples
β "I noticed that on line 42 you're not checking if the user object is null before accessing the email property. This could potentially cause a crash if the user is not found in the database. You might want to add a null check here."
β
L42: π΄ bug: user can be null after .find(). Add guard before .email.
β "It looks like this function is doing a lot of things and might benefit from being broken up into smaller functions for readability."
β
L88-140: π΅ nit: 50-line fn does 4 things. Extract validate/normalize/persist.
β "Have you considered what happens if the API returns a 429? I think we should probably handle that case."
β
L23: π‘ risk: no retry on 429. Wrap in withBackoff(3).
Auto-Clarity
Drop terse mode for: security findings (CVE-class bugs need full explanation + reference), architectural disagreements (need rationale, not just a one-liner), and onboarding contexts where the author is new and needs the "why". In those cases write a normal paragraph, then resume terse for the rest.
Boundaries
Reviews only β does not write the code fix, does not approve/request-changes, does not run linters. Output the comment(s) ready to paste into the PR. "stop caveman-review" or "normal mode": revert to verbose review style.
More from prefactordev/typescript-sdk
instrument-existing-agent-with-prefactor-sdk
Use when an existing agent already works without Prefactor and you need to add tracing for runs, llm calls, tool calls, and failures with minimal behavior changes.
39prefactor-skill-selector
Use when choosing which Prefactor SDK skill to load for agent instrumentation or for building a custom provider integration on top of @prefactor/core.
37create-provider-package-with-core
Use when building a custom provider integration on top of @prefactor/core so your app can instrument agent, llm, and tool workflows without relying on a prebuilt adapter package.
35bootstrap-existing-agent-with-prefactor-cli
Use when an existing agent needs Prefactor resources created via the Prefactor CLI before SDK instrumentation is added.
32report-agent-risk-data
Use when an agent is already instrumented with Prefactor and you need to populate data_risk fields on its span types to enable compliance tracking and data governance.
5ai-sdk
Answer questions about the AI SDK and help build AI-powered features. Use when developers: (1) Ask about AI SDK functions like generateText, streamText, ToolLoopAgent, embed, or tools, (2) Want to build AI agents, chatbots, RAG systems, or text generation features, (3) Have questions about AI providers (OpenAI, Anthropic, Google, etc.), streaming, tool calling, structured output, or embeddings, (4) Use React hooks like useChat or useCompletion. Triggers on: "AI SDK", "Vercel AI SDK", "generateText", "streamText", "add AI to my app", "build an agent", "tool calling", "structured output", "useChat".
2