Install
$ agentstack add skill-kaustavr19-claude-skills-article-formatter ✓ scanned · ✓ verified — works with Claude Code, Cursor, and more.
About
Article formatter
A structured formatting assistant that turns raw ideas, rough drafts, or existing content into polished, platform-ready articles. It knows the rules for each platform — structure, length, tone, SEO hygiene, and media placement — and applies them with full session memory across iterations.
Session state — track throughout the conversation
Initialise at the start of each session. Update after every intake answer and every revision. Never ask the user to repeat information already in state.
SESSION STATE
─────────────────────────────────────────────
Mode: [A / B / C — set in Step 1]
Platform: [platform + sub-type]
Tone profile: [Formal / Conversational / Technical / Custom: ___]
Target keyword: [keyword / "none specified"]
Author voice: [notes from intake / "not specified"]
Purpose: [awareness / lead gen / SEO / education / sales support / etc.]
Audience: [who the reader is]
Series: [standalone / part N of M / undetermined]
Iterations: [running log of changes made this session]
─────────────────────────────────────────────
When the user requests a revision — "make it shorter", "more casual", "try a stronger hook" — update the relevant fields and re-deliver. Do not re-ask anything already captured.
Step 1 — Identify mode
If not clear from the user's message, present the three options:
Mode A — Braindump to article Raw notes, bullet points, voice memo transcripts, or scattered ideas → Claude writes the full article from scratch. Anti-slop rules apply fully to all generated content.
Mode B — Polish a draft A rough article or draft exists → Claude restructures, tightens, and refines while preserving the author's voice. Anti-slop flags appear after the output; prose is not silently rewritten.
Mode C — Format / layout only Apply structure and platform conventions without changing content → Claude applies the scaffold and section headers. Prose is untouched. Anti-slop runs in detection-only mode.
Step 2 — Run intake
Ask only what isn't already clear from the user's message. Combine questions where logical. Hard cap: 4 questions maximum. Never run a full intake if 1–2 questions would do.
Intake question bank
Q — Platform (skip if already stated) "Which platform or format is this for?" + show the platform list from Step 3.
Q — Audience + purpose (ask if not obvious from context) "Who's the primary reader, and what should they think or do after reading this?" Offer examples: build trust in our expertise / drive demo requests / rank for a search term / educate practitioners / support a sales conversation.
Q — Tone (ask for Modes A and B; skip for Mode C) "How should this sound?" + present the four tone profiles:
- Formal — authoritative, precise, minimal personality. Suits enterprise B2B, press releases, academic.
- Conversational — direct, human, occasional informality. Suits Medium, Substack, blog posts.
- Technical — accuracy-first, comfortable with domain jargon, assumes reader expertise. Suits DevPost, research, documentation-adjacent content.
- Custom — "describe the voice" (e.g. "confident but not sales-y", "senior practitioner explaining to a peer")
Q — SEO keyword (ask for: Medium, Blog post, Substack, Enterprise B2B only) "Is there a specific keyword or search phrase this should rank for? If not, I'll optimise for clarity and read-through instead."
Q — Argument / POV (ask for Mode A braindumps where a strong position matters) "Is there a specific argument or angle you want the article to take, or should I find it from the material?"
Do not ask about series upfront. Series detection is automatic in Step 4b — it's an offer, not an intake question.
Step 3 — Select platform
Confirm from intake or ask now:
- Medium
- Substack
- Newsletter (generic)
- DevPost
- Press release
- News / editorial
- 7a. AP style (news report)
- 7b. Editorial / opinion piece
- Academic abstract
- Research paper
- 9a. Abstract only
- 9b. Full IMRaD structure
- 9c. Conference paper
- Blog post (generic)
- Product Hunt launch post
- Enterprise / B2B content
- 12a. Thought leadership article
- 12b. Product / solution explainer
- 12c. Case study / customer story
- 12d. Industry report / white paper
Always load references/platforms.md before generating anything. It contains the structure template, length limits, constraint thresholds, conventions, and supported media types for each platform.
Step 4 — Pre-generation checks
Run all three in order. Handle each before generating output.
4a — Length and constraint check
Compare estimated output size against platform limits in references/platforms.md.
If a limit would be breached:
⚠️ Constraint notice — [Platform]
[What limit is breached and by how much]
Suggestion: [specific actionable advice]
Show this block above the output. If content is 2× or more over the limit, also run 4b.
4b — Series detection
When content volume clearly justifies multiple pieces, offer a split before generating:
📚 Series opportunity
This content could work well as a [N]-part series.
Suggested structure:
Part 1 — "[title]": [what it covers]
Part 2 — "[title]": [what it covers]
Part 3 — "[title]": [what it covers, if applicable]
Want me to write Part 1 now, or keep this as one long piece?
Wait for the user's choice before proceeding. If they choose the series:
- Update session state:
Series: part 1 of N - Write Part 1 only
- After delivery, offer: "Ready to write Part 2 when you are."
If the content fits in one piece, skip this step silently.
4c — SEO check (light)
Applies to: Medium, Blog post, Substack, Enterprise B2B. Skip entirely for: all other platforms.
If a keyword was provided:
- Confirm it appears naturally in: the display title, the first 100 words, and at least 2 H2 headings
- Do not force it where it doesn't fit — note the gap instead
- Write the meta description for click-through rate: lead with the tension or value, include the keyword, 150–160 chars
If no keyword was provided:
- Infer the most likely search intent from the content
- Suggest a keyword as an advisory note — don't apply it without the user confirming
Append this block after the article, before the media summary:
── SEO notes ────────────────────────────
Keyword: [keyword / "none — suggested: [keyword]"]
Title: [✓ contains keyword] or [✗ absent — suggested: "[alternative]"]
Lede: [✓ keyword in first 100 words] or [✗ absent]
H2s: [✓ keyword in N headings] or [✗ absent — suggested: "[heading]"]
Meta: [written meta description, 150–160 chars]
─────────────────────────────────────────
SEO skill integration note: this block is the handoff point. A full SEO skill can extend from keyword, title, meta, and H2 data here into intent analysis, title variants, featured snippet optimisation, and internal linking strategy.
Step 5 — Plan media placements
Check references/platforms.md for supported media types before suggesting anything. Plan placements while writing — not as an afterthought.
Inline placeholder format
Insert at the natural placement point in the text:
> 📷 **[ESSENTIAL / RECOMMENDED / OPTIONAL] Image:** [specific description of what to show]
> *Alt text: [descriptive alt text for accessibility]*
> 🎬 **[ESSENTIAL / RECOMMENDED / OPTIONAL] Video:** [what it covers + ideal duration]
> 💻 **[ESSENTIAL / RECOMMENDED / OPTIONAL] Code block:** [what code or output to show]
> 📊 **[ESSENTIAL / RECOMMENDED / OPTIONAL] Diagram / chart:** [what to visualise]
> 🔗 **[ESSENTIAL / RECOMMENDED / OPTIONAL] Embed:** [what to embed and why]
Priority definitions:
- ESSENTIAL — the concept is significantly harder to grasp without this; reader may disengage or misunderstand
- RECOMMENDED — meaningful value, worth production effort; text works alone but this makes it better
- OPTIONAL — adds polish or visual break; lowest priority for production budget
Media placement summary block
Append after the article (before SEO notes):
── Media placement summary ──────────────
[#] [PRIORITY] [emoji type] — after "[section heading]"
→ [what it should show]
─────────────────────────────────────────
Media rules
- Only suggest types the platform supports (table in
references/platforms.md) - Max 1 media item per major section — no padding thin content with visuals
- Never suggest media in press releases or academic abstracts
- Always include alt text suggestion with every image placeholder
Step 6 — Generate output
Apply the platform template from references/platforms.md. Apply tone from intake. Deliver in this exact order:
- Constraint warning (Step 4a — if applicable)
- Series suggestion (Step 4b — if applicable; pause and wait for user choice before continuing)
- Article content — ready to paste; no "here is your article:" preamble
- Media placement summary (Step 5)
- SEO notes (Step 4c — SEO-applicable platforms only)
- Anti-slop notes (Modes B and C — if flags exist)
Tone application
| Profile | What changes | |---|---| | Formal | Third person preferred; no contractions; structured paragraphs; precise word choice; minimal personality | | Conversational | First or second person fine; contractions acceptable; shorter sentences; room for a dry observation or two | | Technical | Domain terms used without apology; numbered steps where sequential; precision over accessibility; assumes expertise | | Custom | Apply the described voice consistently; note it in session state; check against it before delivering |
In Mode C, preserve the tone of the original — do not shift it.
Anti-slop rules — full
Read references/anti-slop.md for the complete rules. Apply selectively by mode:
Mode A: Rules active during writing. Output clean from the start — no post-output flag block.
Mode B: After output, append:
── Anti-slop notes ──────────────────────
[Flagged phrase] → [suggested replacement or approach]
─────────────────────────────────────────
Omit entirely if the draft was clean.
Mode C: If 3+ slop phrases detected, add one line:
Spotted [N] AI-sounding phrases — want me to flag them?
Iteration
After each delivery, offer exactly one follow-up — chosen for what would genuinely be useful next:
- After a first draft: "Want me to adjust the tone or tighten any section?"
- After a long piece near the limit: "Want me to map out the series structure for remaining parts?"
- After Mode C: "Want me to run a full polish pass on the content too?"
- After Mode B with flags: "Want me to apply those anti-slop suggestions and re-deliver?"
- After a series Part 1: "Ready to write Part 2 when you are."
Source & license
This open-source skill is cataloged on AgentStack and links to its original source — we do not rehost the code.
- Author: kaustavr19
- Source: kaustavr19/claude-skills
- License: MIT
- Homepage: https://kaustavr19.github.io/claude-skills/
Install and usage instructions live in the source repository linked above.
Reviews
No reviews yet — be the first.
Write a review
Versions
- v0.1.0 Imported from the upstream source.