用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
直接命令不会经过审查 Prompt;运行前请先检查来源。
npx skills add https://github.com/Tzeusy/butlers --skill progress-digest命令会保持在同一行。复制前请横向滚动并检查完整内容。
想先保存到本地?可下载 SkillsMP 当前能够提供的文件。
正在显示 SKILL.md
| name | progress-digest |
| description | Generate weekly learning progress digests from analytics snapshots and recent trends. |
| version | 1.0.0 |
Weekly learning progress digest. Read the last 7 days of analytics snapshots across all active
mind maps, compute trends, highlight achievements, flag struggling areas, and deliver a structured
summary to the owner via their preferred notification channel through notify().
Use this skill when:
weekly-progress-digest scheduled task fires (cron: 0 9 * * 0, Sundays at 09:00)Call these tools to collect the analytics data:
analytics_get_cross_topic() — comparative stats across all active mind maps.
Returns: topics (list with mastery_pct, retention_rate_7d, velocity per map), portfolio_mastery.
For each mind_map_id in the cross-topic result, call:
analytics_get_trend(mind_map_id, days=7) — last 7 daily snapshots, ordered ascending.
The metrics dict per snapshot includes: mastered_nodes, total_nodes, mastery_pct,
retention_rate_7d, velocity_nodes_per_week, struggling_nodes, estimated_completion_days.
analytics_get_snapshot(mind_map_id) — latest snapshot for each map (if no 7-day trend).
Call this at most once per map. It always returns a status field: status="ok" carries the
snapshot (with snapshot_date as an ISO-8601 string); status="not_found" means none exists.
On status="not_found", do not retry the same call — fall back to mastery_get_map_summary()
and note that weekly analytics are not available yet.
memory_search(query="learning preferences") — check if the user prefers verbose vs. concise
summaries, or has expressed delivery preferences.
For each topic with at least 2 snapshots in the 7-day window, compute trends:
Positive signals to highlight:
mastered_nodes increased since last week's snapshotretention_rate_7d trended upward over the snapshotsvelocity_nodes_per_week increased vs. the prior weekConcern signals to flag:
retention_rate_7d < 0.60 — retention is low; flag for review focuslen(struggling_nodes) >= 3 — multiple concepts struggling; consider curriculum re-planningsessions_this_period == 0 over the 7-day window — topic is idle (no study sessions)estimated_completion_days is very high or None — progress has stalledPortfolio-level insight:
Compare portfolio_mastery to available historical data to show overall momentum.
Format the digest as follows (keep it concise — readable on mobile):
Weekly Learning Progress — [Date]
Portfolio: [portfolio_mastery]% overall mastery across [N] active topics
[Topic 1 — title]
Mastered: [mastered_nodes]/[total_nodes] ([mastery_pct]%) [+N this week if improved]
Retention: [retention_rate_7d]% [↑ or ↓ vs last week if trend available]
Velocity: [velocity] concepts/week
[Flag if struggling: "⚠ [N] concepts need review attention"]
[Flag if idle: "💤 No sessions this week"]
Estimated completion: ~[estimated_completion_days] days
[Topic 2 — title]
...
Highlights:
- [Achievement 1, e.g. "Mastered 5 Python concepts this week"]
- [Achievement 2, e.g. "Retention rate improved from 68% to 84%"]
Watch areas:
- [Struggle flag, e.g. "Python closures: low retention (42%) — review sessions recommended"]
- [Idle flag, e.g. "Calculus: no sessions in 7 days"]
Estimated completions:
- [Topic]: ~[N] days at current pace
Tone: Keep it encouraging. Acknowledge effort, not just outcomes. Frame struggle areas as opportunities, not failures.
For the weekly digest, deliver to the owner via their preferred notification channel. Call
notify() without naming a channel and let it route to the owner's preferred channel:
notify(
intent="send",
subject="Your weekly learning progress - [Date]",
message=<formatted_digest>,
request_context=<session_request_context>
)
Do not hardcode a channel. notify() resolves the owner's preferred channel automatically; the
subject is used when the resolved channel supports it (for example email) and ignored otherwise.
For any topic where retention_rate_7d < 0.60 or len(struggling_nodes) >= 3:
Call:
curriculum_replan(
mind_map_id=<map_id>,
reason="analytics feedback: low retention / multiple struggling concepts"
)
Note in the digest (before delivery): "I've adjusted the learning path for [topic] to prioritize your struggling concepts."
If the digest contains a notable milestone or significant pattern shift, record it:
memory_store_fact(
subject=<topic_label>,
predicate="study_pattern",
content=<brief note about trend, e.g. "mastery accelerating — 5 concepts/week pace">,
permanence="standard",
importance=5.0,
tags=[<topic_tag>, "progress", "weekly-digest"],
entity_id=<map_entity_id>
)
Note: map_entity_id is the entity_id of the mind map's root concept node. Neither
analytics_get_snapshot() nor mind_map_get() return a map-level entity_id directly —
call mind_map_node_list(mind_map_id=<id>) and use the entity_id of the root node
(lowest depth, or the node with no incoming prerequisite edges). If no clear root can be
determined, omit entity_id — it is not required for user/topic-level study pattern facts.
analytics_get_cross_topic() called to get portfolio-level dataanalytics_get_trend() called for each active mind mapnotify(intent="send", subject=..., ...) to the owner's
preferred channel (no hardcoded channel)curriculum_replan()) for any topic with low retention
or 3+ struggling nodesGuide for discovering, analyzing, and pruning the Butlers test suite. Use when working on test condensation beads (Phase 1 epic bu-rhztl and Phase 2 epic bu-hg8rl both CLOSED; Phase 3 maintenance cycle underway 2026-06-21), assessing test bloat, identifying pruning targets, or rewriting tests to be contract-driven. Triggers on test reduction, test pruning, test consolidation, or condensation tasks for this project. Also use when a fresh session needs to assess test health, create new condensation beads, or resume in-progress condensation work.
Generate a weekly home energy digest with trends, top consumers, and recommendations.
Orchestrate a UX redesign of a Butlers dashboard page (or sub-page set) using /project-direction as the spec+beads engine, with redesign-specific upfront phases for vision capture, asset ingestion, impact analysis, backend-contract derivation, LLM-cost feasibility, manifesto/identity preservation, and a th-design design-bar audit. The binding design language is the Dispatch spec (openspec/specs/dashboard-design-language/spec.md); bundles live under pr/overview/ and resolve via references/bundle-registry.md. Use when asked to redesign a dashboard page, with or without a Claude Design bundle. Triggers on "redesign the X page", "plan the Y redesign", "integrate the redesign bundle", "what would it take to ship the SLUG redesign", "design language integration for AREA".
基于 SOC 职业分类