Eunomia Content Patrol
Run the content operation as a thin orchestrator. Delegate substantive work to
the owning skill, then confirm the public result without creating filler.
Required Context
Read these before routing work:
CLAUDE.md
.agents/README.md
draft/plan/README.zh.md
draft/plan/publishing-queue.zh.md
- today's
draft/media/YYYY-MM-DD/ workspace and recent run log, when present
.github/publisher/media/README.md
.github/publisher/media/community-feedback.md
.github/publisher/media/not-published.md
- relevant
.github/publisher/media/platforms/*.json
Role Boundary
This skill:
- reads operational state;
- finds the first eligible authorized task;
- invokes the correct child skill;
- checks that preparation, publication, and public-page verification completed;
- updates the queue, ledger, and compact run record when useful.
It does not:
- search news or choose a thesis;
- write a Blog article, platform post, or reply;
- pretend a draft or open PR is a completed publication;
- perform a child publisher's platform work directly.
Daily Report, Weekly Analysis, and research-report production belong to a
separate workflow. Do not invoke, schedule, draft, or publish them from this
patrol.
Routing Map
- Invoke
eunomia-social-radar for public performance, citations, comments,
discussions, and response opportunities.
- Invoke
blog-writer and blog-writing-style for project articles, tutorials,
releases, engineering explanations, and explicitly human-editorial Blog work.
- Invoke the matching platform publisher for authorized LinkedIn, Xiaohongshu,
Zhihu, Juejin, X, Reddit, Medium, DEV, Hacker News, or Lobsters actions.
- Invoke
content-launch-planner only when a new multi-platform launch needs a
plan not already represented in the queue.
Do not duplicate a child skill's workflow inside this orchestrator.
Daily Orchestration
- Read the rolling queue, prepared artifacts, platform ledgers, and the
previous run's next action. A global pause overrides every item it covers.
Scan from the top for the first eligible unfinished task explicitly marked
排队; bypass 待确认 and 阻塞 items without letting them stall unrelated
platforms, while 跳过 records a permanently rejected item.
- Invoke
eunomia-social-radar to refresh the observable results and active
conversations around published content.
- Collect the child results and identify the publication actions authorized
for the current window. The normal target is one publication per local
calendar day. If recent days with eligible queue work ended without a
confirmed publication because of an operational blocker, carry one catch-up
slot per missed day. Use those slots on the next eligible tasks, never more
than one publication per platform in the same day. Intentional pauses and
days with no eligible task do not create catch-up slots.
- Invoke the matching publisher skill for each authorized action. Let that
skill own copy adaptation, its documented API or visible-browser submission
path, preview, final public-page QA, the action itself, and platform-ledger
updates. If one action reaches a real platform blocker, mark it
阻塞 with
the exact recovery condition and continue to the next eligible task; do not
consume a publication or catch-up slot until a public result is confirmed.
- Confirm the observable result returned by each child skill. Update the
rolling queue and platform ledger first. If a separate run record is useful,
write completed actions, real URLs, artifact paths, blockers, and next
actions to
draft/media/YYYY-MM-DD/run-log.md.
- Confirm that
eunomia-social-radar appended today's compact checkpoint to
.github/publisher/media/community-feedback.md. Do not copy that checkpoint
into the run log.
Do not create a standalone orchestration report.
Scheduled Execution Authority
Each eligible queue item explicitly marked 排队 within today's normal or
catch-up slots is standing authorization to complete the named platform action
end to end, including preparation, preview, publication, public-page QA, and
ledger updates.
Do not ask for another confirmation or let a child publisher's normal
confirmation step stop an authorized scheduled run. Resolve routine details
from the queue, artifacts, ledgers, publisher conventions, and visible account
state. A draft or preview is not completion when the task calls for publication.
No other queue status grants that authority. Manual patrol runs do not inherit
standing authority unless the user explicitly asks to execute the tasks.
Do not mark a task blocked until practical recovery paths have been attempted
and a real external condition prevents completion. Record the attempted action
and exact external condition rather than a generic process objection.
Never infer authorization for private messages, connection requests, follows,
likes, votes, account settings, monetization changes, or deletion.
Medium and DEV publishers use their documented APIs by default; all other
platform actions use normal visible-browser workflows. Never use hidden
platform APIs, background endpoints, or scraping datasets.
No-Filler Rule
Do not manufacture a visible artifact to satisfy the scheduler. Match the
outcome to the task: a publishing task requires a published item, while a
monitoring task may produce an observation or response candidate. A draft or
prepared artifact does not substitute for a scheduled publication. A run log
is an audit record, not the substantive output, and should not be created only
to satisfy cadence.
Do not create per-article figure inventories, platform-hook notes, publish-QA
notes, or other disposable workflow evidence. Keep necessary checks in working
context and put only final platform artifacts, durable skill lessons, or real
exceptions in the repository.
Run Summary
When a separate summary is useful, record one compact entry in
draft/media/YYYY-MM-DD/run-log.md containing:
- date and run mode
- child skills invoked
- published, reposted, or replied URLs
- prepared artifact paths
- social-performance or conversation findings worth acting on
- blocked actions and their exact missing condition
- next concrete action
Do not copy full child reports, browsing transcripts, or raw metric inventories
into the run log.
Do not create a monthly daily-log file.
1---2name: eunomia-content-patrol3description: Orchestrate the scheduled or manual eunomia.dev content operation. Use when an agent needs to read the rolling publication queue, invoke eunomia-social-radar for public performance and conversations, route explicitly authorized platform actions to publisher skills, and confirm end-to-end completion. This skill coordinates monitoring and publishing but does not own Daily Report, research-report, or Weekly Analysis workflows.4---56# Eunomia Content Patrol78Run the content operation as a thin orchestrator. Delegate substantive work to9the owning skill, then confirm the public result without creating filler.1011## Required Context1213Read these before routing work:1415- `CLAUDE.md`16- `.agents/README.md`17- `draft/plan/README.zh.md`18- `draft/plan/publishing-queue.zh.md`19- today's `draft/media/YYYY-MM-DD/` workspace and recent run log, when present20- `.github/publisher/media/README.md`21- `.github/publisher/media/community-feedback.md`22- `.github/publisher/media/not-published.md`23- relevant `.github/publisher/media/platforms/*.json`2425## Role Boundary2627This skill:2829- reads operational state;30- finds the first eligible authorized task;31- invokes the correct child skill;32- checks that preparation, publication, and public-page verification completed;33- updates the queue, ledger, and compact run record when useful.3435It does not:3637- search news or choose a thesis;38- write a Blog article, platform post, or reply;39- pretend a draft or open PR is a completed publication;40- perform a child publisher's platform work directly.4142Daily Report, Weekly Analysis, and research-report production belong to a43separate workflow. Do not invoke, schedule, draft, or publish them from this44patrol.4546## Routing Map4748- Invoke `eunomia-social-radar` for public performance, citations, comments,49 discussions, and response opportunities.50- Invoke `blog-writer` and `blog-writing-style` for project articles, tutorials,51 releases, engineering explanations, and explicitly human-editorial Blog work.52- Invoke the matching platform publisher for authorized LinkedIn, Xiaohongshu,53 Zhihu, Juejin, X, Reddit, Medium, DEV, Hacker News, or Lobsters actions.54- Invoke `content-launch-planner` only when a new multi-platform launch needs a55 plan not already represented in the queue.5657Do not duplicate a child skill's workflow inside this orchestrator.5859## Daily Orchestration60611. Read the rolling queue, prepared artifacts, platform ledgers, and the62 previous run's next action. A global pause overrides every item it covers.63 Scan from the top for the first eligible unfinished task explicitly marked64 `排队`; bypass `待确认` and `阻塞` items without letting them stall unrelated65 platforms, while `跳过` records a permanently rejected item.662. Invoke `eunomia-social-radar` to refresh the observable results and active67 conversations around published content.683. Collect the child results and identify the publication actions authorized69 for the current window. The normal target is one publication per local70 calendar day. If recent days with eligible queue work ended without a71 confirmed publication because of an operational blocker, carry one catch-up72 slot per missed day. Use those slots on the next eligible tasks, never more73 than one publication per platform in the same day. Intentional pauses and74 days with no eligible task do not create catch-up slots.754. Invoke the matching publisher skill for each authorized action. Let that76 skill own copy adaptation, its documented API or visible-browser submission77 path, preview, final public-page QA, the action itself, and platform-ledger78 updates. If one action reaches a real platform blocker, mark it `阻塞` with79 the exact recovery condition and continue to the next eligible task; do not80 consume a publication or catch-up slot until a public result is confirmed.815. Confirm the observable result returned by each child skill. Update the82 rolling queue and platform ledger first. If a separate run record is useful,83 write completed actions, real URLs, artifact paths, blockers, and next84 actions to `draft/media/YYYY-MM-DD/run-log.md`.856. Confirm that `eunomia-social-radar` appended today's compact checkpoint to86 `.github/publisher/media/community-feedback.md`. Do not copy that checkpoint87 into the run log.8889Do not create a standalone orchestration report.9091## Scheduled Execution Authority9293Each eligible queue item explicitly marked `排队` within today's normal or94catch-up slots is standing authorization to complete the named platform action95end to end, including preparation, preview, publication, public-page QA, and96ledger updates.9798Do not ask for another confirmation or let a child publisher's normal99confirmation step stop an authorized scheduled run. Resolve routine details100from the queue, artifacts, ledgers, publisher conventions, and visible account101state. A draft or preview is not completion when the task calls for publication.102103No other queue status grants that authority. Manual patrol runs do not inherit104standing authority unless the user explicitly asks to execute the tasks.105106Do not mark a task blocked until practical recovery paths have been attempted107and a real external condition prevents completion. Record the attempted action108and exact external condition rather than a generic process objection.109110Never infer authorization for private messages, connection requests, follows,111likes, votes, account settings, monetization changes, or deletion.112113Medium and DEV publishers use their documented APIs by default; all other114platform actions use normal visible-browser workflows. Never use hidden115platform APIs, background endpoints, or scraping datasets.116117## No-Filler Rule118119Do not manufacture a visible artifact to satisfy the scheduler. Match the120outcome to the task: a publishing task requires a published item, while a121monitoring task may produce an observation or response candidate. A draft or122prepared artifact does not substitute for a scheduled publication. A run log123is an audit record, not the substantive output, and should not be created only124to satisfy cadence.125Do not create per-article figure inventories, platform-hook notes, publish-QA126notes, or other disposable workflow evidence. Keep necessary checks in working127context and put only final platform artifacts, durable skill lessons, or real128exceptions in the repository.129130## Run Summary131132When a separate summary is useful, record one compact entry in133`draft/media/YYYY-MM-DD/run-log.md` containing:134135- date and run mode136- child skills invoked137- published, reposted, or replied URLs138- prepared artifact paths139- social-performance or conversation findings worth acting on140- blocked actions and their exact missing condition141- next concrete action142143Do not copy full child reports, browsing transcripts, or raw metric inventories144into the run log.145Do not create a monthly daily-log file.