← Back to Case Studies

How a Custom Claude Plugin Became FlowIntent's Content Engine

Liam built a custom Claude Cowork plugin with SKILL.md files, slash commands, and a SessionStart hook. Here's how it turned a solo content grind into a systematic machine.

May 1, 2026
How a Custom Claude Plugin Became FlowIntent's Content Engine

client zero: i built a claude cowork plugin and it turned a solo content grind into a production system

let me be direct about where i was before this.

six months ago, FlowIntent had one published blog post and one case study. i knew the strategy — topical authority, AEO structure, answer-first content. i had the keyword research. i even had rough outlines for twenty pieces.

the problem wasn't ideas. it was that every single session started from zero.

open a new conversation with Claude. re-explain what FlowIntent is. re-explain the brand voice. re-explain that headers should be ### > formatted. re-explain that case studies lead with results, not setup. re-explain that i use Webflow CMS and need SEO metadata in a specific format.

by the time i'd finished the setup, i'd already lost 20 minutes and some of the creative energy that should have gone into the actual content.

then i built the FlowIntent SEO plugin. here's what it changed and how the architecture works.

what a claude cowork plugin actually is

a Cowork plugin is a portable, installable bundle that pre-loads context into every AI session. it's not a prompt template you paste in. it's not a saved chat. it's a structured system of three layers that work together automatically:

* SKILL.md files — the long-form context documents that tell Claude how to do specific tasks. each skill defines the rules, the style, the output format, the self-check criteria.
* Commands — slash commands (/blog-post, /case-study, /content-plan, /ai-presence-check) that trigger specific workflows without setup
* Hooks — session-level automation. specifically, a SessionStart hook that fires whenever a new session opens and auto-loads the FlowIntent context before i've typed a single word

the plugin also bundles in the three MCPs that matter for content production at FlowIntent: DataForSEO for keyword and SERP data, Webflow for CMS management and publishing, and Composio for the extended toolset.

one install. everything loads. every time.

the skill.md files — the layer that does the actual work

the plugin contains 15 SKILL.md files. fourteen are SEO specialisms. one is the brand voice.

the brand voice skill is the one that matters most.

before i had it codified, i was inconsistent. some posts started with a capital. some used em dashes. some hedged where they should have landed a direct claim. i knew the voice in my head — lowercase-first sentences, data anchored, no filler, short punchy lines that earn the next longer one — but i hadn't written it down in a way Claude could consistently apply.

the brand-voice/SKILL.md file changed that. it specifies capitalisation rules, rhythm patterns, language rules, and structure rules. once that file existed, i stopped getting content that sounded like it came from a marketing agency that had read about me. i started getting content that sounded like i'd written it — but faster, and with better SEO structure baked in.

the seo-content/SKILL.md handles the structural layer. it specifies EEAT scoring, answer-first paragraph structure, how to handle FAQ schema, what makes a section AEO-ready vs just readable. it works in combination with the brand voice — the brand voice handles the tone, seo-content handles the architecture.

the other thirteen skills (audit, technical, schema, link building, internal linking, competitor analysis, images, sitemaps, geo, programmatic, page-level optimisation, planning, link building) are there when i need them. the point is i don't have to explain what a schema audit is or what output format i need — it's all already in the skill files.

the commands — what i actually type

the four slash commands are the daily interface:

/blog-post [topic] fires a workflow that: researches the current top-ranking pages for the topic, builds an internal content brief, checks search intent, identifies the angle FlowIntent can own, then writes the post in brand voice.

/case-study [context + results] follows the specific case study framework: result first, starting point, what we identified, what we actually did, what didn't work, the numbers, the transferable insight. the "what didn't work" section is non-negotiable.

/content-plan [topic area] builds a content calendar with keyword angles, EEAT hooks, funnel mapping, and publication sequencing.

/ai-presence-check [brand + URL] runs the full AI brand presence audit: scorecard across LLMs, topical map, 7/30/90 day action plan.

the commands matter because they eliminate the briefing tax. before the plugin, i'd type a paragraph explaining what i wanted. now i type seven words. the plugin already knows everything else.

the sessionstart hook — the part that removes the invisible tax

every time i open a new Cowork session, the SessionStart hook fires before i type anything. it loads what FlowIntent is, the brand platform and tool stack, the voice rules, the content types, and the MCPs available in this session.

in practice, this means i open a session, and i'm already talking to a version of Claude that knows the full context. no re-explaining. no setup paragraph.

the invisible tax this removes: approximately 15–20 minutes of setup per session, plus the frustration of inconsistent output when setup is abbreviated.

across three sessions a week for 90 days, that's somewhere between 5–7 hours of setup time i didn't lose. that's a full week of content production.

what didn't work first

building the plugin took two attempts.

the first version had too many skills configured as mandatory loads. every session was pulling context from 6 or 7 SKILL.md files simultaneously, and Claude was spending the first few responses reconciling conflicting guidance rather than producing content.

the fix was trigger-based loading. only brand-voice and seo-content load automatically on content requests. the other skills load only when the request matches their trigger pattern — "run an audit", "fix schema markup", "what's our crawl budget issue". that keeps the active context lean without losing the depth when you need it.

the second issue was the SessionStart hook being too prescriptive. early version had it setting expectations so tightly that legitimate creative decisions were being flagged as errors. the fix was loosening the hook to load context without policing deviation.

the lesson: hooks should orient, not control. skill files should guide, not constrain. commands should trigger workflows, not replace judgment.

the numbers

before the plugin (month 1, no system): blog posts published: 1. case studies published: 1. average time to produce one piece (including setup): 6–7 hours.

after the plugin (months 2–4, system running): blog posts published: 10. case studies published: 12 (including 2 client zero pieces on specific tool stacks). average time to produce one piece: 90 minutes to 2.5 hours depending on research depth.

22 pieces in 90 days instead of the 2 i'd have shipped without it. that's the compounding effect of removing setup friction from every single session.

the honest version of what this costs

building the plugin required upfront investment. writing the SKILL.md files properly took about 12 hours across the first two weeks.

the brand-voice skill went through three versions before it produced consistent output. too vague in v1. too prescriptive in v2. v3 got the balance right: clear rules with enough flexibility for editorial judgment.

if you're building a plugin for your own workflow, budget 2–3 hours per SKILL.md file for anything you care about deeply, 1–2 hours per command to test and refine, 1 hour for the hook plus an hour of testing, and a week of daily use before you know what's missing.

for me, the payback was visible within the first month. the second piece of content i produced with the plugin live took 40% less time than the first one without it.

what this means for you

if you're a solo founder or small team producing content at volume, the invisible friction of re-explaining context every session is costing you more than you think.

it's not just time. it's the cognitive load of re-establishing context before you can do the actual thinking. it's the inconsistency that creeps in when you're in a hurry and abbreviate the setup.

a plugin doesn't replace the thinking. it removes the tax on doing the thinking.

SKILL.md files, slash commands, and a SessionStart hook aren't technically complex — they're just systematic. you write down what you know, how you work, and what good output looks like. then you stop re-explaining it every session.

i spent 12 hours building the plugin. it's returned that investment on every single session since.

that's what systematic content production actually looks like — not a magic prompt, not a template. a system that knows the context before you open your mouth.

related reading: What Is Answer Engine Optimization (AEO)? — the strategy that sits underneath all of this content production. | The 9-Section SEO Content Brief — the brief format the /blog-post command uses under the hood.