Week Report System
Material-first weekly report workflow for work conversations, documents, and recent repository activity.
What This Skill Does
- Capture work materials into a Git-backed weekly knowledge base
- Support three material types:
conversation, document, repo_activity
- Generate weekly reports from structured materials, with legacy conversation logs as fallback
Hard Rules
- If the user explicitly says
纳入周报素材, 记入周报, 作为周报素材, or equivalent, you must execute material capture.
- When generating a weekly report, you must check
{year}/week{WW}/materials/ first.
- If any readable
materials/*.jsonl files exist, the main report analysis must be based on them.
- You must not generate a report only from
*.txt when structured materials are present.
*.txt digests are a compatibility/debug artifact, not the source of truth.
- If Git sync fails after a capture attempt, you must preserve local status evidence.
- If one session crosses midnight, captured materials must be split by calendar date in file naming.
Important Boundary
This skill can do best-effort automatic capture only when the host agent actually invokes it.
- A skill description is not a system-level post-turn hook
- Do not claim guaranteed logging for every conversation
- When the user cares about completeness, explicitly ingest materials via
scripts/material_ingestor.py
Step 0: First Time — Check Environment
Always run this check first:
echo "USERNAME: ${WEEK_REPORT_GIT_USERNAME:-MISSING}"
echo "TOKEN: $([ -n \"$WEEK_REPORT_GIT_PERSONAL_TOKEN\" ] && echo 'SET' || echo 'MISSING')"
echo "REPO: ${WEEK_REPORT_GIT_REPO:-MISSING}"
- If all three are set, continue with the request
- If any is missing, read
references/setup_guide.md and guide the user through setup
Determine User Intent
| User intent |
Action |
| "写周报" / "生成周报" / "本周总结" / "上周周报" |
Generate report → references/report_generation.md |
| "把这个纳入周报素材" / "记录这次讨论" |
Must capture as material → references/material_ingestion.md |
| "总结这个 plan/experiment 文档并纳入周报" |
Ingest as document material |
| "看某个 repo 最近几天提交并纳入周报" |
Ingest as repo_activity material |
| "周报系统怎么用" / "怎么设置" / "skill介绍" |
Show guide → references/user_guide.md |
| Any other work-related message |
Answer normally, then best-effort capture a conversation material |
Material Capture Workflow
Full instructions: references/material_ingestion.md
Quick summary:
- Build a structured material event with
source_type, project, title, summary, evidence, tags, outcome, next_actions
- Use
scripts/material_ingestor.py or scripts/conversation_logger.py to persist the event
- Treat
materials/*.jsonl as the source of truth
- Write
*.txt digest only as a compatibility/debug view
- Update local sync status files for observability
- Fail silently for the user, but leave local status/queue evidence for debugging
Weekly Report Generation
Read references/report_generation.md for the full process.
Quick summary:
- Pull latest data from Git
- Check
materials/*.jsonl under {year}/week{WW}/ first
- If any structured materials exist, base the report on them
- Fall back to legacy
.txt logs only if structured materials are missing or unreadable
- Group by project / workstream, extract evidence and outcomes, then render the report
- Optionally save the report to
{year}/week{WW}/report-{YYYYMMDD}-{HHmmss}.md
Reference Files
| File |
When to read |
references/setup_guide.md |
Missing env vars |
references/material_ingestion.md |
Capturing conversation, document, or repo materials |
references/conversation_tracking.md |
Best-effort conversation capture and local observability |
references/report_generation.md |
Generating reports |
references/user_guide.md |
User asks how to use the system |
Scripts
| Script |
Purpose |
scripts/git_operations.py |
Clone / pull / push the report repo |
scripts/conversation_logger.py |
Capture conversation materials and maintain digest files |
scripts/material_ingestor.py |
Explicitly ingest conversation, document, or repo_activity materials |
Important Notes
- Best-effort auto capture is useful, but not a guarantee of complete logging
- Prefer explicit material ingestion for important plans, experiments, or repo analysis
- Skip recording only for high-confidence sensitive content such as passwords, private keys, PATs, or explicit "不要记录"
- Recording failures must not interrupt the user response, but they should leave status clues locally
- Structured material events live in
materials/*.jsonl and are the primary source for report generation
- One session can append to one digest file per calendar date for compatibility/debugging
1---2name: week-report-system3description: Material-based AI weekly report system. Use when the user mentions 周报, week report, weekly report, 本周总结, 工作总结, 写周报, 生成周报, 帮我写周报, 本周工作, 上周周报, 查看周报, 周报系统, 记录工作, 纳入周报素材, 周报素材, plan, experiment, 方案文档, 复盘文档, or asks to summarize recent repo activity into weekly report materials. This skill captures work materials, syncs them to Git, and generates weekly reports from structured materials.4---56# Week Report System78Material-first weekly report workflow for work conversations, documents, and recent repository activity.910## What This Skill Does1112- Capture work materials into a Git-backed weekly knowledge base13- Support three material types: `conversation`, `document`, `repo_activity`14- Generate weekly reports from structured materials, with legacy conversation logs as fallback1516## Hard Rules17181. If the user explicitly says `纳入周报素材`, `记入周报`, `作为周报素材`, or equivalent, you **must** execute material capture.192. When generating a weekly report, you **must** check `{year}/week{WW}/materials/` first.203. If any readable `materials/*.jsonl` files exist, the main report analysis **must** be based on them.214. You **must not** generate a report only from `*.txt` when structured materials are present.225. `*.txt` digests are a compatibility/debug artifact, not the source of truth.236. If Git sync fails after a capture attempt, you **must** preserve local status evidence.247. If one session crosses midnight, captured materials **must** be split by calendar date in file naming.2526## Important Boundary2728This skill can do **best-effort automatic capture only when the host agent actually invokes it**.2930- A skill description is **not** a system-level post-turn hook31- Do **not** claim guaranteed logging for every conversation32- When the user cares about completeness, explicitly ingest materials via `scripts/material_ingestor.py`3334## Step 0: First Time — Check Environment3536Always run this check first:3738```bash39echo "USERNAME: ${WEEK_REPORT_GIT_USERNAME:-MISSING}"40echo "TOKEN: $([ -n \"$WEEK_REPORT_GIT_PERSONAL_TOKEN\" ] && echo 'SET' || echo 'MISSING')"41echo "REPO: ${WEEK_REPORT_GIT_REPO:-MISSING}"42```4344- If all three are set, continue with the request45- If any is missing, read `references/setup_guide.md` and guide the user through setup4647## Determine User Intent4849| User intent | Action |50|---|---|51| "写周报" / "生成周报" / "本周总结" / "上周周报" | Generate report → `references/report_generation.md` |52| "把这个纳入周报素材" / "记录这次讨论" | Must capture as material → `references/material_ingestion.md` |53| "总结这个 plan/experiment 文档并纳入周报" | Ingest as `document` material |54| "看某个 repo 最近几天提交并纳入周报" | Ingest as `repo_activity` material |55| "周报系统怎么用" / "怎么设置" / "skill介绍" | Show guide → `references/user_guide.md` |56| Any other work-related message | Answer normally, then best-effort capture a `conversation` material |5758## Material Capture Workflow5960Full instructions: `references/material_ingestion.md`6162Quick summary:631. Build a structured material event with `source_type`, `project`, `title`, `summary`, `evidence`, `tags`, `outcome`, `next_actions`642. Use `scripts/material_ingestor.py` or `scripts/conversation_logger.py` to persist the event653. Treat `materials/*.jsonl` as the source of truth664. Write `*.txt` digest only as a compatibility/debug view675. Update local sync status files for observability686. Fail silently for the user, but leave local status/queue evidence for debugging6970## Weekly Report Generation7172Read `references/report_generation.md` for the full process.7374Quick summary:751. Pull latest data from Git762. Check `materials/*.jsonl` under `{year}/week{WW}/` first773. If any structured materials exist, base the report on them784. Fall back to legacy `.txt` logs only if structured materials are missing or unreadable795. Group by project / workstream, extract evidence and outcomes, then render the report806. Optionally save the report to `{year}/week{WW}/report-{YYYYMMDD}-{HHmmss}.md`8182## Reference Files8384| File | When to read |85|---|---|86| `references/setup_guide.md` | Missing env vars |87| `references/material_ingestion.md` | Capturing conversation, document, or repo materials |88| `references/conversation_tracking.md` | Best-effort conversation capture and local observability |89| `references/report_generation.md` | Generating reports |90| `references/user_guide.md` | User asks how to use the system |9192## Scripts9394| Script | Purpose |95|---|---|96| `scripts/git_operations.py` | Clone / pull / push the report repo |97| `scripts/conversation_logger.py` | Capture conversation materials and maintain digest files |98| `scripts/material_ingestor.py` | Explicitly ingest `conversation`, `document`, or `repo_activity` materials |99100## Important Notes101102- Best-effort auto capture is useful, but not a guarantee of complete logging103- Prefer explicit material ingestion for important plans, experiments, or repo analysis104- Skip recording only for high-confidence sensitive content such as passwords, private keys, PATs, or explicit "不要记录"105- Recording failures must not interrupt the user response, but they should leave status clues locally106- Structured material events live in `materials/*.jsonl` and are the primary source for report generation107- One session can append to one digest file per calendar date for compatibility/debugging