Graphic Case Study logo

Graphic Case Study

Organization
Varnan-Tech
graphic-case-study

Generates a professionally designed case study PDF for B2B SaaS sales and marketing. Supports 7 page layouts, 9 style presets, 1-4 page output. Trigger when user says "create a case study", "write a customer story", "make a case study PDF", "design a success story", "turn this customer win into a PDF".

Overview

PublisherVarnan-Tech
Repositoryopendirectory
Skill namegraphic-case-study
Stars
674
Forks
74
Bundled files
4
LicenseMIT
Links
  • Markdown instructions

    A SKILL.md file the model loads on demand, so it only costs tokens when a request actually matches.

  • Works with any LLM

    AI skills are plain Markdown, not provider-specific code, so this works with GPT, Claude, Gemini, Grok, or a local model.

  • 4 bundled files

    Scripts, templates, and references the model can read while it works. Files are read-only and never executed.

  • Open source

    Published by Varnan-Tech on GitHub. Read the source before you install it.

Installation

Install the Graphic Case Study AI skill in TypingMind to use it with any LLM, or drop it into another agent that reads SKILL.md.

1

Install in TypingMind

TypingMind installs a skill straight from its GitHub folder — it reads SKILL.md, bundles the resource files, and stores the result locally.

  1. Open the app and go to Plugins → Skills.
  2. Choose "Install from GitHub".
  3. Paste the skill folder URL below and confirm.
    https://github.com/Varnan-Tech/opendirectory/tree/main/skills/graphic-case-study
  4. Enable the skill in any chat where you want it available.
Plugins → Skills → Add skill → From GitHub URL, then paste the folder URL and press Continue.
2

Install in another agent

Any agent that reads the Agent Skills format can use this skill — copy the folder into that agent's skills directory.

Claude Code — .claude/skills
git clone --depth 1 https://github.com/Varnan-Tech/opendirectory.git /tmp/opendirectory
mkdir -p .claude/skills
cp -r /tmp/opendirectory/skills/graphic-case-study .claude/skills/graphic-case-study
Restart Claude Code after copying so it picks up the new skill.

Use it in TypingMind

Enable Graphic Case Study in any TypingMind chat and the model takes it from there. Its name and description sit in the system prompt, and the moment a request matches, the model loads the full instructions itself — you never invoke it by hand, and it costs no tokens until it is actually used.

The model loads Graphic Case Study on its own as soon as a request matches it.

Works with any AI model

AI skills are plain Markdown instructions rather than provider-specific code, so Graphic Case Study is not tied to the model it was written for. Install it once in TypingMind and use it with GPT-5, Claude, Gemini, Grok, DeepSeek, Mistral, Llama, or a local model you run yourself — all on your own API keys.

  • Loaded only when it is needed

    The system prompt carries just the name and description. The instructions are fetched on the first matching request, so an idle skill costs nothing.

  • Switch models mid-chat

    Because the skill is instructions rather than code, changing model does not break it — the next model reads the same SKILL.md.

Skill instructions

This is the SKILL.md content the model loads. Read it before installing — a skill is instructions your model will follow.

Graphic Case Study

Generate a professionally designed B2B case study PDF from customer story details. Output is a single self-contained HTML file (opens in any browser) plus a print-ready PDF. Supports 7 page section layouts and 9 style presets.


Critical rules -- non-negotiable:

  1. Every page MUST fit within the A4 canvas (1200×1697px). No content overflow.
  2. ALL scalable font sizes use clamp(). Fixed px only for structural borders/lines.
  3. Single self-contained HTML: all CSS inline. Zero external dependencies except font CDN link.
  4. Never dump HTML in chat. Save to file, show summary only.
  5. Results stat numbers MUST be visually dominant -- at least 3× body text size.
  6. No generic AI slop: no Inter as display font, no purple gradient on white, no "Thank You" closing.

Step 1: Brief Intake

Need four things to start. If all four present in the message: skip to Step 2.

If any missing, ask exactly:

"To create your case study, I need four things:

  1. Customer name -- company name (or a descriptor to anonymize: "Fortune 500 Retailer")
  2. Challenge -- what problem did they have before using your product? (2-5 sentences)
  3. Solution -- what did your product do to solve it? (features, approach)
  4. Results -- measurable outcomes: ideally 3 stats (%, time saved, revenue impact, etc.)"

Wait for all four before continuing.


Step 2: Complete Intake

Ask all questions in one message, grouped by category. User can skip any -- defaults apply.

"A few questions before I start:

Content

  1. Customer context -- industry, company size, location? (optional, used for overview page)
  2. Testimonial -- customer quote (40 words max) + speaker name + title? (or "I'll add later")
  3. Page count -- 1-pager (summary card) / 2-pager (standard, default) / 4-pager (detailed)
  4. Customer logo -- URL or "none"

Design 5. Your company name -- vendor name for the CTA page (+ logo URL if available) 6. Style -- clean-slate / midnight-editorial / matt-gray / product-minimal / mint-pixel-corporate / warm-earth / brutalist / magazine-red / "show me options" 7. Orientation -- A4 portrait (default, 1200×1697) / landscape 4:3 (1200×900)

Output 8. Anonymize? -- Keep company name / replace with industry descriptor 9. Slug -- filename slug (e.g. "acme-corp-2025"); I'll derive from customer name if skipped"

Defaults if skipped:

QuestionDefault
Customer contextnone
Testimonialnone
Page count2
Customer logonone
Your company namederived from context
Styleclean-slate
OrientationA4 portrait
Anonymizekeep name
Slugkebab-case of customer name

If style = "show me options": Generate 3 single-page HTML previews (cover page only). Save to .claude-design/previews/style-a.html, style-b.html, style-c.html. Open each: open .claude-design/previews/style-a.html etc. Choose 3 style presets that match the case study context. Ask user to pick before Step 3.


Step 2.5: Internal Page Architecture (not shown to user)

Derive internally before Step 3. Never ask the user.

Hero metric identification: Scan results for the single most impressive number (largest %, biggest $, greatest multiplier). This metric gets accent-color treatment and maximum visual weight on the results page.

Page count -> structure template:

CountPage sequence
1-pager1 page: [cover-compact] -- all content condensed into one page
2-pagerPage 1: [cover] + [challenge-solution] stacked · Page 2: [results] + [testimonial-cta] stacked
4-pagerPage 1: [cover] · Page 2: [overview] + [challenge] · Page 3: [solution] + [results] · Page 4: [testimonial] + [closing-cta]

Visual character derived from style choice:

  • clean-slate → professional authority, generous whitespace, enterprise-safe
  • midnight-editorial → premium dark, editorial weight, tech/AI companies
  • matt-gray → trusted neutral, operational, board-safe
  • warm-earth → approachable warmth, consulting/agency/services
  • brutalist → bold standout, design-forward, attention-commanding
  • If not specified: default to clean-slate for B2B SaaS, midnight-editorial for technical companies.

Step 3: Page Structure

Read references/page-library.md before planning.

Plan the full page sequence. Assign section types from the 7 in references/page-library.md to each page section. Multiple sections can stack within one page.

Output as numbered list with [section-type] labels per page. Example for 2-pager:

Proposed structure (2 pages, clean-slate style):

Page 1:
  [cover] -- Acme Corp cut reporting time by 80%
  [challenge-solution] -- manual process / DataPulse automation

Page 2:
  [results] -- 80% time saved, 95% error reduction, $200K saved
  [closing-cta] -- Get in touch: hello@datapulse.io

Does this structure work, or should I adjust anything?

Wait for confirmation before Step 4.


Step 4: Content Draft

Write per-page-section copy. Plain text only -- no HTML yet.

Copy rules per section:

  • cover: company name + headline result (12 words max, MUST lead with the number: "Acme cut reporting time by 80%") + optional category label ("Customer Success Story")
  • overview: 4 facts only -- Industry / Company size / Location / Use case -- each value 4 words max
  • challenge: context paragraph (2-3 sentences) + 3 pain points (1 sentence each, no bullet filler)
  • solution: 2-3 feature callouts -- feature name (3 words max) + 1-sentence outcome description each
  • results: 3 metrics (number + short label + 1-line context). Optional: 2-sentence narrative. ZERO body copy at same weight as the numbers.
  • testimonial: exact quote (40 words max) + speaker name + title + company
  • closing-cta: headline (5 words max) + CTA action text (3 words) + email + URL (both required)

Forbidden words (no exceptions): "powerful", "seamless", "game-changing", "leverage", "innovative", "revolutionary", "transform", "cutting-edge", "robust", "unlock", "scalable" (as filler adjective).

Copy philosophy: Numbers beat adjectives. Lead every section with the outcome, not the feature. Fragments are fine.


Step 5: HTML Generation

Read ALL before generating any HTML:

This skill's references:

  • references/design-system.md
  • references/page-library.md
  • references/style-presets.md

frontend-slides cross-references (read this exact file):

  • /Users/ksd/Desktop/Varnan_skills/frontend-slides/viewport-base.css -- include FULL contents verbatim inside <style> block

Generation rules:

  1. Single self-contained HTML. All CSS inline. Font CDN <link> is the only external reference.
  2. Include the FULL verbatim contents of viewport-base.css inside the <style> block -- do not paraphrase or shorten it.
  3. After pasting viewport-base.css, add portrait A4 overrides:
    css
    /* A4 portrait overrides */
    html { scroll-snap-type: none; scroll-behavior: auto; }
    .slide {
      width: 100vw;
      height: 100vh;
      height: 100dvh;
      overflow: hidden;
      display: flex;
      flex-direction: column;
      position: relative;
      scroll-snap-align: none;
    }
  4. Every page section = <section class="slide"> -- required for export-pdf.sh detection.
  5. Comment each page: /* === PAGE N: SECTION-TYPES === */
  6. Results stat numbers: clamp(2.5rem, 7vw, 5rem) minimum. Hero metric in accent color. Other metrics in secondary text color.
  7. No images provided -> CSS-generated visuals (geometric shapes, gradient backgrounds, icon-like CSS constructs). Never output visible placeholder boxes.
  8. No SlidePresentation JS. Include only a minimal IntersectionObserver for .reveal entrance animations (viewer experience; PDF export renders to final state automatically).
  9. For landscape 4:3 (if requested): use clamp() values from graphic-slide-deck proportions -- landscape 1200×900 means 1vw=12px, similar to portrait.

Typography discipline (all clamp-based, tuned for 1200px A4 portrait):

  • Cover headline: clamp(2rem, 5vw, 3.5rem)
  • Section heading: clamp(1.25rem, 2.5vw, 2rem)
  • Body: clamp(0.875rem, 1.25vw, 1.1rem)
  • Stat number (hero): clamp(3rem, 8vw, 5.5rem) in accent color
  • Stat number (secondary): clamp(2.5rem, 7vw, 5rem) in secondary color
  • Quote: clamp(1.1rem, 2vw, 1.5rem) italic
  • Label/caption: clamp(0.65rem, 0.9vw, 0.8rem) uppercase

Step 6: Self-QA

Check every item. Fix every failure -- do not skip.

Layout and rendering:

  • Every .slide has height:100vh; height:100dvh; overflow:hidden
  • ALL scalable font sizes use clamp()
  • No content overflows at 1200×1697 viewport -- check each page's density against references/page-library.md limits
  • CSS-generated visuals present for all image placeholder spots
  • No -clamp(), -min(), -max() in CSS -- wrap negatives in calc(-1 * ...)

Structure:

  • Page count matches Step 3 plan
  • Every page uses class="slide"
  • All content sections from Step 3 are present
  • class="slide" only on <section> elements, not inner divs

Design quality:

  • Hero metric visually dominant on results section -- accent color, largest size, no competing elements at equal weight
  • Style preset tokens applied consistently (colors, fonts from references/style-presets.md)
  • No slop patterns (check DO NOT USE list in references/style-presets.md)
  • Typography hierarchy clear: cover headline >> section heading >> body (at least 2:1 ratio)

Content:

  • No forbidden words in any copy
  • Cover headline leads with a number or measurable result
  • Testimonial quote is 40 words or fewer
  • Closing CTA has headline + action + email + URL (all four)
  • All stats in results section have labels (no naked numbers)

Step 7: Output

Save the main HTML:

bash
mkdir -p case-study/[slug]

Write to: case-study/[slug]/index.html

Open it: open case-study/[slug]/index.html

Per-page HTML files (always generate these):

Extract each <section class="slide"> from the main HTML. For each one, create a standalone file with:

  • The full <style> block from the main HTML (copied verbatim)
  • The individual <section class="slide"> wrapped in a minimal HTML shell
  • No JS (static per-page viewing)

Write to: case-study/[slug]/page-01.html, page-02.html, etc.

PDF export (always do this for A4 portrait):

bash
bash /Users/ksd/Desktop/Varnan_skills/frontend-slides/scripts/export-pdf.sh \
  case-study/[slug]/index.html \
  case-study/[slug].pdf --portrait

If landscape 4:3 was requested, omit --portrait and use --compact instead (1280×720).

Note: first run installs Playwright automatically (~30-60 seconds). Inform the user.

Cleanup: Delete .claude-design/previews/ if style preview files were generated in Step 2.


Step 8: Summary (no HTML in chat)

Present in chat:

## Case Study: [customer name]
Date: [today] | Style: [style] | Pages: [N] | Format: A4 portrait
Vendor: [your company] | Customer: [customer name]

---

### Files
Main:      case-study/[slug]/index.html
Per-page:  case-study/[slug]/page-01.html -> page-0N.html
PDF:       case-study/[slug].pdf

---

### Case Study Checklist
- [ ] Replace [IMAGE: logo] placeholder with real logo file
- [ ] Verify all stats are accurate (page [results page number])
- [ ] Confirm customer has approved quote usage
- [ ] Proof company name spelling, speaker title accuracy
- [ ] Test PDF page count = [N] and no content clips
- [ ] Share PDF at case-study/[slug].pdf

Do not print HTML in chat.


Section Reference

SectionPurpose
coverOpening page -- customer name, headline result, logos
overviewAt-a-glance profile -- industry, size, use case
challengeThe problem -- context + pain points
solutionHow your product solved it -- feature callouts
resultsKey metrics + supporting narrative
testimonialFull-width pull quote from customer
closing-ctaVendor logo + contact info + next step

Bundled files

The model reads these on demand while the skill is loaded. They are exposed as readable files and are never executed.

Frequently asked questions

What does the Graphic Case Study AI skill do?

Generates a professionally designed case study PDF for B2B SaaS sales and marketing. Supports 7 page layouts, 9 style presets, 1-4 page output. Trigger when user says "create a case study", "write a customer story", "make a case study PDF", "design a success story", "turn this customer win into a PDF".

Why use Graphic Case Study on TypingMind?

Because you install it once and use it with any model. Graphic Case Study is plain Markdown rather than provider-specific code, so the same skill runs on GPT-5, Claude, Gemini, Grok, or a local model — and you can switch model mid-chat without it breaking. TypingMind runs on your own API keys, so you pay providers directly instead of a per-seat subscription, and your skills and chats stay in your own storage.

How do I install Graphic Case Study in TypingMind?

Open Plugins → Skills → Install from GitHub in TypingMind and paste https://github.com/Varnan-Tech/opendirectory/tree/main/skills/graphic-case-study. TypingMind reads its SKILL.md and bundles its files and installs it as a skill you can enable per chat.

Which AI models can use Graphic Case Study?

Any model you connect in TypingMind. AI skills are plain Markdown instructions rather than provider-specific code, so GPT, Claude, Gemini, Grok, and local models can all load this skill when a request matches it.

How many AI models can I use with Graphic Case Study?

As many as you like. As long as a model supports skills, you can use Graphic Case Study with it — GPT, Claude, Gemini, Grok, DeepSeek, Mistral, Llama and more — all on TypingMind with your own API keys.

Is the Graphic Case Study AI skill free?

Yes. It is published on GitHub by Varnan-Tech under the MIT license. You only pay your own AI provider for the tokens you use.

What are AI skills?

An AI skill is a reusable instruction bundle that teaches an AI model how to do one specific task. It follows the open Agent Skills format: a SKILL.md file with a name and description, plus any scripts, templates or reference files the model may need. The model reads the instructions only when your request matches the skill, so an installed skill costs nothing until it is used.

How are AI skills different from plugins or MCP servers?

A plugin or MCP server gives a model new tools to call — code that runs somewhere and returns a result. An AI skill gives the model knowledge and process instead: how to approach a task, which steps to follow, what good output looks like. Skills are plain Markdown, so they need no server, no API key and no runtime, and they work with any model.

View all

Set up your own AI workspace now

Get notified about new features and future giveaways by subscribing to our newsletter 👇