commit bc9b6dde7259deea4e569f85ab05b7b53b382e24 Author: tommy0103 Date: Sat May 30 03:21:35 2026 +0800 build(obelisk): let Claude Code search its own session history - SQLite + FTS5 index over ~/.claude JSONL transcripts. - Agent writes JS queries at runtime — same sandbox pattern as workflows. - Covers sessions, subagents, workflow executions, tool calls, and full-text search. diff --git a/.github/assets/demo.png b/.github/assets/demo.png new file mode 100644 index 0000000..45e89b6 Binary files /dev/null and b/.github/assets/demo.png differ diff --git a/.github/assets/obelisk-wordmark-d.svg b/.github/assets/obelisk-wordmark-d.svg new file mode 100644 index 0000000..f182623 --- /dev/null +++ b/.github/assets/obelisk-wordmark-d.svg @@ -0,0 +1,23 @@ + + + + + + + + + + + + + + + + + + + + + Obelisk + Let Claude Code search its own memory. + \ No newline at end of file diff --git a/.github/assets/obelisk-wordmark-dark.svg b/.github/assets/obelisk-wordmark-dark.svg new file mode 100644 index 0000000..23b08a3 --- /dev/null +++ b/.github/assets/obelisk-wordmark-dark.svg @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + + + Obelisk + \ No newline at end of file diff --git a/.github/assets/obelisk-wordmark-l.svg b/.github/assets/obelisk-wordmark-l.svg new file mode 100644 index 0000000..a2b1fe3 --- /dev/null +++ b/.github/assets/obelisk-wordmark-l.svg @@ -0,0 +1,23 @@ + + + + + + + + + + + + + + + + + + + + + Obelisk + Let Claude Code search its own memory. + \ No newline at end of file diff --git a/.github/assets/obelisk-wordmark-l2.svg b/.github/assets/obelisk-wordmark-l2.svg new file mode 100644 index 0000000..4e6b3d1 --- /dev/null +++ b/.github/assets/obelisk-wordmark-l2.svg @@ -0,0 +1,23 @@ + + + + + + + + + + + + + + + + + + + + + Obelisk + Let Claude Code search its own memory. + \ No newline at end of file diff --git a/.github/assets/obelisk-wordmark-light.svg b/.github/assets/obelisk-wordmark-light.svg new file mode 100644 index 0000000..c7c0679 --- /dev/null +++ b/.github/assets/obelisk-wordmark-light.svg @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + + + Obelisk + \ No newline at end of file diff --git a/README.md b/README.md new file mode 100644 index 0000000..1f2a6eb --- /dev/null +++ b/README.md @@ -0,0 +1,122 @@ +
+ + + + Obelisk + + +Every past session, subagent, and workflow — searchable in natural language. + + + +
+ +
+ +
+ Obelisk in action +
+

Ask in plain language. The agent writes the query, runs it, answers.

+
+ +--- + +## What you can ask + +``` +/obelisk 上次那个 auth 的 bug 我怎么修的 +/obelisk 哪些文件这周被反复修改 +/obelisk 最近 workflow 跑出来什么结果 +/obelisk 我让 subagent 做过哪些代码 review +``` + +Anything Claude Code has done before — sessions, tool calls, subagents, workflows — is indexed and searchable. Ask in your own words. + +## Install + +```bash +npx skills add tommy0103/obelisk +``` + +Or manually: copy `obelisk/` into your project's `.claude/skills/`. + +Then in any Claude Code session: + +``` +/obelisk +``` + +First run builds the index (~5 seconds for 100 sessions). After that it rebuilds incrementally. + +### Requires + +- Node.js 22+ (uses built-in node:sqlite with FTS5) +- Claude Code with skills support. + +## What gets indexed + +| Layer | Source | What's captured | +|-------|--------|----------------| +| **Sessions** | `/.jsonl` | Title, project, timestamps, git branch | +| **Messages** | user + assistant turns | Full text, model, token usage, parent chain | +| **Tool calls** | every tool invocation | Tool name, input, file paths touched | +| **Subagents** | `subagents/agent-.jsonl` | Agent type, description, full conversation | +| **Workflows** | `workflows/wf_.json` | Script, structured result, agent count | +| **Workflow agents** | `subagents/workflows/wf_/` | Per-agent transcripts linked to workflow | + +Full-text search via FTS5 covers all message text across every layer. + +## How it works + +``` +You ask a question + ↓ +Agent writes a JS query against the SQLite index + ↓ +Runs it via node runtime.mjs --query