SuperAPI AI Directory

monthly

Office & productivity

View repository

Updated 10-16 06:22

About this skill

Lode Monthly Review

Monthly log processing oriented toward work accumulation. Split and archive by month from Daily Note.md, extract structured signals, and generate fact-first monthly summaries. Monthly review is Lode's month-level compounding layer: beyond summarizing outcomes, it also identifies recurring open issues, risks, habit changes, and ways of working that need adjustment next month.

Core outputs:

  • Monthly archive (raw Markdown, not rewritten)
  • Monthly summary (written by the agent, fact-first, no fabrication)
  • Intermediate data (signals.json + skeleton.json, for secondary consumption)
  • Candidate rules (suggestions only, not automatically written to AGENTS/checklists/skills)

Design principles

  • Fact-first: Extract and synthesize only from raw records, do not fabricate missing information
  • Original text untouched: Archive files retain the original Markdown, without rewriting
  • Separation of summary and logs: Archives and summaries are independent files
  • Summarizing allowed, fabrication prohibited: Multiple records may be synthesized into one theme, but nonexistent "outcomes" or "conclusions" must not be generated out of thin air
  • Cyclical compounding: The summary must point out what should change next month, rather than merely restating what was done this month

Configuration

This skill uses Lode's unified configuration system. Resolve the knowledge base path from the following locations ({vault}), higher priority first:

Priority Location Description
1 .lode/config.yaml(project root) Project-level override
2 ~/.lode/config.yaml Global configuration
3 $WEEKLY_PPT_PATH Environment variable legacy fallback
4 ~/.weekly-ppt/ legacy fallback default value

Project-level configuration overrides same-named fields in global configuration. This skill's main outputs depend on {vault}; if the path cannot be resolved, prompt the user to run /lode:cold-start-interview or configure knowledge_vault. For the complete configuration format and merge rules, see references/weekly-ppt-convention.md。

This skill's path mappings:

  • Input:{vault}/Daily Note.md
  • Archive output:{vault}/Work Diary/Monthly/{YYYY-MM}.md
  • Intermediate data:{vault}/raw/months/{YYYY-MM}/signals.json and skeleton.json
  • Summary output:{vault}/Work Diary/Monthly/{YYYY-MM}.summary.md

Input parameters

Required

Parameter Description
input_file Path to Daily Note.md (derived from configuration by default)
output_dir Output directory path (default {vault}/Work Diary/Monthly/)

Optional

summary_mode: project_focused    # light | project_focused | engineering_review
overwrite_policy: overwrite      # append | overwrite | skip_existing
month_filter: null               # 只处理指定月份,如 "2026-03"
project_filters: []              # 只保留特定项目视角
evidence_mode: strict            # strict | best_effort
  • summary_mode:light Extract only the main threads and keywords;project_focused(default) merge by project;engineering_review strengthen the problem/solution/risk structure
  • evidence_mode:strict(default) each summary must have textual evidence,best_effort allows moderate synthesis

Execution steps

Step 1: Read and pre-check

  1. Confirm that input_file exists and is readable (UTF-8)
  2. Identify the heading hierarchy structure (year → month → date)
  3. If the format does not match, prompt the user to refer to references/daily-note-format.md

Heading regex:

年标题:  ^#\s*\d{4}\s*年
月标题:  ^##\s*\d{4}\s*年\s*\d{1,2}\s*月
日标题:  ^###\s*\d{4}\.\d{2}\.\d{2}

Step 1.5: Source Coverage Check

Check how many days in the target month have raw entries vs git-only entries in the Daily Note:

  1. Parse the daily note for the target month
  2. Tag each day's content as: raw-entry-backed, git-only, or empty
  3. Report in the summary:
    • Days with raw entry coverage: {N}/{total_days}
    • Git-only days: {M}/{total_days}
    • Empty days: {K}/{total_days}

If raw entry coverage < 50%, include a note in the summary: "本月大部分工作记录来自 git log,缺少决策和动机上下文。建议坚持使用 /lode:capture 以提升月报质量。"

Step 2: Split and archive by month

Run scripts/split_daily_note.py, splitting Daily Note.md into YYYY-MM.md monthly archive files, saved to {vault}/Work Diary/Monthly/。

  • Keep the original content, do not rewrite
  • When a month-level heading is missing, infer it automatically from the date
  • Supports overwrite_policy and month_filter

Step 3: Extract signals + build skeleton

Run scripts/prepare_monthly_data.py(merges the original extract + build scripts):

python scripts/prepare_monthly_data.py \
  --input {vault}/Work\ Diary/Monthly/{YYYY-MM}.md \
  --signals-output {vault}/raw/months/{YYYY-MM}/signals.json \
  --skeleton-output {vault}/raw/months/{YYYY-MM}/skeleton.json \
  --summary-mode project_focused \
  --evidence-mode strict

The script completes all deterministic work:

  • Extract project/module/category tags, task status, daily focus, risk signals, next-step signals
  • Merge by project, count distributions, identify work phases
  • Automatically identify real projects (those appearing on >= 2 days)
  • Output signals.json and skeleton.json

Step 4: Agent writes the summary

Read the references/worklog-summary-template.md template,skeleton.json skeleton data, raw monthly archive YYYY-MM.md。

Write {YYYY-MM}.summary.mdaccording to the template, save to {vault}/Work Diary/Monthly/。

Important constraints:

  • evidence_mode=strict , every summary must be traceable to a corresponding entry in the original text
  • Do not describe "in progress" as "completed"
  • Do not package multiple independent small fixes as "major achievements"
  • When a project has only sporadic records, state truthfully that "records are sparse"

Trade-off rules:

  • Each project has at most 2-3 core themes; merge the rest into "routine optimizations include..."
  • Keep code change numbers only when net increase > 300 lines or net decrease > 200 lines
  • Merge configuration adjustments, documentation improvements, and small fixes with < 50 line changes into one sentence
  • Total summary length 80-120 lines
  • If multiple dates record the same workflow, merge them into one theme and state it according to the latest status; do not amplify repeated traces of the same raw/git source in daily notes into multiple achievements
  • If the same theme contains completed items, risk items, and decision items at the same time, organize it as "what was completed + what risks/decisions remain", avoiding a success-only narrative
  • Identify recurring open questions, stale threads, unresolved risks, and explain how they affect next month's plan
  • Summarize the usage of Lode habit loops such as 开工 / 收工 : which sessions have records, and which contexts may be missing
  • Output candidate rules: propose AGENTS rules, checklists, playbooks, or skill ideas that may be worth solidifying from repeated evidence. A single weak signal can only be written as an observation or checklist suggestion, and cannot be escalated into a strong rule.

Step 5: Output execution summary

Output the execution summary in JSON format to the terminal:

{
  "months_created": ["2026-03"],
  "summaries_created": ["2026-03.summary.md"],
  "summary_mode": "project_focused",
  "projects_detected": ["项目A", "项目B"],
  "warnings": []
}

Project classification rules

Projects are automatically identified through the - [项目名] tag in the Daily Note. Core principles:

  • Use the [项目名] tag as the basis for classification, do not guess based on content
  • Markdown link [文本](URL) is not a project tag
  • See references/project-tagging-guide.md

Boundaries and non-goals

This skill is not responsible for: rewriting the original Daily Note, writing report copy, generating performance statements, or judging work value.

This skill is only responsible for: splitting → archiving → refining → structured output → proposing candidate rules.

Candidate rules are proposal-only: unless the user explicitly requests and approves writing to the target file, AGENTS.md, checklists, playbooks, or skills must not be modified automatically.

Error handling

  1. File does not exist: report the path and prompt to check
  2. Encoding exception: report the location, recommend UTF-8
  3. Heading level not recognized: display the actual level, suggest referring to references/daily-note-format.md
  4. No content for a certain month: handle normally, note "No records this month" in the summary
  5. Script execution failed: report the full error, do not swallow exceptions

Reference file

File When to read
references/daily-note-format.md Understand the Daily Note format conventions
references/worklog-summary-template.md When writing the summary (must read)
references/project-tagging-guide.md Project categorization rules
references/weekly-ppt-convention.md Shared storage conventions