docs(opencode): steer ask-claude skill toward repo access for reviews
Add a "Code review pattern" section that tells the opencode agent to give claude read-only access to the repo (Read/Grep/Glob plus a narrow git allowlist) instead of gathering a full `git diff` and piping it in. The piped-diff form loses surrounding-file context, bloats the prompt, and falls over on large branches. Also adds a matching entry to "Don'ts" and caveats the existing pipe-stdin example. Motivated by an opencode run that collected the entire branch diff as stdin instead of pointing claude at the working tree.
This commit is contained in:
parent
425ee187cf
commit
5d0e1fcdd6
1 changed files with 37 additions and 0 deletions
|
|
@ -42,6 +42,40 @@ cat path/to/file.rs | claude -p "Review this for race conditions; explain any yo
|
|||
git diff main...HEAD | claude -p "Spot bugs or risky changes in this diff."
|
||||
```
|
||||
|
||||
Only pipe when the context is small and self-contained. For anything that
|
||||
spans multiple files, prefer giving Claude repo access (next section) so it
|
||||
can read surrounding code, not just the patch.
|
||||
|
||||
## Code review pattern
|
||||
|
||||
For a review of the current branch / working tree, **do not** gather diffs
|
||||
yourself and stuff them into the prompt. Point Claude at the directory and
|
||||
let it run `git` and read files on its own — it sees more context (full
|
||||
files, history, neighbouring code) than a piped diff alone can provide,
|
||||
and it will only fetch what it actually needs.
|
||||
|
||||
Recommended invocation, run from the repo root:
|
||||
|
||||
```bash
|
||||
claude -p --permission-mode dontAsk \
|
||||
--allowedTools "Read Grep Glob Bash(git diff:*) Bash(git log:*) Bash(git status:*) Bash(git show:*)" \
|
||||
"Review the changes on this branch vs main. Flag bugs, risky changes,
|
||||
and anything that violates the project's conventions. Read whatever
|
||||
files you need for context."
|
||||
```
|
||||
|
||||
Why this is better than `git diff … | claude -p`:
|
||||
|
||||
- Claude can open the *full* file around a hunk, not just the ±3 lines of
|
||||
context in the patch.
|
||||
- Claude can follow references — call sites, tests, related modules.
|
||||
- The prompt stays small, so the model spends its tokens on reasoning
|
||||
instead of re-reading a diff you already had on disk.
|
||||
- Works for large diffs that would otherwise blow the context window.
|
||||
|
||||
Use the piped form only for a tiny, self-contained snippet where extra
|
||||
repo context genuinely adds nothing.
|
||||
|
||||
## Permissions
|
||||
|
||||
In `-p` mode there is no human to approve prompts, so anything not explicitly
|
||||
|
|
@ -143,6 +177,9 @@ with `jq`.
|
|||
|
||||
- Don't call `claude -p` in a loop or for trivial questions — it is expensive.
|
||||
- Don't pass the entire conversation history; distill the question first.
|
||||
- Don't gather a giant `git diff` and pipe it in for code review — give
|
||||
Claude read-only repo access (see "Code review pattern") and let it pull
|
||||
exactly the context it needs.
|
||||
- Don't ask Claude to "do" multi-step refactors with file writes — collect its
|
||||
recommendations and apply them yourself, so you stay in control.
|
||||
- Don't forget that Claude has no memory between calls — every invocation
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue