| name | review-scorecard |
| description | Defines the standard scorecard and table of contents format for Companion module reviews. Use when assembling the final review file to generate the ๐ Scorecard section (issue counts by severity with New vs. Existing columns) and ๐ Table of Contents section (clickable anchor links to each finding). |
Review Scorecard & Table of Contents
Defines the standard format for the two sections inserted immediately after the Verdict in every assembled review.
When to Use This Skill
- When assembling the final review file from all agents' findings
- When computing New vs. Existing issue counts per severity level
- When generating a Table of Contents with anchor links to each finding
- When a review needs retroactive formatting
โ ๏ธ CRITICAL: Review File Output Location
Read project-conventions skill before writing the review file.
Final review files MUST be written to this repo's reviews/ directory โ NOT the module's folder.
reviews/{short-module-name}/review-{short-module-name}-{version}-{YYYYMMDD}-{HHmmss}.md
short-module-name = module folder name with companion-module- prefix stripped
- Timestamp from:
date -u +"%Y%m%d-%H%M%S"
- Create subdirectory if needed:
mkdir -p reviews/{short-module-name}/
โ WRONG: writing a review file inside the module clone (companion-modules-reviewing/companion-module-*/review-*.md)
โ
RIGHT: reviews/{short-module-name}/review-*.md in this repo
Section 1: ๐ Scorecard
Insert this section immediately after the Verdict section.
Issue Counting Rules
Column definitions:
- ๐ New โ findings classified as
๐ NEW or ๐ REGRESSION anywhere in the review
- โ ๏ธ Existing โ findings classified as
โ ๏ธ PRE-EXISTING anywhere in the review, including items in the ## โ ๏ธ Pre-existing Notes table
- Total โ sum of New + Existing for that severity row
Severity rows to include: Always include Critical through Low. Include "Nice to Have" only if there are findings at that level.
Blocking count: Count all findings in the ## ๐ด Critical and ## ๐ High main sections. Pre-existing issues in those main sections still block per review policy. Do NOT count the โ ๏ธ Pre-existing Notes table entries as blocking โ those are explicitly non-blocking. This "blocking" determination drives the ๐ Issues Blocking/Non-blocking grouping and the Verdict; it is not printed as a scorecard line.
Scorecard Template
## ๐ Scorecard
| Severity | ๐ New | โ ๏ธ Existing | Total |
|----------|--------|-------------|-------|
| ๐ด Critical | {n} | {n} | {n} |
| ๐ High | {n} | {n} | {n} |
| ๐ก Medium | {n} | {n} | {n} |
| ๐ข Low | {n} | {n} | {n} |
| ๐ก Nice to Have | {n} | {n} | {n} |
| **Total** | **{n}** | **{n}** | **{n}** |
Omit the "Nice to Have" row if there are no findings at that level.
Verdict Format
The Verdict section (immediately before the Scorecard in the assembled review) contains only the status line โ no reasoning or "Reason:" paragraph:
## Verdict: โ Changes Required
or
## Verdict: โ
Approved
Example โ Changes Required with pre-existing blocking issues
## ๐ Scorecard
| Severity | ๐ New | โ ๏ธ Existing | Total |
|----------|--------|-------------|-------|
| ๐ด Critical | 0 | 0 | 0 |
| ๐ High | 0 | 3 | 3 |
| ๐ก Medium | 0 | 0 | 0 |
| ๐ข Low | 1 | 0 | 1 |
| ๐ก Nice to Have | 1 | 0 | 1 |
| **Total** | **2** | **3** | **5** |
Example โ Changes Required with new critical issue
## ๐ Scorecard
| Severity | ๐ New | โ ๏ธ Existing | Total |
|----------|--------|-------------|-------|
| ๐ด Critical | 1 | 0 | 1 |
| ๐ High | 0 | 2 | 2 |
| ๐ก Medium | 3 | 3 | 6 |
| ๐ข Low | 3 | 4 | 7 |
| **Total** | **7** | **9** | **16** |
Section 2: ๐ Table of Contents
Insert this section immediately after the Scorecard section.
TOC Rules
- Include every finding with a heading in the main review body (Critical through Nice to Have sections)
- Group as Blocking / Non-blocking โ Blocking = items from
๐ด Critical and ๐ High main sections; Non-blocking = everything else
- Omit the Pre-existing Notes table entries โ they don't have individual headings to link to
- If there are no blocking issues, omit the Blocking group header (or write
*(none)*)
- If there are no non-blocking issues, omit the Non-blocking group header
Anchor Generation (GitHub Markdown Rules)
To generate the anchor for a heading:
- Lowercase the entire heading text
- Remove everything that is NOT: letters, digits, spaces, hyphens
- Replace one or more consecutive spaces/hyphens/underscores with a single hyphen (they collapse โ
โ surrounded by spaces becomes one -, not two)
- Backtick content keeps its inner text (backticks themselves are removed)
- Emoji characters and their variation selectors are removed
- Special characters removed:
: ( ) โ . @ / ' ` ! ?
โ ๏ธ Avoid emoji in issue headings. Emoji followed by spaces produce ambiguous anchor output across different Markdown renderers (the number of hyphens generated is not consistent). Keep emoji in section-level headings (e.g., ## ๐ด Critical) but use plain text in issue headings (### H1:, ### C1:, etc.). Classification metadata like "pre-existing" belongs in the **Classification:** line below the heading, not in the heading text itself.
Anchor Examples
| Heading | Anchor |
|---|
### C1: \clearIdleTimer()` called in Reconnect action โ method does not exist` | #c1-clearidletimer-called-in-reconnect-action-method-does-not-exist |
### H1: EventSource not closed in \destroy()`` | #h1-eventsource-not-closed-in-destroy |
### M3: \@companion-module/base` version doesn't satisfy peer dependency` | #m3-companion-modulebase-version-doesnt-satisfy-peer-dependency |
### L1: Build script \rimraf dist` removal may leave stale files` | #l1-build-script-rimraf-dist-removal-may-leave-stale-files |
### N1: Unused import in \upgrades.ts`` | #n1-unused-import-in-upgradests |
TOC Template
Each item is a GitHub-flavored Markdown task list item (- [ ]). On a re-review, mark an item - [x] once the maintainer has addressed it in the resubmitted version.
## ๐ Issues
**Blocking**
- [ ] [C1: Issue title here](#c1-anchor-here)
- [ ] [H1: Issue title here](#h1-anchor-here)
**Non-blocking**
- [ ] [M1: Issue title here](#m1-anchor-here)
- [ ] [L1: Issue title here](#l1-anchor-here)
- [ ] [N1: Issue title here](#n1-anchor-here)
Updated Section Order in Assembled Review
- Title + meta header
- ๐ Scorecard โ this skill
- Verdict
- ๐ Issues โ this skill (formerly "Table of Contents")
- ๐ด Critical
- ๐ High
- ๐ก Medium
- ๐ข Low
- ๐ก Nice to Have
- ๐ฎ Next Release
- โ ๏ธ Pre-existing Notes
- ๐งช Tests (only when tests are present; omit entirely if none found)
The Verdict (item 3) is the status line only โ no reasoning paragraph (see "Verdict Format" above).
Omit any section that has no findings.