SKILL.md
Tracework Daily
Write a concise daily management-closure view. Answer what changed today, why it matters, what is now closed or bounded, and the next gate. Do not produce a module inventory or agent handoff.
Required References
Read both before writing:
references/reporting-narrative-contract.md: scope partition, closure types,
headline selection, evidence rules, and audience safety.
references/daily-note-writing.md: source handling, merge rules, vault file
shape, and conversation / first-run shapes.
Configuration
Resolve configuration in this order:
- Project
.tracework/config.yaml ~/.tracework/config.yaml
The primary output defaults to {vault}/Daily Note.md, overridable through dailynote.path. Project paths come from dailynote.repos, then {vault}/raw/projects.json, then the current repo.
If no vault can be resolved, return the report in the conversation. Do not create an unrequested vault. Do not block on cold-start. Optionally add one soft upgrade line at the end (see First-Run and Local Fallback).
First-Run and Local Fallback
Daily must produce value without prior setup. Cold-start is an upgrade for durable multi-day storage and strict audience partition, not a ticket to try.
Scope resolution
- If the user explicitly names
allor an exact reporting group such as
work or personal, that scope is explicit.
- Else if
profile.defaultreportinggroupis configured, that scope is
configured.
- Else the scope is implicit.
Partition rules
- Explicit or configured
work/personal/ named group:
- Include only projects whose reportinggroup exactly matches. - Exclude unassigned projects. Never treat unassigned as safe work. - If the result is empty because the current project is unassigned, say so clearly, explain that explicit work (or the configured default) will not invent a group, and tell the user how to fix it: /tracework:cold-start-interview or set profile.reportinggroup. - Still return a short empty/excluded report rather than failing.
- Implicit scope (no explicit group, no configured default):
- If the current project has a reportinggroup, use that group. - If the current project is unassigned or has no project config, enter local first-run: - Report only the current repository. - Label scope local (unassigned). Do not label it work. - Use git and any available raw entries for that repo only. - Mark evidence limited when git-only. - Add a one-line hint to set reportinggroup before workplace-scoped reports. - If a vault registry lists other assigned projects but the user is in an unassigned repo under implicit scope, prefer local first-run for the current repo and mention that assigned vault projects were not mixed in.
No vault
- Always allowed.
- Write nothing to disk.
- Use the conversation output shape in
daily-note-writing.md. - End with at most one upgrade line, for example:
> 可选:配置 knowledge vault 后可跨天累计并写入文件。/tracework:cold-start-interview
- Do not imply the report is incomplete solely because vault setup is missing.
Empty signal
If local first-run has no raw entries and no meaningful git activity, return a short empty-state: what was checked, that nothing reportable was found, and that capture or more work signal will improve the next run. Do not error.
Workflow
- Resolve date, scope class, and output target.
- Default date: today. - Accept a date range and write one section per date. - Resolve explicit / configured / implicit scope as above. - Choose vault file output only when a vault exists and the resolved lane is a normal scoped group (work / personal / named / all sections). Local first-run and no-vault runs stay in conversation even if a vault path exists, so unassigned content is not written into workplace Daily Note.
- Partition projects before ranking.
- Read each project profile.reportinggroup, then its projects.json reportinggroup. - Apply First-Run and Local Fallback together with the audience-safety rules in the shared narrative contract. - For normal scoped reports, exclude unassigned projects and report the missing classification. Show unassigned separately only in all. - For local first-run, keep a single local lane for the current repo.
- Collect raw entries.
- Calculate the ISO week and read {vault}/raw/weeks/{week}/{slug}.json for the target date when a vault exists. - Prefer factual top-level fields and optional reporting boundaries. - Artifact dossiers are optional navigation. Do not copy full artifacts. - Without a vault, skip raw collection and continue with git coverage.
- Check git coverage.
- Use lightweight commit subject/stat inspection only for work not already covered by raw entries. - Git-only material is limited; do not infer motivation, decisions, verified impact, or management meaning that the commit does not support. - Filter formatting, generated-bundle, and chore-only noise unless it is a recorded risk or release gate.
- Synthesize state transitions.
- Group entries and fallback commits by coherent work stream. - Merge feature/fix/refactor entries that describe one state transition. - For each reporting group or the single local lane, write one daily judgment and normally three headline advances. Two to four is acceptable when the evidence warrants it. Put remaining meaningful work under Other activity. Thin first-run reports may use fewer headlines. - Preserve explicit risk, conflict, open question, rejected path, and evidence gaps.
- Write incrementally or in conversation.
- Vault mode: match existing ### YYYY.MM.DD or ### YYYY-MM-DD headings; merge into an existing date section; never duplicate the date; preserve the exact project label - [Project Name] and stable field labels required by Monthly; do not write an empty date section. - No-vault or local first-run conversation mode: use the conversation shape in daily-note-writing.md. Do not invent a Daily Note path.
Quality Gate
Before finishing, verify:
- Scope class (explicit / configured / implicit-local) was resolved before
headline selection.
- A
workreport contains no personal or unassigned material, including
evidence.
- Local first-run is labeled
local/ unassigned, never presented as a safe
workplace work report.
- Explicit scoped emptiness explains exclusion and repair, and does not leak
unassigned content into work.
- No-vault runs return conversation output without blocking on cold-start.
- Each reporting group or local lane has one clear daily judgment when there is
signal.
- Headline items describe starting situation, movement, end state, meaning, and
next gate when evidence supports them; git-only stays bounded.
- Remaining meaningful work is still covered when present.
ongoingandriskare not rewritten as completed outcomes.- The report is readable in about one minute per reporting group.
- Source/evidence boundaries are explicit.
References
references/reporting-narrative-contract.mdreferences/daily-note-writing.mdreferences/config-template.yaml