| name | content-qa |
| description | Use before publishing any article. Triggers: "check article", "preflight", "validate post", "is this ready to publish", "QA my post", "pre-publish check". Run this before distribute or any publish command. |
Run pre-publish validation on the article. Check all platforms' requirements before sending.
Step 0 — Deterministic QA (always run first)
Run content_qa.py for automated, deterministic checks before any LLM-driven analysis:
python3 ${CLAUDE_PLUGIN_ROOT}/tools/content_qa.py "$ARTICLE_PATH" --format text
Show the output. If exit code is 2 (block), stop immediately — hard failures must be fixed first.
If exit code is 1 (review), show the issues and continue to LLM checks below for deeper analysis.
If exit code is 0 (pass), still run the LLM checks below for editorial quality.
Step 1 — LLM-Driven Checks
Read the article at the path the user provides. Run through references/platform-limits.md.
Frontmatter completeness
Title length
- General: 50-60 chars optimal
- Dev.to: max 128 chars
- Hashnode: max 100 chars
Description length
- Dev.to: max 160 chars
- Hashnode: max 250 chars
Tags
- Dev.to: max 4 tags, lowercase, hyphens only
- Hashnode: max 5 tags
Body
Output format
## Content QA Report: <title>
### Frontmatter
OK title: "..."
OK description: "..." (143 chars)
WARNING tags: 6 tags — dev.to will truncate to 4
### Body
OK Has headings
OK Has CTA in last paragraph
WARNING Line 47: relative image path ./images/foo.png — convert to absolute URL
### Verdict
2 warnings — fix before publishing to dev.to
Fix any failures before publish. Warnings are platform-specific.