Orchestrating Multi Skill Workflows

Introduction

Welcome to Unit 4 of Skills — Extending Claude's Capabilities! Throughout this course, we explored the Skills system's fundamentals, created practical Skills from scratch, and mastered advanced design patterns. Now for the final piece: designing Skills that work together.

In this lesson, we will work through a realistic scenario: analyzing sales_data.csv, generating publication-quality charts, and producing a professional PDF report. Along the way, you will discover how to design Skills with compatible inputs and outputs, avoid conflicts when multiple Skills might apply, and know when workflows need advanced techniques.

Let's explore the power of multi-skill workflows!

Understanding Multi-Skill Workflows

In previous lessons, we saw individual Skills solve focused problems: extracting PDF tables, generating visualizations, or creating API tests. Real-world tasks, however, often require multiple specialized capabilities working together:

  • Analyze data, then visualize results, then generate a report.
  • Read documentation, extract patterns, then generate code following those patterns.
  • Test an API, analyze failures, then suggest fixes.

When tackling complex workflows, you might use multiple Skills. Each Skill handles its specialized part. The key is designing Skills that complement each other - producing outputs compatible with what other Skills expect as inputs.

A Realistic Workflow Scenario

Let's work through a realistic business scenario where we:

  1. Analyze trends in sales_data.csv.
  2. Create publication-quality visualizations.
  3. Generate a professional PDF report with findings.

This workflow spans multiple domains: data analysis, visualization, and document generation. Let's see how different capabilities work together.

Working Through the Workflow

We make our request:

> I need to analyze sales_data.csv, create publication-quality charts, and generate a PDF report with findings

Phase 1: Data Analysis

Claude starts by analyzing the data using general capabilities (we're assuming the csv-analyzer skill from Unit 2 doesn't exist in this scenario - though it could certainly be used if available):

● Read(sales_data.csv)
  ⎿ Read 1000 lines from sales_data.csv

● Key findings:
  - Revenue trend: +15% YoY
  - Top region: North (40% of sales)
  - Peak month: December
  - Average order: $127.50

Basic data analysis can be handled with general knowledge, but a dedicated skill like the csv-analyzer from Unit 2 would provide more structured, consistent analysis.

Phase 2: Visualization

For publication-quality charts, Claude automatically selects the sci-viz skill:

[Skill selected: sci-viz]

● Creating publication-quality visualization...

The skill ensures charts follow publication standards: 300 DPI resolution, colorblind-safe palettes, proper labels, vector formats. Here's the chart code it produces:

import matplotlib.pyplot as plt
import pandas as pd

plt.rcParams['figure.dpi'] = 300
plt.rcParams['font.size'] = 10

df = pd.read_csv('sales_data.csv')

# Revenue trend chart
fig, ax = plt.subplots(figsize=(6, 4))
monthly = df.groupby('month')['revenue'].sum()
ax.plot(monthly.index, monthly.values, marker='o')
ax.set_xlabel('Month')
ax.set_ylabel('Revenue (USD)')
ax.set_title('Monthly Revenue Trend')
ax.grid(True, alpha=0.3, color='gray')
plt.tight_layout()
plt.savefig('revenue_trend.png', dpi=300, bbox_inches='tight')
plt.savefig('revenue_trend.pdf', bbox_inches='tight')

Notice the publication standards: high resolution, proper sizing, clear labels, both raster and vector formats.

Phase 3: PDF Report

Finally, Claude generates the report using general knowledge:

from reportlab.lib.pagesizes import letter
from reportlab.platypus import SimpleDocTemplate, Paragraph, Spacer, Image
from reportlab.lib.styles import getSampleStyleSheet
from reportlab.lib.units import inch

doc = SimpleDocTemplate("sales_report.pdf", pagesize=letter)
story = []
styles = getSampleStyleSheet()

# Title and summary
story.append(Paragraph("Sales Analysis Report", styles['Title']))
story.append(Spacer(1, 0.3*inch))
story.append(Paragraph("<b>Executive Summary</b><br/>...", styles['Normal']))

# Embed chart
story.append(Paragraph("<b>Revenue Trend</b>", styles['Heading2']))
story.append(Image('revenue_trend.png', width=5*inch, height=3.33*inch))

# Recommendations
story.append(Paragraph("<b>Recommendations</b><br/>...", styles['Normal']))

doc.build(story)

The workflow completes successfully:

● Complete workflow finished!
  
  Files created:
  - revenue_trend.png/pdf (300 DPI, publication-ready)
  - sales_report.pdf (3 pages, professional formatting)
Sign up

Join the 1M+ learners on CodeSignal

Be a part of our community of 1M+ users who develop and demonstrate their skills on CodeSignal