{"skill":{"slug":"cross-channel-daily-review","displayName":"Cross Channel Daily Review","summary":"Create a simple, repeatable daily review workflow across whatever conversation surfaces are available. Use when a user wants one raw note per source, one mer...","description":"---\nname: cross-channel-daily-review\ndescription: Create a simple, repeatable daily review workflow across whatever conversation surfaces are available. Use when a user wants one raw note per source, one merged daily summary, index maintenance, verification, and an optional short management update for a preferred destination. Best for recurring 24-hour review workflows that should stay reusable, channel-agnostic, easy to verify, and safe to publish.\n---\n\n# Cross-Channel Daily Review\n\n## Overview\n\nUse this skill to run a reusable, channel-agnostic daily review workflow:\n\n1. Discover or accept a set of channels.\n2. Create one raw review file per channel.\n3. Generate one synthesized cross-channel review.\n4. Update a machine-readable index.\n5. Generate a boss-mode summary for one primary delivery channel.\n6. Verify outputs before claiming success.\n\nDefault design:\n- **Primary destination:** use the configured preferred destination if present\n- **Delivery mode:** `boss-primary`\n- **Review window:** last 24 hours\n- **Missing sources:** record explicitly; never silently skip them.\n\n## When to use this skill\n\nUse this skill when the user asks for any of the following:\n- “做全渠道每日复盘 / daily cross-channel review”\n- “把不同渠道分别复盘，再统一汇总”\n- “老板模式摘要 / boss summary / management summary”\n- “把 raw、synthesized、index 都生成出来”\n- “让这个流程可复用、可发布、可适配不同渠道”\n- “每天固定时间自动复盘并推送”\n\n## Workflow\n\n### Step 1 — Resolve channels\n\nFirst decide the channel set:\n\n- Prefer **auto-discovery** from available sessions, delivery contexts, or user-provided channel list.\n- If the user explicitly names channels, trust that list.\n- Do **not** hardcode a small fixed list of apps as the only valid sources.\n- Normalize source names to lowercase slugs that match the environment.\n\nRead `references/channel-adapter-spec.md` before implementing or extending channel handling.\n\n### Step 2 — Collect and normalize channel evidence\n\nFor each candidate channel, gather:\n- time window\n- source references (session path, session key, channel id, or equivalent)\n- conversational **scope** inside the channel (DM / group / thread / room / topic)\n- participant shape (single bot, multi-bot, workflow group chat, etc.) when knowable\n- a concise raw excerpt or evidence summary\n- collection status: `active` | `configured` | `missing` | `collection_failed`\n\nNormalize each channel into the common object shape described in `references/channel-adapter-spec.md`.\n\nImportant:\n- do **not** assume one channel has only one bot\n- do **not** assume one channel maps to one conversation\n- support multiple bots and multiple sessions inside the same channel scope\n\n### Step 3 — Write raw review files\n\nWrite one file per channel under:\n\n```text\nmemory/daily-review/raw/YYYY/MM/<channel>_YYYY-MM-DD.md\n```\n\nUse `scripts/write_raw_reviews.py` with normalized JSON when possible.\n\nRules:\n- Always write one file per resolved channel.\n- If a channel has no confirmed data, still write a file with `状态：未检出` or failure reason.\n- Include the checked sources. Do not silently omit missing channels.\n\nTemplate: `assets/raw-template.md`\n\n### Step 4 — Generate the synthesized review\n\nCreate exactly one synthesized report for the date:\n\n```text\nmemory/daily-review/synthesized/YYYY/MM/YYYY-MM-DD.md\n```\n\nThe report must cover these 5 dimensions:\n1. ❌ 做错了什么\n2. ⚠️ 没做好的地方\n3. ✅ 做得好的地方\n4. 📝 遗漏事项\n5. 💡 改进建议\n\nUse `assets/synthesized-template.md` and `references/review-dimensions.md`.\n\n### Step 5 — Update the index\n\nUpdate or append the record in:\n\n```text\nmemory/daily-review/index.json\n```\n\nPrefer `scripts/update_index.py`.\n\nIndex records should capture at least:\n- date\n- active channels\n- missing channels\n- synthesized file path\n- boss summary path (if built)\n- verification status\n\n### Step 6 — Build boss-mode summary\n\nBuild a shorter management summary from the synthesized report.\n\nDefault behavior:\n- `delivery_mode = boss-primary`\n- `boss_channel = primary`\n\nIf the user configured a preferred destination, use it.\nIf that destination is unavailable, fallback to the first verified available destination and state that clearly.\n\nUse `scripts/build_boss_summary.py` and `assets/boss-summary-template.md`.\n\n### Step 7 — Verify before reporting success\n\nRun verification with `scripts/verify_outputs.py` before claiming completion.\n\nMinimum checks:\n- raw files exist for all resolved channels\n- synthesized file exists and is non-empty\n- index updated successfully\n- boss summary exists if requested\n- delivery target resolved successfully\n\nNever report “done” without verification output.\n\n## Delivery modes\n\nRead `references/delivery-modes.md` when choosing output behavior.\n\nSupported modes:\n- `boss-primary` — send only to one primary channel; default\n- `broadcast` — send to multiple channels\n- `generate-only` — write outputs but do not push externally\n\n## Formatting rules\n\nRead `references/formatting-standard.md` when generating user-visible summaries.\n\nHard rules:\n- Keep sections clearly separated.\n- One major numbered point per paragraph block.\n- Do not collapse everything into one dense wall of text.\n- Put the final action checklist in a standalone `text` code block when needed.\n\n## Failure handling\n\nRead `references/failure-handling.md` when anything is missing or degraded.\n\nImportant:\n- Distinguish `missing` from `collection_failed`.\n- Distinguish “no recent data” from “channel not configured”.\n- If delivery falls back from a preferred destination to another verified destination, state it explicitly.\n\n## Resources\n\n### scripts/\n- `discover_channels.py` — scan real OpenClaw session transcripts and produce channel candidates\n- `score_discovery_confidence.py` — attach confidence scores to channel/scope inference results\n- `normalize_channel_data.py` — normalize channel metadata to one schema\n- `write_raw_reviews.py` — write per-channel raw review markdown files\n- `update_index.py` — create/update `index.json` (daily / weekly / monthly)\n- `synthesize_review.py` — generate one synthesized cross-channel review from normalized scope-aware data\n- `render_periodic_summary.py` — generate weekly or monthly rollup summaries\n- `plan_retention.py` — produce retention/archive candidates from index policy\n- `verify_retention_readiness.py` — check whether a month is ready for archive/cleanup\n- `archive_daily_layer.py` — archive eligible daily raw / synthesized / boss outputs into archive tree\n- `mark_archived_records.py` — mark archived daily records inside index metadata\n- `render_cron_plan.py` — render the recommended cron automation chain for this skill\n- `run_retention_cycle.py` — run planner + readiness + archive + mark as one lifecycle step\n- `build_boss_summary.py` — render management summary markdown from synthesized metadata\n- `resolve_delivery_target.py` — resolve requested destination with safe fallback\n- `verify_outputs.py` — verify expected outputs exist and are non-empty\n\n### references/\n- `architecture.md` — system model and data flow\n- `channel-adapter-spec.md` — normalized channel schema and adapter contract\n- `review-dimensions.md` — criteria for the 5 review dimensions\n- `delivery-modes.md` — boss-primary / broadcast / generate-only\n- `formatting-standard.md` — user-visible formatting rules\n- `failure-handling.md` — status model and fallback behavior\n- `lifecycle-automation.md` — archive-first lifecycle stages and recommended automation chain\n- `release-readiness.md` — what is strong now vs what is still pre-release\n- `known-limitations.md` — current gaps and intentionally disabled behavior\n- `validation-report.md` — verified behaviors and remaining checks before public upload\n\n### assets/\n- `raw-template.md`\n- `synthesized-template.md`\n- `boss-summary-template.md`\n- `index-template.json`\n","tags":{"latest":"0.1.1"},"stats":{"comments":0,"downloads":566,"installsAllTime":0,"installsCurrent":0,"stars":0,"versions":2},"createdAt":1773652351731,"updatedAt":1778491943830},"latestVersion":{"version":"0.1.1","createdAt":1773653224468,"changelog":"Remove private-style naming, generalize public wording, and make default delivery fallback channel-agnostic.","license":"MIT-0"},"metadata":null,"owner":{"handle":"panpansirius-cloud","userId":"s17c4w3dnj153ckjvkn1ny2kx984c0yk","displayName":"panpansirius-cloud","image":"https://avatars.githubusercontent.com/u/264842173?v=4"},"moderation":null}