From sci-brain
Extracts dialog from Claude Code or Codex CLI history, classifies sessions by topic, and analyzes user messages across 6 academic dimensions for tagged pattern reports.
npx claudepluginhub quantumbfs/sci-brain --plugin sci-brainThis skill uses the workspace's default tool permissions.
Analyze all conversation sessions from a chosen source (Claude Code or Codex CLI) in three phases: batch extraction, topic classification, and deep 6-dimension analysis.
Analyzes Claude Code session history JSONL files to extract insights, summaries, and patterns from conversations. Processes current project or all sessions with bash, jq, and subagents.
Extracts trigger-reaction patterns and logic jumps from tagged dialog JSON reports in docs/dialog folders, clustering into thinking-pattern.md and detecting jumps for master-thinking.md with user input.
Converts Claude Code JSONL conversation logs to Markdown for retrospectives, with incremental/full/project-specific options, index summaries, and analysis templates like growth tracking and bug patterns.
Share bugs, ideas, or general feedback.
Analyze all conversation sessions from a chosen source (Claude Code or Codex CLI) in three phases: batch extraction, topic classification, and deep 6-dimension analysis.
Ask the user to choose a source: claude or codex.
List and extract ALL sessions in batch using the Python script:
python skills/conversation-dump/extract_dialog.py list --source claude --project all
python skills/conversation-dump/extract_dialog.py list --source codex
Extract every listed session and save the JSON output to a staging directory:
mkdir -p docs/dialog/<source>/extracted
python skills/conversation-dump/extract_dialog.py extract --source <source> --session <id> > docs/dialog/<source>/extracted/<session-id>.json
Run extractions in parallel (batch shell commands). Skip sessions that yield 0 user turns after filtering.
Dispatch fast subagents (model: haiku) in parallel to classify each extracted session by conversation topic. Each agent receives a batch of ~20 extracted JSON files and returns a topic label for each.
Topic taxonomy (closed set):
| Slug | Description |
|---|---|
skill-design | Designing or refining skill definitions |
brainstorming | Research ideation, /ideas sessions |
code-review | Reviewing code or PRs |
debugging | Fixing bugs, diagnosing failures |
documentation | Writing or editing docs, READMEs |
ci-cd | CI/CD pipelines, GitHub Actions, deployment |
refactoring | Restructuring existing code |
research | Literature search, paper discussion |
plugin-management | Plugin install, config, marketplace |
slide-creation | Presentations, Typst/LaTeX slides |
paper-review | Reviewing or analyzing academic papers |
testing | Writing or running tests |
configuration | Settings, environment, permissions |
project-setup | Scaffolding, init, dependencies |
automated | No real human messages (system/skill invocations only) |
other | Does not fit any above — agent must propose a slug |
Topic classification rules:
other when no existing slug fits; include a proposed new slug and one-line descriptionother entries: merge into existing slugs where possible, or promote a new slug if 3+ sessions share itAfter all agents return, organize files into topic folders:
mkdir -p docs/dialog/<source>/<topic>
mv docs/dialog/<source>/extracted/<session-id>.json docs/dialog/<source>/<topic>/
Write a topic index to docs/dialog/<source>/topics.md:
# Topic Index
| Topic | Sessions | Description |
|-------|----------|-------------|
| skill-design | 12 | Designing or refining skill definitions |
| brainstorming | 8 | Research ideation using /ideas |
| ... | ... | ... |
| **Total** | **N** | |
Present the topic index to the user and ask which topics to analyze in depth (or "all").
For each session in the selected topics, classify ALL user messages across 6 dimensions. Use parallel agents (batch ~5 sessions per agent).
The 6 dimensions:
| Prefix | Dimension | Tags |
|---|---|---|
bloom: | Cognitive Level | remember, understand, apply, analyze, evaluate, create |
depth: | Question Depth | shallow/intermediate/deep + Graesser category (e.g., deep/causal-antecedent). For non-questions: use the depth of the cognitive task implied by the message. |
probe: | Reasoning Probe | clarification, assumption-probe, evidence-probe, perspective, implication, meta-question, none |
presup: | Presupposition Quality | sound, existential-gap, factive-gap, loaded, complex, ambiguous, missing-context, leading |
discourse: | Discourse Function | referential, display, rhetorical, confirmation-check, clarification-request, indirect-request |
mechanism: | Generation Mechanism | knowledge-deficit, common-ground, action-coordination, conversation-control, exploration, debugging, undetermined |
For full classification criteria, decision rules, tie-breaking rules, and examples, see classification-criteria.md.
Quick classification guidelines:
bloom levels seem equally valid, pick the higher one (the message is at least that complex)depth always includes a Graesser sub-category after the slash (e.g., deep/causal-antecedent, shallow/verification)probe:none is the default for non-probing messages — do not force a probe typepresup:sound is the default for well-formed messages — only flag issues when genuinely presentmechanism is ambiguous between exploration and debugging, check whether the user has a specific failure in mind (debugging) or is open-ended (exploration)Classifying non-question messages: Commands, confirmations, and statements carry the same dimensions:
bloom:apply, depth:deep/instrumental, probe:none, presup:sound, discourse:indirect-request, mechanism:action-coordinationbloom:remember, depth:shallow/verification, probe:none, presup:sound, discourse:confirmation-check, mechanism:common-groundbloom:evaluate, depth:deep/judgmental, probe:none, presup:sound, discourse:referential, mechanism:conversation-controlFor any presupposition issue or non-obvious classification, add a brief Note explaining the reasoning.
Per-session reports: Overwrite the extracted JSON file at docs/dialog/<source>/<topic>/<session-id>.json with the enriched version containing tags. This replaces the raw Phase 1 output with the fully classified version.
Schema:
{
"source": "<claude|codex>",
"session_id": "<id>",
"topic": "<topic slug>",
"timestamp": "<ISO 8601>",
"turns": [
{
"index": 1,
"user": "<user message text>",
"assistant": "<assistant response, truncated>",
"tags": {
"bloom": "analyze",
"depth": "deep/causal-antecedent",
"probe": "assumption-probe",
"presup": "sound",
"discourse": "referential",
"mechanism": "exploration"
},
"note": "<explanation if non-obvious, otherwise null>"
}
]
}
For any presupposition issue or non-obvious classification, populate the note field for that turn.
Aggregate report: After all sessions are processed, write docs/dialog/<source>/summary.md with: