Avoid Claude code-review skill collision#20
Conversation
📝 WalkthroughWalkthroughThis PR renames the code-review skill's identifier to coderabbit-review and updates its trigger wording to explicitly require CodeRabbit-related phrasing, avoiding collisions with host-agent built-in code-review commands. The SKILL.md frontmatter and "When to Use" section were updated accordingly. README.md was revised to reflect the renamed skill in the Quickstart instruction, Usage examples, Available Skills section heading and triggers list, and a new note under Claude Code plugin components. CHANGELOG.md documents this rename and trigger change under Unreleased → Changed. Poem
🚥 Pre-merge checks | ✅ 4✅ Passed checks (4 passed)
Comment |
There was a problem hiding this comment.
Note
CodeRabbit posted this review as a comment because GitHub doesn't allow pull request authors to request changes on their own pull requests.
Actionable comments posted: 1
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Inline comments:
In `@skills/code-review/SKILL.md`:
- Line 27: Remove the bare review trigger phrase from the skill guidance in
SKILL.md so only the explicit review invocation remains; update the wording near
the review trigger text to avoid matching generic CLI usage, keeping the
instructions aligned with the explicit-review-only scope.
🪄 Autofix (Beta)
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: Central YAML (base), Organization UI (inherited)
Review profile: CHILL
Plan: Enterprise
Run ID: f58dcde7-5777-4e23-be8a-4b9385d3d203
📒 Files selected for processing (3)
CHANGELOG.mdREADME.mdskills/code-review/SKILL.md
🔗 Linked repositories identified
CodeRabbit considers these linked repositories for cross-repo context during reviews:
coderabbitai/bitbucket(manual)
📜 Review details
⚠️ CI failures not shown inline (2)
GitHub Actions: Required approver / verify: Avoid Claude code-review skill collision
Conclusion: failure
##[group]Run set -euo pipefail
�[36;1mset -euo pipefail�[0m
�[36;1m�[0m
�[36;1mowner="${REPOSITORY%%/*}"�[0m
�[36;1mrepo="${REPOSITORY#*/}"�[0m
�[36;1m�[0m
�[36;1mresponse="$(�[0m
�[36;1m gh api graphql \�[0m
�[36;1m -f owner="$owner" \�[0m
�[36;1m -f repo="$repo" \�[0m
�[36;1m -F number="$PR_NUMBER" \�[0m
�[36;1m -f query='�[0m
�[36;1m query($owner: String!, $repo: String!, $number: Int!) {�[0m
�[36;1m repository(owner: $owner, name: $repo) {�[0m
�[36;1m pullRequest(number: $number) {�[0m
�[36;1m isDraft�[0m
�[36;1m reviews(last: 100) {�[0m
�[36;1m nodes {�[0m
�[36;1m author {�[0m
�[36;1m login�[0m
�[36;1m }�[0m
�[36;1m commit {�[0m
�[36;1m oid�[0m
�[36;1m }�[0m
�[36;1m state�[0m
�[36;1m submittedAt�[0m
�[36;1m }�[0m
�[36;1m }�[0m
�[36;1m }�[0m
�[36;1m }�[0m
�[36;1m }�[0m
�[36;1m '�[0m
�[36;1m)"�[0m
�[36;1m�[0m
�[36;1mis_draft="$(jq -r '.data.repository.pullRequest.isDraft' <<<"$response")"�[0m
�[36;1mif [[ "$is_draft" == "true" ]]; then�[0m
�[36;1m echo "Draft PRs cannot merge; approver gate will run when ready for review."�[0m
�[36;1m exit 0�[0m
�[36;1mfi�[0m
�[36;1m�[0m
�[36;1mapproved_by="$(�[0m
�[36;1m jq -r \�[0m
�[36;1m --arg head "$HEAD_SHA" \�[0m
�[36;1m --argjson approvers "$(jq -Rc 'split(",")' <<<"$REQUIRED_APPROVERS")" \�[0m
�[36;1m '�[0m
�[36;1m .data.repository.pullRequest.reviews.nodes�[0m
�[36;1m | map(select((.author.login // "") as $login | $approvers | index($login)))�[0m
�[36;1m | sort_by(.author.login)�[0m
�[36;1m | group_by(.author.login)�[0m
�[36;1m | map(max_by(.submittedAt))�[0m
�[36;1m | map(select(.state == "APPROVED" and .commit.oid == $head))�[0m
�[36;1m | first.author.login // empty�[0m
�[36;1m ...
GitHub Actions: Required approver / 0_verify.txt: Avoid Claude code-review skill collision
Conclusion: failure
##[group]Run set -euo pipefail
�[36;1mset -euo pipefail�[0m
�[36;1m�[0m
�[36;1mowner="${REPOSITORY%%/*}"�[0m
�[36;1mrepo="${REPOSITORY#*/}"�[0m
�[36;1m�[0m
�[36;1mresponse="$(�[0m
�[36;1m gh api graphql \�[0m
�[36;1m -f owner="$owner" \�[0m
�[36;1m -f repo="$repo" \�[0m
�[36;1m -F number="$PR_NUMBER" \�[0m
�[36;1m -f query='�[0m
�[36;1m query($owner: String!, $repo: String!, $number: Int!) {�[0m
�[36;1m repository(owner: $owner, name: $repo) {�[0m
�[36;1m pullRequest(number: $number) {�[0m
�[36;1m isDraft�[0m
�[36;1m reviews(last: 100) {�[0m
�[36;1m nodes {�[0m
�[36;1m author {�[0m
�[36;1m login�[0m
�[36;1m }�[0m
�[36;1m commit {�[0m
�[36;1m oid�[0m
�[36;1m }�[0m
�[36;1m state�[0m
�[36;1m submittedAt�[0m
�[36;1m }�[0m
�[36;1m }�[0m
�[36;1m }�[0m
�[36;1m }�[0m
�[36;1m }�[0m
�[36;1m '�[0m
�[36;1m)"�[0m
�[36;1m�[0m
�[36;1mis_draft="$(jq -r '.data.repository.pullRequest.isDraft' <<<"$response")"�[0m
�[36;1mif [[ "$is_draft" == "true" ]]; then�[0m
�[36;1m echo "Draft PRs cannot merge; approver gate will run when ready for review."�[0m
�[36;1m exit 0�[0m
�[36;1mfi�[0m
�[36;1m�[0m
�[36;1mapproved_by="$(�[0m
�[36;1m jq -r \�[0m
�[36;1m --arg head "$HEAD_SHA" \�[0m
�[36;1m --argjson approvers "$(jq -Rc 'split(",")' <<<"$REQUIRED_APPROVERS")" \�[0m
�[36;1m '�[0m
�[36;1m .data.repository.pullRequest.reviews.nodes�[0m
�[36;1m | map(select((.author.login // "") as $login | $approvers | index($login)))�[0m
�[36;1m | sort_by(.author.login)�[0m
�[36;1m | group_by(.author.login)�[0m
�[36;1m | map(max_by(.submittedAt))�[0m
�[36;1m | map(select(.state == "APPROVED" and .commit.oid == $head))�[0m
�[36;1m | first.author.login // empty�[0m
�[36;1m ...
🧰 Additional context used
🪛 SkillSpector (2.3.7)
skills/code-review/SKILL.md
[warning] 80: [MP2] Context Window Stuffing: Skill attempts to fill the context window with filler content, displacing legitimate instructions and safety constraints. This can degrade agent performance or bypass safety boundaries.
Remediation: Implement context-window management that detects and rejects padding or stuffing attempts. Prioritize system instructions over user-injected content.
(Memory Poisoning (MP2))
[warning] 82: [MP2] Context Window Stuffing: Skill attempts to fill the context window with filler content, displacing legitimate instructions and safety constraints. This can degrade agent performance or bypass safety boundaries.
Remediation: Implement context-window management that detects and rejects padding or stuffing attempts. Prioritize system instructions over user-injected content.
(Memory Poisoning (MP2))
[warning] 83: [MP2] Context Window Stuffing: Skill attempts to fill the context window with filler content, displacing legitimate instructions and safety constraints. This can degrade agent performance or bypass safety boundaries.
Remediation: Implement context-window management that detects and rejects padding or stuffing attempts. Prioritize system instructions over user-injected content.
(Memory Poisoning (MP2))
[warning] 84: [MP2] Context Window Stuffing: Skill attempts to fill the context window with filler content, displacing legitimate instructions and safety constraints. This can degrade agent performance or bypass safety boundaries.
Remediation: Implement context-window management that detects and rejects padding or stuffing attempts. Prioritize system instructions over user-injected content.
(Memory Poisoning (MP2))
[warning] 80: [MP2] Context Window Stuffing: Skill attempts to fill the context window with filler content, displacing legitimate instructions and safety constraints. This can degrade agent performance or bypass safety boundaries.
Remediation: Implement context-window management that detects and rejects padding or stuffing attempts. Prioritize system instructions over user-injected content.
(Memory Poisoning (MP2))
[warning] 82: [MP2] Context Window Stuffing: Skill attempts to fill the context window with filler content, displacing legitimate instructions and safety constraints. This can degrade agent performance or bypass safety boundaries.
Remediation: Implement context-window management that detects and rejects padding or stuffing attempts. Prioritize system instructions over user-injected content.
(Memory Poisoning (MP2))
[warning] 83: [MP2] Context Window Stuffing: Skill attempts to fill the context window with filler content, displacing legitimate instructions and safety constraints. This can degrade agent performance or bypass safety boundaries.
Remediation: Implement context-window management that detects and rejects padding or stuffing attempts. Prioritize system instructions over user-injected content.
(Memory Poisoning (MP2))
[warning] 84: [MP2] Context Window Stuffing: Skill attempts to fill the context window with filler content, displacing legitimate instructions and safety constraints. This can degrade agent performance or bypass safety boundaries.
Remediation: Implement context-window management that detects and rejects padding or stuffing attempts. Prioritize system instructions over user-injected content.
(Memory Poisoning (MP2))
🔇 Additional comments (4)
README.md (2)
105-105: Covered by the trigger-scope issue inskills/code-review/SKILL.md; these examples still advertise the same broad command phrase.Also applies to: 179-179
22-22: LGTM!Also applies to: 166-166, 218-219
skills/code-review/SKILL.md (1)
2-3: LGTM!CHANGELOG.md (1)
17-19: LGTM!
| - Use CodeRabbit to check code quality, bugs, or security issues | ||
| - Use CodeRabbit for PR feedback or pull request review | ||
| - Ask CodeRabbit what's wrong with code or changes | ||
| - Run coderabbit / Use coderabbit |
There was a problem hiding this comment.
🎯 Functional Correctness | 🟠 Major | ⚡ Quick win
🧩 Analysis chain
🏁 Script executed:
#!/bin/bash
set -euo pipefail
sed -n '1,120p' skills/code-review/SKILL.md | cat -nRepository: coderabbitai/skills
Length of output: 5281
🏁 Script executed:
#!/bin/bash
set -euo pipefail
rg -n "Run coderabbit|Use coderabbit|coderabbit review|explicitly asks CodeRabbit" skillsRepository: coderabbitai/skills
Length of output: 573
Remove the bare Run coderabbit trigger. skills/code-review/SKILL.md:27 still includes a phrase broad enough to match non-review CLI usage, which conflicts with the explicit-review-only scope in the surrounding text.
🧰 Tools
🪛 SkillSpector (2.3.7)
[warning] 80: [MP2] Context Window Stuffing: Skill attempts to fill the context window with filler content, displacing legitimate instructions and safety constraints. This can degrade agent performance or bypass safety boundaries.
Remediation: Implement context-window management that detects and rejects padding or stuffing attempts. Prioritize system instructions over user-injected content.
(Memory Poisoning (MP2))
[warning] 82: [MP2] Context Window Stuffing: Skill attempts to fill the context window with filler content, displacing legitimate instructions and safety constraints. This can degrade agent performance or bypass safety boundaries.
Remediation: Implement context-window management that detects and rejects padding or stuffing attempts. Prioritize system instructions over user-injected content.
(Memory Poisoning (MP2))
[warning] 83: [MP2] Context Window Stuffing: Skill attempts to fill the context window with filler content, displacing legitimate instructions and safety constraints. This can degrade agent performance or bypass safety boundaries.
Remediation: Implement context-window management that detects and rejects padding or stuffing attempts. Prioritize system instructions over user-injected content.
(Memory Poisoning (MP2))
[warning] 84: [MP2] Context Window Stuffing: Skill attempts to fill the context window with filler content, displacing legitimate instructions and safety constraints. This can degrade agent performance or bypass safety boundaries.
Remediation: Implement context-window management that detects and rejects padding or stuffing attempts. Prioritize system instructions over user-injected content.
(Memory Poisoning (MP2))
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
In `@skills/code-review/SKILL.md` at line 27, Remove the bare review trigger
phrase from the skill guidance in SKILL.md so only the explicit review
invocation remains; update the wording near the review trigger text to avoid
matching generic CLI usage, keeping the instructions aligned with the
explicit-review-only scope.
Summary
code-reviewtocoderabbit-review.Evidence And Reasoning
Zillow reported in Pylon issue 25315 that the Claude Code plugin skill declares
name: code-review, which collides with Claude Code CLI v2.1.205's built-in/code-reviewcommand. The report also called out the existing description text,Default code-review skilland autonomous trigger language, as causing plain-language review requests to route to CodeRabbit when the user intended Claude Code's built-in reviewer.The current
mainbranch reproduced that metadata exactly inskills/code-review/SKILL.md. Renaming the skill metadata tocoderabbit-reviewremoves the barecode-reviewname collision, and narrowing the description/examples to explicit CodeRabbit requests reduces unintended natural-language activation.This is a static plugin/skill metadata issue, not a backend runtime incident, so service observability was not the decisive evidence. Linear search found adjacent skills-distribution work but no duplicate issue for this specific Claude Code command collision.
Confidence: high. The changed metadata directly removes the reported colliding name and trigger language. Remaining release/distribution timing depends on the normal plugin publishing path.
Validation
git diff --checkjq empty .claude-plugin/plugin.json .cursor-plugin/plugin.jsonskills/code-review/SKILL.mdnow exposescoderabbit-review.name: code-review,Default code-review, orautonomouslywording in the touched docs/skill files.Final Prompt
Automation execution profile: CODEX_WORKSPACE.
Treat the following as an operational task for the current automation run, not as a request to create, update, preview, review, or explain an automation.
automation_proposalorautomation_action_proposalin a live automation run.automation_status_card. Do not emit a preview card, draft card, or alternative control surface.automation_status_card. Return only the visible thread reply.automation_status_cardthat reflects that requested end state before you stop.actor-slack,post_message, a user token, or any other user-scoped Slack action.Webhook event context:
Task:
Triage this customer support event like a senior support engineer.
Use the ticket details to identify the customer, product area, urgency, impact, and what the customer is trying to do. Classify the issue as one of: product bug, customer confusion, missing documentation, pricing or billing question, account or permissions issue, integration setup issue, or unknown.
If this looks answerable from documentation or known product behavior, check the relevant docs or knowledge base connections and draft a clear customer-facing answer.
If this looks like a product bug, investigate it like a production issue. Check observability and infrastructure connections for matching errors, latency, saturation, traffic shifts, dependency failures, and trace examples. Compare the alert window with recent deploys, config changes, and commits. Check issue tracking and docs and knowledge connections for similar issues/postmortems in the past and see how they were addressed and whether any useful information exists to help debug or resolve the current issue. If you can figure out what the code fix is based on the evidence, then open a PR with the fix. Make sure the pr description includes all the evidence and reasoning about why this PR will fix the issue and your confidence level in the fix working.
Return:
Additionally, ensure the final response formatting is visually consistent. All section headers and subsection headers (for example: classification, customer impact and urgency, confirmed facts, likely cause, etc.) must always be bolded consistently in both the returned output and the private note formatting posted to Pylon.
Also post the whole analysis as private note on the pylon ticket that triggered this message using the bot/service-account Pylon connection. Do not use a personal Pylon API token.
If the issue is classified as a billing question, skip the workflow entirely and post only this private note on the Pylon ticket that triggered this message using the bot/service-account Pylon connection: "Skipping CodeRabbit bot analysis since this is a billing-related issue."
Final Plan
Classification
Product bug.
Customer Impact And Urgency
Zillow enterprise customer. Urgency is medium/low: Pylon marks it low / P2 medium, with no escalation. Impact is a Claude Code plugin UX defect: CodeRabbit can collide with Claude Code’s built-in
/code-reviewand route review requests unexpectedly.What The Customer Is Asking Or Reporting
Sergei reported that
coderabbitai/skillsv1.1.1 declares the review skill asname: code-review, colliding with Claude Code CLI v2.1.205’s built-in/code-review. He asked us to rename or narrow the skill trigger behavior.Confirmed Facts
coderabbitai/skillsmainreproduced the reported metadata.Likely Cause
The skill used a generic host-level name plus broad “default/autonomous” trigger wording, creating ambiguity with Claude Code’s built-in review command.
Recommended Customer Response
“Thanks for the detailed report, Sergei. We reproduced the collision and opened a fix to rename the CodeRabbit skill metadata to
coderabbit-reviewand narrow activation to explicit CodeRabbit requests. Until that ships through the plugin/skills distribution path, your localSKILL.mdedit is the right workaround, but reinstalling can still revert it.”Internal Next Action
Review/merge
coderabbitai/skills#20, then republish the relevant Claude plugin / skills distribution so Zillow receives the fix on reinstall.Missing Information
Need maintainer confirmation that no downstream installer depends on the old
code-reviewfrontmatter name, plus release/marketplace propagation timing.Change Digest
skills/code-review/SKILL.md+7/-7README.md+12/-12CHANGELOG.md+3/-0Validation
git diff --check, JSON manifest validation withjq, frontmatter sanity check, and stale wording search all passed.Initiative Context
Summary by CodeRabbit
coderabbit-review.