ctx-history-searchlisted
Install: claude install-skill yktsnet/dotfiles-public
対象は運用しているリポの相談者セッションのみ。`issue()` 起動の実行者セッションは
`<repo>.wt/<slug>` という別ディレクトリ名(`-wt-` を含む)で動いており対象外。
`--workspace` フィルタでこれを除外する。
## 最頻出のケース: 直前の続きを読む
新しい会話で「さっきの続きをやりたいから読んで」と言われたときの主用途。検索クエリを考える必要はなく、
このリポで一番新しいセッションを直接引く。
```sh
ctx sql "SELECT ctx_session_id, source_path, MAX(occurred_at_ms) as last_ts
FROM ctx_events
WHERE source_path LIKE '%<repo-name>/%'
GROUP BY source_path ORDER BY last_ts DESC LIMIT 1" --format table
```
- `<repo-name>` は今動いているリポ名。末尾スラッシュで `-wt-`(実行者セッション)を除外する
- 出てきた `ctx_session_id` を `ctx show session <id> --mode full` で読む。継続作業の把握には `--mode lite`(最終応答のみ)より `--mode full`(全メッセージ)の方が安全
- `ctx search` は検索クエリが必須(空では実行できない)なので、この「ただ一番新しいのを読みたい」用途には使えない。SQLで直接引くのが正しい経路
## トピック検索(「前にこれ決めたはず」)
```sh
ctx search "<query>" --workspace "<repo-name>/" --since 14d
```
- `<repo-name>` は今動いているリポ名。**絶対パスではなくリポ名のみ**を渡す
- `--workspace` は Claude Code のプロジェクトディレクトリ名(`~/.claude/projects/-Users-<user>-<repo-name>/...` のようなハイフン区切り形式)への部分一致で判定される。絶対パス(`/Users/<user>/<repo-name>/`)を渡すと0件になる(実データで検証済み)
- 末尾スラッシュを付けることで `<repo-name>-wt-15-.../`(実行者セッション)を部分一致から除外する(実データで検証済み: `--workspace "<repo-name>/"` は `-wt-` セッションを含まない)
- 既定は直近14日。結果が薄い場合のみ `--since 30d` 等に広げてよい
## 既知の制約
- `ctx_sessions.cwd` 列はほぼ全件 NULL(import元がClaude Codeのjsonl treeの場合、cwdは記録されない)。ワークスペース判定は `cwd` ではなく `--workspace` フィルタ(内部的にはプロジェクトディレクトリ名への部分一致)に依存すること
## セッション本文を読む
```sh
ctx show session <ctx-session-id> --mode lite
```
詳細が要る場合のみ `--mode full`(メッセージ全体)や `--mode lo