指示
$ARGUMENTS に基づいてモードと収集条件を決め、必要なデータだけを収集してレポートを生成する。
ルール
- データ収集は
nippoCLI のみ。Python は絶対に使わない(python, python3, python -c すべて禁止) statsの集計済みデータは直接引用する。再計算しない- 書籍・URL は紹介しない。概念名・検索キーワードを示す
- レポートは日本語で出力する
- 出力先は cwd の
reports/配下(なければmkdir -p reports) - ファイル名:
reports/{モード}-YYYY-MM-DD.md(期間 N>1 なら-Ndを付与) - 日付境界は実行環境のローカルタイムゾーン基準。
--days 1とdailyは「今日のローカル日付」を意味する - デフォルト source は
auto。Codex ではhistory.jsonlとstate_5.sqlite、およびrollout_pathが指す rollout データを使う。logs_2.sqliteは診断用で、日報の主データソースにはしない - このリポジトリ内で実行している場合は、グローバル
nippoよりcargo run -q -p nippo -- collect ...を優先する(ローカル実装が新しい可能性があるため) - モードと引数を決める前にデータを先読みしない。同じ条件の収集は 1 回だけ実行する
- 収集 JSON の一時ファイル
tmp/nippo-raw.jsonはレポート保存後に必ず削除する。収集や生成に失敗して停止する場合も削除する - コレクターは定型的なプロンプトノイズを既定で除外する。レポート生成では
--include-prompt-noiseを付けない - 日報モードでは、このターンで取得した JSON を唯一の根拠にする。既存の
reports/nippo-YYYY-MM-DD.mdは読まないし、続きから直さない - 日報のヘッダと統計は
metaとstatsをそのまま使う。meta.sourcemeta.periodmeta.total_sessionsstats.projects_worked_onstats.tool_frequencyを推測で置き換えない - 対象期間を記載する全モードで
meta.period.fromとmeta.period.toを使い、実行日から日付を計算し直さない - 日報本文のプロジェクト節は
stats.projects_worked_onの順(message_count降順)で選ぶ。上位 3〜5 プロジェクトは必ず個別に触れ、残りだけをその他にまとめる - Codex 由来のレポートは assistant/tool のメトリクスが疎になることがある。数値を捏造せず、疎であることを明示する
- source の解決やデータ欠損について質問されたら
${CLAUDE_SKILL_DIR}/docs/data-sources.mdを Read する decisionsを一部だけ載せる場合は「全N件中M件を記載」と明記する- 現在の Claude Code / Codex セッションはコレクターが除外するため、
metaやstatsから手作業でセッション数を引かない - 参考リンクの URL はそのまま貼らず、末尾の日本語や句読点を落として正しい URL だけを残す
モード決定
$ARGUMENTS をトリミングし、先頭単語でモードを決定する:
| 先頭単語 | モード | デフォルト期間 | 収集コマンド |
|---|---|---|---|
| (空) | 日報 | 1日 | nippo collect --period today |
| daily | 日報 | 1日 | nippo collect --period today |
| brief | brief | 1日 | nippo collect --period today --format summary(そのまま保存) |
| reflection | reflection | 1日 | nippo collect --period today |
| guide | guide | 1日 | nippo collect --period today |
| report | report | 7日 | nippo collect --days 7 --stats-only |
| review | review | 90日 | nippo collect --days 90 --stats-only |
| insight | insight | 7日 | nippo collect --days 7 |
| trend | trend | 90日 | 期間を3等分し、区間ごとに nippo collect --from X --to Y --format summary を3回 |
| plan | plan | なし(最新の日報) | 収集なし。reports/ の既存ファイルを Read |
| ledger | ledger | なし(reports/nippo-*.md) |
nippo ledger(collect は実行しない) |
| (数値のみ) | 日報 | その数値 | nippo collect --days N |
daily は (空) と同じ日報モードのエイリアス。出力ファイル名は reports/nippo-YYYY-MM-DD.md を使う。
残りトークンのうち claude / codex / opencode / all は --source に渡す。today / yesterday / this-week / last-week / week-before-last / this-month / last-month / month-before-last は --period に渡す。この場合、モード既定の --days や --period today は付けない(明示された --period が唯一の期間指定になる)。数値があれば --days を置換。それ以外の文字列は --project に渡す。先頭単語がモード名・数値・source・period のいずれでもない場合は日報モードとして扱い、その単語を --project に渡す。
--period を指定して daily を実行する場合、出力ファイル名の日付は collector が返す meta.period.to を使う。実行日から計算し直さない。
収集と生成
plan モードは収集を行わない。Glob で cwd の reports/nippo-*.md を探し、
ファイル名の日付が最新のものを Read する。reports/ledger.yaml が存在すればそれも
Read し、最近も再出現している未収束の General Fix Rule を候補材料にする。
${CLAUDE_SKILL_DIR}/docs/templates/plan-template.md と
${CLAUDE_SKILL_DIR}/docs/reflection-theory.md を Read し、候補を 1〜3 個だけ提示する。
選ぶ実験・理由・最初の一手の記入欄は空白のまま
reports/plan-YYYY-MM-DD.md に保存し、パスを通知して完了。
ledger モードは収集・テンプレートを使わない。このリポジトリ内なら cargo run -q -p nippo -- ledger、それ以外は nippo ledger を実行する。cwd の reports/nippo-*.md から ## Unclear points セクションを横断パースして reports/ledger.yaml に累積し、CONVERGED / DIVERGENCE-SIGNAL / CONTINUE の判定を出力する。この判定はそのままユーザーに伝え、過剰に解釈しない。利用者が agent 設定向けの候補を求めた場合は ledger --export を実行する。複数回出現した General Fix Rule が reports/ledger-export.md に出力されるが、候補にすぎないため、CLAUDE.md / AGENTS.md へコピーする前に人間が取捨選択すると伝える。以上で完了。
その他のモード:
mkdir -p tmpを実行する。このリポジトリ内ならcargo run -q -p nippo -- collect ...、それ以外はnippo collect ...を Bash で 1 回実行し、JSON をtmp/nippo-raw.jsonにリダイレクトする(brief はリダイレクトせず出力を直接保存して完了)tmp/nippo-raw.jsonを Read で読み込む。大きい場合は分割して読み、途中で切れた Bash 出力から JSON を推測しない- モードに対応するテンプレートを Read で読み込む
テンプレートは ${CLAUDE_SKILL_DIR}/docs/templates/ にある:
| モード | テンプレートファイル | 補足 |
|---|---|---|
| 日報 | ${CLAUDE_SKILL_DIR}/docs/templates/nippo-template.md |
用語レビュー含む |
| reflection | ${CLAUDE_SKILL_DIR}/docs/templates/reflection-template.md |
回答は書かない |
| guide | ${CLAUDE_SKILL_DIR}/docs/templates/guide-template.md |
回答 + 概念 + 多角的フィードバック |
| report | ${CLAUDE_SKILL_DIR}/docs/templates/report-template.md |
成果 + 課題。感情は含めない |
| review | ${CLAUDE_SKILL_DIR}/docs/templates/review-template.md |
成果の定量化 + 成長 + 次期目標 |
| insight | ${CLAUDE_SKILL_DIR}/docs/templates/insight-template.md |
ALACT モデルで回答付き |
| trend | ${CLAUDE_SKILL_DIR}/docs/templates/trend-template.md |
3期間の比較。最低45日 |
| plan | ${CLAUDE_SKILL_DIR}/docs/templates/plan-template.md |
候補のみ提示。選択と記入は利用者 |
reflection / guide / insight / plan は ${CLAUDE_SKILL_DIR}/docs/reflection-theory.md も Read する。
reflection / guide は同日の reports/nippo-YYYY-MM-DD.md があれば Read する。
- テンプレートに従いレポートを Write で保存(日報モードは既存ファイルがあっても上書き)
rm -f tmp/nippo-raw.jsonで収集 JSON を削除する- パスとレポートの要点を簡潔に通知する。改善提案は後述の条件を満たす場合だけ続ける
- 日報(
Unclear pointsセクションを含む)を生成した後は、/nippo ledgerで詰まりを累積集計できることを一言案内する(自動では実行しない)
改善提案と Issue 作成
レポート生成中に、同じ決定的な集計・整形をモデルが繰り返し担う不足や、複数モードへ影響する構造的な問題を見つけた場合は Issue を提案できる。個別の不足をばらばらに起票せず、同じ原因から生じる症状は一つの課題としてまとめる。1 回のレポート生成で提案するのは最大 2 件とする。
次は既存データから直接わかるため、改善候補にしない:
- プロジェクト総数:
stats.projects_worked_onの要素数 - 対象期間:
meta.period - 上位ツールと主要時間帯:
render_helpers - テンプレート内だけで完結する文章表現や要約
提案前に gh issue list --repo nwiizo/nippo --state all で重複を確認する。既存 Issue で扱われている場合や、既存フィールドの読み方を直せば済む場合は提案しない。新しい Issue が必要な場合は、確認できた事実、影響するモード、共通の原因、解決後に省ける処理をまとめたタイトルと本文案をユーザーに示し、明示的な了承を得てから gh issue create --repo nwiizo/nippo を実行する。