session-judgment-mining

Solid

過去の Claude Code セッション群(~/.claude/projects/<project>/*.jsonl)を遡及的に一括発掘し、ユーザーが繰り返し下した判断・価値観を抽出して skill / rule に正本化するワークフロー。人間発話の抽出 jq パターン、既存資産(skills / rules / ADR / memory)とのカバレッジ照合による重複回避、価値観リファレンス(why)と判断ゲート(when/what)の二層設計判断、既存スキルとの矛盾解消(免除条項)と memory への昇格マークまでを扱う。Use when — 「過去セッションから私の判断・価値観をスキルにして」「セッション履歴を紐解いて規約化して」、同じ指摘・修正がセッションを跨いで繰り返されていると気づいたとき、memory の feedback が溜まって確率的リコール頼みになっているとき。NOT for — 過去ログから記事の問いを発見 → session-theme-mining、現行セッションからの単発パターン抽出 → learn-eval、skill 品質の監査 → skill-stocktake、既存 skill 群からの rule 蒸留 → rules-distill、会話ログの要約・議事録作成。

AI & Automation 3 stars 0 forks Updated 5 days ago MIT

Install

View on GitHub

Quality Score: 82/100

Stars 20%
20
Recency 20%
100
Frontmatter 20%
70
Documentation 15%
100
Issue Health 10%
80
License 10%
100
Description 5%
100

Skill Content

# session-judgment-mining — 過去セッション群からの判断・価値観の発掘とスキル化 **Purpose:** ユーザーの判断・価値観は個々のセッションの修正指示(「ここ直して」「こうじゃない」)として発話され、memory に部分的に残るだけで大半は会話履歴に埋まる。このスキルは過去セッション群を全量発掘し、繰り返された判断を skill として正本化する。learn-eval が「今のセッションから 1 パターン」を抽出するのに対し、これは「過去セッション群の遡及一括発掘」。 初回実施: 2026-07-28、zenn-content repo(33 セッション / 人間発話 314 turn → skill 2 本 + ADR。memory 未記録の判断 8 件を新規発見)。 --- ## Step 1: 規模把握と全量/サンプリング判定 対象は `~/.claude/projects/<project-dir>/*.jsonl`(`<project-dir>` は cwd のパスをダッシュ結合したもの。`memory/` サブディレクトリは対象外)。 まず**人間発話の turn 数**で読む量を見積もる。ファイルサイズは判断材料にならない — トランスクリプトの 9 割超は tool_result で、33 セッション 89MB でも人間発話は 114KB だった。 - 人間発話が**数百 turn** → 全量パス(サンプリング不要。数十 k tokens で通読できる) - 数千 turn 超 → フィードバック密度の高いセッション(人間 turn 数上位)から読み、キーワード grep(「直して」「違う」「じゃない?」等)で補完 ## Step 2: 人間発話の抽出(検証済み jq パターン) 主弁別子は `origin.kind == "human"`。`.type=="user"` だけで grep すると 9 割が tool_result のノイズになる。`.message.content` は string と array(画像添付時)の両形がある。 ```bash jq -r ' ( select(.type=="user") | select( ((.origin.kind // null)=="human" and ((.isSidechain // false)|not)) or ((.origin // null)==null and (.message.content|type)=="string" and ((.message.content|startswith("<"))|not)) ) | (.message.content | if type=="string" then . else (map(select(.type=="text") | .text)|join(" ")) end) | select(length>0) | "=== TURN ===\n" + . ) ' "$f" ``` - 2 つ目の select 節は **compact / resume 後のセッションで `origin` が付かない人間発話**の補完(`<local-command-caveat>` 等の XML ラッパは除外) - 補完 2: `select(.type=="...

Details

Author
shimo4228
Repository
shimo4228/claude-harness
Created
4 months ago
Last Updated
5 days ago
Language
Python
License
MIT

Integrates with

Similar Skills

Semantically similar based on skill content — not just same category