| name | content-calendar |
| description | Manage editorial content through 6 pipeline stages. |
| user-invocable | false |
| allowed-tools | ["Read","Write","Bash","Grep","Glob","Edit"] |
| routing | {"triggers":["content pipeline","editorial calendar","publishing schedule","content schedule","publication plan","plan series","multi-part content","content series","article series","content arc","brainstorm topics","content ideas","blog topic ideas","what to write about","angles","story angles","headline","headline options","headline for","headlines","article title","title options","subject line","better title","repurpose this","adapt for social","turn this into posts","content from article","content from demo","content from doc","write variants for","social content from","platform variants","repurpose for","news collection","collect news","qualify news items","news triage","filter news feed","check news freshness"],"not_for":"general research reports — that is research-pipeline. Pick this when the input is a stream of news items to qualify for a content pipeline.","category":"content-creation","pairs_with":["publish","voice-writer","x-api","fact-check"]} |
Content Calendar Skill
Manage editorial content through 6 pipeline stages: Ideas, Outlined, Drafted, Editing, Ready, Published. All pipeline state lives in a single content-calendar.md file -- this is the sole source of truth, never store state elsewhere.
Reference Loading Table
| Signal | Load These Files | Why |
|---|
| calendar file location, template, section formats | calendar-format.md | Loads detailed guidance from calendar-format.md. |
| errors, error handling | error-handling.md | Loads detailed guidance from error-handling.md. |
| velocity tracking and stuck-content detection | metrics.md | Loads detailed guidance from metrics.md. |
| series planning: multi-part structure, cross-linking, cadence | series-planner.md | Series planning domain from folded series-planner skill. |
| topic brainstorming: problem mining, gap analysis, scoring | topic-brainstormer.md | Topic ideation domain from folded topic-brainstormer skill. |
| headlines: charge, volume, tighten, format adaptation | headlines.md | Headline generation domain from folded headlines skill. |
| content repurposing: platform-native social variants | content-engine.md | Content repurposing domain from folded content-engine skill. |
| news collection: item qualification, freshness forensics | news-collection.md | News collection domain from folded news-collection skill. |
| executing view, add, move, schedule, archive operations | operations.md | Loads detailed guidance from operations.md. |
| stage definitions and transition rules | pipeline-stages.md | Loads detailed guidance from pipeline-stages.md. |
Instructions
Phase 1: READ PIPELINE
Goal: Load and validate the current calendar state before any mutation.
Memory of pipeline state is unreliable -- always read the actual file, because assumed state leads to overwrites of changes made by other processes or manual edits.
- Read
content-calendar.md from the project root. Also read the repository CLAUDE.md to ensure compliance with project-specific rules.
- Parse pipeline sections -- extract entries from Ideas, Outlined, Drafted, Editing, Ready, Published, and Historical sections.
- Validate file structure -- all required sections exist, counts match actual entries.
Gate: Calendar file loaded and parsed successfully. All sections accounted for. Proceed only when gate passes.
Phase 2: EXECUTE OPERATION
Goal: Perform the requested pipeline operation -- only the operation requested. No speculative reorganization, no "while I'm here" reformatting of unrelated sections.
Operation: View Pipeline
- Count entries in each stage
- Identify upcoming scheduled content (next 14 days)
- Identify in-progress content (Outlined, Drafted, Editing) -- emphasize these as actively being worked on
- Gather recent publications (last 30 days)
- Display dashboard with progress indicators
- Optionally flag content stuck in a stage for 14+ days or show velocity metrics if requested
Operation: Add Idea
- Validate topic name is non-empty
- Search all sections for duplicate titles (case-insensitive); warn if a matching title exists because duplicates clutter the pipeline
- Append
- [ ] [Topic name] to Ideas section
- Update pipeline count in overview table
Operation: Move Content
Content moves forward through defined stages only -- each transition represents real editorial work completed, so skipping stages misrepresents progress.
- Find topic in its current section (search all sections)
- Validate target stage is the next sequential stage:
- Ideas -> Outlined -> Drafted -> Editing -> Ready -> Published
- Remove entry from current section
- Add to target section with timestamp metadata (every transition records YYYY-MM-DD):
- outlined:
(outline: YYYY-MM-DD)
- drafted:
(draft: YYYY-MM-DD)
- editing:
(editing: YYYY-MM-DD)
- ready:
(ready: YYYY-MM-DD) -- prompt for a scheduled publication date because content without a date clogs the pipeline and goes stale
- published:
(published: YYYY-MM-DD)
- Update pipeline counts
Operation: Schedule Content
- Find topic (must be in Ready section)
- Validate date is today or future
- Update or add
Scheduled: YYYY-MM-DD to entry
- Update file
Operation: Archive Published
Archive prevents the Published section from growing unbounded, which makes the dashboard cluttered and counts misleading.
- Find Published entries older than current month
- Move to appropriate
### YYYY-MM section in Historical
- Update pipeline counts
Gate: Operation executed with all validations passing. Proceed only when gate passes.
Phase 3: WRITE AND CONFIRM
Goal: Persist changes and verify the write succeeded.
Read the full calendar file before writing -- never truncate or lose existing entries.
- Write the updated calendar file back to disk.
- Re-read the file and verify the change is present. Looking correct is not the same as being correct; the re-read proves it.
- Display confirmation with relevant dashboard section showing the change.
Gate: File written, re-read confirms changes persisted. Operation complete.
Error Handling
Error: "Calendar file not found"
Cause: content-calendar.md does not exist in the project
Solution:
- Create initial calendar file with all empty sections and overview table
- Confirm file creation to user
- Proceed with requested operation
Error: "Topic not found in pipeline"
Cause: User referenced a topic name that does not match any entry
Solution:
- Search all sections for partial matches (case-insensitive)
- Suggest closest matches if available
- Show current pipeline state so user can identify the correct title
Error: "Invalid stage transition"
Cause: User attempted to skip a stage (e.g., Ideas directly to Ready)
Solution:
- Explain the required stage sequence
- Show the topic's current stage and the next valid stage
- Ask user to confirm sequential move or move to adjacent stage
References
| Task | Load |
|---|
| Stage definitions, transition criteria | ${CLAUDE_SKILL_DIR}/references/pipeline-stages.md |
| File format, section structure, date fields | ${CLAUDE_SKILL_DIR}/references/calendar-format.md |
| Command reference, edge cases per operation | ${CLAUDE_SKILL_DIR}/references/operations.md |
| File not found, corrupt sections, count drift, malformed dates | ${CLAUDE_SKILL_DIR}/references/error-handling.md |
| Velocity metrics, stuck content, pipeline health dashboard | ${CLAUDE_SKILL_DIR}/references/metrics.md |