You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Append-only journal for AI-coding tasks. Captures the *reasoning chain* — goals, hypotheses, decisions, rejections, evidence — and renders a compact resume pack on demand so an agent can pick up a 2-week-old task with full context.
7
+
Reasoning chain memory for AIcoding sessions.
7
8
8
-
**Why:** existing memory tools store sessions, issues, or do flat semantic search. None store the *logical chain* of a single task. After two weeks, the code remains but the *why* is gone. Task Journal fixes that.
9
+
Task Journal captures the *logical chain* of a coding task -- goals, hypotheses, decisions, rejections, evidence, corrections -- as an append-only event log. When you come back to a two-week-old task, the code is still there but the *why* is gone. Task Journal preserves it.
9
10
10
-
> Task Journal is the first plugin in the `claude-memory` marketplace.
11
+
Unlike session-based memory tools that store raw chat history or flat semantic search, Task Journal records structured reasoning events tied to individual tasks, and renders compact resume packs so an agent (or you) can pick up exactly where work left off.
11
12
12
-
## Install
13
+
## Installation
13
14
14
-
**Option 1 — from crates.io (recommended)**
15
+
**From crates.io (recommended)**
15
16
16
17
```bash
17
18
cargo install task-journal-cli task-journal-mcp
18
19
```
19
20
20
-
**Option 2 — pre-built binary**
21
+
**As a Claude Code plugin**
21
22
22
-
Download the right archive for your OS/arch from [GitHub Releases](https://github.com/Digital-Threads/Task-Journal/releases), unpack, put `task-journal` and `task-journal-mcp` somewhere in your `$PATH`.
23
+
```bash
24
+
claude plugin install github:Digital-Threads/Task-Journal
25
+
```
26
+
27
+
**Pre-built binary**
23
28
24
-
**Option 3 — build from source**
29
+
Download the right archive for your OS/arch from [GitHub Releases](https://github.com/Digital-Threads/Task-Journal/releases), unpack, and place `task-journal` and `task-journal-mcp` somewhere in your `$PATH`.
The interactive terminal UI (`task-journal ui` or `task-journal tui`) lets you browse Claude Code sessions and read conversation history for the current project. Navigate sessions with arrow keys and inspect individual chat messages.
- 2026-04-30T... [hypothesis] PKCE vs implicit grant
66
-
- 2026-04-30T... [open] Add OAuth login
93
+
```bash
94
+
task-journal ui
95
+
task-journal ui --project /path/to/project
67
96
```
68
97
69
-
## Claude Code integration (two paths)
98
+
## MCP Integration
70
99
71
-
### Path A — Plugin (recommended)
100
+
Task Journal ships an MCP server (`task-journal-mcp`) that exposes five tools to Claude Code and other MCP-compatible agents:
72
101
73
-
Adds slash-commands like `/task-journal:create` and `/task-journal:pack`, plus the MCP server, all in one install.
102
+
| MCP Tool | Description |
103
+
|----------|-------------|
104
+
|`task_create`| Create a new task |
105
+
|`event_add`| Append a reasoning event |
106
+
|`task_pack`| Render a resume pack for context restoration |
107
+
|`task_search`| Full-text search across events |
108
+
|`task_close`| Close a task with a reason |
74
109
75
-
From your shell:
110
+
**Plugin install (recommended)** -- the plugin registers the MCP server automatically:
76
111
77
112
```bash
78
-
claude plugin marketplace add https://github.com/Digital-Threads/Task-Journal
79
-
claude plugin install task-journal@claude-memory
113
+
claude plugin install github:Digital-Threads/Task-Journal
80
114
```
81
115
82
-
(Or for a local checkout: `claude plugin marketplace add /path/to/Task-Journal`.)
83
-
84
-
Restart Claude Code. Six slash-commands become available: `/task-journal:create`, `:event`, `:pack`, `:search`, `:close`, `:stats`.
85
-
86
-
### Path B — Plain MCP (no plugin)
87
-
88
-
If you don't want slash-commands or auto-capture hooks, just register the MCP server in `~/.claude/settings.json`:
116
+
**Manual MCP registration** -- add to `~/.claude/settings.json`:
89
117
90
118
```json
91
119
{
@@ -95,86 +123,85 @@ If you don't want slash-commands or auto-capture hooks, just register the MCP se
95
123
}
96
124
```
97
125
98
-
Five tools become available: `task_pack`, `task_search`, `task_create`, `event_add`, `task_close`.
126
+
The MCP server includes built-in instructions that guide Claude Code through the recommended workflow: search for open tasks at session start, record findings/decisions/rejections during work, and close tasks when done.
127
+
128
+
## Auto-Capture via Hooks
99
129
100
-
## Auto-capture via Claude Code hooks
130
+
Claude Code hooks can automatically classify chat chunks and record events without manual `event` commands:
101
131
102
132
```bash
103
-
export ANTHROPIC_API_KEY=sk-ant-...
104
133
task-journal install-hooks --scope user
105
134
```
106
135
107
-
Hooks send chat chunks to Claude Haiku for classification:
108
-
109
-
- Confidence ≥ 0.85 → confirmed event
110
-
- Confidence < 0.85 → suggested event (rendered with `[?]` marker; you decide)
136
+
The classifier (powered by `claude -p` with your Pro/Max subscription, or the Anthropic API with `--backend=api`) analyzes each chat turn and appends events to the active task:
111
137
112
-
Hook commands are wrapped with `|| true` so a classifier failure (network down, rate limit, missing key) **never** breaks Claude Code.
- Confidence < 0.85 -- suggested event (marked with `[?]`)
113
140
114
-
See [INSTALL.md](./INSTALL.md) for the full hook walkthrough.
141
+
Hook commands are wrapped with `|| true` so classifier failures (network down, rate limit) never break Claude Code. Failed classifications are queued in `pending/` and retried on the next ingest.
115
142
116
-
## CLI commands
143
+
## Event Types
117
144
118
-
| Command | Purpose |
119
-
|---------|---------|
120
-
|`task-journal create <title>`| Open a task |
121
-
|`task-journal event <id> --type X --text Y`| Append a typed event |
122
-
|`task-journal close <id> --reason "..."`| Close a task |
|`tj-mcp`|`task-journal-mcp`|`task-journal-mcp` MCP server binary (uses `rmcp`) |
139
169
140
-
**Source of truth = JSONL event log.** SQLite is rebuildable from it via `rebuild-state`. Pack output is Markdown wrapped in JSON metadata.
170
+
**Source of truth = JSONL event log.** SQLite state is derived and fully rebuildable via `rebuild-state`. Pack output is Markdown wrapped in JSON metadata.
0 commit comments