@songforgeai/scoring-rubric
v1.2.0
Published
The Lyric Scoring Standard — 12-metric rubric for AI lyric quality. Pure data + helpers. CC BY 4.0. Cite the standard by name + version when implementing.
Maintainers
Readme
@songforgeai/scoring-rubric
The Lyric Scoring Standard as an installable package — pure data + helpers.
12-metric rubric for AI lyric quality. Anti-inflation rules. Calibrated against
a public corpus. Cited in production at https://songforgeai.com/scoring/standard.
npm install @songforgeai/scoring-rubricWhy this package exists
The Lyric Scoring Standard is published under CC BY 4.0 at https://songforgeai.com/scoring/standard. This package wraps the published JSON
- a small helper API so any AI-music tool can implement against the rubric without re-typing the structure.
Every install is a citation. When you score against this rubric, attribute the standard by name and version.
Quick start
import {
scoreToGrade,
scoreToPercentileLabel,
isCompatibleRubricVersion,
computeComposite,
RUBRIC_VERSION,
} from '@songforgeai/scoring-rubric';
// Map a 0-100 composite to a letter grade
scoreToGrade(85); // 'A'
scoreToGrade(95); // 'S'
// Map to a percentile label per the calibrated placement table
scoreToPercentileLabel(90); // 'Top 3%'
scoreToPercentileLabel(40); // null (below the discriminating floor)
// Verify a third-party score's claimed rubric version
isCompatibleRubricVersion('1.2.0'); // true
isCompatibleRubricVersion('2.0.0'); // false (MAJOR break — re-implement)
// Re-verify a claimed composite from the per-metric scores
computeComposite([
{ tier: 'craft', score: 80 },
{ tier: 'expression', score: 75 },
{ tier: 'impact', score: 70 },
]);
// 75 (weighted 0.25 / 0.40 / 0.35)The full rubric JSON
import rubric from '@songforgeai/scoring-rubric/rubric.json';
console.log(rubric.metrics.length); // 12
console.log(rubric.philosophy); // The 5 anti-inflation rulesWhat's load-bearing about the rubric
Five anti-inflation rules govern the scoring discipline:
- Gravity Rule — every metric defaults to 50. Argue UPWARD with evidence; do not start at 70.
- Burden of Proof — scores >= 80 require citing specific lines. Scores >= 90 require canonical-song comparisons.
- Antagonist Ceiling — a dedicated critical voice must produce evidence; vague disagreement does not lower the score.
- Historical Context Anchor — scores anchor to professional-craft canon (https://songforgeai.com/scoring/corpus), not to other AI output.
- Anti-Platitude (RFC-0002) — lines resolving with generic emotional summaries hit the lowest Specificity + Voice band regardless of polish.
Reproducibility seal
Every SongForgeAI score response carries a seal proving which runtime produced the score:
import type { ReproducibilitySeal } from '@songforgeai/scoring-rubric';
const seal: ReproducibilitySeal = {
rubricVersion: '1.2.0',
model: 'claude-sonnet-4-20250514',
temperature: 0.7,
buildSha: '<git-sha>',
build: 1956,
};When implementing your own scoring against this rubric, ship the equivalent seal so consumers can verify which version of which model produced the score.
License
MIT for this package's helper code + types.
CC BY 4.0 for the rubric JSON itself (/rubric.json). Attribution
required: cite the standard by name + version when scoring against it.
