agentsclimarketplace

Case study

Skill mkreindel/seo-toolkit-template/.claude/skills/case-study

Claude Code workspace template for running consistent SEO across a portfolio of managed websites.

Install
npx -y skills add mkreindel/seo-toolkit-template --skill case-study

Assembled from the repository path, not quoted from the project. Check it against their README if it does not work.

One thing to look at

  • 1 stars1 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.

What its author says it does

Copied from the file, not written here

Generate a case study page that documents a specific client outcome — problem, intervention, measurable result, and the testable claim. Captures decision-stage searchers looking for proof of capability ("[industry] [outcome] case study", "[service] results"). Pulls the real story from the site's per-site `stories.md` (refuses if no eligible story exists — never invents). Satisfies Tier 1 on-page SEO, validates schema, and ships per the site's publishing method. Use when the user types `/case-study` or asks for a case study / customer story page.

SKILL.md

6.2 KB, as published. Nobody here has run it

/case-study — Client outcome case study page

Documents one real client outcome end-to-end. Case studies sit at the decision stage — readers are evaluating whether the site can produce the result they need. Every claim must be verifiable; every number must be sourced from stats.md; every quote must be from a real, consented testimonial. No invention — refusal is the correct response when there's no eligible story.

Inputs

Required (asked at start if not given):

  • Site — must match a folder under sites/[name]/.
  • Story ID — references the entry in sites/[site]/references/stories.md (or stories.{lang}.md for multilingual). Format: story-{slug} matching the heading anchor in stories.md.

Optional (per-run overrides):

  • Industry / vertical — used as the H1's qualifying detail and the schema industry field. Defaults to the story's industry.
  • Anonymizetrue (default) | false (only if the story file marks the client as having given explicit consent for name use). If consent flag is missing, anonymize is forced true.

Workflow

This skill follows /blog's workflow (Steps 0–11) with the page-type-specific differences listed below. Read .claude/skills/blog/SKILL.md end-to-end before running.

What's unique to /case-study

Step 2 — Story selection (not keyword selection):

  • Read references/stories.md (per-site, per-language).
  • The user supplies the story ID, or the skill picks the highest-impact unused story (one with the largest measurable outcome).
  • Required fields in the story entry: client_descriptor, problem, intervention, outcome_metric (must be a number from stats.md), consent (anonymized or named-with-consent).
  • If any required field is missing → refuse, escalate or ask.

Step 3 — Keyword cluster (case-study-specific):

  • The primary keyword is the outcome-search query, not the story: [industry] [outcome] case study, [service] results [region], how [client-type] achieved [outcome].
  • Pick from keywords.csv rows with intent=case-study or proof. If none exist, the skill suggests one based on the story's industry + outcome and asks the user to add it to keywords.csv before proceeding.

Step 4 — SERP analysis (case-study-specific):

  • Top 3 case study pages in this niche — extract: average word count, image count, presence/absence of dollar figures, presence/absence of named clients, format (long-form vs. multi-section vs. PDF-download-gated).
  • Most ranking case studies are NOT gated. The default is unaffected by gating decisions made elsewhere.

Step 6 — Wireframe (case-study-specific):

  • Hero: the outcome stated upfront as a number. "[Client descriptor] achieved [outcome number] in [timeframe]" — no marketing fluff before the number.
  • Quick fact strip (above fold): 3–4 data points — Client: [descriptor], Industry: [vertical], Timeframe: [duration], Outcome: [metric]. Skimmable.
  • Problem section (300–500 words): what the client was experiencing. Specific. With dates if possible. Avoid generic "they wanted to grow."
  • Intervention section (400–700 words): what we did, in chronological order. Specific tools, frameworks, hours invested if known. This is where AI-search-citation density matters most — readers + LLMs both pull from this section.
  • Result section (300–500 words): the outcome metric, the time it took, what changed for the client beyond the headline number.
  • Quote (required if named-with-consent, optional if anonymized): one verbatim sentence from the client. Cited.
  • "What we'd do differently" section (required, 100–200 words): one thing about the engagement that didn't work or that we'd change. Single biggest trust-building section in the format.
  • FAQ: 4–6 Qs — "Was this typical?", "How transferable is this?", "Pricing on engagements like this?"
  • CTA: softer — "See if your situation maps to this one" rather than "Book a call."

Step 7 — Schema (case-study-specific):

  • Article with about: { @type: "CreativeWork", name: "[Engagement name]" } and mentions for the industry.
  • BreadcrumbList
  • FAQPage
  • If the client is named with consent: Review with itemReviewed = our service, reviewBody = the quote, author = the client.
  • Do NOT use Review schema for anonymized cases — schema requires identifiable author.

Step 8 — Voice (case-study-specific extras):

  • Every number on the page MUST be in stats.md. The skill refuses to fabricate or round.
  • No "incredible results" or "transformative outcome" — banned per universal voice rules. Use the number.
  • The "what we'd do differently" section is non-skippable. If the story file doesn't have material for this, refuse and ask the user to add the introspection.
  • One opinion max, backed by the outcome metric.

Refusal conditions

This skill refuses to ship if:

  • No matching story exists in stories.md for the given ID.
  • The story is missing outcome_metric (must be a number, must be in stats.md).
  • The story is missing consent field.
  • The "what we'd do differently" content is unwritable from the story file (no introspection available).
  • A case study for this story already exists in used-keywords.md.

Output

Standard _drafts/[slug]/ layout, with these additions:

  • story-source.md — the source story entry from stories.md, copied for traceability.
  • numbers-citation.md — every number on the page mapped to its stats.md line.

Length target: 1,500–2,500 words.

Routine versioning + idempotency contract

Same as /blog. Idempotency key: (site, story-id, language). Skip re-run if _drafts/case-study-{slug}/ exists with today's date.

Keep looking

Skills are one crate of 328,083. Ordering is by how many stacks a row turns up in, so the top of any crate is what has actually been picked rather than what has the most stars.