self-score

This skill should be used when about to declare a task complete, "finished implementing", "done with the task", "task complete", or any moment where work is about to be presented as finished. Provides structured self-evaluation against a 7-dimension quality rubric before completion. Skip for non-task interactions (answering questions, explanations, simple lookups).

Self-Score

Overview

Perform a structured self-evaluation of work quality before declaring any task complete. This skill complements superpowers:verification-before-completion (which checks evidence — did tests pass, did it build?) with a quality reflection layer — is the work actually good?

Iron Law: No task completion without a self-score. If the overall score is below 9.5, identify what to improve and ask before implementing.

The Rubric

Score each dimension from 1.0 to 10.0 (one decimal place). Mark dimensions N/A when they genuinely do not apply to the task (e.g., Security for a documentation-only change).

DimensionWhat It Measures1075
CorrectnessWorks as intended, edge cases handledBulletproof, no logical errorsHappy path works, minor edges missedPartially works, known issues
Code QualityClean, readable, idiomaticSenior engineer approves without commentsMinor style or naming issuesFunctional but messy
CompletenessAll requirements addressedEvery requirement met, including implicit onesCore met, minor aspects overlookedSignificant gaps
EleganceRight abstraction, not over-engineeredNothing to add, nothing to removeSome unnecessary complexityOver- or under-abstracted
PerformanceEfficient, no wasted resourcesOptimal for the contextMinor inefficienciesNoticeable issues
SecurityNo vulnerabilities, inputs validatedNo attack surface addedMinor hardening opportunitiesPotential vulnerabilities
User Intent AlignmentSolves what was meant, not just literalSpirit and letter nailedLiteral request met, nuance missedTechnically correct, misses the point

The Process

Step 1: Score

After completing the work but before declaring it done:

  1. Review the work against each dimension
  2. Assign a score (1.0-10.0) or N/A for each
  3. Calculate the overall score as the simple average of all scored dimensions (exclude N/A)
  4. Present the scores in the output format below

Step 2: Evaluate

  • Overall >= 9.5: Declare task complete. Present the scorecard.
  • Overall < 9.5: Proceed to Step 3.

Step 3: Identify Improvements

For each dimension scoring below 9.5:

  1. State what specific change would raise the score
  2. Estimate what the new score would be after the change
  3. Keep improvements proportional — small targeted fixes, not rewrites

Present improvements to the user with this format:

### Improvements to reach 9.5+

| Dimension | Current | Target | What to change |
|-----------|---------|--------|----------------|
| Code Quality | 8.0 | 9.5 | Extract repeated validation logic into a shared helper |
| Elegance | 8.5 | 9.5 | Replace nested conditionals with early returns |

Want me to implement these improvements?

Step 4: Implement (if approved)

If the user approves:

  1. Implement the proposed improvements
  2. Re-score all dimensions
  3. If still below 9.5, repeat from Step 3
  4. If the user declines, the task is complete as-is

Output Format

Always present scores in this exact format:

## Self-Score

| Dimension              | Score |
|------------------------|-------|
| Correctness            | X.X   |
| Code Quality           | X.X   |
| Completeness           | X.X   |
| Elegance               | X.X   |
| Performance            | X.X   |
| Security               | X.X   |
| User Intent Alignment  | X.X   |
| **Overall**            | **X.X** |

Red Flags

These patterns indicate the self-scoring is not being done honestly:

Red FlagWhat Is HappeningCorrection
Every dimension is 9.5+Score inflation to skip the improvement loopRe-evaluate with genuine self-criticism. A first pass rarely scores 9.5+ on everything.
Scoring N/A on applicable dimensionsAvoiding low scores by marking dimensions irrelevantOnly mark N/A when the dimension truly cannot apply (e.g., Performance on a typo fix)
Proposing full rewrites as improvementsDisproportionate response to small gapsImprovements should be targeted fixes, not architectural overhauls
Identical scores across all dimensionsLazy scoring without genuine reflectionEach dimension measures something different — scores should vary

When to Apply

Apply to: Code changes, feature implementations, bug fixes, refactoring, configuration changes, script creation — any work that produces artifacts.

Skip for: Answering questions, providing explanations, simple lookups, brainstorming, planning (the plan itself is not a deliverable — the implementation is).

Integration

  • Pairs with: superpowers:verification-before-completion — run verification first (evidence that it works), then self-score (reflection on quality)
  • Sequencing: Verification -> Self-Score -> Completion declaration
  • Mandated by: Global CLAUDE.md "Always (both modes)" rules