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/*.jsonlfiles exist, the main report analysis must be based on them. - You must not generate a report only from
*.txtwhen structured materials are present. *.txtdigests 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.mdand guide the user through setup
Determine User Intent
| User intent | Action |
|---|---|
| "Write weekly report" / "Generate weekly report" / "This week's summary" / "Last week's weekly report" | Generate report → references/report_generation.md |
| "Include this in the weekly report material" / "Record this discussion" | Must capture as material → references/material_ingestion.md |
| "Summarize this plan/experiment document and include it in the weekly report" | Ingest as document material |
| "Look at a repo's commits from the last few days and include them in the weekly report" | Ingest as repo_activity material |
| "How do I use the weekly report system" / "How do I set it up" / "skill introduction" | 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.pyorscripts/conversation_logger.pyto persist the event - Treat
materials/*.jsonlas the source of truth - Write
*.txtdigest 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/*.jsonlunder{year}/week{WW}/first - If any structured materials exist, base the report on them
- Fall back to legacy
.txtlogs 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 "do not record"
- Recording failures must not interrupt the user response, but they should leave status clues locally
- Structured material events live in
materials/*.jsonland are the primary source for report generation - One session can append to one digest file per calendar date for compatibility/debugging