Skip to content
Security
Skill

/posting-review-summary

Use this skill when posting the final summary comment, including its No Verdict form when nothing could be reviewed and no inline comments exist. Otherwise apply as the LAST step of code review, after all findings are classified and inline comments are complete. Detects context

BOOST
From plugin
ai-plugins
15973 skills4 agents10 commands1 MCP
Install
$ npx -y skills add bitwarden/ai-plugins --skill posting-review-summary --agent claude-code

How it fires

How this skill gets triggered: by you, by Claude, or both.

  • Fires itselfAuto-invocation. Claude auto-loads it when your prompt matches the work.Auto-invocation is when the right skill fires by itself at the right moment, driven by a FLOW.md router and a hook, instead of you invoking it by name. It is the difference between a skill being installed and a skill actually getting used.Read the full definition →
  • You can call itInvoke it directly when you want it.
  • Slash command/posting-review-summary

Context preview

The summary Claude sees to decide when to auto-load this skill.

Use this skill when posting the final summary comment, including its No Verdict form when nothing could be reviewed and no inline comments exist. Otherwise apply as the LAST step of code review, after all findings are classified and inline comments are complete. Detects context

SKILL.md

posting-review-summary.SKILL.md
name: posting-review-summary
description: Use this skill when posting the final summary comment, including its No Verdict form when nothing could be reviewed and no inline comments exist. Otherwise apply as the LAST step of code review, after all findings are classified and inline comments are complete. Detects context (caller-declared local-file output, agent mode sticky comment, GitHub Actions MCP tool, or local file) and routes output accordingly.

Posting Review Summary

Context Detection

Check contexts **in this order** — use the first match:

| Context | How to Detect | Action | | ----------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------- | | **Local output in effect** | An `OUTPUT: local files` line in the prompt's leading directive block, **or** a caller that passes local files as the destination in effect. Check this first, and never key it on which tools happen to be available | Write to `review-summary.md` in working directory | | Local target, no GitHub destination | The review target is local changes and no caller declared a GitHub destination | Write to `review-summary.md` in working directory | | **Agent Mode** | Sticky comment context provided in prompt (comment ID + `<!-- bitwarden-code-review -->` marker) | Write summary to `/tmp/review-summary.md` | | GitHub Actions (tag mode) | `mcp__github_comment__update_claude_comment` available AND no sticky comment context | Update sticky comment via MCP tool | | Local review | Neither agent mode context nor MCP tool available | Write to `review-summary.md` in working directory |

**FORBIDDEN:** Do not use `gh pr comment` to create summary comments.

PR Metadata Assessment

If PR title, description, or test plan is genuinely deficient, add as a finding in the Code Review Details collapsible section.

Rules

  • **DO NOT** comment on minor improvements
  • **DO NOT** comment on adequate-but-imperfect metadata
  • **NEVER** add as an inline comment
  • **DO NOT** exceed 3 lines of feedback on the PR Metadata Assessment

Examples

**Genuinely deficient means:**

  • Title is literally "fix bug", "update", "changes", or single word
  • Description is empty or just "See Jira"
  • UI changes with zero screenshots
  • No test plan **AND** changes are testable

**Adequate (DO NOT flag):**

  • Title describes the change even if imperfect: "Fix login issue for SSO users"
  • Description exists and explains the change, even briefly
  • Test plan references Jira task with testing details

Format

- ❓ **QUESTION**: PR title could be more specific
  - Suggested: "Fix null check in UserService.getProfile"

Summary Format

## 🤖 Bitwarden Claude Code Review

**Overall Assessment:** APPROVE / REQUEST CHANGES

[Up to 4 neutral sentences describing what was reviewed]

[Optional **Not covered:** line - only when a review step the diff called for did not run and nothing else in this review covered its ground]

<details>
<summary>Code Review Details</summary>

[Findings grouped by severity - see ordering below]

[Optional PR Metadata Assessment - only for truly deficient metadata]

</details>

No Verdict

Use this form **instead of** the template above — not as a third value inside it — when nothing was reviewed — the diff could not be produced, it came back empty, the pull request could not be identified, or any other reason the review did not happen. Emit no APPROVE or REQUEST CHANGES; a verdict over an unreviewed diff is worse than none.

It goes to the same destination the mode you are in would have used for a normal summary, by the routing in **Context Detection** above **and** the per-mode steps in **Output Execution** below — including the marker append in agent mode, without which the next run cannot find the sticky comment and duplicates it. Nothing about this form changes where output lands — a stop that writes nowhere leaves a placeholder comment reading as a review that found nothing, which is the outcome the form exists to prevent.

The reason goes in the assessment-sentence position, **outside** `<details>`, for the same reason the coverage note does — a reason nobody expands is a reason nobody reads. There is no `<details>` block at all here, because there are no findings to put in one, and no coverage note either: this form already says the whole review did not happen.

## 🤖 Bitwarden Claude Code Review

**Overall Assessment:** NO VERDICT

[One or two sentences: what was attempted, what stopped it, and what the caller should do next]

Not Covered

A coverage note is not a finding: it has no `file:line` to cite and it says what was _not_ reviewed, which is the opposite of the assessment sentences above it. So it gets its own line, outside the `<details>` block, where an approval cannot bury it.

Render it when a review step the diff called for did

Read more
Ships withai-plugins

A curated collection of plugins for AI-assisted development at Bitwarden. Enables discovery and distribution of quality-controlled plugins for use with Claude Code.

Get the whole plugin

Other skills on ai-plugins.