Nippo
Use this skill when the user wants to turn recent Claude Code, Codex, or opencode work into a report under reports/.
Inputs
- mode: default,
daily,brief,reflection,guide,report,review,insight,trend,plan,ledger - optional days
- optional project filter
- optional source override:
claude,codex,opencode,all - optional period selector:
today,yesterday,this-week,last-week,week-before-last,this-month,last-month,month-before-last
Examples:
$nippo daily$nippo daily codex$nippo daily claude$nippo daily all$nippo review 90 codex
Workflow
- If the current workspace is this repository, prefer
cargo run -q -p nippo -- collect ...so the skill uses the checked-out implementation rather than a potentially stale globally installednippo. - Otherwise prefer
nippo collect ...whennippois already installed. - If neither is available, stop and tell the user to install
nippo. - Treat
dailyas an alias of the default daily report mode. - Default to
--source auto. Override when the user explicitly asks forclaude,codex,opencode, orall. The collector removes deterministic prompt noise by default; do not pass--include-prompt-noiseduring report generation. - For
brief, save the summary output directly and stop. - For
ledger, do NOT callnippo collect. Runnippo ledger(orcargo run -q -p nippo -- ledger) which scansreports/nippo-*.md(daily reports) for the## Unclear pointssection, folds them intoreports/ledger.yaml, and prints a CONVERGED / DIVERGENCE-SIGNAL / CONTINUE verdict. Relay that verdict back to the user verbatim; do not over-interpret. If the user asks for agent-config candidates, runnippo ledger --export: it writes recurring General Fix Rules toreports/ledger-export.md. Tell the user these are candidates only — a human must curate them before copying anything into CLAUDE.md / AGENTS.md. - For
plan, do NOT callnippo collect. Find the newestreports/nippo-*.mdby the date in its filename and read it. Also readreports/ledger.yamlif present and use unresolved recurring General Fix Rules as candidate material. Read docs/templates/plan-template.md and docs/reflection-theory.md, present only 1-3 experiment candidates, leave the choice / reason / first-step fields blank for the user, save toreports/plan-YYYY-MM-DD.md, and report the path. - For other modes, read the collected JSON and the matching template:
- docs/templates/nippo-template.md
- docs/templates/reflection-template.md
- docs/templates/guide-template.md
- docs/templates/report-template.md
- docs/templates/review-template.md
- docs/templates/insight-template.md
- docs/templates/trend-template.md
- docs/templates/plan-template.md
- For
reflection,guide,insight, andplan, also read docs/reflection-theory.md. - Save daily reports, including
daily, toreports/nippo-YYYY-MM-DD.md. Other modes keepreports/{mode}-YYYY-MM-DD.md. Append-Ndwhen days > 1. - In daily mode, treat the freshly collected JSON as the only source of truth. Do not read an existing
reports/nippo-YYYY-MM-DD.mdas input; overwrite it with the new report. - Ground the daily report header and stats directly in
metaandstats, usemeta.periodfor the requested date range, and choose project sections fromstats.projects_worked_onin order ofmessage_count. - After generating a daily report (which emits an
## Unclear pointssection), suggest the user run/nippo ledgerto fold today's stuck points into the cumulative streak signal — but do NOT run it automatically. - Finish with the saved path and a concise report summary. Do not suggest collector changes for values already available directly or by simple derivation from the JSON.
Mode Defaults
- default:
--period today daily: alias of default,--period todaybrief:--period today --format summaryreflection:--period todayguide:--period todayreport:--days 7 --stats-onlyreview:--days 90 --stats-onlyinsight:--days 7trend: split the time window into 3 ranges and run 3 summary collectionsplan: no collection. Reads the newestreports/nippo-*.mdandreports/ledger.yaml, writesreports/plan-YYYY-MM-DD.mdledger: no time window. Readsreports/nippo-*.md, writesreports/ledger.yaml, prints a streak verdict.--exportwrites recurring rules toreports/ledger-export.md
Rules
- Data collection must go through
nippo collect. Do not reimplement parsing in ad-hoc scripts. - Do not use Python for data collection.
- Use
statsas-is. Do not recalculate counters in prose. - Write reports in Japanese.
- Do not recommend books or URLs (hallucination risk). Give concept names and search keywords instead.
- For
reflectionandguide, also read the same-dayreports/nippo-YYYY-MM-DD.mdif it exists. - If the first token is neither a mode name, a number, a source selector, nor a period selector, treat it as a project filter and run the default daily mode with
--project. - Date boundaries follow the machine's local timezone.
--days 1anddailymean the current local calendar day. - Treat one token matching
claude,codex,opencode, orallas the source selector and pass it through to--source. - Treat one token matching
today,yesterday,this-week,last-week,week-before-last,this-month,last-month, ormonth-before-lastas a period selector and pass it through to--period. In that case do not add the mode's default--daysor default--period today; the explicit--periodis the sole time-window flag. Fordaily, usemeta.period.tofrom the collected JSON as the output filename date instead of computing it from the execution date. Codexreport data comes fromhistory.jsonl,state_5.sqlite, and rollout data referenced byrollout_path. Treatlogs_2.sqliteas diagnostics only.- Codex-derived reports may have sparse assistant/tool metrics. State that explicitly instead of inventing numbers.
- For daily reports, copy
meta.source,meta.total_sessions,stats.projects_worked_on, andstats.tool_frequencyfrom the collected JSON instead of inferring them from an older report. - In every mode that prints a date range, use
meta.period.fromandmeta.period.to; do not recalculate the range from the execution date. - Cover the activity-heavy projects first. Use
stats.projects_worked_onorder (=message_countdescending) and give the top 3-5 projects their own section before collapsing anything intoその他. - If you show only a subset of
decisions, explicitly state全N件中M件を記載. - The current Claude Code or Codex session is excluded by the collector. Do not manually subtract another session from
metaorstats. - Sanitize reference links before writing them. Do not copy malformed URL fragments with trailing Japanese text or punctuation.
Improvement Issues
After the report is complete, an Issue may be proposed when report generation repeatedly performs the same deterministic aggregation or formatting, or when one structural problem affects multiple modes. Group symptoms with the same root cause into one coherent Issue instead of proposing one field at a time. Propose at most two Issues per report.
Do not propose an Issue for values already available directly or by simple derivation:
- Total projects: the length of
stats.projects_worked_on - Reporting period:
meta.period - Top tools and main work window:
render_helpers - Prose or summarization that belongs in a report template
Before proposing, run gh issue list --repo nwiizo/nippo --state all and skip anything already covered or solvable by reading existing fields correctly. If a new Issue is warranted, present a title and body that separate verified facts, affected modes, the shared cause, and the processing that the change would eliminate. Create it with gh issue create --repo nwiizo/nippo only after the user explicitly agrees.