PaddySpeaks · AI for Everyone · Part 2 of 2

Skills in Action

Four real people. Four real tasks. Step-by-step breakdowns showing exactly which files Claude opens, which code it runs, and what you get at the end.

March 2026·16 min read·paddyspeaks.com

In Part 1, we opened up the Skill files and explained the mechanics — the SKILL.md, the scripts, the three layers. Now let's watch them work. Four people, four tasks, zero ambiguity about what's happening at each step.

Each walkthrough shows: what you type, which Skill file activates, what code runs inside Claude's private workspace, and what file appears in your conversation. We're pulling the curtain all the way back.

I
Scenario 01

The Teacher Making a Grading Rubric

👩‍🏫
Maya — 8th Grade Science Teacher
Needs a formatted rubric she can print and share with parents
What Maya Types

"Create a grading rubric for an 8th grade science fair project as a Word document. Categories: hypothesis quality, experimental design, data analysis, presentation, and creativity. Four levels: Exceeds (4), Meets (3), Approaching (2), Beginning (1). Include a total score row."

What happens behind the scenes

Step 1Skill Match — "Word document" triggers the docx Skill

Claude scans every installed Skill's description. The docx Skill's description says: "Triggers include: any mention of 'Word doc', 'word document', '.docx', or requests to produce professional documents." Maya said "Word document" — match found.

docx / SKILL.md — frontmatter (what Claude reads first)
name: docx
description: "Use this skill whenever the user wants
  to create, read, edit, or manipulate Word documents
  (.docx files). Triggers include: any mention of
  'Word doc', 'word document', '.docx'..."
Step 2Claude reads the full docx instructions

Now Claude loads the complete SKILL.md body — 590 lines of instructions on how to create Word documents. It learns to use the docx-js JavaScript library, set US Letter page size, and create tables with proper formatting.

docx / SKILL.md — body excerpt (the recipe)
## Creating New Documents
Generate .docx files with JavaScript, then validate.

const { Document, Packer, Paragraph, Table,
  TableRow, TableCell, TextRun, AlignmentType,
  WidthType, HeadingLevel } = require('docx');

// CRITICAL: Always set US Letter, not A4
page: {
  size: { width: 12240, height: 15840 }
  // 8.5 × 11 inches in DXA units
}

Why this matters for Maya: Without these instructions, Claude might create a table as plain text or use A4 paper size (which would look slightly off when printed in the US). The Skill ensures the rubric uses correct page dimensions and proper Word table formatting.

Step 3Claude writes and runs JavaScript code

In its private workspace, Claude writes a JavaScript file that creates a Word document with a 5-row × 5-column table (5 categories × 4 scoring levels plus headers), formatted headers, a total score row, and Maya's school info.

Generated code — what Claude writes and runs
const doc = new Document({
  styles: { default: { document: {
    run: { font: "Arial", size: 24 }
  }}},
  sections: [{
    properties: { page: { size: {
      width: 12240, height: 15840 // US Letter
    }}},
    children: [
      new Paragraph({
        heading: HeadingLevel.HEADING_1,
        children: [new TextRun("Science Fair Project Rubric")]
      }),
      createRubricTable(categories, levels),
      // ... total score row, teacher signature line
    ]
  }]
});

Packer.toBuffer(doc).then(buf =>
  fs.writeFileSync("rubric.docx", buf)
);
Step 4Claude validates the file

After creating the file, Claude runs the validation script from the Skill's scripts/ folder. This checks that the .docx is properly formed — valid XML, correct structure, no corruption.

scripts/office/validate.py — quality check
# Claude runs this automatically after every .docx
python scripts/office/validate.py rubric.docx

✓ Valid .docx — 1 section, 1 table, 7 paragraphs
✓ No XML errors
✓ File size: 12KB
Step 5Maya gets her rubric
What Appears in Chat
📄Science_Fair_Rubric.docx12 KB
A properly formatted Word document with a 5×5 rubric table, category descriptions at each level, a total score row, and space for teacher comments. Opens in Word, Google Docs, or LibreOffice. Print-ready on US Letter paper.

What if Maya had said it differently?

If Maya typed "give me a rubric for the science fair" without saying "Word document," Claude would produce the rubric as formatted text in the conversation — useful, but not a downloadable file. The word "Word document" (or "docx," "save as a file") is what triggers the Skill. The content of the answer is the same; the delivery format changes.

II
Scenario 02

The Lawyer Analyzing a Contract

⚖️
David — Real Estate Attorney
Needs to extract and compare terms from a 40-page commercial lease
What David Types (with a PDF attached)

"Read this commercial lease agreement and extract: monthly rent, annual escalation rate, security deposit, early termination clause, and tenant improvement allowance. Summarize each term in a table."

What happens behind the scenes

Step 1Two Skills chain together — File Reading → PDF Reading

David uploaded a PDF. The File Reading Skill activates first — it's the traffic cop. It looks at the file extension (.pdf) and checks its dispatch table to decide the right approach:

file-reading / SKILL.md — dispatch table
Extension    → First Move            → Hand off to
─────────────────────────────────────────────────────
.pdf         → Content inventory     → pdf-reading/SKILL.md
.docx        → pandoc to markdown    → docx/SKILL.md
.xlsx        → openpyxl sheet names  → xlsx/SKILL.md

The traffic cop routes to the specialist. File Reading doesn't read the PDF itself — it identifies the type and hands off to the PDF Reading Skill, which knows the specialized techniques for PDF extraction.

Step 2PDF Reading Skill runs a content inventory

Before reading the actual content, Claude diagnoses what kind of PDF this is. Is it a digital document with selectable text? A scanned image? Does it have tables, forms, or embedded files?

pdf-reading / SKILL.md — diagnostic commands
# Step 1: Page count and metadata
pdfinfo lease-agreement.pdf
→ Pages: 40  |  PDF version: 1.7  |  Encrypted: no

# Step 2: Is it text or a scanned image?
pdftotext -f 1 -l 1 lease-agreement.pdf - | head -20
→ "COMMERCIAL LEASE AGREEMENT..."
   ✓ Text PDF — good, direct extraction will work

# If the text check returned nothing,
# Claude would switch to OCR (image-to-text)
Step 3Claude extracts text from all 40 pages

The Skill uses Python's pypdf library to extract text from every page, preserving paragraph structure:

Code Claude runs (from pdf-reading instructions)
from pypdf import PdfReader

reader = PdfReader("lease-agreement.pdf")
full_text = ""
for page in reader.pages:
    full_text += page.extract_text()

# Claude now has all 40 pages of text
# and can search for the specific terms
# David asked about
Step 4Claude reads, understands, and extracts the terms

This is where Claude's intelligence (not the Skill) does the work. Claude reads the full lease text, identifies the relevant clauses, understands the legal language, and pulls out each term David asked about. The Skill handled the mechanics of extraction; Claude handles the understanding.

Key distinction: Skills handle the how (reading PDFs, building files). Claude's intelligence handles the what (understanding legal language, identifying relevant clauses, summarizing correctly). They work together.

Step 5David gets a structured summary
What Appears in Chat
A clear, formatted table directly in the conversation:

Monthly Rent: $18,500/month (Section 4.1, Page 8)
Annual Escalation: 3% per year (Section 4.3, Page 9)
Security Deposit: $55,500 — 3 months' rent (Section 5.1, Page 12)
Early Termination: Permitted after Month 36 with 6 months' notice and 4 months' rent penalty (Section 22.4, Page 31)
TI Allowance: $45/sq ft up to $67,500, must submit plans within 90 days (Section 8.2, Page 16)

Notice Claude cites the exact section numbers and page numbers. This is possible because the PDF Reading Skill preserved the page structure during extraction — Claude knows which text came from which page.

III
Scenario 03

The Bakery Owner Building a Pitch Deck

🧁
Priya — Owner of "Flour & Fold" Bakery
Meeting a potential investor next week, needs a professional deck
What Priya Types

"Create a 10-slide investor pitch deck for my bakery 'Flour & Fold.' We're a South Indian-inspired bakery in Austin, TX. Revenue is $340K this year, up 40% from last year. We want to open a second location. Include slides for: title, our story, the problem we solve, our menu, traction/financials, team, market opportunity, the ask ($250K for location 2), use of funds, and closing."

What happens behind the scenes

Step 1Skill Match — "pitch deck" triggers the pptx Skill

The pptx Skill description says: "Trigger whenever the user mentions 'deck,' 'slides,' 'presentation.'" Priya said "pitch deck" — match.

Step 2Claude reads pptx/SKILL.md → then pptxgenjs.md

The main SKILL.md is short — it's a router. For "create from scratch" (no template), it says: "Read pptxgenjs.md for full details." Claude loads this second file — 420 lines covering slide layouts, text formatting, charts, tables, and shapes.

pptx / SKILL.md — routing table
| Task                  | Guide                  |
|-----------------------|------------------------|
| Read/analyze content  | markitdown + thumbnail |
| Edit from template    | Read editing.md       |
| Create from scratch   | Read pptxgenjs.md     |

Two-level loading in action. The main SKILL.md is ~230 lines (the menu + router). The reference file pptxgenjs.md is ~420 lines (the detailed recipe). Claude only loads the reference file because Priya needs a new deck from scratch. If she was editing an existing file, Claude would load editing.md instead.

Step 3Claude writes JavaScript to build 10 slides

Using the PptxGenJS library it learned from the Skill, Claude generates code for each slide with proper layouts, text positioning, colors, and a chart for the financials:

Generated code — Slide 5 (Traction/Financials)
let slide5 = pres.addSlide();
slide5.addText("Traction & Financials", {
  x: 0.5, y: 0.3, w: 9, h: 0.8,
  fontSize: 28, fontFace: "Arial",
  bold: true, color: "2D2D2D"
});

// Revenue chart — bar chart with 3 years
slide5.addChart(pres.charts.BAR, [{
  name: "Revenue",
  labels: ["2024", "2025", "2026 (proj)"],
  values: [175000, 243000, 340000]
}], {
  x: 0.5, y: 1.5, w: 4.5, h: 3.5,
  showValue: true,
  catAxisOrientation: "minMax"
});

// Key metrics text
slide5.addText([
  { text: "40% YoY Growth", options: {
    bold: true, fontSize: 22, breakLine: true
  }},
  { text: "$340K run rate", options: {
    fontSize: 18, breakLine: true
  }},
  { text: "2,100+ monthly customers", options: {
    fontSize: 18
  }}
], { x: 5.5, y: 1.8, w: 4, h: 3 });
Step 4Priya gets a ready-to-present deck
What Appears in Chat
📊Flour_and_Fold_Pitch_Deck.pptx84 KB
10 professionally formatted slides in 16:9 widescreen. Includes a real bar chart on the financials slide, consistent typography and color scheme, proper slide transitions, and speaker notes on key slides. Opens in PowerPoint, Keynote, or Google Slides. Priya can add photos and her logo, then present.
IV
Scenario 04

The Freelancer Designing a Portfolio Site

💻
Alex — Freelance Photographer
Needs a portfolio website that doesn't look like a template
What Alex Types

"Build me a portfolio landing page for my photography business. I shoot weddings and landscapes. I want it to feel like a gallery — lots of white space, elegant typography, no clutter. Think editorial magazine layout. Dark text on light background."

What happens behind the scenes

Step 1Skill Match — "landing page" triggers Frontend Design

The Frontend Design Skill activates. Unlike the document Skills, this one doesn't have scripts — it's pure instructions. But those instructions fundamentally change Claude's approach to design.

Step 2Claude reads the Design Thinking framework

The Skill forces Claude to stop and think about design before writing any code. This is the key difference from a response without the Skill:

frontend-design / SKILL.md — Design Thinking
## Design Thinking
Before coding, understand the context and commit
to a BOLD aesthetic direction:

- Purpose: What problem does this solve? Who uses it?
- Tone: Pick an extreme: brutally minimal,
  maximalist chaos, retro-futuristic, organic,
  luxury/refined, editorial/magazine...
- Differentiation: What makes this UNFORGETTABLE?

CRITICAL: Choose a clear conceptual direction
and execute with precision.

This is why the result looks designed, not generated. The Skill explicitly tells Claude to commit to a direction — Alex said "editorial magazine layout," so Claude will make every design decision through that lens: serif typography, generous whitespace, image-forward grid.

Step 3Claude follows the anti-slop guidelines

The Skill has an explicit blacklist of what not to do — the patterns that make AI-generated pages look generic:

frontend-design / SKILL.md — What to avoid
NEVER use generic AI-generated aesthetics:
❌ Overused fonts (Inter, Roboto, Arial, system)
❌ Cliched colors (purple gradients on white)
❌ Predictable layouts and component patterns
❌ Cookie-cutter design without character

Instead:Typography: Distinctive, characterful font choices.
  Pair a display font with a refined body font.
✓ Color: Dominant colors with sharp accents.
  Not timid, evenly-distributed palettes.
✓ Motion: Staggered scroll reveals, hover states
  that surprise. One orchestrated page load.
✓ Composition: Asymmetry. Overlap. Grid-breaking.
  Generous negative space OR controlled density.
Step 4Claude writes HTML, CSS, and JavaScript

Guided by the Skill's philosophy and Alex's brief ("editorial, gallery, white space"), Claude writes a complete, working page — distinctive fonts from Google Fonts, a masonry-style photo grid, subtle scroll-reveal animations, and responsive design that works on phones.

Step 5Alex gets a live-preview page
What Appears in Chat
🌐portfolio.html18 KB
A complete, working HTML page that renders right in the conversation as a live preview. Editorial-style layout with a serif display font (Playfair Display or similar), generous white space, a photo grid with hover effects, and smooth scroll animations. Alex can download the code and deploy it, or iterate: "make the header larger" or "add a contact form."

The design brief matters

Alex said "editorial magazine layout" — that phrase shaped every design decision. If Alex had said "build me a website" with no aesthetic direction, the Skill still improves the output, but can't commit to a specific vision. The more specific your brief, the better the result. "Playful, colorful, Bauhaus-inspired" gives Claude a completely different starting point than "minimal, dark, brutalist."

V
The Pattern

What All Four Scenarios Have in Common

Look at what happened in every case:

1. A normal, human request. None of these people used technical language. Maya said "Word document." David attached a PDF. Priya said "pitch deck." Alex said "landing page." Normal words.

2. Automatic Skill activation. Nobody said "use the pptx Skill." Nobody knew Skills existed. The description field in each Skill is specifically written to match the way real people talk.

3. Specialized tools behind the scenes. JavaScript libraries building real PowerPoint files. Python scripts extracting text from PDFs. Validation scripts checking file integrity. Design frameworks preventing generic output. All invisible to the user.

4. A real, usable output. Not suggestions. Not templates. Not "here's what you could do." Actual files you can open, edit, print, present, and share.

That's what Skills do. They turn Claude from a conversationalist into a toolmaker. And they do it without requiring you to know they exist.

The One Tip From Part 1, Repeated

If you want Claude to create a file (not just text), mention the file type: "as a Word document," "as a PowerPoint," "as a spreadsheet," "as a PDF." Those words activate the Skill. Without them, Claude gives you excellent text. With them, Claude gives you an excellent file.

Coming Soon

The Connector Map

Skills teach Claude how to create things. Connectors teach it where to find things — your Google Drive, Slack, email, calendar. That's the next article in this series.