Skill
Community

quality-scoring

Install
1
Install the plugin
$
npx claudepluginhub cianos95-dev/claude-command-centre --plugin claude-command-centre

Want just this skill?

Then install: npx claudepluginhub u/[userId]/[slug]

Description

Deterministic quality rubric for evaluating issue completion across test coverage, acceptance criteria coverage, and review resolution. Produces a star-graded score that drives closure decisions. Use when evaluating whether an issue is ready to close, understanding why closure was blocked, calibrating quality expectations for a project, or customizing scoring weights. Trigger with phrases like "quality score", "is this ready to close", "why was closure blocked", "evaluate completion", "score this issue", "quality rubric", "closure criteria".

Tool Access

This skill uses the workspace's default tool permissions.

Skill Content

Quality Scoring

A deterministic rubric for evaluating issue completion. The score drives closure decisions: auto-close, propose, or block.

Star Grading Scale

Scores are displayed as stars by default. Use --verbose to see numeric scores alongside stars.

GradeRangeLabelAction
★★★★★90-100ExemplaryAuto-close eligible
★★★★80-89StrongAuto-close eligible
★★★70-79AcceptablePropose closure
★★60-69Needs WorkPropose closure
<60InadequateBlock closure

Display format: Configurable via .ccc-preferences.yaml:

scoring:
  display_format: stars    # stars (default) | numeric | letter | percentage
FormatExample Output
stars★★★★ Strong (default)
numeric85
letterB+
percentage85%

When --verbose is used, both the display format and the underlying numeric score are shown: ★★★★ Strong (85/100).

Pre-Step: Gather Issue Context Bundle

Before executing this skill, gather the issue context bundle (see issue-lifecycle/references/issue-context-bundle.md). Include comment thread health in the scoring assessment: are there unresolved questions in comments? Are dispatch results present but unreviewed? Comment thread state feeds into the Review dimension.

Scoring Dimensions

DimensionWeightWhat It Measures
Test40%Test coverage, tests passing, edge cases addressed
Coverage30%Acceptance criteria addressed, scope completeness
Review30%Review comments resolved, adversarial findings addressed, comment thread health

Dimension Rubrics

Test (40%)

ScoreCriteria
100All acceptance criteria have corresponding tests; all tests pass; edge cases covered
80Core acceptance criteria tested; all tests pass; some edge cases missing
60Tests exist but incomplete; all tests pass
40Tests exist but some fail
20Minimal tests, partial failures
0No tests or all tests fail

Adjustments:

  • -10 if test coverage decreased from baseline
  • +10 if regression tests added for previously-discovered bugs
  • For exec:quick mode: test requirement relaxed to 60 threshold (tests encouraged but not mandatory)

Coverage (30%)

ScoreCriteria
100Every acceptance criterion explicitly addressed with evidence
80All criteria addressed; minor gaps in evidence
60Most criteria addressed; 1-2 criteria partially met
40Half of criteria addressed
20Fewer than half addressed
0No criteria addressed

Assessment method: Read the spec's acceptance criteria checklist. For each criterion, verify:

  1. Implementation exists (code change, config change, or documented decision)
  2. Evidence exists (test, screenshot, manual verification, or reviewer confirmation)

Review (30%)

ScoreCriteria
100All review comments resolved; all adversarial findings addressed or carry-forwarded
80All blocking comments resolved; minor comments acknowledged
60Blocking comments resolved; some minor comments unaddressed
40Some blocking comments unresolved
20Most blocking comments unresolved
0No review conducted or all comments unresolved

Comment thread health adjustments:

  • -10 if unresolved questions exist in the comment thread (questions posted but never answered)
  • -5 if dispatch results are present in comments but have not been reviewed or acknowledged

Note: If no adversarial review was conducted (e.g., exec:quick mode), this dimension scores based on self-review or defaults to 70 (neutral).

Score Calculation

total = (test_score * 0.40) + (coverage_score * 0.30) + (review_score * 0.30)

Threshold Actions

GradeScoreActionRationale
★★★★-★★★★★80-100Auto-close eligibleQuality gates met. Apply closure rules from issue-lifecycle.
★★-★★★60-79Propose closureClose enough, but evidence gaps exist. List gaps in proposal.
0-59Block closureSpecific deficiencies listed. Issue stays In Progress.

Important: Score >= 80 makes the issue eligible for auto-close, but the closure rules matrix from issue-lifecycle still applies. A ★★★★★ score on a human-assigned issue still requires human confirmation.

Scoring Output Format

Default (star grading)

## Quality Score — [Issue ID]

| Dimension | Grade | Evidence |
|-----------|-------|----------|
| Test (40%) | ★★★★ | 8/10 criteria tested, all passing, 2 edge cases missing |
| Coverage (30%) | ★★★★★ | 9/10 acceptance criteria met with evidence |
| Review (30%) | ★★★★★ | All 3 adversarial findings resolved |

**Overall: ★★★★★ Exemplary** — Auto-close eligible

### Gaps
- [ ] Edge case: empty input validation (test dimension)
- [ ] AC #7: partial — needs screenshot evidence (coverage dimension)

Verbose mode (--verbose)

## Quality Score — [Issue ID]

| Dimension | Grade | Score | Evidence |
|-----------|-------|-------|----------|
| Test (40%) | ★★★★ | 85 | 8/10 criteria tested, all passing, 2 edge cases missing |
| Coverage (30%) | ★★★★★ | 90 | 9/10 acceptance criteria met with evidence |
| Review (30%) | ★★★★★ | 100 | All 3 adversarial findings resolved |

**Overall: ★★★★★ Exemplary (90/100)** — Auto-close eligible

### Gaps
- [ ] Edge case: empty input validation (test dimension)
- [ ] AC #7: partial — needs screenshot evidence (coverage dimension)

Star Grading Conversion Rules

When converting a numeric score to stars:

  1. Calculate the weighted total as before (0-100 scale)
  2. Map to star grade using the threshold table above
  3. Per-dimension scores also get star grades for display
  4. The label (Exemplary/Strong/Acceptable/Needs Work/Inadequate) always accompanies stars

Letter grade mapping (when scoring.display_format: letter):

GradeRange
A+95-100
A90-94
B+85-89
B80-84
C+75-79
C70-74
D60-69
F<60

Per-Project Customization

Projects can override default weights and thresholds in their CLAUDE.md:

# Quality scoring overrides
sdd_quality:
  weights:
    test: 0.50      # Higher test weight for safety-critical projects
    coverage: 0.30
    review: 0.20
  thresholds:
    auto_close: 90   # Stricter threshold
    propose: 70
  adjustments:
    exec_quick_test_floor: 50  # Lower test floor for quick mode

If no overrides exist, the defaults from this skill apply.

Integration with Closure

The /ccc:close command calls quality scoring as its first step:

  1. Calculate score across all three dimensions
  2. Convert to star grade (or configured display format)
  3. Apply threshold rules to determine action (auto-close, propose, block)
  4. If auto-close eligible, check closure rules matrix (issue-lifecycle skill)
  5. Execute the appropriate action with the grade as evidence in the closing comment
Stats
Stars0
Forks0
Last CommitFeb 24, 2026

Similar Skills