skills/content-editor/SKILL.md
Use when running the autonomous content pipeline — scanning a content queue, ingesting sources, evaluating readiness, writing articles, running quality passes, and publishing via PRs. Also handles self-learning from reviewer feedback and periodic content pruning. Requires a project writing style guide at docs/writing-style-guide.md.
npx skillsauth add paulund/skills content-editorInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Scan the content queue (defined in Reference: Content Workflow — label state machine) for items needing processing:
Close stale items: any source-labeled item with no updates for more than 6 months gets a stale label and is closed.
Check for the project's docs/writing-style-guide.md. If it doesn't exist,
flag the issue and suggest adding one (the content-editor cannot produce
project-appropriate articles without it). Load it — it defines the content
path, build command, section mapping, frontmatter rules, slug format, writing
style, link conventions, and PR format. All subsequent steps use these rules.
For each new source item with URLs or topics, load Reference: Source Ingester and follow its extraction logic:
If no transcript or material was available (e.g. YouTube captions disabled), note this in the extraction comment and ask the maintainer for key takeaways.
For each item now bearing the brief label (including ones just promoted in Step 2):
Read the item body. Check the Definition of Ready criteria from the Content Workflow reference. Both of these editorial fields must have real content (not blank, not a placeholder):
## My opinion / take on this## Why this matters to my audienceIf both fields have content → DoR is met. Proceed to Step 4 (priority queue).
If either field is blank or placeholder → DoR is not met. Add the human-input label. The item will be rechecked on the next run after the maintainer fills the gaps.
From the set of brief-labeled items WITHOUT the human-input label (DoR met), pick exactly one per run. Prioritise by:
If no DoR-met items exist, skip to Step 8 (notify).
On the top-priority item, search the content repository for existing articles on the same topic. Use grep across titles and tags in frontmatter, and glob across filenames.
Decision logic:
Apply the format decision rules from the Content Workflow reference:
Set the format label on the queue item before writing.
Read the issue body, extraction comments, and the author's perspective ("My opinion / take on this") to form the brief. Follow the writing style guide for all project-specific conventions.
Writing steps:
content/ for articles to cross-link
(the related-content check in Step 5 already ruled out duplicates, but
cross-linking is done here).writing-humanizer skill on the file.content/<section>/<slug>.md./notebook/{section}/{slug}), max
2 inbound edits to existing articles (confirm with user before staging).Publishing steps:
Load Reference: Self-Learning. Check for feedback from the last 24 hours across three loops:
Save non-obvious lessons to the appropriate skill or project configuration files, following the rate-limiting rules in the reference.
Report summary:
docs/writing-style-guide.md before writing| Topic | Reference | Load When |
|-------|-----------|-----------|
| Label state machine, DoR, format rules, idea template | references/content-workflow.md | Step 1 (queue scan), Step 3 (readiness), Step 6 (format) |
| Source ingestion logic (YouTube, Spotify, URLs, plain text) | references/source-ingester.md | Step 2 — Ingest sources |
| Project writing rules (sections, frontmatter, slugs, voice, links, PR conventions) | Project's docs/writing-style-guide.md | Step 1.5 — Load writing style guide |
| Content pruning criteria and classification | references/content-pruner.md | Periodic content health checks |
| Self-learning feedback loops and lesson storage | references/self-learning.md | Step 8 — Self-learning |
development
Use when implementing any logic, fixing any bug, or changing any behaviour. Use when you need to prove code works, when a bug report arrives, or when modifying existing functionality. Do NOT use for config changes, data migrations, or dependency updates.
development
Use when starting a new feature, when requirements are unclear, when asked to write code without a clear spec, or before any non-trivial implementation. Do NOT use for trivial bug fixes or one-line changes.
development
Use when you want authoritative, source-cited code free from outdated patterns. Use when building with any framework or library where correctness matters. Detects the stack from dependency files, fetches official documentation, implements following documented patterns, and cites sources for every framework-specific decision.
development
Use when preparing to ship a feature, release, or deployment. Use before merging to main, creating a release, or deploying to production. Do NOT use for CI-only changes or internal refactors that don't reach production.