Create Memo Candidates from Past Sessions with paput-harvest
paput-harvest harvests reusable knowledge from past Claude / Codex sessions into pending candidates. It is safe to run repeatedly: it skips already-processed sessions and reviews only new ones, so the first run surveys your whole history and later runs pick up only what is new.
The AI client reads local session files directly, and PaPut MCP stores processed-session state and pending candidates through the PaPut API.
This feature requires a local-file-capable AI client such as Claude Code or Codex. PaPut MCP itself does not read local session files.
What you can do
- Check which Claude / Codex sessions were already processed
- Let the AI client inspect local session files only when needed
- Add only reusable knowledge to pending candidates
- Mark reviewed sessions as processed even when no candidates are added
Usage
In Claude, call this skill:
In clients such as Codex, ask in natural language:
What it does internally
The usual flow is:
- Use
paput_list_processed_sessionsto get sessions already reviewed for knowledge capture - The AI client finds local session files, such as
~/.claude/projects/**/*.jsonland~/.codex/sessions/**/*.jsonl - The AI client derives
source,session_id, andsource_session_updated_atfrom each file - If unprocessed sessions exist, report the count and a short summary
- Only when the user wants it, the AI client reads the relevant JSONL transcript directly
- Use
paput_add_knowledge_candidatesto add reusable, non-duplicate, non-sensitive candidates to the API-backed pending queue - Use
paput_mark_processed_sessionwhen a reviewed session has no candidates to add
Extraction criteria
Only capture technical knowledge, decision criteria, and procedures that can be reused in other projects. Tool settings and one-off operation logs are not candidates, but AI-collaboration practices and review principles — how you hand work to an AI, your review discipline for AI-generated changes — are worth capturing when they can be generalized to hold with a different tool on a different project (this is the scarcest, most durable axis).
Do not capture:
- Project-specific specifications, screen names, business workflows, or operational rules
- Customer data, secrets, tokens, or connection details
- Concrete code fragments or local-environment-only details
- Work logs, impressions, or rejected design history without reusable criteria
- Content that duplicates existing memos or pending candidates
Relationship with paput-save
paput-harvest only adds candidates to pending. To save them as PaPut memos, use paput-save later, review the candidates, and explicitly approve what should be saved.
Notes
- Local transcripts are read by the AI client, not by PaPut MCP
- Candidates are first stored in the API-backed pending queue, not directly as PaPut memos
- When available, the source session updated timestamp is used as the memo creation timestamp when saving
- If a candidate may be duplicate or sensitive, it should be rejected or reported instead of added