validate-output

validate-output is a skill for Claude Code from indranilbanerjee/digital-marketing-pro. It costs 21 tokens per session (1,754 once invoked), scanned A, original, MIT.

A checker for marketing content that compares it with a required structure or schema. It checks sections, word counts, Markdown formatting, unfinished placeholders, calls to action, and search-friendly structure.

In plain words
What is it for?
Use it as a final check on emails, blog posts, and other marketing content supplied as text or a file. It supports eight built-in content schemas and custom schemas for brand-specific templates.
Why use it?
It catches missing sections, leftover template text, incorrect lengths, and mismatches between a call to action and the content before publication. It can use built-in or custom JSON schemas, which are structured sets of validation rules.

Skill for Claude Code

Written for Claude Code: shipped in a Claude Code plugin. Also seen: reads .claude/ paths.

Part of the digital-marketing-pro plugin — 164 skills, 5 commands, 24 agents shipped together

Good fit Use it as a final check on emails, blog posts, and other marketing content supplied as text or a file. It supports eight built-in content schemas and custom schemas for brand-specific templates.

Compare 6 skills from other repositories ↓
Install with agentmods
npx agentmods add skills/indranilbanerjee/digital-marketing-pro/validate-output
Install

Getting it into your agent

One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.

Any agent
npx skills add indranilbanerjee/digital-marketing-pro --skill validate-output
Clone the repo
git clone --depth 1 https://github.com/indranilbanerjee/digital-marketing-pro

Made for: Claude Code.

Or install digital-marketing-pro, the plugin that ships this one along with the rest of its 164 skills, 5 commands, 24 agents.

Wrote this? Show the measurements

A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.

agentmods badge for validate-output

README.md
[![agentmods](https://agentmods.dev/badge/skills/indranilbanerjee/digital-marketing-pro/validate-output/github.svg)](https://agentmods.dev/skills/indranilbanerjee/digital-marketing-pro/validate-output)
Your own site
<a href="https://agentmods.dev/skills/indranilbanerjee/digital-marketing-pro/validate-output"><img src="https://agentmods.dev/badge/skills/indranilbanerjee/digital-marketing-pro/validate-output/github.svg" alt="Measured on agentmods" height="20"></a>

Or the 80×15 button, for a site that already has a row of RSS and ATOM ones. Only the verdict fits; the numbers stay here.

agentmods 80×15 button for validate-output

Your own site · 80×15
<a href="https://agentmods.dev/skills/indranilbanerjee/digital-marketing-pro/validate-output"><img src="https://agentmods.dev/badge/skills/indranilbanerjee/digital-marketing-pro/validate-output.svg" alt="Reviewed on agentmods" width="80" height="20"></a>
Per session 21 Skills are progressive disclosure: only the name and description are preloaded; the body loads when the skill is used.
When invoked 1,754 The whole file, excluding the scripts and references it only reads on demand.
Security scan A 0 findings. A grade says what 26 rules found in the file — not that it is safe.
Origin original No closer match found in the catalogue.
Token cost

What it costs to keep this loaded

Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.

ModelPer sessionOnce invoked
Fable 5.1 $0.00021 $0.01754
Opus 5.5 $0.00008 $0.00702
Sonnet 5.5 $0.00004 $0.00351
Haiku 4.5 $0.00002 $0.00175

Measured 4d ago against content hash 23839c874242, method: parsed. Prices are Anthropic first-party input rates as of 2026-10-07, from the pricing page.

Security

Grade A, and why

validate-output scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 4d ago.

A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.

Nothing flagged

None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.

skills/validate-output/SKILL.md · 64 lines

How it starts

The opening of the file, as written. The whole thing — 64 lines — stays where its author put it; the contents beside it link to each section on GitHub.

/digital-marketing-pro:validate-output

Purpose

Validate marketing content against expected structural schemas to ensure completeness, formatting consistency, and production-readiness. Checks required sections, word count ranges, markdown formatting compliance, placeholder text detection (unfilled template variables, lorem ipsum, TBD markers), and content-CTA consistency. Supports eight built-in schemas for common marketing content types plus custom schemas for brand-specific templates.

This command catches the structural and formatting issues that quality evaluation misses — the missing H2 that breaks SEO, the placeholder "[INSERT COMPANY NAME]" that slipped through, the blog post that is 300 words short of the brief requirement, or the email that has a CTA promising a demo but the body talks about a whitepaper. It is designed to be run as a final pre-publication check after content quality has been evaluated via /digital-marketing-pro:eval-content.

Input Required

The user must provide (or will be prompted for):

  • Content to validate: The text to check — provided inline, as a pasted block, or as a file path. Supports any marketing content format
  • Schema name or file (optional): One of the eight built-in schemas — blog_post, email, ad_copy, social_post, landing_page, press_release, content_brief, campaign_plan — or a file path to a custom JSON schema. If omitted, the validator auto-detects the most likely schema based on content structure, length, and formatting patterns. Custom schemas follow the format defined in skills/context-engine/eval-framework-guide.md

Process

  1. Load brand context: Read ~/.claude-marketing/brands/_active-brand.json for the active slug, then load ~/.claude-marketing/brands/{slug}/profile.json. Apply brand formatting standards and content requirements. Also check for guidelines at ~/.claude-marketing/brands/{slug}/guidelines/_manifest.json — if present, load template definitions from templates/ that may define brand-specific required sections, word count ranges, and formatting rules. Check for custom schemas at ~/.claude-marketing/brands/{slug}/schemas/. Check for agency SOPs at ~/.claude-marketing/sops/. If no brand exists, ask: "Set up a brand first (/digital-marketing-pro:brand-setup)?" — or proceed with defaults.
  2. Determine schema: If a schema name or file was provided, use it directly. If not, execute scripts/output-validator.py --action list-schemas to get all available schemas, then select the most appropriate one based on content characteristics (length, structure, formatting patterns). Report which schema was selected and why, so the user can override if the selection was wrong.
  3. Run structural validation: Execute scripts/output-validator.py --action validate --text "{content}" --schema {builtin_schema_name} for one of the eight built-in schemas, or --custom-schema {path/to/schema.json} for a custom schema file (the two flags are distinct — --schema takes a built-in name only, --custom-schema takes a file path). The validator checks:
    • Required sections: All sections defined in the schema are present with appropriate headings. For each missing section, identify what is expected and where it should appear in the content structure
    • Word count: Total word count and per-section word counts fall within the schema-defined ranges. Flag both under-count (too thin, lacking depth) and over-count (too long, needs trimming)
    • Formatting compliance: Markdown heading hierarchy is correct (no skipped levels), lists are properly formatted, links are valid syntax, images have alt text, code blocks are closed, and tables render correctly
    • Placeholder detection: Scan for unfilled template variables ({placeholder}, [PLACEHOLDER], [INSERT X], TODO, TBD, FIXME, Lorem ipsum, xxx, ACME Corp used as placeholder), partial completions, and obviously templated content that was not customized
    • CTA consistency: The call-to-action matches the content's topic and promise — a blog post about email marketing should not CTA to a social media guide, an email promoting a webinar should link to the webinar registration, not a generic contact page
    • SEO structure (for blog_post and landing_page schemas): H1 present and singular, meta description length within 150-160 characters, title tag within 50-60 characters, internal link present, keyword appears in H1 and first 100 words
    • Compliance markers (for regulated industries): Required disclaimers present, mandatory disclosures included, terms and conditions referenced where needed
  4. Generate fix guidance: For each failed check, provide specific guidance:
    • What is missing or incorrect, with the exact location in the content
    • What the schema requires (the rule being enforced)
    • How to fix it, with an example of what the corrected section should look like
    • Whether the fix is required (schema mandates it) or recommended (best practice)
  5. Handle custom schema requests: If the user needs a schema that does not match any built-in option, guide them on the JSON schema format:
    • Required fields: name, sections (array of section definitions with name, required flag, min/max word count), total_word_count (min/max), formatting_rules, placeholder_patterns
    • Offer to generate a starter schema based on the content's current structure that the user can refine
  6. Present checklist-style results: Format all validation results as a pass/fail checklist that the user can work through sequentially, with the most critical failures first.

Read the full file on GitHub · 64 lines

Changes

What this file has done since we first saw it

Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.

  1. 4d ago Changed · -124 tokens per session 23839c874242
  2. 9d ago First seen · 64 lines · 145 tokens per session scan A 60673ba980d6

Subscribe to this mod's changes

validate-output is a skill published in the GitHub repository indranilbanerjee/digital-marketing-pro (882 stars, last pushed 2d ago), licensed MIT. It adds 21 tokens to every session and 1,754 once invoked, about $0.0001 per session on Opus 5.5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-10-05.