← playbook9 min read

Playbook · Workflow

The Charlie Hills LinkedIn stack.

One voice profile, eighteen skills, every channel downstream of a single newsletter.

The reason Charlie Hills' content system is interesting is not the volume of skills (though seventeen is unusual) and not any individual skill in isolation. It is the dependency graph. Every downstream skill loads two files written by the same upstream skill, which means the system is shaped by the writer's voice rather than by an averaged-out template. This is the walkthrough of how the stack is sequenced, what each skill does in the chain, and why the branches off the main spine matter.

A typical "AI for content" stack is a list of unconnected tools the writer juggles by hand. The Charlie Hills bundle is structured differently. Two files written by voice-builder (about-me.md and voice.md) and one written by newsletter-voice (newsletter-voice.md) sit at the project root. Every other skill in the bundle reads those files at the start of every task. The stack is shaped by the writer's voice, not by an averaged-out idea of "good content," and the asymmetry between those two starting points is most of why the system works.

This is the walkthrough of how the stack runs end to end. Foundation first, then discovery, then drafting, then visual, then the channel branches, then measurement. The order matters; the dependencies are real.

§01The foundation that every other skill reads

The first hour with the bundle is the hour the writer spends building their voice profile. voice-builder runs a six-question interview in Claude's AskUserQuestion form (role, audience, topic pillars, point of view, brand promise, off-limits topics) and asks for three to five writing samples. Then it writes two files into the project root.

about-me.md captures the positioning layer. Who the writer is, who they serve, what they argue, what they refuse. Capped at three hundred words; every line is something Claude will reference when writing.

voice.md captures the rhythm layer. Sentence length distribution, hook patterns, tone register, signature phrases, and the absence signals that distinguish the writer from generic professional prose. The skill catalogues what the samples consistently do not contain (em-dashes in zero of five samples; rhetorical questions never used; specific corporate vocabulary the author refuses) and writes those into voice.md under sections called Off-limits and What this voice never does. Absence is more discriminating than presence, and prompting alone cannot reach it.

If the writer plans to publish a newsletter, newsletter-voice runs second. It refuses to start without voice.md and about-me.md already on disk, then either analyses two to three past issues or seeds from one of six archetypes. The output is a third file, newsletter-voice.md, that captures patterns posts cannot teach: opening formula, section structure, data philosophy, signoff. The newsletter voice rules sit on top of the general voice rules at draft time, with the newsletter file acting as overrides where it differs.

Three files at the project root. Every skill below loads at least one of them. That is the foundation.

§02Discovery before drafting

The second move is figuring out what to write about this week, which is a different question from what the writer covers in general. Three skills sit at this layer, and using all three in sequence is what produces a content arc rather than a stream of disconnected posts.

niche-research drives a real browser through Reddit, X, and Google with strict seven-day date verification. Claude for Chrome is the preferred path, Playwright MCP is the fallback, WebSearch with WebFetch is the last resort. The skill scrolls feeds the way a human researcher would, opens articles to verify visible publish dates, and discards anything older than seven days or undated. The output is twenty themed stories with one-line angles each, ready to feed into the next skill.

content-matrix takes the writer's three to five pillars (read from about-me.md or typed in) and pairs them with eight named formats (actionable, motivational, analytical, contrarian, observation, X versus Y, present versus future, listicle) to produce a thirty-two to forty cell ideation table. Every cell holds a specific post headline, never a theme. The matrix is reusable for a month at a time; the niche research from niche-research slots into specific cells.

hook-generator is the last discovery move and the most underused. Six two-line clickbait variations on a chosen topic, each one rotating through a different angle (number-led, contrarian, transformation, authority, admission, future-shock). Forty characters per line, no questions in the opener, no hedging. The writer picks one and locks it in before the body copy starts.

§03Drafting on LinkedIn

The drafting layer has two skills that compete on purpose. post-writer is the general-purpose drafter. It loads the voice files, accepts a topic or context dump, researches the angle, presents three framings, and drafts inside the chosen framing. It handles posts where the angle is the load-bearing decision.

post-formatter is the rigorous-format drafter. Same voice files, but the writer picks a named framework (PAS, AIDA, BAB, STAR, or SLAY) and the skill enforces a strict set of constraints: 200 to 250 words, twenty lines maximum, blank line after every line, hook fifty characters or fewer, no em-dashes, no emojis except checkmarks for numbered lists and the recycle symbol in the close. The constraints are non-negotiable; that is what makes the framework actually show up in the output rather than averaging into shapeless prose.

Then the draft passes through post-scorer, which is the part of the stack most writers skip and shouldn't. The skill pulls the writer's last hundred posts via Apify (about fifty cents and one to two minutes), calculates an engagement score for each, identifies the top decile and bottom decile, and extracts the patterns that distinguish them. The draft is then scored against the writer's own ceiling rather than against generic best practices. Bottom-decile patterns get explicitly flagged on the draft so the rewrite suggestion is two-sided: do more of what works, stop doing this specific thing that drags the average down.

§04The visual layer

A LinkedIn post without a graphic loses ground in the feed. Four skills handle the visual layer, with graphic-designer as the routing skill.

graphic-designer reads the post and offers four options: HTML/CSS structured graphic, whiteboard infographic, branded infographic, or you decide. The fourth option is the interesting one: numbered steps, frameworks, comparisons, or data tables route to Path A (a 1200×1400 self-contained HTML file the writer screenshots); workflows, tip threads, or stories route to Path B (a Gemini image prompt). Brand colours come from brand-kit.md if present.

Path B branches into gemini-infographic (the hand-drawn whiteboard style with marker-pen texture, 1080×1350 vertical) or gemini-carousel (six, eight, or ten branded slides with an approval gate between brief and image generation). Both skills enforce a brief-first, prompt-after pattern. The brief is editable; the writer types generate to commit. That gate is what keeps regeneration costs bounded.

quote-post and pinned-comment are the personality skills. quote-post writes nine motivational quote options in three angles (growth, resilience, contrarian) and recreates a reference image with the chosen quote rendered in. pinned-comment produces image-led four-line LinkedIn pinned comments where the image carries the joke and the comment captions it as fact. Both are low-effort, high-engagement formats that LinkedIn rewards asymmetrically.

§05The channel branches

Three skills sit off the main LinkedIn spine. reels-scripting reverse-engineers an outlier Instagram Reel by scraping it via Apify, sending the video to Gemini 2.5 Flash for transcript and structural analysis, and writing a fresh script that applies the same hook shape and pacing to a topic from the writer's newsletter. The structure is the reference's contribution; the substance is always the writer's.

youtube-thumbnail flips the YouTube workflow. The thumbnail is built and approved before the script is written, because a title that cannot reduce to three to five words on a thumbnail is usually a title doing too much. The reference photo of the creator stays consistent across videos so the channel develops a visual signature.

profile-optimizer is the brand-layer skill. It rebuilds the LinkedIn profile around a single conversion goal (booked calls, inbound leads, newsletter subscribers, or job opportunities) and produces a coherent set of headline options, an about section, experience entries, a featured-section strategy, and four image generation prompts. The conversion goal is the first input; every section flows from it. Hedging across all four goals is what produces profiles that convert none of them.

§06Measurement closes the loop

analytics-dashboard is the final skill in the stack and the one that feeds back into every prior layer. The writer exports their LinkedIn Analytics for thirty, sixty, or ninety days and hands the .xlsx to the skill. It parses every sheet, builds a single React artifact with five chart panels (engagement trend, follower growth, post-performance scatter with four quadrants, day-of-week heatmap, audience breakdown), and writes a strategic analysis with five data-backed recommendations.

The four-quadrant scatter is the load-bearing chart. Stars (high reach, high engagement) tell the writer what to do more of. Viral but shallow tell the writer which hooks pull impressions but lose the read. Niche gold tell the writer which posts land with the right audience even though they did not break out. Underperformers tell the writer which patterns to drop. Most LinkedIn dashboards collapse this distinction by ranking posts on a single combined score; the split into four quadrants is what surfaces the asymmetric moves.

The recommendations feed back into content-matrix (which pillars to lean into next month), into hook-generator (which hook types over-index in the writer's top decile), and into post-scorer (which becomes more accurate the more historical data accumulates).

◆ pull quote

The Charlie Hills bundle is not a list of seventeen tools. It is one voice graph with seventeen entry points.

§07What the dependency graph buys

The reason this stack works as a system rather than as a toolbox is the dependency graph. voice-builder is the root. newsletter-voice is a child of voice-builder. Every drafting and visual skill is a child of one or both. analytics-dashboard and post-scorer close the loop by feeding observations back into the discovery layer.

A writer using the stack for the first time will probably ignore the graph and run individual skills as one-shot prompts. That works for one or two posts. It stops working at scale. The voice files are what let the system stay coherent across hundreds of pieces of content; without them, the model averages each draft toward the same statistically common version of "good LinkedIn writing," and the writer's actual position dissolves.

The other quiet feature of the dependency graph is that improvements compound. A writer who edits voice.md once because they noticed they never use rhetorical questions will see the change show up in every draft from that point forward. A writer who tightens their topic pillars in about-me.md will see the content matrix narrow and the post drafts sharpen. The investment in the foundation pays off across every skill below it, which is the kind of compounding return individual prompts cannot give you.

◇ summary · field notes
$ vibgineer summarize charlie-hills-linkedin-stack
  1. 01
    Foundation
    • voice-builder writes about-me.md and voice.md
    • newsletter-voice adds newsletter-voice.md
    • read by every skill below
  2. 02
    Discovery
    • niche-research finds the week's stories
    • content-matrix turns pillars into ideas
    • hook-generator drafts six openers
  3. 03
    LinkedIn drafting
    • post-writer drafts in your voice
    • post-formatter forces a framework
    • post-scorer rates against your top decile
  4. 04
    Visual layer
    • graphic-designer routes HTML or Gemini
    • gemini-infographic builds whiteboard art
    • gemini-carousel builds slide decks
    • quote-post + pinned-comment for personality
  5. 05
    Channel branches
    • reels-scripting reverse-engineers Reels
    • youtube-thumbnail sells the video first
    • profile-optimizer rebuilds the LinkedIn page
  6. 06
    Measurement
    • analytics-dashboard turns the export into charts
    • five recommendations, scored against your data
✓ 17 skills · one voice graph · every channel downstream of one newsletter.
Summary: Step 01: Foundation (voice-builder writes about-me.md and voice.md, newsletter-voice adds newsletter-voice.md, read by every skill below). Step 02: Discovery (niche-research finds the week's stories, content-matrix turns pillars into ideas, hook-generator drafts six openers). Step 03: LinkedIn drafting (post-writer drafts in your voice, post-formatter forces a framework, post-scorer rates against your top decile). Step 04: Visual layer (graphic-designer routes HTML or Gemini, gemini-infographic builds whiteboard art, gemini-carousel builds slide decks, quote-post + pinned-comment for personality). Step 05: Channel branches (reels-scripting reverse-engineers Reels, youtube-thumbnail sells the video first, profile-optimizer rebuilds the LinkedIn page). Step 06: Measurement (analytics-dashboard turns the export into charts, five recommendations, scored against your data). ✓ 17 skills · one voice graph · every channel downstream of one newsletter.