Generated banner for Applying Brand Guidelines
Generated logo for Applying Brand Guidelines

Applying Brand Guidelines

AnthropicOfficialPublished by Anthropic

  • Skill
  • Guidelines
  • Documents and content
  • MIT
  • Low risk
  • Has scripts

From the author

This skill applies consistent corporate branding and styling to all generated documents including colors, fonts, layouts, and messaging
— the description by Anthropic

AutoGineer summary

Written by AutoGineer from the skill’s own files, not by the author

This skill provides the official brand identity, visual standards, and content guidelines for Acme Corporation. It defines specific requirements for typography, color palettes, logo usage, and document layouts for PowerPoint, Excel, and PDF formats. Additionally, it outlines tone-of-voice expectations and data presentation rules to ensure all external communications maintain a professional and unified appearance.

What it does

  • Defines specific color palettes and typography hierarchies for corporate documents.
  • Sets layout and formatting rules for presentations, spreadsheets, and reports.
  • Provides standardized opening and closing phrases for professional messaging.
  • Establishes strict guidelines for logo placement and clear space.
  • Outlines data presentation standards for tables, charts, and numerical formatting.
  • Lists prohibited design elements to maintain brand integrity.

When to use it

  • When creating new external-facing presentations, reports, or spreadsheets.
  • When auditing existing documents for brand compliance.
  • When onboarding team members on corporate communication standards.
  • When preparing data visualizations to ensure consistent color usage.

Advantages

  • Ensures a professional and consistent brand image across all media.
  • Reduces ambiguity in document design and formatting decisions.
  • Promotes clear, active, and professional communication styles.
  • Provides actionable criteria for quality control and document review.

Usage examples

“Format this project report according to Acme Corporation brand guidelines.”
The agent applies the specified font hierarchy, color palette, and margin settings to the report, ensuring the logo is correctly placed and the tone is professional.
“Check my presentation slides for brand compliance.”
The agent reviews the slides against the provided guidelines, flagging any incorrect colors, fonts, or layout issues that deviate from the corporate standard.

Install

  1. Download the skill as a ZIP:

    https://autogineer.com/agent-skills/anthropics/applying-brand-guidelines/download
  2. Unzip it into the cross-client skills folder of your project:

    mkdir -p .agents/skills && unzip applying-brand-guidelines.zip -d .agents/skills

Documentation by Anthropic

Corporate Brand Guidelines Skill

This skill ensures all generated documents adhere to corporate brand standards for consistent, professional communication.

Brand Identity

Company: Acme Corporation

Tagline: "Innovation Through Excellence" Industry: Technology Solutions

Visual Standards

Color Palette

Primary Colors:

  • Acme Blue: #0066CC (RGB: 0, 102, 204) - Headers, primary buttons

  • Acme Navy: #003366 (RGB: 0, 51, 102) - Text, accents

  • White: #FFFFFF - Backgrounds, reverse text

Secondary Colors:

  • Success Green: #28A745 (RGB: 40, 167, 69) - Positive metrics

  • Warning Amber: #FFC107 (RGB: 255, 193, 7) - Cautions

  • Error Red: #DC3545 (RGB: 220, 53, 69) - Negative values

  • Neutral Gray: #6C757D (RGB: 108, 117, 125) - Secondary text

Typography

Primary Font Family: Segoe UI, system-ui, -apple-system, sans-serif

Font Hierarchy:

  • H1: 32pt, Bold, Acme Blue

  • H2: 24pt, Semibold, Acme Navy

  • H3: 18pt, Semibold, Acme Navy

  • Body: 11pt, Regular, Acme Navy

  • Caption: 9pt, Regular, Neutral Gray

Logo Usage
  • Position: Top-left corner on first page/slide

  • Size: 120px width (maintain aspect ratio)

  • Clear space: Minimum 20px padding on all sides

  • Never distort, rotate, or apply effects

Document Standards

PowerPoint Presentations

Slide Templates:

  1. Title Slide: Company logo, presentation title, date, presenter

  2. Section Divider: Section title with blue background

  3. Content Slide: Title bar with blue background, white content area

  4. Data Slide: For charts/graphs, maintain color palette

Layout Rules:

  • Margins: 0.5 inches all sides

  • Title position: Top 15% of slide

  • Bullet indentation: 0.25 inches per level

  • Maximum 6 bullet points per slide

  • Charts use brand colors exclusively

Excel Spreadsheets

Formatting Standards:

  • Headers: Row 1, Bold, White text on Acme Blue background

  • Subheaders: Bold, Acme Navy text

  • Data cells: Regular, Acme Navy text

  • Borders: Thin, Neutral Gray

  • Alternating rows: Light gray (#F8F9FA) for readability

Chart Defaults:

  • Primary series: Acme Blue

  • Secondary series: Success Green

  • Gridlines: Neutral Gray, 0.5pt

  • No 3D effects or gradients

PDF Documents

Page Layout:

  • Header: Company logo left, document title center, page number right

  • Footer: Copyright notice left, date center, classification right

  • Margins: 1 inch all sides

  • Line spacing: 1.15

  • Paragraph spacing: 12pt after

Section Formatting:

  • Main headings: Acme Blue, 16pt, bold

  • Subheadings: Acme Navy, 14pt, semibold

  • Body text: Acme Navy, 11pt, regular

Content Guidelines

Tone of Voice
  • Professional: Formal but approachable

  • Clear: Avoid jargon, use simple language

  • Active: Use active voice, action-oriented

  • Positive: Focus on solutions and benefits

Standard Phrases

Opening Statements:

  • "At Acme Corporation, we..."

  • "Our commitment to innovation..."

  • "Delivering excellence through..."

Closing Statements:

  • "Thank you for your continued partnership."

  • "We look forward to serving your needs."

  • "Together, we achieve excellence."

Data Presentation

Numbers:

  • Use comma separators for thousands

  • Currency: $X,XXX.XX format

  • Percentages: XX.X% (one decimal)

  • Dates: Month DD, YYYY

Tables:

  • Headers in brand blue

  • Alternating row colors

  • Right-align numbers

  • Left-align text

Quality Standards

Before Finalizing

Always ensure:

  1. Logo is properly placed and sized

  2. All colors match brand palette exactly

  3. Fonts are consistent throughout

  4. No typos or grammatical errors

  5. Data is accurately presented

  6. Professional tone maintained

Prohibited Elements

Never use:

  • Clip art or stock photos without approval

  • Comic Sans, Papyrus, or decorative fonts

  • Rainbow colors or gradients

  • Animations or transitions (unless specified)

  • Competitor branding or references

Application Instructions

When creating any document:

  1. Start with brand colors and fonts

  2. Apply appropriate template structure

  3. Include logo on first page/slide

  4. Use consistent formatting throughout

  5. Review against brand standards

  6. Ensure professional appearance

Scripts

  • apply_brand.py: Automatically applies brand formatting to documents

  • validate_brand.py: Checks documents for brand compliance

Notes

  • These guidelines apply to all external communications

  • Internal documents may use simplified formatting

  • Special projects may have exceptions (request approval)

  • Brand guidelines updated quarterly - check for latest version

Files

validate_brand.py

#!/usr/bin/env python3
"""
Brand Validation Script
Validates content against brand guidelines including colors, fonts, tone, and messaging.
"""

import json
import re
from dataclasses import asdict, dataclass


@dataclass
class BrandGuidelines:
    """Brand guidelines configuration"""

    brand_name: str
    primary_colors: list[str]
    secondary_colors: list[str]
    fonts: list[str]
    tone_keywords: list[str]
    prohibited_words: list[str]
    tagline: str | None = None
    logo_usage_rules: dict | None = None


@dataclass
class ValidationResult:
    """Result of brand validation"""

    passed: bool
    score: float
    violations: list[str]
    warnings: list[str]
    suggestions: list[str]


class BrandValidator:
    """Validates content against brand guidelines"""

    def __init__(self, guidelines: BrandGuidelines):
        self.guidelines = guidelines

    def validate_colors(self, content: str) -> tuple[list[str], list[str]]:
        """
        Validate color usage in content (hex codes, RGB, color names)
        Returns: (violations, warnings)
        """
        violations = []
        warnings = []

        # Find hex colors
        hex_pattern = r"#[0-9A-Fa-f]{6}|#[0-9A-Fa-f]{3}"
        found_colors = re.findall(hex_pattern, content)

        # Find RGB colors
        rgb_pattern = r"rgb\s*\(\s*\d{1,3}\s*,\s*\d{1,3}\s*,\s*\d{1,3}\s*\)"
        found_colors.extend(re.findall(rgb_pattern, content, re.IGNORECASE))

        approved_colors = self.guidelines.primary_colors + self.guidelines.secondary_colors

        for color in found_colors:
            if color.upper() not in [c.upper() for c in approved_colors]:
                violations.append(f"Unapproved color used: {color}")

        return violations, warnings

    def validate_fonts(self, content: str) -> tuple[list[str], list[str]]:
        """
        Validate font usage in content
        Returns: (violations, warnings)
        """
        violations = []
        warnings = []

        # Common font specification patterns
        font_patterns = [
            r'font-family\s*:\s*["\']?([^;"\']+)["\']?',
            r"font:\s*[^;]*\s+([A-Za-z][A-Za-z\s]+)(?:,|;|\s+\d)",
        ]

        found_fonts = []
        for pattern in font_patterns:
            matches = re.findall(pattern, content, re.IGNORECASE)
            found_fonts.extend(matches)

        for font in found_fonts:
            font_clean = font.strip().lower()
            # Check if any approved font is in the found font string
            if not any(approved.lower() in font_clean for approved in self.guidelines.fonts):
                violations.append(f"Unapproved font used: {font}")

        return violations, warnings

    def validate_tone(self, content: str) -> tuple[list[str], list[str]]:
        """
        Validate tone and messaging
        Returns: (violations, warnings)
        """
        violations = []
        warnings = []

        # Check for prohibited words
        content_lower = content.lower()
        for word in self.guidelines.prohibited_words:
            if word.lower() in content_lower:
                violations.append(f"Prohibited word/phrase used: '{word}'")

        # Check for tone keywords (should have at least some)
        tone_matches = sum(
            1 for keyword in self.guidelines.tone_keywords if keyword.lower() in content_lower
        )

        if tone_matches == 0 and len(content) > 100:
            warnings.append(
                f"Content may not align with brand tone. "
                f"Consider using terms like: {', '.join(self.guidelines.tone_keywords[:5])}"
            )

        return violations, warnings

    def validate_brand_name(self, content: str) -> tuple[list[str], list[str]]:
        """
        Validate brand name usage and capitalization
        Returns: (violations, warnings)
        """
        violations = []
        warnings = []

        # Find all variations of the brand name
        brand_pattern = re.compile(re.escape(self.guidelines.brand_name), re.IGNORECASE)
        matches = brand_pattern.findall(content)

        for match in matches:
            if match != self.guidelines.brand_name:
                violations.append(
                    f"Incorrect brand name capitalization: '{match}' "
                    f"should be '{self.guidelines.brand_name}'"
                )

        return violations, warnings

    def calculate_score(self, violations: list[str], warnings: list[str]) -> float:
        """Calculate compliance score (0-100)"""
        violation_penalty = len(violations) * 10
        warning_penalty = len(warnings) * 3

        score = max(0, 100 - violation_penalty - warning_penalty)
        return round(score, 2)

    def generate_suggestions(self, violations: list[str], warnings: list[str]) -> list[str]:
        """Generate helpful suggestions based on violations and warnings"""
        suggestions = []

        if any("color" in v.lower() for v in violations):
            suggestions.append(
                f"Use approved colors: Primary: {', '.join(self.guidelines.primary_colors[:3])}"
            )

        if any("font" in v.lower() for v in violations):
            suggestions.append(f"Use approved fonts: {', '.join(self.guidelines.fonts)}")

        if any("tone" in w.lower() for w in warnings):
            suggestions.append(
                f"Incorporate brand tone keywords: {', '.join(self.guidelines.tone_keywords[:5])}"
            )

        if any("brand name" in v.lower() for v in violations):
            suggestions.append(f"Always capitalize brand name as: {self.guidelines.brand_name}")

        return suggestions

    def validate(self, content: str) -> ValidationResult:
        """
        Perform complete brand validation
        Returns: ValidationResult
        """
        all_violations = []
        all_warnings = []

        # Run all validation checks
        color_v, color_w = self.validate_colors(content)
        all_violations.extend(color_v)
        all_warnings.extend(color_w)

        font_v, font_w = self.validate_fonts(content)
        all_violations.extend(font_v)
        all_warnings.extend(font_w)

        tone_v, tone_w = self.validate_tone(content)
        all_violations.extend(tone_v)
        all_warnings.extend(tone_w)

        brand_v, brand_w = self.validate_brand_name(content)
        all_violations.extend(brand_v)
        all_warnings.extend(brand_w)

        # Calculate score and generate suggestions
        score = self.calculate_score(all_violations, all_warnings)
        suggestions = self.generate_suggestions(all_violations, all_warnings)

        return ValidationResult(
            passed=len(all_violations) == 0,
            score=score,
            violations=all_violations,
            warnings=all_warnings,
            suggestions=suggestions,
        )


def load_guidelines_from_json(filepath: str) -> BrandGuidelines:
    """
    Load brand guidelines from JSON file

    Args:
        filepath: Path to JSON file containing brand guidelines

    Returns:
        BrandGuidelines object

    Raises:
        FileNotFoundError: If the file doesn't exist
        json.JSONDecodeError: If the file contains invalid JSON
        TypeError: If required fields are missing
    """
    try:
        with open(filepath) as f:
            data = json.load(f)
        return BrandGuidelines(**data)
    except FileNotFoundError as e:
        raise FileNotFoundError(f"Brand guidelines file not found: {filepath}") from e
    except json.JSONDecodeError as e:
        raise json.JSONDecodeError(
            f"Invalid JSON in brand guidelines file: {e.msg}", e.doc, e.pos
        ) from e
    except TypeError as e:
        raise TypeError(f"Missing required fields in brand guidelines: {e}") from e


def get_acme_corporation_guidelines() -> BrandGuidelines:
    """
    Get default Acme Corporation brand guidelines.

    These guidelines match the standards defined in the SKILL.md reference.
    Users should customize these for their own organization.

    Returns:
        BrandGuidelines object with Acme Corporation standards
    """
    return BrandGuidelines(
        brand_name="Acme Corporation",
        primary_colors=["#0066CC", "#003366", "#FFFFFF"],  # Acme Blue, Acme Navy, White
        secondary_colors=[
            "#28A745",
            "#FFC107",
            "#DC3545",
            "#6C757D",
            "#F8F9FA",
        ],  # Success Green, Warning Amber, Error Red, Neutral Gray, Light Gray
        fonts=["Segoe UI", "system-ui", "-apple-system", "sans-serif"],
        tone_keywords=[
            "innovation",
            "excellence",
            "professional",
            "solutions",
            "trusted",
            "reliable",
        ],
        prohibited_words=["cheap", "outdated", "inferior", "unprofessional", "sloppy"],
        tagline="Innovation Through Excellence",
    )


def main():
    """Example usage demonstrating brand validation"""
    # Load Acme Corporation brand guidelines
    # Users should customize this for their own organization
    guidelines = get_acme_corporation_guidelines()

    # Example content to validate (intentionally contains violations for demonstration)
    test_content = """
    Welcome to acme corporation!

    We are a cheap solution provider with outdated technology.

    Our innovation and excellence in professional solutions are trusted by many.

    Contact us at: font-family: 'Comic Sans MS'
    Color scheme: #FF0000
    Background: rgb(255, 0, 0)
    """

    # Validate
    validator = BrandValidator(guidelines)
    result = validator.validate(test_content)

    # Print results
    print("=" * 60)
    print("BRAND VALIDATION REPORT")
    print("=" * 60)
    print(f"\nOverall Status: {'✓ PASSED' if result.passed else '✗ FAILED'}")
    print(f"Compliance Score: {result.score}/100")

    if result.violations:
        print(f"\n❌ VIOLATIONS ({len(result.violations)}):")
        for i, violation in enumerate(result.violations, 1):
            print(f"  {i}. {violation}")

    if result.warnings:
        print(f"\n⚠️  WARNINGS ({len(result.warnings)}):")
        for i, warning in enumerate(result.warnings, 1):
            print(f"  {i}. {warning}")

    if result.suggestions:
        print("\n💡 SUGGESTIONS:")
        for i, suggestion in enumerate(result.suggestions, 1):
            print(f"  {i}. {suggestion}")

    print("\n" + "=" * 60)

    # Return JSON for programmatic use
    return asdict(result)


if __name__ == "__main__":
    main()

Requirements and compatibility

Written for: Claude Code, Claude apps

Works with: Claude Code, Claude apps, OpenAI Codex, GitHub Copilot, Cursor, Gemini CLI, Kiro, OpenCode, Goose, Amp, Roo Code, JetBrains Junie, Factory Droid, Devin (ex-Windsurf), Mistral Vibe, OpenHands, Letta

“Works with” means the tool reads the open Agent Skills format; a skill written for one tool may use features others lack.

Needs: Needs Python

Security

What our scanner noticed· Low risk

  • Scripts that your agent may run

This skill includes scripts that your agent may run. Read them before you use it.

A static scan is not a guarantee. Skills are third-party content: review a skill before you let an agent use it.

Attribution and licence

Published by
Anthropic
Publisher
Anthropic (Official)
Source
anthropics/claude-cookbooks · skills/custom_skills/applying-brand-guidelines · commit ce8b262
Licence
MIT License (redistribution allowed)
  • LICENSE (added by AutoGineer from LICENSE)
  • ATTRIBUTION.md (written by AutoGineer)
Synced

AutoGineer is not affiliated with or endorsed by Anthropic or Anthropic.

Download ZIP

The ZIP holds the skill’s files, its licence files and an ATTRIBUTION.md. Download applying-brand-guidelines.zip