From linkedin-content
Write the publish-ready long-form article (1500–2500 words) from the article plan, with inline code snippets and direct repo links. Use this AFTER article-plan when the user wants the final article text — this skill produces the actual prose, not the outline.
How this skill is triggered — by the user, by Claude, or both
Slash command
/linkedin-content:draft-article [tone, audience, or focus override, optional][tone, audience, or focus override, optional]The summary Claude sees in its skill listing — used to decide when to auto-load this skill
Generate a complete long-form article (1500–2500 words) based on the article plan. The article includes inline code snippets, direct links to repository files, and is grounded in verified claims. Output is publish-ready markdown.
Generate a complete long-form article (1500–2500 words) based on the article plan. The article includes inline code snippets, direct links to repository files, and is grounded in verified claims. Output is publish-ready markdown.
Run after /linkedin-content:article-plan. This produces the actual article — the previous skill only produced the outline.
$ARGUMENTS
Treat user input (if any) as additional tone, audience, or focus overrides.
Verify these files exist:
content/article-plan.mdcontent/claims.mdIf article-plan.md is missing, output and STOP:
ERROR: Missing prerequisite.
- Article plan not found at content/article-plan.md
- Run /linkedin-content:article-plan first to generate it.
If claims.md is missing, output and STOP:
ERROR: Missing prerequisite.
- Claims not found at content/claims.md
- Run /linkedin-content:proof-pack first to generate it.
content/article-plan.md — extract title, subtitle, metadata, and every section's plan (key points, target word count, claims, repo links, code snippet indicators).content/claims.md — load all claims for inline referencing.If content/.config.md exists, read it. It may override defaults like:
If absent, use defaults.
Follow the plan's section order and headings. The article MUST:
```python, ```typescript, ```bash, ```apex)claims.md.config.mdUse the hashtag set from article-plan.md (or .config.md override). Total: 5–7 hashtags as a single copy-paste line.
claims.mdWrite 2 files.
File 1: content/article/draft.md
# [Article Title]
*[Subtitle]*
**Word count**: [N]
**Claims referenced**: [C-XXX, C-YYY, ...]
**Repo**: [repo URL]
---
## TL;DR
- [bullet 1]
- [bullet 2]
- [bullet 3]
- [bullet 4]
---
[Full article text with sections, code snippets, and links]
---
**Hashtags**: [copy-paste line]
File 2: content/article/hashtags.md
# Hashtags: Article
## Copy-paste block
[single line of 5–7 hashtags]
## Breakdown
- **Domain**: [hashtags grounded in language/platform/runtime, with rationale]
- **Topic-specific**: [hashtags grounded in this article's specific angle, with rationale]
To paste the article into a rich-text editor (LinkedIn, Google Docs, Notion) with formatting preserved, render the markdown to HTML and pipe through the bundled helper:
pandoc content/article/draft.md -t html | "${CLAUDE_PLUGIN_ROOT}/scripts/pbcopy-html.swift"
For plain text with correct UTF-8 (handles bold/italic Unicode characters that macOS pbcopy mangles):
cat content/article/draft.md | "${CLAUDE_PLUGIN_ROOT}/scripts/pbcopy-text.swift"
| Condition | Response |
|---|---|
| Missing prerequisites | HARD BLOCK — see Prerequisites |
| Article plan has fewer than 6 sections | WARNING: proceed but note deviation |
| Code snippet source file unreadable | Skip snippet, add <!-- TODO: add code snippet from [file] --> placeholder |
| Word count outside 1500–2500 after drafting | Adjust: trim verbose sections or expand thin ones before final output |
Creates, edits, and optimizes skills for Claude Code, including drafting, evaluating with test prompts, iterating on performance, and improving skill descriptions for better triggering accuracy.
npx claudepluginhub damecek/content-marketplace --plugin linkedin-content