You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: .claude/skills/aurelio-review-pr/SKILL.md
+35-27Lines changed: 35 additions & 27 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -152,31 +152,35 @@ git diff main --name-only
152
152
153
153
Based on changed files, launch applicable review agents **in parallel** using the Task tool. **Do NOT use `run_in_background`** -- launch them as regular parallel Task calls so results arrive together and the user sees all agents complete before triage begins. Background agents cause confusing late-arriving `task-notification` messages that make it look like you presented triage before agents finished.
154
154
155
+
> **IMPORTANT - OpenCode Agent Mapping**: When running in OpenCode (not Claude Code), you MUST use these working subagent types. NEVER use the Claude Code plugin names directly -- they will fail with "Unknown agent type".
156
+
155
157
| Agent | When to launch | subagent_type |
156
158
|---|---|---|
157
-
|**docs-consistency**|**ALWAYS** -- runs on every PR regardless of change type |`pr-review-toolkit:code-reviewer` (custom prompt below) |
158
-
|**code-reviewer**| Any `src_py` or `test_py`|`pr-review-toolkit:code-reviewer`|
159
-
|**python-reviewer**| Any `src_py` or `test_py`|`everything-claude-code:python-reviewer`|
160
-
|**pr-test-analyzer**|`test_py` changed, OR `src_py` changed with no corresponding test changes |`pr-review-toolkit:pr-test-analyzer`|
|**logging-audit**| Any `src_py` changed |`pr-review-toolkit:code-reviewer` (custom prompt below) |
165
-
|**resilience-audit**| Any `src_py` changed |`pr-review-toolkit:code-reviewer` (custom prompt below) |
166
-
|**conventions-enforcer**| Any `src_py` or `test_py`|`pr-review-toolkit:code-reviewer` (custom prompt below) |
167
-
|**security-reviewer**| Files in `src/synthorg/api/`, `src/synthorg/security/`, `src/synthorg/tools/`, `src/synthorg/config/`, `src/synthorg/persistence/`, `src/synthorg/engine/` changed, OR any `web_src` changed, OR diff contains `subprocess`, `eval`, `exec`, `pickle`, `yaml.load`, `sql`, auth/credential patterns |`everything-claude-code:security-reviewer`|
168
-
|**frontend-reviewer**| Any `web_src` or `web_test`|`pr-review-toolkit:code-reviewer` (custom prompt below) |
169
-
|**design-token-audit**| Any `web_src`|`.claude/agents/design-token-audit.md` prompt (scans for density, animation, spacing token violations) |
170
-
|**api-contract-drift**| Any file in `src/synthorg/api/` OR `web/src/api/` OR `src/synthorg/core/enums.py`|`pr-review-toolkit:code-reviewer` (custom prompt below) |
171
-
|**infra-reviewer**| Any `docker`, `ci`, or `infra_config` file |`pr-review-toolkit:code-reviewer` (custom prompt below) |
172
-
|**persistence-reviewer**| Any file in `src/synthorg/persistence/`|`everything-claude-code:database-reviewer`|
173
-
|**test-quality-reviewer**| Any `test_py` or `web_test`|`pr-review-toolkit:pr-test-analyzer` (custom prompt below) |
|**go-conventions-enforcer**| Any `cli_go`|`pr-review-toolkit:code-reviewer` (go-conventions-enforcer custom prompt -- same as in pre-pr-review skill) |
178
-
|**issue-resolution-verifier**| Issue is linked (pre-existing or auto-linked in Phase 2) |`pr-review-toolkit:code-reviewer` (custom prompt below) |
179
-
|**tool-parity-checker**| Any `.claude/` or `.opencode/` or `opencode.json` or `AGENTS.md` or `CLAUDE.md` file changed |`.claude/agents/tool-parity-checker.md` prompt (verifies Claude Code <-> OpenCode config parity) |
159
+
|**docs-consistency**|**ALWAYS** -- runs on every PR regardless of change type |`explore` (use custom prompt below) |
160
+
|**tool-parity-checker**| Any `.claude/` or `.opencode/` or `opencode.json` or `AGENTS.md` or `CLAUDE.md` file changed |`explore` (use custom prompt below) |
161
+
|**code-reviewer**| Any `src_py` or `test_py`|`explore`|
162
+
|**python-reviewer**| Any `src_py` or `test_py`|`explore`|
163
+
|**pr-test-analyzer**|`test_py` changed, OR `src_py` changed with no corresponding test changes |`explore`|
|**go-security-reviewer**| Any `cli_go` with dangerous patterns |`explore`|
180
+
|**go-conventions-enforcer**| Any `cli_go`|`explore`|
181
+
|**issue-resolution-verifier**| Issue is linked (pre-existing or auto-linked in Phase 2) |`explore` (use custom prompt below) |
182
+
183
+
**If the Task tool fails** (e.g., "Unknown agent type"), fall back to running the check manually using Read/Grep tools on the changed files.
180
184
181
185
The **issue-resolution-verifier** agent checks whether the PR fully resolves the linked issue. It only runs when an issue is linked -- either from a pre-existing `closes #N` in the PR body, or auto-linked/user-selected during Phase 2's search.
182
186
@@ -547,10 +551,14 @@ Collect all findings with their severity/confidence scores.
547
551
548
552
**CRITICAL: Fetch ALL reviewers -- do NOT filter by known bot names.** The set of external reviewers varies per repo and can include any combination of bots (CodeRabbit, Gemini, Copilot, Greptile, etc.) and human reviewers. Always fetch unfiltered results and categorize by author from the response.
549
553
550
-
**CRITICAL: Wait for all bots to finish processing.** Before triaging, check if any bot reviewer is still processing (e.g. CodeRabbit's "Currently processing" placeholder, or a review with an empty body). If a bot appears to still be processing:
551
-
1. Poll every 30 seconds for up to 3 minutes (6 checks)
552
-
2. If still not ready after 3 minutes, proceed without it and mark its coverage as "pending" in the triage table
553
-
3. After implementing fixes and pushing, re-check for the bot's feedback in Phase 9
554
+
**CRITICAL: Wait for all bots to finish processing.** Before triaging, check if any bot reviewer is still processing:
555
+
1. First check the ISSUE comments (not PR reviews) for bot status - CodeRabbit posts "Currently processing" placeholder there
556
+
2. If found, poll every 30 seconds for up to 3 minutes (6 checks)
557
+
3. After each poll, re-fetch the issue comments to check if processing is complete
558
+
4. If still not ready after 3 minutes, proceed and mark its coverage as "pending" in the triage table
559
+
5. After implementing fixes and pushing, re-check for the bot's feedback in Phase 9
560
+
561
+
**ALWAYS check both issue comments AND review submissions for bots** -- some bots (CodeRabbit) use issue comments to signal processing status, while others (Gemini, Copilot) use PR review submissions.
554
562
555
563
Fetch from three GitHub API sources **in parallel** using `gh api` -- **always unfiltered** (no `select(.user.login == ...)` filtering):
// no-cd-prefix: block cd prefix in Bash commands (with optional leading whitespace)
73
+
if(/^\s*cd\s+/i.test(command)){
74
74
thrownewError(
75
75
"BLOCKED: Do not use `cd` in Bash commands -- it poisons the cwd for all subsequent calls. The working directory is ALREADY set to the project root. Run commands directly. For Go commands: use `go -C cli <command>`. For subdir tools without a `-C`/`--prefix` equivalent: use `bash -c \"cd <dir> && <cmd>\"`.",
Copy file name to clipboardExpand all lines: scripts/check_bash_no_write.sh
+10-4Lines changed: 10 additions & 4 deletions
Original file line number
Diff line number
Diff line change
@@ -30,10 +30,16 @@ if printf '%s\n' "$COMMAND" | grep -qE "<<-?\s*'?[A-Za-z_]"; then
30
30
deny "Do not use heredocs (<< EOF) to write files. Use the Write tool to create new files or the Edit tool to modify existing files. Never use Bash for file creation or modification."
31
31
fi
32
32
33
-
# Output redirection to a file: > file, >> file, > /path, > "./path"
deny "Do not use shell redirects (> or >>) to write files. Use the Write tool to create new files or the Edit tool to modify existing files. Never use Bash for file creation or modification."
# Extract redirect target to check if it's a file descriptor
38
+
REDIR=$(printf '%s\n'"$COMMAND"| grep -oE '>>?\s*"?[^|&;<>]+'| head -1 | sed 's/^>>\?["'"'"']*//')
39
+
# Only allow if it's a file descriptor (>&N or <&N format)
40
+
if [[ !"$REDIR"=~ ^&[0-9]+$ ]];then
41
+
deny "Do not use shell redirects (> or >>) to write files. Use the Write tool to create new files or the Edit tool to modify existing files. Never use Bash for file creation or modification."
echo'{"decision":"block","reason":"BLOCKED: git -C points to the current working directory. Just use git directly -- the Bash tool already runs in the project root."}'
35
+
cat <<ENDJSON
36
+
{
37
+
"hookSpecificOutput": {
38
+
"hookEventName": "PreToolUse",
39
+
"permissionDecision": "deny",
40
+
"permissionDecisionReason": "BLOCKED: git -C points to the current working directory. Just use git directly -- the Bash tool already runs in the project root."
0 commit comments