Install
$ agentstack add skill-chemny-cmm-content-factory-cmm-content-planning ✓ scanned · ✓ verified, works with Claude Code, Cursor, and more.
Security review
✓ PassedNo issues found. Passed automated security review. · v0.1.0 How review works →
- ✓ Prompt-injection patterns
- ✓ Secret / credential exfiltration
- ✓ Dangerous shell & filesystem operations
- ✓ Untrusted network calls
- ✓ Known-malicious package signatures
What it can access
- ✓ Network access No
- ✓ Filesystem access No
- ✓ Shell / process execution No
- ✓ Environment & secrets No
- ✓ Dynamic code execution No
From automated source analysis of v0.1.0. “Used” means the capability is present in the source — more access means more to trust, not that it’s unsafe.
Verified badge
Passed review? Show it. Paste this badge into your README, it links to the public security report.
Reliability & compatibility
Declared compatibility
Compatibility is declared by the source manifest. End-to-end runtime verification is coming, see below.
We're building live execution health for every listing: tool-call success rate, median latency, uptime, and last-checked timestamps, measured, not self-reported. It isn't live yet, so we don't show numbers we can't stand behind.
How agent discovery & health will work →About
CMM Content Planning
cmm-content-planning is the CMM planning layer between information input and content production.
It can score source/topic candidates into topic_card records, diagnose whether and how a topic should be made, and turn a selected topic_card into a standard content_plan. Downstream writing, visual, video, and publishing skills should consume the content_plan, not a bare topic title.
Boundary
Use this skill for:
- Converting
topic_cardintocontent_plan. - Scoring source cards or topic candidates.
- Producing a short topic board for user selection.
- Diagnosing whether a selected topic is worth making.
- Choosing platform and format.
- Defining angle, evidence, risks, expression strategy, and first action.
- Preparing structured input for
cmm-content-writing,cmm-visual-production,
cmm-video-production, and cmm-publishing.
Do not use this skill to:
- Collect information. Use the research step per
cmm-content-factory/references/research-policy.md (host-native search → cmm-web-search → guide user for material).
- Draft final articles or posts.
- Generate images, videos, or platform drafts.
Scope
This skill owns topic scoring, selection, and content diagnosis. All planning logic is internalized in references/planning-method.md and is self-contained; no external skill is required.
Input
Preferred input is one of:
source_card[]fromcmm-web-search, subscription adapters, or user material.topic_candidate[]from a collection system.topic_cardfrom a previous selection step.- A raw user topic.
When the input is a source or candidate list, score it and produce topic_card records before planning. When the input is already a chosen topic_card, skip pool scoring and continue to diagnosis.
topic_card:
title: ""
core_angle: ""
why_now: ""
topic_type: ""
target_audience: []
target_platform: ""
recommended_formats: []
final_score: 0
score_breakdown: {}
account_fit_note: ""
primary_source: {}
reference_sources: []
creation_notes: ""
risks: []
If the user has only a rough topic, build a minimal topic_card first. Do not pretend missing sources or platform choices are known.
Read references/content-plan-contract.md when exact fields are needed. Read references/planning-method.md for scoring, platform fit, and diagnosis rules.
Workflow
- Identify the input state:
- source cards
- topic candidates
- full
topic_card - partial
topic_card - raw topic from the user
- If there is a pool, score and filter candidates:
- load the user profile (
~/.cmm/profile/) first; apply its
topic_preferences.avoid and pillar hard rules before scoring, then use the profile-driven score shape with account_fit (falls back to the shipped default-profile.yaml when the user has none)
- reject unsupported, vague, duplicated, or marketing-only items
- keep sources attached to each surviving topic
- produce a compact
topic_boardwhen user choice is needed; show each
topic's account_fit_note
- If there is only one topic, build or normalize a
topic_card. - Extract the planning facts:
- topic
- core angle
- why now
- audience
- platform hints
- recommended formats
- supporting sources
- risks and weak assumptions
- Decide platform and format.
- Select styles: pick one writing/visual/layout template id and the user
profile per cmm-content-factory/references/styles/selection-rules.md. Precedence: same-turn user instruction > user profile default_styles (~/.cmm/profile/) > shipped default-profile.yaml default_styles > rules table. If no personal profile exists, load the shipped references/styles/default-profile.yaml (persona-neutral) and remind the user once to create their own. Record style_selection with a one-line selection_reason in the content_plan.
- Diagnose the content shape:
- whether the topic is worth making
- what the content should prove
- what evidence is usable
- what should be avoided
- whether the expression is clean, concrete, and platform-fit
- whether visual or video production is needed
- Produce a
content_plan. - Stop. Do not draft final content unless the user explicitly asks for the next
workflow step.
Topic Scoring Rules
Use an explainable score before creative judgment:
final_score =
0.30 * base_signal
0.20 * news_value
0.15 * source_strength
0.15 * creator_value
0.10 * platform_fit
0.10 * freshness
- noise_penalty
Scores are capped to [0, 1].
Reject candidates that cannot answer both:
- What happened or changed?
- Why does it matter to the target audience now?
Prefer source-backed substance over polished generated titles. If a title looks templated but the source details are strong, keep the topic and regenerate the angle.
Diagnosis Dimensions
Before producing the final content_plan, diagnose five dimensions:
| Dimension | Question | Plan effect | |---|---|---| | content_value | Is there a clear event, change, contrast, or useful problem? | Decides whether to proceed or block. | | format_fit | Is the recommended format appropriate for the topic and platform? | Sets platform, format, and downstream needs. | | evidence_strength | Are claims supported by inspected or credible sources? | Fills evidence and risks. | | expression_efficiency | Can the core claim be said in one clear sentence? | Sets core_claim and outline direction. | | title_visual_fit | Does the topic have a cover/title/card angle? | Sets title_cover_direction and visual needs. |
Planning Rules
platformandformatmust be concrete. Avoid "all platforms" as the final
plan unless the task is explicitly multi-platform.
- Evidence must come from
topic_card, source cards, or user-provided material.
If evidence is weak, write that into risks.
- Reject or block topics that are only slogans, empty announcements, vague
opinions, marketing CTAs, or unsupported claims.
expression_strategydescribes how to say it; it must not become a final
article draft.
title_cover_directiongives a direction only. Do not batch-generate titles
here.
first_actionmust be one concrete next step.- Default output status is
draft.
Format Routing
Use these defaults unless the user or topic_card says otherwise:
| Topic shape | Recommended format | |---|---| | Deep analysis, policy, business implication, long reasoning | longform_analysis | | Tool list, workflow, tutorial, practical comparison | visual_note or tutorial | | Strong conflict, controversy, before/after, demo story | short_video_script | | Fast opinion, platform change, developer-facing observation | thread | | Product/company/creator example | case_study |
Platform hints:
wechat: long-form analysis, case study, policy/business explanation.xiaohongshu: visual note, checklist, tool list, practical workflow.douyin: short-video script, conflict hook, demo story.bilibili: tutorial, deep-dive video, structured explainer.x: thread, hot take, developer note.weibo: short post, commentary, image-text post.
Output
If the input is a candidate pool, output a concise topic_board first and stop for user selection unless the user has already authorized automatic selection.
topic_board:
selection_status: needs_user_choice
topics:
- title: ""
core_angle: ""
why_now: ""
recommended_platforms: []
recommended_formats: []
final_score: 0
score_breakdown: {}
risks: []
source_refs: []
rejected:
- title: ""
reason: ""
If the topic is selected, always output a concise diagnosis plus a machine-usable content_plan.
content_plan:
topic: ""
audience: ""
platform: ""
format: ""
core_angle: ""
core_claim: ""
evidence:
- title: ""
source: ""
url: ""
usage: ""
risks: []
expression_strategy: ""
title_cover_direction: ""
outline_direction: []
first_action: ""
downstream_needs:
writing: true
visual: true
video: false
publishing: false
diagnosis:
content_value: ""
format_fit: ""
evidence_strength: ""
expression_efficiency: ""
title_visual_fit: ""
status: draft
Handoff
After producing content_plan, route only when the user asks for the next step:
- Writing:
cmm-content-writing - Visuals:
cmm-visual-production - Video:
cmm-video-production - Publishing:
cmm-publishing
Source & license
This open-source skill is cataloged on AgentStack and links to its original source — we do not rehost the code.
- Author: chemny
- Source: chemny/cmm-content-factory
- License: MIT
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.