Svg Illustrations
by NeverSight
Expert knowledge for creating hand-drawn style SVG illustrations. Activate when creating custom diagrams, working with illustration components, or needing consistent visual design for lessons.
Skill Details
Repository Files
6 files in this skill directory
name: svg-illustrations description: Expert knowledge for creating hand-drawn style SVG illustrations. Activate when creating custom diagrams, working with illustration components, or needing consistent visual design for lessons. triggers:
- creating illustrations
- SVG diagrams
- visual diagrams
- hand-drawn style
- IllustrationLinearFlow
- IllustrationChecklist
- IllustrationTeamComposition
- IllustrationComparisonMap
- IllustrationPyramid
- pyramid diagram
- testing pyramid
- hierarchy diagram
SVG Illustration System
This skill provides guidance for creating consistent, high-quality hand-drawn style SVG illustrations for the DevOps LMS.
Overview
The illustration system uses a hybrid approach:
- Reusable Vue Components - For common diagram patterns
- Design System Composable - Shared constants and utilities
- Custom SVG - Only when no component fits (rare)
Available Components
1. IllustrationLinearFlow
Purpose: Sequential step-by-step processes
Best For:
- CI/CD Pipelines
- SDLC Phases
- Scrum Framework Flow
- Any A ā B ā C ā D process
Props:
interface Props {
steps: Array<{
label: string // Main text
sublabel?: string // Secondary text
icon?: string // Emoji icon
color: string // Tailwind color name
}>
direction?: 'horizontal' | 'vertical' // Auto-determined by step count (optional)
showFeedbackLoop?: boolean // Show return arrow
feedbackLabel?: string // Label for feedback
size?: 'sm' | 'md' | 'lg' | 'xl' | '2xl' | '3xl' | 'full'
}
Auto-Direction (No need to specify direction):
| Steps | Layout | Behavior |
|---|---|---|
| ā¤5 | Horizontal | Side-by-side flow, full width |
| 6-10 | Vertical | Stacked flow, 280px width |
| >10 | Vertical + Scroll | 600px max-height with scrolling |
You can still override with direction: horizontal or direction: vertical if needed.
MDC Usage:
::illustration-linear-flow
---
steps:
- label: Plan
sublabel: Sprint Planning
icon: š
color: violet
- label: Build
sublabel: Development
icon: šØ
color: blue
- label: Test
sublabel: QA
icon: ā
color: emerald
- label: Deploy
sublabel: Release
icon: š
color: amber
showFeedbackLoop: true
feedbackLabel: Continuous Improvement
---
::
2. IllustrationChecklist
Purpose: Checkbox-style lists with hand-drawn aesthetic
Best For:
- Definition of Done
- Prerequisites
- Acceptance Criteria
- Best Practices lists
- Requirements checklists
Props:
interface Props {
title: string // Checklist title
items: Array<string | { // Simple string or object
text: string
icon?: string
}>
note?: string // Optional footnote with š”
color?: string // Default: emerald
size?: 'sm' | 'md' | 'lg' | 'xl' | '2xl' | '3xl' | 'full' // Default: 2xl
}
MDC Usage:
::illustration-checklist
---
title: Definition of Done
items:
- text: Code reviewed and approved
icon: š
- text: Unit tests passing
icon: ā
- text: Documentation updated
icon: š
- text: Deployed to staging
icon: š
note: All items must be checked before marking complete
color: emerald
---
::
3. IllustrationTeamComposition
Purpose: Team roles in a container with responsibilities
Best For:
- Scrum Team structure
- DevOps Team roles
- Any team/role diagram
- Organizational charts
Props:
interface Props {
title: string // Team title
subtitle?: string // Optional subtitle
roles: Array<{
name: string // Role name
owns: string // What they own
icon: string // Emoji icon
color: string // Tailwind color
responsibilities: string[] // List of responsibilities
}>
footnote?: string // Optional footnote
size?: 'sm' | 'md' | 'lg' | 'xl' | '2xl' | '3xl' | 'full' // Default: full
}
MDC Usage:
::illustration-team-composition
---
title: Scrum Team
subtitle: Self-organizing, cross-functional
roles:
- name: Product Owner
owns: Product Backlog
icon: šÆ
color: violet
responsibilities:
- Maximizes value
- Manages backlog
- Stakeholder liaison
- name: Scrum Master
owns: Process
icon: š”ļø
color: blue
responsibilities:
- Removes impediments
- Facilitates events
- Coaches team
- name: Developers
owns: Sprint Work
icon: š„
color: emerald
responsibilities:
- Build increment
- Self-organize
- Cross-functional
footnote: Typical team size: 5-9 people
---
::
4. IllustrationComparisonMap
Purpose: Side-by-side concept mapping with connectors
Best For:
- Scrum ā DevOps mapping
- Traditional vs Modern approaches
- Before/After comparisons
- Any concept mapping
Props:
interface Props {
leftTitle: string // Left column title
rightTitle: string // Right column title
leftColor?: string // Default: violet
rightColor?: string // Default: cyan
connections: Array<{
left: string // Left item text
right: string // Right item text
icon: string // Connector emoji
}>
footnote?: string // Optional footnote
size?: 'sm' | 'md' | 'lg' | 'xl' | '2xl' | '3xl' | 'full' // Default: full
}
MDC Usage:
::illustration-comparison-map
---
leftTitle: Scrum
rightTitle: DevOps
leftColor: violet
rightColor: cyan
connections:
- left: Sprint
right: Pipeline
icon: š
- left: Backlog
right: Kanban Board
icon: š
- left: Retrospective
right: Post-mortem
icon: š
footnote: Both emphasize continuous improvement
---
::
5. IllustrationPyramid
Purpose: Pyramid/hierarchy diagrams where size indicates quantity or importance
Best For:
- Testing Pyramid (Unit ā Integration ā E2E)
- Priority hierarchies
- Layered architectures
- Any bottom-up structure where base is largest
Props:
interface Props {
layers: Array<{
label: string // Layer name (displayed inside)
description?: string // Text shown to the right
icon?: string // Emoji shown to the left
color: string // Tailwind color name
}> // Order: top (smallest) to bottom (largest)
title?: string // Optional title above pyramid
footnote?: string // Optional centered footnote below
size?: 'sm' | 'md' | 'lg' | 'xl' | '2xl' | '3xl' | 'full' // Default: xl
}
MDC Usage:
::illustration-pyramid
---
layers:
- label: E2E Tests
description: Few - slow, fragile
icon: š
color: rose
- label: Integration
description: Some - moderate speed
icon: š
color: amber
- label: Unit Tests
description: Many - fast, cheap
icon: š§©
color: emerald
footnote: More tests at the bottom, fewer at the top
size: xl
---
::
Visual Structure:
/\
/ \ ā Top layer (few/small) - rose
/____\
/ \ ā Middle layer (some/medium) - amber
/________\
/ \ ā Bottom layer (many/large) - emerald
/______________\
Size Options
All illustration components support a size prop to control the maximum width:
| Size | Max Width | Best For |
|---|---|---|
sm |
384px | Vertical flows, simple diagrams |
md |
448px | Compact horizontal flows |
lg |
512px | Medium checklists |
xl |
576px | Standard illustrations |
2xl |
672px | Checklists with longer text |
3xl |
768px | Wide comparisons |
full |
100% | Full-width illustrations (default for most) |
Default Sizes by Component
| Component | Default Size | Reasoning |
|---|---|---|
IllustrationLinearFlow |
Auto-sized | Direction and size determined by step count |
IllustrationChecklist |
2xl |
Single-column lists don't need full width |
IllustrationTeamComposition |
full |
Team cards spread horizontally |
IllustrationComparisonMap |
full |
Side-by-side comparisons need space |
IllustrationPyramid |
xl |
Pyramid with side descriptions needs moderate width |
IllustrationLinearFlow Auto-Sizing
The component automatically determines layout and size:
- ā¤5 steps: Horizontal layout, full width
- 6-10 steps: Vertical layout, 280px width
- >10 steps: Vertical layout with 600px max-height scrolling
When to Override Defaults
- Override
directiononly when you specifically need horizontal for >5 items or vertical for ā¤5 items - Use
size: mdorsize: lgwhen you want a more compact look - Defaults work well for most cases - only override when needed
Design System Constants
Located in app/composables/useIllustrationDesign.ts
Color Palette
| Color Name | Main Hex | Light Hex | Text Hex | Use For |
|---|---|---|---|---|
violet |
#8b5cf6 | #a78bfa | #c4b5fd | Planning, Strategy, Product |
blue |
#3b82f6 | #60a5fa | #93c5fd | Development, Build, Process |
emerald |
#10b981 | #34d399 | #6ee7b7 | Testing, Success, Done |
amber |
#f59e0b | #fbbf24 | #fcd34d | Warnings, Important, Deploy |
rose |
#f43f5e | #fb7185 | #fda4af | Critical, Errors, Blockers |
cyan |
#06b6d4 | #22d3ee | #67e8f9 | Information, Links, Ops |
gray |
#6b7280 | #9ca3af | #d1d5db | Neutral, Disabled, Background |
Spacing Constants
SPACING = {
boxPadding: 20, // Inside boxes
itemGap: 35, // Between list items
arrowLength: 50, // Arrow length
containerPadding: 30, // Container padding
boxWidth: 140, // Standard box
boxHeight: 70, // Standard box
largeBoxWidth: 160, // Role cards
largeBoxHeight: 200, // Role cards
borderRadius: 12, // Rounded corners
iconRadius: 25 // Icon circles
}
Stroke Styles
STROKES = {
boxDash: '8,4', // Box stroke pattern
arrowDash: '4,3', // Arrow stroke pattern
containerDash: '10,5', // Container stroke pattern
boxStrokeWidth: 2.5, // Box stroke width
arrowStrokeWidth: 2, // Arrow stroke width
containerStrokeWidth: 2 // Container stroke width
}
Typography
TYPOGRAPHY = {
fontFamily: "'Segoe UI', system-ui, sans-serif",
titleSize: 14, // Titles/headers
labelSize: 12, // Main labels
sublabelSize: 10, // Secondary text
smallSize: 9, // Notes/captions
iconSize: 20 // Emoji size
}
When to Use Each Component
Decision Tree
What type of diagram do you need?
ā
āāā Sequential process? (A ā B ā C)
ā āāā Use: IllustrationLinearFlow
ā
āāā Checklist/list with checkboxes?
ā āāā Use: IllustrationChecklist
ā
āāā Team/roles with responsibilities?
ā āāā Use: IllustrationTeamComposition
ā
āāā Side-by-side comparison?
ā āāā Use: IllustrationComparisonMap
ā
āāā Pyramid/hierarchy where size shows quantity?
ā āāā Use: IllustrationPyramid
ā
āāā None of the above?
āāā Create custom SVG (see below)
Creating Custom SVG (Rare Cases)
Only create custom SVG when no component fits. Follow these rules:
1. Use Design System Constants
<script setup>
import {
COLORS,
SPACING,
STROKES,
OPACITY,
TYPOGRAPHY,
getColor,
getHandDrawnRotation
} from '~/composables/useIllustrationDesign'
</script>
2. Hand-Drawn Style Rules
- Dashed strokes: Use
stroke-dasharraywith design system patterns - Slight rotation: Apply
getHandDrawnRotation(index)for variation - Semi-transparent fills: Use
fill-opacityfrom OPACITY constants - Rounded corners: Use
rxattribute with SPACING.borderRadius
3. Template Structure
<template>
<svg
:viewBox="`0 0 ${width} ${height}`"
class="w-full h-auto"
role="img"
aria-label="Descriptive label"
>
<!-- Elements here -->
</svg>
</template>
4. Accessibility
- Always include
role="img"andaria-label - Use descriptive labels for screen readers
- Ensure sufficient color contrast
Integration with Lessons
In Markdown Files (MDC)
Components are automatically available in markdown via MDC syntax:
Here's how the Scrum framework flows:
::illustration-linear-flow
---
steps:
- label: Sprint Planning
color: violet
- label: Daily Scrum
color: blue
- label: Sprint Review
color: emerald
- label: Retrospective
color: amber
---
::
As you can see, Scrum is an iterative process...
In Vue Pages
Import directly from the components directory:
<script setup>
import { IllustrationLinearFlow } from '~/components/illustrations'
</script>
<template>
<IllustrationLinearFlow :steps="mySteps" />
</template>
Common Patterns by Topic
SDLC Topics
- Flow diagrams: IllustrationLinearFlow
- Phase comparison: IllustrationComparisonMap
- Methodology checklist: IllustrationChecklist
DevOps Topics
- Pipeline visualization: IllustrationLinearFlow (horizontal)
- Tool comparison: IllustrationComparisonMap
- Team structure: IllustrationTeamComposition
Agile/Scrum Topics
- Sprint cycle: IllustrationLinearFlow (with feedback loop)
- Team roles: IllustrationTeamComposition
- Definition of Done: IllustrationChecklist
- Scrum vs Kanban: IllustrationComparisonMap
Container Topics
- Deployment flow: IllustrationLinearFlow
- Architecture comparison: IllustrationComparisonMap
File Locations
app/
āāā components/content/ # MDC components (auto-registered for markdown)
ā āāā IllustrationLinearFlow.vue
ā āāā IllustrationChecklist.vue
ā āāā IllustrationTeamComposition.vue
ā āāā IllustrationComparisonMap.vue
ā āāā IllustrationPyramid.vue
āāā composables/
āāā useIllustrationDesign.ts
Important: Components must be in components/content/ for MDC syntax to work in markdown files.
Quality Checklist
Before completing any illustration:
- Uses appropriate component (or justified custom SVG)
- Colors match topic semantics (e.g., emerald for success)
- Text is readable and not overlapping
- Has accessible aria-label
- Renders correctly in dark mode
- Responsive (uses w-full h-auto)
- Integrates naturally with lesson content
Future Components (Planned)
When these patterns are needed frequently, new components will be added:
- IllustrationTimeline - Events on a timeline
- IllustrationCycle - Circular/cyclic processes
- IllustrationHierarchy - Tree structures (parent-child relationships)
- IllustrationPillars - Supporting pillars diagram
Note: IllustrationPyramid was added to support testing pyramids and layered hierarchies.
Related Skills
Team Composition Analysis
This skill should be used when the user asks to "plan team structure", "determine hiring needs", "design org chart", "calculate compensation", "plan equity allocation", or requests organizational design and headcount planning for a startup.
Kpi Dashboard Design
Design effective KPI dashboards with metrics selection, visualization best practices, and real-time monitoring patterns. Use when building business dashboards, selecting metrics, or designing data visualization layouts.
Sql Optimization Patterns
Master SQL query optimization, indexing strategies, and EXPLAIN analysis to dramatically improve database performance and eliminate slow queries. Use when debugging slow queries, designing database schemas, or optimizing application performance.
Senior Data Scientist
World-class data science skill for statistical modeling, experimentation, causal inference, and advanced analytics. Expertise in Python (NumPy, Pandas, Scikit-learn), R, SQL, statistical methods, A/B testing, time series, and business intelligence. Includes experiment design, feature engineering, model evaluation, and stakeholder communication. Use when designing experiments, building predictive models, performing causal analysis, or driving data-driven decisions.
Mermaid Diagrams
Comprehensive guide for creating software diagrams using Mermaid syntax. Use when users need to create, visualize, or document software through diagrams including class diagrams (domain modeling, object-oriented design), sequence diagrams (application flows, API interactions, code execution), flowcharts (processes, algorithms, user journeys), entity relationship diagrams (database schemas), C4 architecture diagrams (system context, containers, components), state diagrams, git graphs, pie charts,
Ux Researcher Designer
UX research and design toolkit for Senior UX Designer/Researcher including data-driven persona generation, journey mapping, usability testing frameworks, and research synthesis. Use for user research, persona creation, journey mapping, and design validation.
Supabase Postgres Best Practices
Postgres performance optimization and best practices from Supabase. Use this skill when writing, reviewing, or optimizing Postgres queries, schema designs, or database configurations.
Kpi Dashboard Design
Design effective KPI dashboards with metrics selection, visualization best practices, and real-time monitoring patterns. Use when building business dashboards, selecting metrics, or designing data visualization layouts.
Sql Optimization Patterns
Master SQL query optimization, indexing strategies, and EXPLAIN analysis to dramatically improve database performance and eliminate slow queries. Use when debugging slow queries, designing database schemas, or optimizing application performance.
Dashboard Design
USE THIS SKILL FIRST when user wants to create and design a dashboard, ESPECIALLY Vizro dashboards. This skill enforces a 3-step workflow (requirements, layout, visualization) that must be followed before implementation. For implementation and testing, use the dashboard-build skill after completing Steps 1-3.
