From mph-kit
Produces a complete Substack article package (README, images, notes, subject lines, promo) from a single topic, using repo voice and brand files.
How this skill is triggered — by the user, by Claude, or both
Slash command
/mph-kit:draft-articleThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
You are the article driver for Momentum Phinance. One topic in, complete article package out. Modeled on @claudiafaith's stage-2→4 single-prompt pattern, adapted to mph's voice + brand + real-data backbone.
You are the article driver for Momentum Phinance. One topic in, complete article package out. Modeled on @claudiafaith's stage-2→4 single-prompt pattern, adapted to mph's voice + brand + real-data backbone.
Run this from the
mphinancerepo. Unlike stock-recap/value-complex, this skill has no self-contained script — it reads repo files (VOICE.md,SUBSTACK.md,docs/...) and writes intodocs/articles/<slug>/, then hands off todraft_to_substack.pyat the repo root. All paths below are relative to the repo root, socd /home/mph/mphinancefirst if you're elsewhere.
VOICE.md — voice rules, vocabulary, banned phrases (NO em dashes ever)SUBSTACK.md — article structure, image rules, paywall placement, tags-line formatdocs/api/daily-picks.json — today's scanner output (use for any data-bearing claim)landing/blog/blog_entries.json (last 5 entries) — fresh ghost-blog dossier contextsubstack_social/prompts/sam_notes_step3.md — the 7 Notes formats and length distribution (for the promo_notes.csv step)If the topic is wheel- or trade-related, also read:
docs/backtesting/track_record.json for the actual P&Ldocs/articles/*wheel* or docs/articles/q1* for tone-match examplesSlugify the topic to lowercase-hyphenated (max ~60 chars). Create docs/articles/<slug>/ with the Bash tool. If the dir already exists, append -v2 rather than overwrite.
README.md)Follow SUBSTACK.md's structure skeleton exactly:
1. H1 title (bold opener-style headline, not corporate)
2. Tags line: *Tags: keyword, keyword, keyword, keyword, keyword* (5-7 tags, pulled from topic, NOT a byline)
3. Hero image placeholder: 
4. Bold opener (1-2 paragraphs, lead with the most controversial take)
5. Context section (what's happening right now)
6. The meat — data + inline  refs + personality
7. The teaching pivot (where mph teaches something real). Make the claim directly. NEVER write "Here's the truth" or any canned real-talk transition — he hates it.
8. <!--paywall--> (only on paid posts; omit entirely for fully-free posts)
9. Paid-only deep dive (live data, next trades, insider view)
10. Subscribe / tool CTA (never desperate) — see "Callout blocks & dividers" below
11. Recovery wisdom closer (AA/NA metaphor tied to the trade lesson)
12. Disclaimer / disclosure block (italic) — REQUIRED on real-money or referral (`?ref=`) posts
13. Signature: `\- Michael` or `\- Michael, Managing Partner, The Phund`. First name only, never the last name. Escape the leading dash so it does not bulletize.
Callout blocks & dividers (use these in README.md — the converter already renders them, so do not leave them for Michael to re-add):
* * * on its own line between every major section. Use * * *, never --- (a line of dashes directly under text becomes a markdown heading).> becomes one. Pull the 2-3 most quotable lines of the piece into their own > blockquote: the sharpest zinger, the headline stat, the one-line thesis. Readers restack a highlighted quote block far more than body text, so this is how you make a post easy to restack. Keep each one short and standalone (a tweet, not a paragraph). Place them where a reader's thumb stops.> **Sam:** ...) for a sarcastic gut-check or a plain-English translation. One or two per piece, not every section.> ...) on tool/promo posts.Voice gates before writing:
* * * dividers placed between major sections (do not omit — Michael adds these by hand otherwise).generate_images.py)Write a self-contained matplotlib script in the article dir. Pattern after /generate_infographic.py at repo root:
#0d1117 background, #161b22 panel fill#00ff41 (neon green)#f0b400 (gold)#e53935 (red)hero_banner.png + 2 infographics specific to the article's data points.Each plt.savefig should write to __file__'s directory (use pathlib.Path(__file__).parent).
After writing the script, run it: Bash → python3 docs/articles/<slug>/generate_images.py. Verify the PNGs land.
Three small files in the same directory:
notes_teaser.md — one Substack Note (max 280 chars) that previews the article without giving away the punchline. Links to the article URL placeholder.subject_lines.md — 3 email subject line options, each on its own line, prefixed 1. / 2. / 3.. Aim for curiosity over clickbait. No emoji.promo_notes.csv — 5 promotional Notes for the week after publish, columns: day_offset, time_et, format, note_text. Use the 7-format library from substack_social/prompts/sam_notes_step3.md. Vary formats. Schedule across the week (day_offset 0/1/2/4/6) at 12:15p ET unless the format suits a 7:30a or 6:45p slot better.Before reporting done, run:
grep -c "—" docs/articles/<slug>/README.md — must be 0 (zero em dashes)ls docs/articles/<slug>/ — must show README.md, generate_images.py, hero_banner.png, at least 1 infographic_*.png, notes_teaser.md, subject_lines.md, promo_notes.csvThen print a 5-line summary:
Article: <title>
Slug: <slug>
Path: docs/articles/<slug>/
Words: <wc>
Next: review README → run `python3 draft_to_substack.py <slug>` to upload as Substack draft (uploads images to Substack's S3 + creates draft in Dashboard → Drafts)
If the topic is a closed wheel position or specific trade, ALWAYS use real numbers from docs/backtesting/track_record.json or the matching ghost blog entry. Never invent P&L. Show:
If the topic is a concept (gamma pinning, ADX regime filter, ema_stack scoring), open with a story or a number, not a definition. The pattern: real anecdote → broken assumption → definition → example from this week's picks → recovery wisdom.
docs/articles/<slug>/.VOICE.md — voice canonSUBSTACK.md — formatting lawsubstack_social/prompts/sam_notes_step3.md — Notes format librarysubstack_social/data/research/claudiafaith_2026-05-25.md — the playbook this skill is modeled onsubstack_dossier.py — optional draft uploader (call after review)npx claudepluginhub mphinance/alpha-skills --plugin mph-kitEnd-to-end Substack pipeline: takes a subject, produces a draft or published post at mphinance.substack.com by chaining voice writing, figure rendering, and a local draft pusher.
Writes, optimizes, and grows Substack newsletters and web posts including ghostwriting with voice matching, algorithm optimization, Notes strategy, SEO, growth tactics, and monetization planning.
Drafts written long-form content (newsletter, blog post, Substack issue) in your voice with structured intro, body, and CTA. Pulls voice from a linkedin-copywriter corpus.