@cwim/kanban 1.1.20 → 1.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +284 -270
- package/dashboard/dist/assets/{index-p_oYIoTL.js → index-C9-ldHtP.js} +5 -5
- package/dashboard/dist/assets/{index-WVxfVg2r.css → index-DrSkXUSP.css} +1 -1
- package/dashboard/dist/index.html +13 -13
- package/dist/cli/commands.js +79 -77
- package/dist/cli/commands.js.map +1 -1
- package/dist/mcp/server.d.ts.map +1 -1
- package/dist/mcp/server.js +168 -134
- package/dist/mcp/server.js.map +1 -1
- package/dist/storage/store.d.ts +4 -4
- package/dist/storage/store.d.ts.map +1 -1
- package/dist/storage/store.js +255 -73
- package/dist/storage/store.js.map +1 -1
- package/dist/types.d.ts +3 -3
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +14 -9
- package/dist/types.js.map +1 -1
- package/package.json +68 -68
package/README.md
CHANGED
|
@@ -1,270 +1,284 @@
|
|
|
1
|
-
# CWIM Kanban
|
|
2
|
-
|
|
3
|
-
> Your AI's long-term memory. Visualized.
|
|
4
|
-
|
|
5
|
-
**CWIM Kanban gives your AI agent a persistent memory layer.** It remembers what you were working on, recalls context automatically, and shows you everything on a live dashboard.
|
|
6
|
-
|
|
7
|
-
Works with **Claude Code** and **
|
|
8
|
-
|
|
9
|
-
No more "what were we doing again?" between sessions.
|
|
10
|
-
|
|
11
|
-
## How It Works
|
|
12
|
-
|
|
13
|
-
```
|
|
14
|
-
User: "Continue the auth refactor"
|
|
15
|
-
|
|
|
16
|
-
Claude: task_recall("auth refactor")
|
|
17
|
-
|
|
|
18
|
-
Memory: "Found: [in-progress] Refactor auth middleware"
|
|
19
|
-
|
|
|
20
|
-
Claude: "Ah yes, we were extracting JWT validation..."
|
|
21
|
-
```
|
|
22
|
-
|
|
23
|
-
As Claude works through complex tasks, it creates cards, appends notes, and moves them across columns. You watch progress unfold in real time on the board. When you return tomorrow, Claude recalls exactly where you left off.
|
|
24
|
-
|
|
25
|
-
## Installation
|
|
26
|
-
|
|
27
|
-
```bash
|
|
28
|
-
# Install globally
|
|
29
|
-
npm install -g @cwim/kanban
|
|
30
|
-
|
|
31
|
-
# Or run directly with npx
|
|
32
|
-
npx @cwim/kanban
|
|
33
|
-
|
|
34
|
-
# Short command (after global install)
|
|
35
|
-
kanban
|
|
36
|
-
```
|
|
37
|
-
|
|
38
|
-
## Quick Start
|
|
39
|
-
|
|
40
|
-
```bash
|
|
41
|
-
# Start the dashboard
|
|
42
|
-
kanban
|
|
43
|
-
```
|
|
44
|
-
|
|
45
|
-
### Claude Code Setup
|
|
46
|
-
|
|
47
|
-
Add to your Claude Code MCP config (`~/.claude/claude.json`):
|
|
48
|
-
|
|
49
|
-
```json
|
|
50
|
-
{
|
|
51
|
-
"mcpServers": {
|
|
52
|
-
"kanban": {
|
|
53
|
-
"command": "npx",
|
|
54
|
-
"args": ["@cwim/kanban", "mcp"]
|
|
55
|
-
}
|
|
56
|
-
}
|
|
57
|
-
}
|
|
58
|
-
```
|
|
59
|
-
|
|
60
|
-
### OpenCode Setup
|
|
61
|
-
|
|
62
|
-
Add to your OpenCode config (`opencode.json` in project root or `~/.config/opencode/opencode.json`):
|
|
63
|
-
|
|
64
|
-
```json
|
|
65
|
-
{
|
|
66
|
-
"$schema": "https://opencode.ai/config.json",
|
|
67
|
-
"mcp": {
|
|
68
|
-
"kanban": {
|
|
69
|
-
"type": "local",
|
|
70
|
-
"command": ["npx", "-y", "@cwim/kanban", "mcp"],
|
|
71
|
-
"enabled": true
|
|
72
|
-
}
|
|
73
|
-
}
|
|
74
|
-
}
|
|
75
|
-
```
|
|
76
|
-
|
|
77
|
-
## Making Your AI Agent Use It
|
|
78
|
-
|
|
79
|
-
Just installing the MCP isn't enough — your AI agent needs instructions to use it.
|
|
80
|
-
|
|
81
|
-
### For Claude Code
|
|
82
|
-
|
|
83
|
-
Add a `CLAUDE.md` file to your project root:
|
|
84
|
-
|
|
85
|
-
```markdown
|
|
86
|
-
## Task Tracking
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
-
|
|
101
|
-
-
|
|
102
|
-
-
|
|
103
|
-
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
|
199
|
-
|
|
|
200
|
-
| `
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
```
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
```
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
```
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
-
|
|
260
|
-
-
|
|
261
|
-
-
|
|
262
|
-
|
|
263
|
-
##
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
1
|
+
# CWIM Kanban
|
|
2
|
+
|
|
3
|
+
> Your AI's long-term memory. Visualized.
|
|
4
|
+
|
|
5
|
+
**CWIM Kanban gives your AI agent a persistent memory layer.** It remembers what you were working on, recalls context automatically, and shows you everything on a live dashboard.
|
|
6
|
+
|
|
7
|
+
Works with **Claude Code**, **OpenCode**, and any **Git repository**.
|
|
8
|
+
|
|
9
|
+
No more "what were we doing again?" between sessions.
|
|
10
|
+
|
|
11
|
+
## How It Works
|
|
12
|
+
|
|
13
|
+
```
|
|
14
|
+
User: "Continue the auth refactor"
|
|
15
|
+
|
|
|
16
|
+
Claude: task_recall("auth refactor")
|
|
17
|
+
|
|
|
18
|
+
Memory: "Found: [in-progress] Refactor auth middleware"
|
|
19
|
+
|
|
|
20
|
+
Claude: "Ah yes, we were extracting JWT validation..."
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
As Claude works through complex tasks, it creates cards, appends notes, and moves them across columns. You watch progress unfold in real time on the board. When you return tomorrow, Claude recalls exactly where you left off.
|
|
24
|
+
|
|
25
|
+
## Installation
|
|
26
|
+
|
|
27
|
+
```bash
|
|
28
|
+
# Install globally
|
|
29
|
+
npm install -g @cwim/kanban
|
|
30
|
+
|
|
31
|
+
# Or run directly with npx
|
|
32
|
+
npx @cwim/kanban
|
|
33
|
+
|
|
34
|
+
# Short command (after global install)
|
|
35
|
+
kanban
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
## Quick Start
|
|
39
|
+
|
|
40
|
+
```bash
|
|
41
|
+
# Start the dashboard
|
|
42
|
+
kanban
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
### Claude Code Setup
|
|
46
|
+
|
|
47
|
+
Add to your Claude Code MCP config (`~/.claude/claude.json`):
|
|
48
|
+
|
|
49
|
+
```json
|
|
50
|
+
{
|
|
51
|
+
"mcpServers": {
|
|
52
|
+
"kanban": {
|
|
53
|
+
"command": "npx",
|
|
54
|
+
"args": ["@cwim/kanban", "mcp"]
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
### OpenCode Setup
|
|
61
|
+
|
|
62
|
+
Add to your OpenCode config (`opencode.json` in project root or `~/.config/opencode/opencode.json`):
|
|
63
|
+
|
|
64
|
+
```json
|
|
65
|
+
{
|
|
66
|
+
"$schema": "https://opencode.ai/config.json",
|
|
67
|
+
"mcp": {
|
|
68
|
+
"kanban": {
|
|
69
|
+
"type": "local",
|
|
70
|
+
"command": ["npx", "-y", "@cwim/kanban", "mcp"],
|
|
71
|
+
"enabled": true
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
## Making Your AI Agent Use It
|
|
78
|
+
|
|
79
|
+
Just installing the MCP isn't enough — your AI agent needs instructions to use it.
|
|
80
|
+
|
|
81
|
+
### For Claude Code
|
|
82
|
+
|
|
83
|
+
Add a `CLAUDE.md` file to your project root:
|
|
84
|
+
|
|
85
|
+
```markdown
|
|
86
|
+
## Task Tracking
|
|
87
|
+
|
|
88
|
+
Use the cwim-kanban MCP to track all work in this project.
|
|
89
|
+
|
|
90
|
+
### Workflow
|
|
91
|
+
|
|
92
|
+
1. **Before starting**: Call `task_recall` with what you're about to work on
|
|
93
|
+
2. **Starting a task**: Create or move to `in-progress`
|
|
94
|
+
3. **Making progress**: Append notes with discoveries, decisions, or blockers
|
|
95
|
+
4. **Finishing**: Move to `done` and append a summary note
|
|
96
|
+
5. **Blocked**: Move to `blocked` with a note explaining why
|
|
97
|
+
|
|
98
|
+
### Rules
|
|
99
|
+
|
|
100
|
+
- Always check for existing tasks before creating new ones
|
|
101
|
+
- **One task per unit of work** - If a request involves multiple distinct steps (e.g., "fix auth and update docs"), create separate tasks for each step instead of one combined task
|
|
102
|
+
- **Always verify the active session before creating tasks** - Call `session_list` first, confirm the active session matches the current project, and call `session_switch` if it doesn't
|
|
103
|
+
- Use tags consistently (e.g., "bug", "feature", "refactor", "docs")
|
|
104
|
+
- Append notes liberally - they build context for future sessions
|
|
105
|
+
- Move tasks to "blocked" immediately when stuck, with explanation
|
|
106
|
+
- Keep task titles concise but descriptive
|
|
107
|
+
```
|
|
108
|
+
|
|
109
|
+
This makes the behavior automatic — no need to ask Claude every session.
|
|
110
|
+
|
|
111
|
+
### For OpenCode
|
|
112
|
+
|
|
113
|
+
Add an `AGENTS.md` file to your project root (or add to your existing one):
|
|
114
|
+
|
|
115
|
+
```markdown
|
|
116
|
+
## Task Tracking
|
|
117
|
+
|
|
118
|
+
Use the cwim-kanban MCP to track all work in this project.
|
|
119
|
+
|
|
120
|
+
### Workflow
|
|
121
|
+
|
|
122
|
+
1. **Before starting**: Call `task_recall` with what you're about to work on
|
|
123
|
+
2. **Starting a task**: Create or move to `in-progress`
|
|
124
|
+
3. **Making progress**: Append notes with discoveries, decisions, or blockers
|
|
125
|
+
4. **Finishing**: Move to `done` and append a summary note
|
|
126
|
+
5. **Blocked**: Move to `blocked` with a note explaining why
|
|
127
|
+
|
|
128
|
+
### Rules
|
|
129
|
+
|
|
130
|
+
- Always check for existing tasks before creating new ones
|
|
131
|
+
- **One task per unit of work** - If a request involves multiple distinct steps (e.g., "fix auth and update docs"), create separate tasks for each step instead of one combined task
|
|
132
|
+
- **Always verify the active session before creating tasks** - Call `session_list` first, confirm the active session matches the current project, and call `session_switch` if it doesn't
|
|
133
|
+
- Use tags consistently (e.g., "bug", "feature", "refactor", "docs")
|
|
134
|
+
- Append notes liberally - they build context for future sessions
|
|
135
|
+
- Move tasks to "blocked" immediately when stuck, with explanation
|
|
136
|
+
- Keep task titles concise but descriptive
|
|
137
|
+
```
|
|
138
|
+
|
|
139
|
+
This makes the behavior automatic for OpenCode sessions as well.
|
|
140
|
+
|
|
141
|
+
## Memory Features
|
|
142
|
+
|
|
143
|
+
### Smart Context Recall
|
|
144
|
+
|
|
145
|
+
Before starting complex work, Claude can recall relevant past tasks:
|
|
146
|
+
|
|
147
|
+
```
|
|
148
|
+
task_recall({ context: "refactoring auth middleware" })
|
|
149
|
+
```
|
|
150
|
+
|
|
151
|
+
Returns the most relevant tasks based on keyword matching, recency, and status. No more "what were we doing again?"
|
|
152
|
+
|
|
153
|
+
### Append Notes Without Overwriting
|
|
154
|
+
|
|
155
|
+
Build context over time without losing previous work:
|
|
156
|
+
|
|
157
|
+
```
|
|
158
|
+
task_append_note({
|
|
159
|
+
id: "tf-abc123",
|
|
160
|
+
note: "Discovered edge case with JWT refresh tokens"
|
|
161
|
+
})
|
|
162
|
+
```
|
|
163
|
+
|
|
164
|
+
Each note is timestamped and preserved. The task grows smarter as you work.
|
|
165
|
+
|
|
166
|
+
### Session Isolation
|
|
167
|
+
|
|
168
|
+
Each project gets its own memory space. Work on multiple projects without context bleeding:
|
|
169
|
+
|
|
170
|
+
- **Auto-detected from Git repositories** - Automatically binds to the current git repo when you `cd` into it
|
|
171
|
+
- Auto-detected from `~/.claude/projects/` (Claude Code) and `~/.config/opencode/` (OpenCode)
|
|
172
|
+
- Switch between sessions via dashboard, CLI, or MCP
|
|
173
|
+
- "Independent Mode" for non-AI work
|
|
174
|
+
|
|
175
|
+
**Git Integration**: When you run kanban commands inside a git repository, it automatically detects the repo and uses it as the session. No manual session switching needed - just `cd` into your project and start tracking tasks.
|
|
176
|
+
|
|
177
|
+
### Keyword Search
|
|
178
|
+
|
|
179
|
+
Find anything instantly across your entire task history:
|
|
180
|
+
|
|
181
|
+
```
|
|
182
|
+
task_list({ query: "auth" })
|
|
183
|
+
```
|
|
184
|
+
|
|
185
|
+
## Visual Dashboard
|
|
186
|
+
|
|
187
|
+
While your AI works in the background, watch progress in real time:
|
|
188
|
+
|
|
189
|
+
- **Real-time updates** - Board refreshes every 2 seconds
|
|
190
|
+
- **4 columns** - To Do, In Progress, Done, Blocked
|
|
191
|
+
- **Session switching** - Dropdown to browse projects
|
|
192
|
+
- **Tag support** - Categorize tasks with badges
|
|
193
|
+
- **Source tracking** - Distinguish AI-created vs manual tasks vs git-detected sessions
|
|
194
|
+
- **Keyboard shortcuts** - `r` to refresh, `1-4` to filter columns
|
|
195
|
+
|
|
196
|
+
## MCP Tools
|
|
197
|
+
|
|
198
|
+
| Tool | Purpose |
|
|
199
|
+
| ------------------ | ------------------------------------------ |
|
|
200
|
+
| `task_recall` | Intelligently recall relevant task context |
|
|
201
|
+
| `task_create` | Create a new task card |
|
|
202
|
+
| `task_append_note` | Append timestamped note to a task |
|
|
203
|
+
| `task_update` | Edit task title, description, tags |
|
|
204
|
+
| `task_move` | Move a task to another column |
|
|
205
|
+
| `task_delete` | Remove a task |
|
|
206
|
+
| `task_list` | List tasks (optionally filtered/search) |
|
|
207
|
+
| `task_get` | Show details of a specific task |
|
|
208
|
+
| `session_list` | List all available sessions |
|
|
209
|
+
| `session_switch` | Switch to a different session |
|
|
210
|
+
|
|
211
|
+
## CLI Commands
|
|
212
|
+
|
|
213
|
+
### Launch Dashboard
|
|
214
|
+
|
|
215
|
+
```bash
|
|
216
|
+
kanban # Start dashboard and open browser
|
|
217
|
+
kanban --port 8080 # Custom port
|
|
218
|
+
kanban --no-open # Don't auto-open browser
|
|
219
|
+
```
|
|
220
|
+
|
|
221
|
+
### Memory Operations
|
|
222
|
+
|
|
223
|
+
```bash
|
|
224
|
+
kanban recall "auth" # Recall relevant tasks
|
|
225
|
+
kanban note tf-abc123 "Edge case found" # Append note
|
|
226
|
+
```
|
|
227
|
+
|
|
228
|
+
### Task Management
|
|
229
|
+
|
|
230
|
+
```bash
|
|
231
|
+
kanban add "Fix auth" -d "JWT validation" -t bug,auth
|
|
232
|
+
kanban list --query "auth"
|
|
233
|
+
kanban move tf-abc123 done
|
|
234
|
+
kanban show tf-abc123
|
|
235
|
+
kanban remove tf-abc123
|
|
236
|
+
```
|
|
237
|
+
|
|
238
|
+
### Session Management
|
|
239
|
+
|
|
240
|
+
```bash
|
|
241
|
+
kanban sessions # List all sessions
|
|
242
|
+
kanban switch my-project # Change active session
|
|
243
|
+
```
|
|
244
|
+
|
|
245
|
+
## Data Storage
|
|
246
|
+
|
|
247
|
+
All data stored locally in `~/.kanban/sessions/`:
|
|
248
|
+
|
|
249
|
+
```
|
|
250
|
+
~/.kanban/
|
|
251
|
+
├── sessions/
|
|
252
|
+
│ ├── my-project/
|
|
253
|
+
│ │ └── tasks.json
|
|
254
|
+
│ └── independent/
|
|
255
|
+
│ └── tasks.json
|
|
256
|
+
└── active-session.json
|
|
257
|
+
```
|
|
258
|
+
|
|
259
|
+
- **Local-first** - No cloud, no accounts, no network required
|
|
260
|
+
- **Human-readable** - Plain JSON you can edit directly
|
|
261
|
+
- **Portable** - Back up or version-control your `~/.kanban/` directory
|
|
262
|
+
|
|
263
|
+
## Architecture
|
|
264
|
+
|
|
265
|
+
```
|
|
266
|
+
Claude Code → MCP Server (stdio) → session tasks.json ← HTTP Server ← Dashboard UI
|
|
267
|
+
| |
|
|
268
|
+
task_recall, append_note, etc. polling /api/tasks
|
|
269
|
+
```
|
|
270
|
+
|
|
271
|
+
- MCP Server and HTTP Server are separate processes
|
|
272
|
+
- They communicate through per-session JSON files
|
|
273
|
+
- Dashboard polls for updates every 2 seconds
|
|
274
|
+
- Session switching persisted in `~/.kanban/active-session.json`
|
|
275
|
+
|
|
276
|
+
## Requirements
|
|
277
|
+
|
|
278
|
+
- Node.js 18+
|
|
279
|
+
- Git (optional - for automatic repo detection)
|
|
280
|
+
- Claude Code or OpenCode (optional - dashboard works independently)
|
|
281
|
+
|
|
282
|
+
## License
|
|
283
|
+
|
|
284
|
+
MIT
|