Skip to content

User Guide

Five commands for reviewing your pending changes, once the plugin is installed. None of them edit your code — they report, you decide, Claude edits.

Command Use it for
/cloudaeye:inspect The routine bug check after finishing a task
/cloudaeye:security The security surface on its own
/cloudaeye:review Everything, before a significant PR
/cloudaeye:implement A fix plan for findings a review produced
/cloudaeye:check-task "Does this actually do what the ticket asked?"

What to review

/inspect, /security and /review all take the same optional argument.

/cloudaeye:inspect                    every uncommitted change
/cloudaeye:inspect src/auth/          only changes under that directory
/cloudaeye:inspect src/auth/login.ts  only that file
/cloudaeye:inspect #405               open pull request 405

Digits mean a pull request. For a directory actually named 405, write ./405.

Severity floor — add --critical, --high, --medium or --low to any of them:

/cloudaeye:review --critical
/cloudaeye:inspect src/auth/ --high

It's a floor, so --high reports high and critical. It also cuts cost: the floor reaches the scanner, not just the output, so lower-severity candidates are never worked up in the first place.

Severity is impact, not certainty:

Critical Crashes, data loss, auth bypass, RCE, a leaked live credential
High A wrong result on a real code path, a missing check with real impact
Medium Degrades rather than breaks
Low Style, naming, clarity

Two things to know

A scoped review only speaks for its scope. approve on src/auth/ means approved for that path. The report always names the scope and how many changed files it left out, and the cross-file checks can't see the excluded ones.

Pull requests must be open (drafts are fine), merge into your CloudAEye-integrated branch, not come from a fork, and change at most 50 files. You have to be standing in the repository the PR belongs to. Anything ineligible is refused up front with the reason.


The three review commands

/cloudaeye:inspect — bugs only: logic errors, compile breaks, edge cases, input validation, concurrency, error handling, clarity, naming, and signatures. No security prompts, so it's cheap enough to run after every task. If your change touches auth, untrusted input, secrets, crypto or LLM prompts, Claude will suggest /security rather than running it uninvited.

/cloudaeye:security — OWASP-style application security, plus the LLM, AI-agent and MCP surfaces, plus secrets on the changed lines. The extended types only attach to code that actually shows matching patterns, so running it on a repo with no LLM code costs about what a plain application-security pass would.

/cloudaeye:review — both of the above in one pass. The widest and most expensive; save it for a significant PR.

All three return a verdict (approve / request_changes) and a numbered list of findings with file, line, severity and category. Those numbers are what you use next.


/cloudaeye:implement

Turns findings into a fix plan. It never edits and never patches — it returns file, location, instruction, and the blast radius: the other call site with the same defect, the caller whose contract changes, the test that asserts on the old behaviour. That last part is the reason to use it over just asking Claude to fix things, which also works and costs nothing.

/cloudaeye:implement [1,3]                        by number
/cloudaeye:implement [2-4]                        a range
/cloudaeye:implement                              no list — all of them
/cloudaeye:implement [1,3] use a context manager  select two, constrain both
/cloudaeye:implement fix the 2nd point            plain words work too

Anything after the list becomes a hard constraint on every plan. A number that doesn't exist is an error naming the valid range, not a partial plan.

Some plans come back marked stale (the code moved since the review — it may already be fixed) or not_an_edit (no code change fixes it; a leaked credential needs rotating). If your request is ambiguous, nothing is planned and you're asked which you meant.

It doesn't work on a pull-request review — the plans describe edits to a working tree. Check the branch out locally and review again.


/cloudaeye:check-task

Checks the change against what was actually asked for.

/cloudaeye:check-task https://github.com/owner/repo/issues/42
/cloudaeye:check-task BETA-5225
/cloudaeye:check-task [BETA-5225, #42]
/cloudaeye:check-task the retry cap must be configurable, default 3
/cloudaeye:check-task                    reuses the task from last time

Issues and tickets are fetched fresh on every call, so new comments count. Freeform text is used verbatim — including text that merely mentions a ticket.

You get a per-requirement table (done / partial / not done), the gaps, anything out-of-scope you changed, and a verdict of DONE or NOT_DONE. The verdict is deliberately binary: a single partial requirement is NOT_DONE, because "mostly done" is how a half-finished task gets reported as finished.

ERROR means the check couldn't run — usually an unresolvable ticket. It's not a judgement on your change; paste the ticket body as text instead.


The loop

/cloudaeye:inspect          →  findings, numbered 1..N
/cloudaeye:implement [1,3]  →  fix plans   (optional)
Claude edits
/cloudaeye:inspect          →  confirms the fix landed, nothing new broke

Re-running resumes the same session while you haven't committed — you never hold a session id. Committing starts fresh, so iterate before you commit if you want the reviewer to keep the thread.

To tell the reviewer to leave a finding alone, say so when you ask for the re-review. That instruction is visible in what Claude sends, and the reviewer still checks every other finding against the real diff.


When output looks off

You see What it means
verdict: error, or a degraded note The review ran without your post-edit source. Not a clean review — re-run.
context_refresh: skipped / failed The repository graph wasn't refreshed, so the answer rests on the diff alone. Usually an expired GitHub token, fixed server-side.
A very old baseline age Your local origin/<branch> is stale — fetch before the next review.
approve with a scope Approved for that path only.
"no findings at or above X" There may be findings below your severity floor; the count is shown.

See Skills & Commands for what each command runs under the hood, and the Tool Reference if you are calling the MCP tools directly rather than through the plugin.