home / skills / sammcj / agentic-coding / apply-mantel-styles

apply-mantel-styles skill

/Skills/apply-mantel-styles

This skill guides you to apply Mantel brand styles to diagrams and frontend components for consistent visuals.

npx playbooks add skill sammcj/agentic-coding --skill apply-mantel-styles

Review the files below or copy the command above to add this skill to your agents.

Files (1)
SKILL.md
15.5 KB
---
name: apply-mantel-styles
description: Provides guidelines for applying Mantel's brand styles to diagrams and frontend components. Use when asked to create visuals that need to align with Mantel's branding.
---

# Rules For Applying Mantel Brand Styles

When creating visual diagrams or frontend components, you can apply the following style guidelines to ensure consistency with the Mantel brand identity.

## Colour Scheme

- You should aim to use the following primary colours from the Mantel brand palette.
- You _may_ also use tints and shades of these colours as needed, but avoid introducing non-brand colours.

<PALETTE>
   Ocean:       #1E5E82 | rgb(30, 94, 130)
   Flamingo:    #D86E89 | rgb(216, 110, 137)
   Deep Ocean:  #002A41 | rgb(0, 42, 65)
   Sky Blue:    #81CCEA | rgb(129, 204, 234)
   Cloud:       #EEF9FD | rgb(238, 249, 253)
</PALETTE>

---

## General Design Principles

<GENERAL_PRINCIPLES>
   <COLOUR_HIERARCHY>
     1. Primary Actions/Elements: Ocean (#1E5E82)
     2. Secondary/Supporting: Sky Blue (#81CCEA)
     3. Emphasis/Accent: Flamingo (#D86E89)
     4. Foundation/Authority: Deep Ocean (#002A41)
     5. Background/Neutral: Cloud (#EEF9FD)
   </COLOUR_HIERARCHY>

   <SEMANTIC_USAGE>
      - Use Ocean for primary actions, main navigation, success states
      - Use Sky Blue for interactive elements, information, secondary actions
      - Use Flamingo sparingly for CTAs, warnings, important highlights
      - Use Deep Ocean for text, borders, authoritative elements
      - Use Cloud for backgrounds, subtle dividers, inactive states
   </SEMANTIC_USAGE>

   <CONSISTENCY_RULES>
      - Avoid mixing colour schemes from other brands
      - Maintain consistent colour meanings across all diagrams in a project
      - When transparency is needed, use rgba values of the brand colours
      - For hover states, darken by 10-15% or lighten by 10-15% staying within brand
   </CONSISTENCY_RULES>
</GENERAL_PRINCIPLES>

---

## Mermaid Styles

Example Mermaid class definitions to apply Mantel brand styles to diagrams

<MERMAID_THEME>
   <!-- Primary elements using Ocean with Cloud fill for readability -->
   classDef process fill:#EEF9FD,stroke:#1E5E82,stroke-width:2px,color:#002A41
   classDef components fill:#EEF9FD,stroke:#1E5E82,stroke-width:2px,color:#002A41
   classDef subprocess fill:#EEF9FD,stroke:#1E5E82,stroke-width:1px,color:#002A41,stroke-dasharray:5 5

   <!-- Interactive/Input elements using Sky Blue -->
   classDef inputOutput fill:#81CCEA,stroke:#1E5E82,stroke-width:2px,color:#002A41
   classDef api fill:#81CCEA,stroke:#002A41,stroke-width:2px,color:#002A41
   classDef user fill:#81CCEA,stroke:#002A41,stroke-width:2px,color:#002A41
   classDef external fill:#81CCEA,stroke:#002A41,stroke-width:2px,color:#002A41,stroke-dasharray:3 3

   <!-- Decision points and important elements using Flamingo -->
   classDef decision fill:#D86E89,stroke:#002A41,stroke-width:2px,color:#FFFFFF
   classDef critical fill:#D86E89,stroke:#002A41,stroke-width:2px,color:#FFFFFF
   classDef error fill:#D86E89,stroke:#002A41,stroke-width:3px,color:#FFFFFF
   classDef warning fill:#D86E8955,stroke:#D86E89,stroke-width:2px,color:#002A41
   classDef security fill:#D86E89,stroke:#002A41,stroke-width:3px,color:#FFFFFF,stroke-dasharray:2 1

   <!-- Data and storage using Deep Ocean -->
   classDef data fill:#002A41,stroke:#1E5E82,stroke-width:2px,color:#EEF9FD
   classDef storage fill:#002A41,stroke:#1E5E82,stroke-width:2px,color:#EEF9FD
   classDef database fill:#002A41,stroke:#1E5E82,stroke-width:2px,color:#EEF9FD
   classDef cache fill:#002A4166,stroke:#1E5E82,stroke-width:2px,color:#002A41

   <!-- State classes -->
   classDef start fill:#1E5E82,stroke:#002A41,stroke-width:3px,color:#EEF9FD
   classDef end fill:#002A41,stroke:#1E5E82,stroke-width:3px,color:#EEF9FD
   classDef success fill:#1E5E8233,stroke:#1E5E82,stroke-width:2px,color:#002A41
   classDef pending fill:#81CCEA55,stroke:#81CCEA,stroke-width:2px,color:#002A41,stroke-dasharray:5 5
   classDef active fill:#1E5E82,stroke:#002A41,stroke-width:2px,color:#EEF9FD
   classDef complete fill:#1E5E8255,stroke:#1E5E82,stroke-width:2px,color:#002A41
   classDef disabled fill:#EEF9FD,stroke:#81CCEA66,stroke-width:1px,color:#81CCEA
   classDef inactive fill:#EEF9FD,stroke:#81CCEA66,stroke-width:1px,color:#81CCEA

   <!-- Process types -->
   classDef manual fill:#EEF9FD,stroke:#D86E89,stroke-width:2px,color:#002A41
   classDef automated fill:#EEF9FD,stroke:#1E5E82,stroke-width:2px,color:#002A41
   classDef async fill:#81CCEA33,stroke:#81CCEA,stroke-width:2px,color:#002A41,stroke-dasharray:8 3
   classDef sync fill:#EEF9FD,stroke:#1E5E82,stroke-width:2px,color:#002A41

   <!-- System elements -->
   classDef system fill:#002A4133,stroke:#002A41,stroke-width:2px,color:#002A41
   classDef network fill:#81CCEA33,stroke:#1E5E82,stroke-width:2px,color:#002A41
   classDef queue fill:#81CCEA55,stroke:#1E5E82,stroke-width:2px,color:#002A41
   classDef monitoring fill:#EEF9FD,stroke:#81CCEA,stroke-width:2px,color:#002A41,stroke-dasharray:1 1

   <!-- Emphasis and highlights -->
   classDef highlight fill:#D86E8922,stroke:#D86E89,stroke-width:3px,color:#002A41
   classDef focus fill:#1E5E8244,stroke:#1E5E82,stroke-width:3px,color:#002A41
   classDef selected fill:#81CCEA44,stroke:#002A41,stroke-width:3px,color:#002A41

   <!-- Secondary elements -->
   classDef secondary fill:#EEF9FD,stroke:#81CCEA,stroke-width:2px,color:#002A41
   classDef note fill:#EEF9FD,stroke:#81CCEA,stroke-width:1px,color:#1E5E82
   classDef comment fill:#EEF9FD,stroke:#81CCEA,stroke-width:1px,color:#1E5E82,stroke-dasharray:3 3
   classDef optional fill:#EEF9FD,stroke:#81CCEA,stroke-width:1px,color:#002A41,stroke-dasharray:5 5

   <!-- Default styling -->
   classDef default fill:#EEF9FD,stroke:#1E5E82,stroke-width:2px,color:#002A41
</MERMAID_THEME>

<MERMAID_USAGE_GUIDE>
<!-- Core Process Elements -->
- Use 'process' for standard workflow steps
- Use 'subprocess' for nested or child processes
- Use 'components' for system components or modules

<!-- Interactive Elements -->
- Use 'inputOutput' for user interactions or system I/O
- Use 'user' for user/actor specific elements
- Use 'api' for external service connections
- Use 'external' for third-party systems or external dependencies

<!-- Decision and Alert Elements -->
- Use 'decision' for branching logic or critical choices
- Use 'critical' for important warnings or highlights
- Use 'error' for error states or failure conditions
- Use 'warning' for caution states (less severe than errors)
- Use 'security' for security-related checkpoints or processes

<!-- Data Elements -->
- Use 'data' for data objects or data flow
- Use 'storage' or 'database' for persistent storage
- Use 'cache' for temporary storage or caching layers

<!-- State Elements -->
- Use 'start' for process start points
- Use 'end' for process end points
- Use 'success' for successful completion states
- Use 'pending' for waiting or queued states
- Use 'active' for currently running processes
- Use 'complete' for finished processes
- Use 'disabled' or 'inactive' for unavailable elements

<!-- Process Types -->
- Use 'manual' for human/manual processes
- Use 'automated' for automatic processes
- Use 'async' for asynchronous operations
- Use 'sync' for synchronous operations

<!-- System Elements -->
- Use 'system' for internal system components
- Use 'network' for network-related elements
- Use 'queue' for message queues or buffers
- Use 'monitoring' for logging or monitoring components

<!-- Emphasis Elements -->
- Use 'highlight' for temporarily emphasised elements
- Use 'focus' for elements requiring attention
- Use 'selected' for user-selected items

<!-- Supporting Elements -->
- Use 'secondary' for supporting or auxiliary elements
- Use 'note' for annotations or explanatory text
- Use 'comment' for inline comments or documentation
- Use 'optional' for optional steps or components
</MERMAID_USAGE_GUIDE>

<TRANSPARENCY_NOTE>
Note: Some classes use transparency via hex alpha values (e.g., #81CCEA55)
- Last 2 digits represent opacity: FF=100%, CC=80%, 99=60%, 66=40%, 55=33%, 33=20%, 22=13%
- Used for: warning, cache, pending, disabled, system, network, queue, highlight states
- This creates visual hierarchy without introducing non-brand colours
</TRANSPARENCY_NOTE>

<MERMAID_RULES>
- Use <br> instead of \n for line breaks
- Apply standard colour theme unless specified otherwise
- Do NOT use round brackets ( ) within item labels or descriptions
- Mermaid does not support unordered lists within item labels
</MERMAID_RULES>

---

## PlantUML Styles

Apply these colour definitions at the start of PlantUML diagrams

<PLANTUML_RULES>
   !define OCEAN #1E5E82
   !define FLAMINGO #D86E89
   !define DEEP_OCEAN #002A41
   !define SKY_BLUE #81CCEA
   !define CLOUD #EEF9FD

   skinparam backgroundColor CLOUD
   skinparam defaultFontColor DEEP_OCEAN

   ' Activity Diagrams
   skinparam activity {
      BackgroundColor CLOUD
      BorderColor OCEAN
      FontColor DEEP_OCEAN
      StartColor OCEAN
      EndColor DEEP_OCEAN
      BarColor FLAMINGO
      DiamondBackgroundColor SKY_BLUE
      DiamondBorderColor OCEAN
   }

   ' Class Diagrams
   skinparam class {
      BackgroundColor CLOUD
      BorderColor OCEAN
      FontColor DEEP_OCEAN
      AttributeFontColor OCEAN
      StereotypeFontColor SKY_BLUE
      ArrowColor OCEAN
      HeaderBackgroundColor SKY_BLUE
   }

   ' Sequence Diagrams
   skinparam sequence {
      ParticipantBackgroundColor SKY_BLUE
      ParticipantBorderColor OCEAN
      ActorBackgroundColor CLOUD
      ActorBorderColor DEEP_OCEAN
      LifeLineBorderColor OCEAN
      ArrowColor OCEAN
      GroupBackgroundColor CLOUD
      GroupBorderColor SKY_BLUE
      NoteBackgroundColor CLOUD
      NoteBorderColor FLAMINGO
   }

   ' Component Diagrams
   skinparam component {
      BackgroundColor CLOUD
      BorderColor OCEAN
      FontColor DEEP_OCEAN
      InterfaceBackgroundColor SKY_BLUE
      InterfaceBorderColor DEEP_OCEAN
   }

   ' State Diagrams
   skinparam state {
      BackgroundColor CLOUD
      BorderColor OCEAN
      FontColor DEEP_OCEAN
      StartColor OCEAN
      EndColor DEEP_OCEAN
      AttributeFontColor OCEAN
   }

   ' Use Case Diagrams
   skinparam usecase {
      BackgroundColor CLOUD
      BorderColor OCEAN
      FontColor DEEP_OCEAN
      ActorBackgroundColor SKY_BLUE
      ActorBorderColor DEEP_OCEAN
   }

   ' Error/Warning States
   skinparam note {
      BackgroundColor<<warning>> FLAMINGO
      BorderColor<<warning>> DEEP_OCEAN
      FontColor<<warning>> CLOUD
   }
</PLANTUML_RULES>

---

## Frontend Component Styles

<CSS_VARIABLES>
   :root {
      /* Primary Colours */
      --brand-ocean: #1E5E82;
      --brand-flamingo: #D86E89;
      --brand-deep-ocean: #002A41;
      --brand-sky-blue: #81CCEA;
      --brand-cloud: #EEF9FD;

      /* Semantic Mappings */
      --colour-primary: var(--brand-ocean);
      --colour-primary-dark: var(--brand-deep-ocean);
      --colour-secondary: var(--brand-sky-blue);
      --colour-accent: var(--brand-flamingo);
      --colour-background: var(--brand-cloud);
      --colour-surface: #FFFFFF;

      /* Text Colours */
      --text-primary: var(--brand-deep-ocean);
      --text-secondary: var(--brand-ocean);
      --text-on-primary: var(--brand-cloud);
      --text-on-accent: #FFFFFF;

      /* State Colours */
      --colour-error: var(--brand-flamingo);
      --colour-warning: var(--brand-flamingo);
      --colour-success: var(--brand-ocean);
      --colour-info: var(--brand-sky-blue);

      /* Shadows and Overlays */
      --shadow-colour: rgba(0, 42, 65, 0.1);
      --overlay-light: rgba(238, 249, 253, 0.9);
      --overlay-dark: rgba(0, 42, 65, 0.8);
   }
</CSS_VARIABLES>

<COMPONENT_GUIDELINES>
   <BUTTONS>
   Primary:
      - Background: Ocean (#1E5E82)
      - Text: Cloud (#EEF9FD)
      - Hover: Deep Ocean (#002A41)
      - Border: none or Ocean

   Secondary:
      - Background: Sky Blue (#81CCEA)
      - Text: Deep Ocean (#002A41)
      - Hover: Ocean (#1E5E82) with Cloud text
      - Border: Ocean (#1E5E82)

   Accent/CTA:
      - Background: Flamingo (#D86E89)
      - Text: White (#FFFFFF)
      - Hover: Darker Flamingo (darken by 10%)
      - Border: none

   Ghost/Outline:
      - Background: transparent
      - Text: Ocean (#1E5E82)
      - Hover: Cloud (#EEF9FD) background
      - Border: Ocean (#1E5E82)
   </BUTTONS>

   <NAVIGATION>
   Header:
      - Background: Deep Ocean (#002A41)
      - Text: Cloud (#EEF9FD)
      - Active: Sky Blue (#81CCEA)
      - Hover: Ocean (#1E5E82) background

   Sidebar:
      - Background: Cloud (#EEF9FD)
      - Text: Deep Ocean (#002A41)
      - Active: Ocean (#1E5E82) with Cloud text
      - Hover: Sky Blue (#81CCEA) background
   </NAVIGATION>

   <FORMS>
   Input Fields:
      - Background: White (#FFFFFF)
      - Border: Sky Blue (#81CCEA)
      - Focus Border: Ocean (#1E5E82)
      - Text: Deep Ocean (#002A41)
      - Placeholder: Sky Blue (#81CCEA)
      - Error Border: Flamingo (#D86E89)

   Labels:
      - Colour: Ocean (#1E5E82)
      - Required Indicator: Flamingo (#D86E89)
   </FORMS>

   <!-- Cards and Surfaces -->
   <CARDS>
   Standard Card:
      - Background: White (#FFFFFF)
      - Border: Cloud (#EEF9FD)
      - Shadow: rgba(0, 42, 65, 0.1)

   Highlighted Card:
      - Background: Cloud (#EEF9FD)
      - Border: Sky Blue (#81CCEA)
      - Shadow: rgba(30, 94, 130, 0.15)
   </CARDS>

   <!-- Alerts and Messages -->
   <ALERTS>
   Error:
      - Background: Flamingo (#D86E89) at 10% opacity
      - Border: Flamingo (#D86E89)
      - Text: Deep Ocean (#002A41)
      - Icon: Flamingo (#D86E89)

   Warning:
      - Background: Flamingo (#D86E89) at 5% opacity
      - Border: Flamingo (#D86E89) at 50%
      - Text: Deep Ocean (#002A41)
      - Icon: Flamingo (#D86E89)

   Success:
      - Background: Ocean (#1E5E82) at 10% opacity
      - Border: Ocean (#1E5E82)
      - Text: Deep Ocean (#002A41)
      - Icon: Ocean (#1E5E82)

   Info:
      - Background: Sky Blue (#81CCEA) at 10% opacity
      - Border: Sky Blue (#81CCEA)
      - Text: Deep Ocean (#002A41)
      - Icon: Sky Blue (#81CCEA)
   </ALERTS>

   <!-- Data Visualisation -->
   <CHARTS>
      Primary Series: Ocean (#1E5E82)
      Secondary Series: Sky Blue (#81CCEA)
      Tertiary Series: Deep Ocean (#002A41)
      Highlight/Accent: Flamingo (#D86E89)
      Background: Cloud (#EEF9FD)
      Grid Lines: Sky Blue (#81CCEA) at 20% opacity
      Text: Deep Ocean (#002A41)
   </CHARTS>

</COMPONENT_GUIDELINES>

<!-- Tailwind Configuration -->
<TAILWIND_CONFIG>
   module.exports = {
      theme: {
         extend: {
         colours: {
            'brand': {
               'ocean': '#1E5E82',
               'flamingo': '#D86E89',
               'deep-ocean': '#002A41',
               'sky-blue': '#81CCEA',
               'cloud': '#EEF9FD',
            }
         }
         }
      }
   }
</TAILWIND_CONFIG>

---

## Fonts & Typography

<TYPOGRAPHY>
  - Where applicable use the 'Inter' typeface is utilised for headlines, subheadings, and body copy.
  - Favour bundling the font for offline use over relying on CDNs.
  <INTER_CDN note="If bundling is not possible, you may use this CDN">
    <!-- HTML in your document's head -->
    <link rel="preconnect" href="https://rsms.me/">
    <link rel="stylesheet" href="https://rsms.me/inter/inter.css">

    /* CSS */
    :root {
      font-family: Inter, sans-serif;
      font-feature-settings: 'liga' 1, 'calt' 1; /* fix for Chrome */
    }
    @supports (font-variation-settings: normal) {
      :root { font-family: InterVariable, sans-serif; }
    }
  </INTER_CDN>
</TYPOGRAPHY>

---

This information should help you maintain visual consistency with the Mantel brand across diagrams and frontend components.

Overview

This skill provides concise, actionable guidelines for applying Mantel brand styles to diagrams and frontend components. It standardises colour usage, component rules, and diagram class mappings so visuals stay consistent with Mantel identity. Use it to produce Mermaid, PlantUML, and CSS-aligned outputs that match brand semantics.

How this skill works

The skill inspects requested visuals and returns style-ready snippets and recommendations using Mantel colours and semantic mappings. It maps UI elements and diagram classes to palette colours, suggests hover/opacity rules, and enforces mermaid and PlantUML constraints. It outputs clear class names, CSS variables, and usage notes for immediate copy-paste into diagrams or frontend code.

When to use it

  • Creating architecture or flow diagrams that must follow Mantel branding
  • Designing frontend components, buttons, forms, navigation, cards or alerts
  • Preparing Mermaid or PlantUML diagrams for documentation or presentations
  • Reviewing visuals for consistent colour semantics and accessibility
  • Converting existing visuals to Mantel's palette and interaction rules

Best practices

  • Follow the colour hierarchy: Ocean primary, Sky Blue secondary, Flamingo for accents, Deep Ocean for text, Cloud for backgrounds
  • Use tints and alpha values of brand colours instead of introducing new colours
  • Keep semantic meanings consistent across projects (e.g., Flamingo = warnings/CTAs)
  • Use defined Mermaid class names and PlantUML variables to avoid ad-hoc colours
  • Darken or lighten hover states by 10–15% and use rgba hex alpha values for controlled transparency
  • Avoid round brackets in Mermaid labels and use <br> for line breaks where needed

Example use cases

  • Generate Mermaid classDef blocks for a service diagram using Mantel classes like process, api, data
  • Provide a PlantUML header with colour defines and skinparam settings for activity and class diagrams
  • Produce :root CSS variables and button/form styles for a frontend component library
  • Audit a slide deck or docs diagrams and supply corrected class names and colour hex values
  • Create a quick style guide excerpt for engineers that maps UI states to brand colours

FAQ

Can I add non-brand colours if readability requires it?

Prefer tints/shades of brand colours first. Only add new colours if accessibility requires contrast that cannot be achieved with brand variants, and document the exception.

How should I handle transparent states and opacity?

Use the provided hex alpha values or rgba equivalents. Follow the transparency note mapping (FF, CC, 99, 66, 55, 33, 22) to keep a consistent visual hierarchy.