AM

amcs-validator

Evaluates creative content against a strict blueprint rubric for technical quality and compliance.

Install

mkdir -p .claude/skills/amcs-validator && curl -L -o skill.zip "https://agentskills.codes/api/skills/download/295" && unzip -o skill.zip -d .claude/skills/amcs-validator && rm skill.zip

Installs to .claude/skills/amcs-validator

Activation

This is the description your AI agent reads to decide when to run this skill — the better it matches your request, the more reliably it fires.

Score composed artifacts against blueprint rubric. Evaluates hook density, singability, rhyme tightness, section completeness, and profanity compliance. Returns scores and issues list to determine if fix loop is needed. Use after COMPOSE to validate artifacts before rendering.
277 charsno explicit “when” triggerlonger than Claude Code's old 250-char listing cap (fine on current versions)
Beginner

Key capabilities

  • Evaluate hook density in lyrics
  • Assess singability based on syllable consistency
  • Check rhyme tightness against a scheme
  • Verify section completeness in composed artifacts
  • Score profanity compliance
  • Return a pass/fail status based on rubric thresholds

How it works

The skill evaluates composed artifacts against a blueprint's scoring rubric, calculating scores for metrics like hook density, singability, and rhyme tightness. It then determines if the composition meets quality thresholds and identifies specific failures.

Inputs & outputs

You give it
lyrics, style, producer notes, blueprint, optional composed prompt, and a seed
You get back
scores for various metrics, a list of issues, and a pass/fail boolean

When to use amcs-validator

  • Validating songwriting drafts
  • Checking lyrical rhyme density
  • Screening content for profanity compliance

About this skill

AMCS Validator

Evaluates composed artifacts (lyrics, style, producer notes) against the blueprint's scoring rubric to determine if the composition meets quality thresholds. If scores fall below the threshold (min_total < 0.85), the workflow transitions to the FIX loop.

When to Use

Invoke this skill after COMPOSE completes. This is the quality gate before RENDER.

Input Contract

inputs:
  - name: lyrics
    type: string
    required: true
    description: Complete lyrics with section markers
  - name: style
    type: amcs://schemas/style-1.0.json
    required: true
    description: Validated style specification
  - name: producer_notes
    type: amcs://schemas/producer-notes-1.0.json
    required: true
    description: Production arrangement and mix guidance
  - name: blueprint
    type: amcs://schemas/blueprint-1.0.json
    required: true
    description: Genre-specific rules and scoring rubric
  - name: composed_prompt
    type: amcs://schemas/composed-prompt-0.2.json
    required: false
    description: Optional composed prompt for additional validation
  - name: seed
    type: integer
    required: true
    description: Determinism seed (use seed+5 for this node)

Output Contract

outputs:
  - name: scores
    type: object
    description: |
      Scoring breakdown:
      - total: Weighted average score (0-1)
      - hook_density: Hook repetition score (0-1, target ≥ 0.7)
      - singability: Syllable/meter consistency (0-1, target ≥ 0.8)
      - rhyme_tightness: Rhyme scheme adherence (0-1, target ≥ 0.75)
      - section_completeness: Required sections present (0-1, target 1.0)
      - profanity_score: Policy compliance (0-1, target 1.0 for clean)
  - name: issues
    type: array[string]
    description: List of specific failures (e.g., "Low hook density: 0.5 (target 0.7)")
  - name: pass
    type: boolean
    description: True if scores meet rubric thresholds (total ≥ min_total)

Determinism Requirements

  • Seed: run_seed + 5 (for any probabilistic scoring, if needed)
  • Temperature: N/A (rule-based scoring, no LLM generation)
  • Top-p: N/A
  • Retrieval: None
  • Hashing: Hash scores object for provenance

Constraints & Policies

  • min_total threshold: Default 0.85 (from blueprint.eval_rubric.thresholds.min_total)
  • Hook density target: ≥ 0.7 (chorus hooks repeated, memorable)
  • Singability target: ≥ 0.8 (consistent syllable counts, natural phrasing)
  • Rhyme tightness target: ≥ 0.75 (rhyme scheme followed)
  • Section completeness target: 1.0 (all required sections present)
  • Profanity target: 1.0 for clean songs (0.9 if explicit allowed)
  • Rubric weights: Must sum to 1.0, used for weighted total

Implementation Guidance

Step 1: Load Rubric from Blueprint

Extract rubric configuration:

rubric = blueprint["eval_rubric"]
weights = rubric["weights"]
thresholds = rubric["thresholds"]
min_total = thresholds["min_total"]  # Default: 0.85

Step 2: Evaluate Hook Density

Definition: Percentage of lines that contain hook phrases from the chorus.

Algorithm:

  1. Extract chorus section from lyrics
  2. Identify hook phrases (repeated phrases ≥ 3 words)
  3. Count total lines across all sections
  4. Count lines containing hook phrases
  5. Score = (hook_lines / total_lines)

Target: ≥ 0.7

Example:

Chorus:
Family time is what we need  <-- hook
Love and joy in every deed   <-- hook

Verse:
Family time is what we need  <-- hook repeated
...

Score: 3 hook lines / 16 total lines = 0.1875 → LOW

Issues:

  • If score < 0.7: "Low hook density: {score:.2f} (target 0.7)"

Step 3: Evaluate Singability

Definition: Consistency of syllable counts and natural phrasing.

Algorithm:

  1. For each section, extract lines
  2. Count syllables per line (use pyphen or simple vowel counting)
  3. Compute standard deviation of syllable counts within section
  4. Score = 1.0 - (stddev / mean_syllables)
  5. Average across all sections

Target: ≥ 0.8

Example:

Verse:
Gathering 'round on Christmas Eve (9 syllables)
The kids decorate, we all believe (9 syllables)
Family time is what we need (8 syllables)

Stddev = 0.47, Mean = 8.67
Score = 1.0 - (0.47 / 8.67) = 0.95 → PASS

Issues:

  • If score < 0.8: "Weak singability: {score:.2f} (target 0.8) - inconsistent syllable counts"

Step 4: Evaluate Rhyme Tightness

Definition: Adherence to the intended rhyme scheme (ABAB, AABB, etc.)

Algorithm:

  1. Parse lyrics.constraints.rhyme_scheme from SDS (e.g., "ABAB")
  2. Extract end words from each line in verse/chorus
  3. Check phonetic similarity (use pronouncing library or simple suffix matching)
  4. Score = (matching_rhymes / expected_rhymes)

Target: ≥ 0.75

Example:

Rhyme scheme: ABAB
Verse:
Gathering 'round on Christmas Eve (A)
The kids decorate, we all believe (B) ✓ rhymes with A
Family time is what we need (A) ✓ rhymes with A
Love and joy in every deed (B) ✓ rhymes with B

Score = 4/4 = 1.0 → PASS

Issues:

  • If score < 0.75: "Weak rhyme tightness: {score:.2f} (target 0.75) - rhyme scheme not followed"

Step 5: Evaluate Section Completeness

Definition: All required sections from blueprint are present in lyrics.

Algorithm:

  1. Get required_sections from blueprint (e.g., ["Verse", "Chorus", "Bridge"])
  2. Extract section markers from lyrics (e.g., [Verse], [Chorus])
  3. Check if all required sections present
  4. Score = (present_sections / required_sections)

Target: 1.0

Example:

Required: ["Verse", "Chorus", "Bridge"]
Present: ["Intro", "Verse", "Chorus", "Verse", "Chorus"]
Missing: ["Bridge"]

Score = 2/3 = 0.67 → FAIL

Issues:

  • If score < 1.0: "Missing required sections: {missing_sections}"

Step 6: Evaluate Profanity Score

Definition: Compliance with profanity policy based on explicit flag.

Algorithm:

  1. Get banned_terms from blueprint.rules
  2. Check constraints.explicit from SDS
  3. Scan lyrics for banned terms (case-insensitive)
  4. If explicit=false and banned terms found: score = 0.0
  5. If explicit=true: score = 0.9 (allowed but noted)
  6. If clean: score = 1.0

Target: 1.0 for clean, 0.9 for explicit allowed

Example:

Explicit: false
Banned terms: ["damn", "hell"]
Lyrics: "What the hell is going on?"

Score = 0.0 → FAIL
Issue: "Profanity detected (explicit=false): hell"

Issues:

  • If explicit=false and banned terms found: "Profanity detected (explicit=false): {terms}"

Step 7: Compute Weighted Total Score

Algorithm:

  1. Multiply each score by its weight from rubric
  2. Sum weighted scores
  3. Total = (hook_density * w1) + (singability * w2) + (rhyme * w3) + (section * w4) + (profanity * w5)

Example:

weights = {
  "hook_density": 0.25,
  "singability": 0.25,
  "rhyme_tightness": 0.20,
  "section_completeness": 0.20,
  "profanity_score": 0.10
}

scores = {
  "hook_density": 0.65,
  "singability": 0.90,
  "rhyme_tightness": 0.80,
  "section_completeness": 0.67,
  "profanity_score": 1.0
}

total = (0.65 * 0.25) + (0.90 * 0.25) + (0.80 * 0.20) + (0.67 * 0.20) + (1.0 * 0.10)
      = 0.1625 + 0.225 + 0.16 + 0.134 + 0.10
      = 0.7815 → FAIL (< 0.85)

Step 8: Determine Pass/Fail

if total_score >= min_total:
    pass_validation = True
    issues = []  # No critical issues
else:
    pass_validation = False
    # Collect all failing criteria

Step 9: Build Issues List

Collect all failing criteria with specific thresholds:

issues = []
if hook_density < 0.7:
    issues.append(f"Low hook density: {hook_density:.2f} (target 0.7)")
if singability < 0.8:
    issues.append(f"Weak singability: {singability:.2f} (target 0.8)")
if rhyme_tightness < 0.75:
    issues.append(f"Weak rhyme tightness: {rhyme_tightness:.2f} (target 0.75)")
if section_completeness < 1.0:
    issues.append(f"Missing required sections: {missing_sections}")
if profanity_score < 1.0:
    issues.append(f"Profanity detected: {banned_terms_found}")

Step 10: Return Validation Results

{
  "scores": {
    "total": 0.7815,
    "hook_density": 0.65,
    "singability": 0.90,
    "rhyme_tightness": 0.80,
    "section_completeness": 0.67,
    "profanity_score": 1.0
  },
  "issues": [
    "Low hook density: 0.65 (target 0.7)",
    "Missing required sections: ['Bridge']"
  ],
  "pass": false,
  "_hash": "abc123..."
}

Examples

Example 1: Passing Validation

Input:

{
  "lyrics": "[Verse]\nFamily time is what we need\n...\n[Chorus]\nFamily time is what we need\nLove and joy in every deed\n...\n[Bridge]\nTogether we can share the light\n...",
  "style": {...},
  "producer_notes": {...},
  "blueprint": {
    "rules": {"required_sections": ["Verse", "Chorus", "Bridge"]},
    "eval_rubric": {
      "weights": {"hook_density": 0.25, "singability": 0.25, "rhyme_tightness": 0.20, "section_completeness": 0.20, "profanity_score": 0.10},
      "thresholds": {"min_total": 0.85}
    }
  }
}

Output:

{
  "scores": {
    "total": 0.92,
    "hook_density": 0.85,
    "singability": 0.95,
    "rhyme_tightness": 0.90,
    "section_completeness": 1.0,
    "profanity_score": 1.0
  },
  "issues": [],
  "pass": true
}

Example 2: Failing Validation (Low Hook Density)

Input:

{
  "lyrics": "[Verse]\nWalking through the snowy night\n...\n[Chorus]\nChristmas time is here again\n...",
  "blueprint": {...}
}

Output:

{
  "scores": {
    "total": 0.78,
    "hook_density": 0.45,
    "singability": 0.88,
    "rhyme_tightness": 0.82,
    "section_completeness": 1.0,
    "profanity_score": 1.0
  },
  "issues": [
    "Low hook density: 0.45 (target 0.7)"
  ],
  "pass": false
}

Common Pitfalls

  1. Weights Not Summing to 1.0: Validate weights before computing total score
  2. Missing Sections Not Detected: Ensure section parsing handles variations ([Chorus], [CHORUS], [Chorus 1])
  3. **False Positives on Profani

Content truncated.

Limitations

  • The total score must meet a minimum threshold, defaulting to 0.85
  • Hook density must be greater than or equal to 0.7
  • Singability must be greater than or equal to 0.8

How it compares

This skill automates the quality assessment of composed content against a defined rubric, unlike manual review which relies on subjective judgment.

Compared to similar skills

amcs-validator side by side with the closest alternatives in the catalog.

SkillInstallsUpdatedSafetyDifficulty
amcs-validator (this skill)59moNo flagsBeginner
scientific-writing942moReviewIntermediate
resume-builder533moNo flagsBeginner
humanizer906moNo flagsBeginner

Try saying

Example prompts that trigger this skill in your AI assistant.

You might also like

scientific-writing

K-Dense-AI

Write scientific manuscripts. IMRAD structure, citations (APA/AMA/Vancouver), figures/tables, reporting guidelines (CONSORT/STROBE/PRISMA), abstracts, for research papers and journal submissions.

94309

resume-builder

amruthpillai

Generate professional resumes that conform to the Reactive Resume schema. Use when the user wants to create, build, or generate a resume through conversational AI, or asks about resume structure, sections, or content. This skill guides the agent to ask clarifying questions, avoid hallucination, and produce valid JSON output for https://rxresu.me.

53229

humanizer

davila7

Remove signs of AI-generated writing from text. Use when editing or reviewing text to make it sound more natural and human-written. Based on Wikipedia's comprehensive "Signs of AI writing" guide. Detects and fixes patterns including: inflated symbolism, promotional language, superficial -ing analyses, vague attributions, em dash overuse, rule of three, AI vocabulary words, negative parallelisms, and excessive conjunctive phrases. Credits: Original skill by @blader - https://github.com/blader/humanizer

90175

ux-writing

content-designer

Create user-centered, accessible interface copy (microcopy) for digital products including buttons, labels, error messages, notifications, forms, onboarding, empty states, success messages, and help text. Use when writing or editing any text that appears in apps, websites, or software interfaces, designing conversational flows, establishing voice and tone guidelines, auditing product content for consistency and usability, reviewing UI strings, or improving existing interface copy. Applies UX writing best practices based on four quality standards — purposeful, concise, conversational, and clear. Includes accessibility guidelines, research-backed benchmarks (sentence length, comprehension rates, reading levels), expanded error patterns, tone adaptation frameworks, and comprehensive reference materials.

42155

writing-rap-lyrics

asvskartheek

Helps write rap lyrics with proper rhythm, flow, cadences, and structure. Teaches musical fundamentals (bars, beats, tempo, BPM) and lyric formatting. Use when writing rap lyrics, creating verses, understanding flow, structuring bars, improving cadence, learning rhythm patterns, or formatting rap lyrics.

44143

docs-write

metabase

Write documentation following Metabase's conversational, clear, and user-focused style. Use when creating or editing documentation files (markdown, MDX, etc.).

22139

Search skills

Search the agent skills registry