/validate-output
Validate content structure. Use when: checking schema compliance, required sections, word count, or placeholders.
$ npx -y skills add indranilbanerjee/digital-marketing-pro --skill validate-output --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
- Fires itselfAuto-invocation. Claude auto-loads it when your prompt matches the work.Auto-invocation is when the right skill fires by itself at the right moment, driven by a FLOW.md router and a hook, instead of you invoking it by name. It is the difference between a skill being installed and a skill actually getting used.Read the full definition →
- You can call itInvoke it directly when you want it.
- Slash command
/validate-output
Context preview
The summary Claude sees to decide when to auto-load this skill.
Validate content structure. Use when: checking schema compliance, required sections, word count, or placeholders.
SKILL.md
validate-output.SKILL.mdname: validate-output
description: "Validate content structure. Use when: checking schema compliance, required sections, word count, or placeholders."
/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.
Output
A structured validation report containing:
- **Validation score**: Percentage of checks passed out of total checks run — the headline metric for structural completeness
Read more
name: validate-output description: "Validate content structure. Use when: checking schema compliance, required sections, word count, or placeholders."
/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.
Output
A structured validation report containing:
- **Validation score**: Percentage of checks passed out of total checks run — the headline metric for structural completeness
Your agency just signed a 50-brand client. The previous agency left no playbook. Three brands are bleeding budget, two have stale positioning, one is launching in a regulated jurisdiction next month. Where do you start?
Other skills on digital-marketing-pro.
- /ab-test-plan
Design A/B and multivariate tests. Use when: sample size calculation, testing hypothesis, CRO experimentation.
Open skill - /ad-creative
Generate platform-specific ad copy. Use when: Google RSA, Meta, LinkedIn, TikTok ad variations with quality scoring.
Open skill - /add-integration
Add MCP server integrations. Use when: connecting a custom tool, API, or service to the plugin via .mcp.json.
Open skill - /aeo-audit
Audit AI search visibility. Use when: checking brand presence in ChatGPT, Perplexity, AI Overviews, Gemini.
Open skill - /aeo-geo
Optimize AI engine visibility. Use when: AEO/GEO strategy, citation optimization, entity consistency across AI platforms.
Open skill - /agency-dashboard
Portfolio-level agency dashboard aggregating health metrics across all client brands — campaign status, budget pacing, KPI attainment, team utilization. Use when reviewing cross-brand portfolio health, preparing for agency leadership standups, or getting a single-view snapshot
Open skill

