AgentSkillsCN

Prompt Search

提示搜索

SKILL.md

Prompt Search Skill

Search across Claude Code conversation history: $ARGUMENTS

Schema (DO NOT guess columns — use only these)

code
base_messages(uuid PK, parent_uuid, session_id, timestamp, message_type, cwd, user_type, version, isSidechain, original_cwd)
user_messages(uuid PK/FK→base_messages, message, tool_use_result, timestamp, is_at_mention_read, is_meta)
assistant_messages(uuid PK/FK→base_messages, cost_usd, duration_ms, message, is_api_error_message, timestamp, model)
conversation_summaries(leaf_uuid PK/FK→base_messages, summary, updated_at)

NOTE: conversation_summaries has NO session_id. Join via base_messages.

Quick Search: User Prompts (history.jsonl)

bash
python3 -c "
import json
from datetime import datetime
term = '$ARGUMENTS'.lower()
with open('$HOME/.claude/history.jsonl') as f:
    matches = [json.loads(l) for l in f if term in l.lower()]
for d in matches[-20:]:
    ts = datetime.fromtimestamp(d.get('timestamp', 0) / 1000)
    proj = d.get('project', '').split('/')[-1]
    sid = d.get('sessionId', '')[:8]
    disp = d.get('display', '')[:100].replace('\n', ' ')
    print(f'{ts:%Y-%m-%d %H:%M} | {sid} | {proj:20} | {disp}')
"

Database Search: Messages

bash
sqlite3 ~/.claude/__store.db "
SELECT
    b.session_id,
    datetime(b.timestamp, 'unixepoch', 'localtime') as date,
    b.cwd,
    CASE
        WHEN json_valid(u.message) AND json_type(json_extract(u.message, '\$.content')) = 'text'
        THEN substr(json_extract(u.message, '\$.content'), 1, 100)
        ELSE '[complex message]'
    END as preview
FROM user_messages u
JOIN base_messages b ON u.uuid = b.uuid
WHERE u.message LIKE '%$ARGUMENTS%'
  AND u.tool_use_result IS NULL
ORDER BY b.timestamp DESC
LIMIT 15;
"

Recent Sessions

bash
sqlite3 ~/.claude/__store.db "
SELECT
    b.session_id,
    datetime(MIN(b.timestamp), 'unixepoch', 'localtime') as started,
    datetime(MAX(b.timestamp), 'unixepoch', 'localtime') as ended,
    COUNT(*) as msgs,
    b.cwd
FROM base_messages b
GROUP BY b.session_id
ORDER BY MAX(b.timestamp) DESC
LIMIT 10;
"

Resume a Session

bash
claude --resume            # interactive search
claude --resume SESSION_ID # specific session
claude --resume SESSION_ID --fork-session  # fork instead of continue