cc-wiki: Claude History to Quartz Knowledge Base

VerifiedCaution

Builds a complete Quartz knowledge base from Claude conversation history. Runs multiple phases with parallel agents to synthesize project digests and cross-cutting patterns.

Sby Skills Guide Bot
DocumentationAdvanced
7/26/2026
Claude Code
#knowledge-base#claude-history#quartz#parallel-agents#session-analysis

Recommended for

Automated summary

Turns the user's `~/.claude/` history into a static Quartz knowledge base, using a pre-processing script followed by parallel per-project digest agents and cross-cutting synthesis agents.

Strengths

  • Automates the whole pipeline from raw JSONL to a running Quartz dev server in a single command with no required flags
  • Fans work out across 5–12 parallel subagents and intelligently bundles small projects (under 50 prompts) into clusters
  • Enforces verbatim quotes and `[[wikilinks]]` for every person, company and concept, reducing invented paraphrasing
  • Handles edge cases explicitly: empty corpus, thin volume (under 50 prompts), non-empty output directory, and an alternate data source via `--source`

Limitations

  • The provided SKILL.md is truncated mid-Phase 2, so phases 3–5 (cross-cutting synthesis, spine writing, Quartz install, dev server) are only partially described
  • Output quality is proportional to history size; a recent user gets a very sparse vault
  • Depends on prior install.sh setup, Python 3, the bundled scripts/templates, and the Node/Quartz toolchain
When to use it

Use it when you want months of accumulated Claude Code sessions turned into a navigable, linkable site you can browse and search.

When not to use it

Avoid it if your `~/.claude` history is nearly empty, you cannot run local scripts, or you just want plain full-text search rather than a generated static site.

Security analysis

Caution
Quality score78/100

The skill uses powerful tools (Bash, npm, subagents) and reads highly sensitive local history, but each action is legitimate and directly serves its stated purpose of building a knowledge base. There is no destructive, exfiltrating, or obfuscated behavior, so it warrants caution rather than risky, mainly for the breadth of Bash/npm execution and the sensitivity of the data it ingests.

Findings
  • •Reads the user's entire `~/.claude` history (prompts, session transcripts, subagent logs), which contains sensitive personal and business data; `--source` also allows pointing at another account's copied data.
  • •Runs a bundled Python script (`preprocess.py`) and executes `npm install` + `npm run dev`, i.e. arbitrary package installs and a local dev server (broad Bash execution).
  • •Dispatches many parallel subagents with Read/Write/Bash/Task, amplifying the scope of file access and writes.
  • •Copies templates and overwrites output directory (asks once if non-empty) — mild data-loss risk if user has files in a reused dir.
  • •No evidence of exfiltration, curl|sh, rm -rf, obfuscated payloads, or disabled safety; network use is limited to npm install and localhost binding.
How this analysis is made

Examples

Build the default knowledge base
/cc-wiki
Build into a specific directory
/cc-wiki ~/vaults/claude-kb
Build from a copied account backup
/cc-wiki --source ~/backup-claude ./kb-backup

name: cc-wiki description: Distill the user's ~/.claude history into a Quartz knowledge base. Runs preprocess.py, dispatches parallel project-digest agents, then parallel cross-cutting synthesis agents (people / companies / projects / concepts / workflows / tools / playbooks), writes the spine, installs Quartz, and starts the dev server. Single command, no flags required. argument-hint: "[output-dir, default ./my-kb]" allowed-tools: Read Write Edit Bash Glob Grep Task TaskCreate TaskUpdate model: claude-opus-4-7

cc-wiki — Claude history → Quartz knowledge base

When the user runs /cc-wiki [dir], build a complete Quartz vault from their ~/.claude/ history. Five phases. The first and last are mechanical; the middle three dispatch parallel subagents. End-of-run prints the localhost URL.

Default output dir: ./my-kb. If the user passes [dir], use that. If the directory already exists and is non-empty, ask once before overwriting.

If the user has copied another account's Claude data to a custom location, they can mention it inline (e.g. /cc-wiki --source ~/backup-claude) — pass the same --source <path> to preprocess.py in Phase 1. Otherwise default to ~/.claude.

<SKILL_DIR> resolution: ~/.claude/skills/cc-wiki/ (installed by install.sh). Templates and scripts live under <SKILL_DIR>/templates/ and <SKILL_DIR>/scripts/.

Phase 0 — Scaffold

Bash(mkdir -p <dir>)
Bash(cp -R <SKILL_DIR>/templates/quartz/. <dir>/)
Bash(cp -R <SKILL_DIR>/templates/spine-defaults/. <dir>/)

The Quartz template includes quartz/, quartz.config.ts, quartz.layout.ts, package.json, tsconfig.json, vercel.json, kb.py, and a starter internal/ skeleton. The spine defaults are empty stubs for index.md, methodology.md, arc.md, glossary.md, open-questions.md, disambiguation.md — Phase 4 fills them.

Phase 1 — Pre-process

Bash(python3 <SKILL_DIR>/scripts/preprocess.py --out <dir>/internal [--source <path>])

Reads ~/.claude/history.jsonl + ~/.claude/projects/**/*.jsonl (or <path>/history.jsonl + <path>/projects/**/*.jsonl if --source is set). Writes:

  • <dir>/internal/prompts/{project_slug}.md — chronological prompt log per project (chunked by month when > 400 prompts)
  • <dir>/internal/sessions/{slug}/{session_id}.md — per-session digest
  • <dir>/internal/subagents/{slug}/{session_uuid}/agent-*.md — subagent transcripts
  • <dir>/internal/project-overview.{md,json} — authoritative project → corpus mapping (agents use this)
  • <dir>/internal/session-inventory.{md,json} — counts and date ranges

If no sessions are found, stop and report: No sessions in ~/.claude/projects/. Nothing to build.

If the user has fewer than ~50 prompts total, warn that the output will be thin but proceed (some signal is better than none).

Phase 2 — Project digests (parallel agents)

Read <dir>/internal/project-overview.json to get the list of projects with prompt counts. Group them:

  • Big projects (>200 prompts): one dedicated agent each
  • Medium (50-200): one agent each
  • Small (<50): bundle 3-5 into a single "cluster" agent

For typical users you'll dispatch 5-12 agents in parallel in a single message. Each agent gets the project-digest prompt template (<SKILL_DIR>/templates/prompts/digest-project.md) with project-specific substitutions: project path, slug, prompt file paths, session/subagent dir paths, and total prompt count.

The template instructs the agent to:

  1. Read all assigned prompt files chronologically (not skim)
  2. Sample 5-15 session/subagent transcripts for depth
  3. Write <dir>/internal/project-digests/{slug}.md with fixed schema (TL;DR → strands → people → companies → tools → concepts → workflow obs → cross-project connections → notable verbatim prompts → open threads)

The template requires verbatim quotes (no paraphrasing) and [[wikilinks]] for every person/company/concept mentioned.

Wait for all agents to finish before Phase 3.

Phase 3 — Cross-cutting synthesis (parallel agents)

Dispatch six agents in parallel, one per axis. Each reads ALL project digests from Phase 2 and writes its assigned output dir. Templates under <SKILL_DIR>/templates/prompts/synthesize-{axis}.md:

| Axis | Output dir | Template | |---|---|---| | People | <dir>/people/ | synthesize-people.md | | Companies | <dir>/companies/ | synthesize-companies.md | | Projects | <dir>/projects/ | synthesize-projects.md | | Concepts | <dir>/concepts/ | synthesize-concepts.md | | Workflows | <dir>/workflows/ | synthesize-workflows.md | | Tools & Playbooks | <dir>/tools/ + <dir>/playbooks/ | synthesize-tools-playbooks.md |

Each output dir gets its own index.md plus one page per entry.

Wait for all six to finish before Phase 4.

Phase 4 — Spine (you do this directly)

Write six files with full context of what Phases 2 and 3 produced:

  • <dir>/index.md — landing
  • <dir>/methodology.md — how this KB was built (cite the pipeline)
  • <dir>/arc.md — chronological narrative of the user's six months (or however long)
  • <dir>/glossary.md — distilled vocabulary, grouped by category
  • <dir>/open-questions.md — unresolved threads, including stated-vs-observed tensions
  • <dir>/disambiguation.md — name collisions flagged by Phase 3

Use <SKILL_DIR>/templates/spine-defaults/*.md as starting structure but fill them with the specific evidence from the run. The arc should be a single-read narrative — past tense, dated milestones.

Phase 5 — Build and serve

Bash(cd <dir> && npm install --silent)
Bash(cd <dir> && python3 kb.py build)             # generate .index.json
Bash(cd <dir> && npm run dev)                     # background

npm run dev starts the Quartz server at http://localhost:8080. Run in background and surface the URL.

Final message to the user:

Built {N} pages from {M} prompts. Open http://localhost:8080.

Spine: index, arc, glossary, methodology, open-questions, disambiguation
Content: {p_count} projects, {ppl_count} people, {co_count} companies,
         {c_count} concepts, {w_count} workflows, {t_count} tools, {pb_count} playbooks

⚠️ This vault names real people and unredacted strategy. Don't deploy public without a redact pass.

Hard rules

  • One command, no flags. If the user passes [dir], use it. Otherwise default ./my-kb. No other arguments.
  • Phases 2 and 3 dispatch in parallel via the Task tool in a single message. Don't fan out sequentially — costs 5-10× more wall time.
  • Verbatim quotes only. Every person / decision / pivot in the synthesis must trace back to a quoted prompt from the digest. Forbidden to paraphrase load-bearing claims.
  • [[wikilinks]] everywhere. Pre-resolve to lowercase-kebab slugs. Aliases go in frontmatter.
  • Don't touch ~/.claude/. Read-only. Pre-processor never writes back.
  • No network calls except LLM API. The preprocessor is stdlib; Quartz is local-build.
  • If npm install fails: report the error, suggest nvm use 22, and stop. Don't try to repair.
  • If a Phase 2 or Phase 3 agent fails: continue with the others, then report which axes have gaps. The KB is still useful with one axis missing.
  • Don't write inside <SKILL_DIR>/. Treat it as read-only at runtime; everything goes under <dir>.

Failure modes

  • Empty history: No sessions found in ~/.claude/projects/. Stop.
  • Single tiny project (<50 prompts): build succeeds but warn output will be thin.
  • history.jsonl missing (older Claude Code installs): fall back to session JSONL alone; the corpus is still usable, just missing the project-tagged prompt spine.
  • Agent returns malformed digest: re-dispatch that one agent only with Retry with stricter adherence to the digest schema. Don't retry more than once.
  • YAML frontmatter error in synthesized page: the page-template forbids unquoted titles with colons / quotes. Phase 3 templates emphasize this.

What this skill does NOT do

  • Doesn't pick which projects matter — every project gets analyzed.
  • Doesn't push to GitHub or deploy to Vercel.
  • Doesn't redact for public use.
  • Doesn't run behavioral analysis on the sessions (no session-quality metrics, no model-regression detection).
  • Doesn't update across runs — re-running re-builds from scratch. (Future: incremental refresh.)

From the file to a first result

The download contains exactly the content displayed on this page. This copy may differ from the latest version in the source repository.

View the source and supporting files

This download contains SKILL.md only. Any scripts, references, templates and dependencies are not included. Get the required files from the source, preserving their directory structure, before continuing.

1. Download the file

Download SKILL.md

From the root of a test project, save the file as .skill-downloads/cc-wiki-claude-history-to-quartz-knowledge-base-ms1aw3yc/SKILL.md, or use the command below. This folder is for inspecting the skill before installation.

Command for macOS/Linux or WSL: requires a POSIX shell and curl. On Windows without WSL, use the download button and create the folder manually.

mkdir -p '.skill-downloads/cc-wiki-claude-history-to-quartz-knowledge-base-ms1aw3yc' && curl --fail --show-error --location 'https://skills-guides.com/api/skills/cc-wiki-claude-history-to-quartz-knowledge-base-ms1aw3yc/download' --output '.skill-downloads/cc-wiki-claude-history-to-quartz-knowledge-base-ms1aw3yc/SKILL.md.part' && mv '.skill-downloads/cc-wiki-claude-history-to-quartz-knowledge-base-ms1aw3yc/SKILL.md.part' '.skill-downloads/cc-wiki-claude-history-to-quartz-knowledge-base-ms1aw3yc/SKILL.md'

2. Check prerequisites

Read SKILL.md before using it. If it references scripts or external services, inspect them and prepare the required access in your test environment.

Tools declared by the author (check availability in your agent): Read Write Edit Bash Glob Grep Task TaskCreate TaskUpdate

No recognized prerequisites section in this file. This does not mean it is self-contained: libraries, tools and access requirements may be mentioned elsewhere in the content or source repository.

The platforms on this page are catalog indications. The paths below follow tool documentation; they do not prove this skill has been run in those tools. No minimum tool version is confirmed for this listing.

3. Load the skill

After inspection, copy the complete folder into your project using one of the commands below, then open a new tool session. The command stops if a folder with the same name already exists: compare the files before replacing it.

Claude Code
test -f '.skill-downloads/cc-wiki-claude-history-to-quartz-knowledge-base-ms1aw3yc/SKILL.md' && test -s '.skill-downloads/cc-wiki-claude-history-to-quartz-knowledge-base-ms1aw3yc/SKILL.md' && mkdir -p '.claude/skills' && test ! -e '.claude/skills/cc-wiki' && cp -R '.skill-downloads/cc-wiki-claude-history-to-quartz-knowledge-base-ms1aw3yc' '.claude/skills/cc-wiki'

OpenSkills

OpenSkills must already be installed. The local install/read procedure is checked with OpenSkills 1.5.0, which requires Node.js ≥ 20.6.0. Catalog slugs are not resolved automatically.

Official OpenSkills installation
openskills install './.skill-downloads/cc-wiki-claude-history-to-quartz-knowledge-base-ms1aw3yc'

openskills read 'cc-wiki-claude-history-to-quartz-knowledge-base-ms1aw3yc'

Reading should display the installed file content and its base directory. It does not run the skill or install its dependencies.

For an agent that reads AGENTS.md, then sync the index. This command changes AGENTS.md: review the diff before using it.

openskills sync

Manual method or another tool: attach SKILL.md to a conversation, or open it in an agent that can read files. Include any required supporting resources. No universal folder is recognized by every tool.

4. Try a first task

Use a short, synthetic input: an API endpoint, a small document or an interface brief. In a new conversation, attach the file or give the agent its path, then adapt this request:

Read .skill-downloads/cc-wiki-claude-history-to-quartz-knowledge-base-ms1aw3yc/SKILL.md and apply its instructions to this example: [describe a test input]. Identify any missing files, dependencies or access. Produce the result requested by the skill without inventing data or running unreviewed scripts.

Expected result: output matching the skill instructions, or a precise list of missing prerequisites. A read confirmation alone does not validate a first use. If an external resource is unavailable, that path remains untested.

Related skills