kanbango 2.0.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 ADDED
@@ -0,0 +1,360 @@
1
+ # kanbango
2
+
3
+ JSON-first local Kanban board with web GUI, CLI, and MCP server (pure JavaScript).
4
+
5
+ ## Features
6
+
7
+ - 📊 Local Kanban board stored in JSON task files
8
+ - 🎨 Modern web GUI with drag-and-drop interface
9
+ - 🖥️ Full CLI support for automation and CI/CD
10
+ - 🤖 AI-friendly API (JSON output)
11
+ - 📁 Four columns: Active, Planned, Icebox, Done
12
+ - ✅ Subtasks with progress tracking
13
+ - 🏷️ Epic grouping
14
+
15
+ ## Installation
16
+
17
+ ### Global (recommended)
18
+ ```bash
19
+ npm install -g kanbango
20
+ ```
21
+
22
+ ### Local (per project)
23
+ ```bash
24
+ npm install -D kanbango
25
+ ```
26
+
27
+ ### Using npx (no installation)
28
+ ```bash
29
+ npx kanbango --help
30
+ ```
31
+
32
+ ## NPM Package
33
+
34
+ - Package name: `kanbango`
35
+ - Binaries: `kanban`, `kanban-cmd`
36
+ - MCP server entrypoint: `mcp-server.js` (run via `npx kanbango mcp`)
37
+
38
+ ## Requirements
39
+
40
+ - Node.js 16+
41
+
42
+ ## Quick Start
43
+
44
+ ```bash
45
+ # Initialize backlog structure
46
+ kanban init
47
+
48
+ # Start web GUI (opens http://localhost:5500)
49
+ kanban serve
50
+
51
+ # List all tasks (JSON)
52
+ kanban list --json
53
+
54
+ # Add a new task
55
+ kanban add "New feature" --col planned --epic "Phase1"
56
+
57
+ # Show task details
58
+ kanban show PI-001
59
+
60
+ # Move task between columns
61
+ kanban move PI-001 active
62
+
63
+ # Toggle subtask
64
+ kanban toggle PI-001 0
65
+ ```
66
+
67
+ ## CLI Commands
68
+
69
+ | Command | Description |
70
+ |---------|-------------|
71
+ | `kanban serve [PORT]` | Start web GUI (default: 5500) |
72
+ | `kanban init` | Initialize backlog structure |
73
+ | `kanban mcp-init` | Generate MCP config files for Claude Code / OpenCode |
74
+ | `kanban list` | List all tasks |
75
+ | `kanban show <ID>` | Show task details |
76
+ | `kanban add <TITLE>` | Add new task |
77
+ | `kanban move <ID> <COL>` | Move task to column |
78
+ | `kanban toggle <ID> <IDX>` | Toggle subtask |
79
+
80
+ ## Columns
81
+
82
+ - `active` — In progress (max 1-2 tasks)
83
+ - `planned` — Planned for implementation
84
+ - `icebox` — Frozen / nice-to-have
85
+ - `done` — Completed
86
+
87
+ ## Data Structure
88
+
89
+ Tasks are stored as JSON files in `backlog/<column>/`. Existing Markdown task files are still readable during migration:
90
+
91
+ ```json
92
+ {
93
+ "id": "PI-001-feature-title",
94
+ "title": "Feature Title",
95
+ "column": "planned",
96
+ "epic_group": "Phase 1",
97
+ "created": "2026-07-07",
98
+ "description": "High-level context and implementation plan.",
99
+ "specs": "Technical details and constraints.",
100
+ "acceptance_criteria": [
101
+ "First condition",
102
+ "Second condition"
103
+ ],
104
+ "subtasks": [
105
+ {
106
+ "id": "st-1",
107
+ "text": "First subtask",
108
+ "done": false,
109
+ "description": "Execution details for the subtask"
110
+ }
111
+ ],
112
+ "notes": "Optional freeform notes"
113
+ }
114
+ ```
115
+
116
+ ## AI Integration
117
+
118
+ The `kanban-cmd` command provides simplified JSON output for AI agents:
119
+
120
+ ```bash
121
+ # For AI: always use JSON output
122
+ kanban-cmd list
123
+
124
+ # Filter by column
125
+ kanban-cmd list --col active
126
+
127
+ # Show task details
128
+ kanban-cmd show PI-001
129
+
130
+ # Add task (AI-friendly)
131
+ kanban-cmd add "New task" --col planned --epic "Phase 1"
132
+ ```
133
+
134
+ ### JSON Output Format
135
+
136
+ ```json
137
+ [
138
+ {
139
+ "id": "PI-001-feature-title",
140
+ "title": "Feature Title",
141
+ "column": "planned",
142
+ "epic_group": "Phase 1",
143
+ "created": "2026-07-07",
144
+ "description": "High-level context and implementation plan.",
145
+ "specs": "Technical details and constraints.",
146
+ "acceptance_criteria": [
147
+ "First condition"
148
+ ],
149
+ "tasks": [
150
+ {
151
+ "id": "st-1",
152
+ "done": false,
153
+ "text": "First subtask",
154
+ "description": "Execution details for the subtask"
155
+ }
156
+ ]
157
+ }
158
+ ]
159
+ ```
160
+
161
+ ## MCP Task Views
162
+
163
+ `kanban_read` supports compact response shaping so agents can avoid reading the whole task every time.
164
+
165
+ ```json
166
+ {
167
+ "operation": "show",
168
+ "task_id": "PI-001-feature-title",
169
+ "view": "planning"
170
+ }
171
+ ```
172
+
173
+ Supported views:
174
+
175
+ - `summary` - `id`, `title`, `column`, `epic_group`, `created`, `progress`
176
+ - `planning` - summary + `description`, `specs`, `acceptance_criteria`
177
+ - `execution` - planning + `subtasks`
178
+ - `full` - execution + `notes`
179
+
180
+ You can also request explicit fields:
181
+
182
+ ```json
183
+ {
184
+ "operation": "show",
185
+ "task_id": "PI-001-feature-title",
186
+ "fields": ["title", "description", "acceptance_criteria"]
187
+ }
188
+ ```
189
+
190
+ `kanban_update` supports patch-style updates and compact responses:
191
+
192
+ ```json
193
+ {
194
+ "operation": "update",
195
+ "task_id": "PI-001-feature-title",
196
+ "patch": {
197
+ "description": "Updated plan",
198
+ "acceptance_criteria": ["OAuth works"]
199
+ },
200
+ "return": "summary"
201
+ }
202
+ ```
203
+
204
+ Errors are returned as structured JSON:
205
+
206
+ ```json
207
+ {
208
+ "error": {
209
+ "code": "TASK_NOT_FOUND",
210
+ "message": "Task PI-999-missing was not found",
211
+ "hint": "Call kanban_read with operation=list to discover valid task ids",
212
+ "details": {
213
+ "task_id": "PI-999-missing"
214
+ },
215
+ "retryable": false
216
+ }
217
+ }
218
+ ```
219
+
220
+ ## Web GUI
221
+
222
+ Start the web interface:
223
+ ```bash
224
+ kanban serve 5500
225
+ ```
226
+
227
+ Features:
228
+ - Swimlanes grouped by epic
229
+ - Drag-and-drop between columns
230
+ - Inline editing
231
+ - Real-time subtask checkboxes
232
+ - Progress tracking
233
+
234
+ ## Directory Structure
235
+
236
+ ```
237
+ backlog/
238
+ ├── active/ # Tasks in progress
239
+ ├── planned/ # Planned tasks
240
+ ├── icebox/ # Frozen tasks
241
+ └── done/ # Completed tasks
242
+ ```
243
+
244
+ ## API for AI Agents
245
+
246
+ See [API.md](API.md) for detailed API function definitions.
247
+
248
+ ## MCP Server
249
+
250
+ This package includes a Model Context Protocol (MCP) server for integration with MCP-compatible clients.
251
+
252
+ ### Using the MCP server
253
+
254
+ ```bash
255
+ # Run the MCP server directly
256
+ npm run mcp
257
+
258
+ # Or using npx
259
+ npx kanbango mcp
260
+ ```
261
+
262
+ ### MCP Configuration
263
+
264
+ For MCP clients, add this to your configuration:
265
+
266
+ ```json
267
+ {
268
+ "mcpServers": {
269
+ "kanbango": {
270
+ "command": "npx",
271
+ "args": ["kanbango", "mcp"]
272
+ }
273
+ }
274
+ }
275
+ ```
276
+
277
+ ### MCP Per Project (Recommended)
278
+
279
+ Install locally in the project so each repo controls its own MCP version:
280
+
281
+ ```bash
282
+ npm install -D kanbango
283
+ ```
284
+
285
+ Then point MCP to the local package:
286
+
287
+ ```json
288
+ {
289
+ "mcpServers": {
290
+ "kanbango": {
291
+ "command": "node",
292
+ "args": ["./node_modules/kanbango/mcp-server.js"]
293
+ }
294
+ }
295
+ }
296
+ ```
297
+
298
+ If you prefer `npx`, you can still use it, but versioning is less explicit:
299
+
300
+ ```json
301
+ {
302
+ "mcpServers": {
303
+ "kanbango": {
304
+ "command": "npx",
305
+ "args": ["kanbango", "mcp"]
306
+ }
307
+ }
308
+ }
309
+ ```
310
+
311
+ ### MCP Project Automation (Claude Code + OpenCode)
312
+
313
+ Generate project configs automatically (creates `.mcp.json` and `opencode.json` in the current folder):
314
+
315
+ ```bash
316
+ # Local install (recommended)
317
+ npx kanbango mcp-init
318
+
319
+ # Use npx-based command in configs
320
+ npx kanbango mcp-init --npx
321
+
322
+ # Only Claude Code config
323
+ npx kanbango mcp-init --claude
324
+
325
+ # Only OpenCode config
326
+ npx kanbango mcp-init --opencode
327
+
328
+ # Overwrite existing files
329
+ npx kanbango mcp-init --force
330
+ ```
331
+
332
+ ### Available MCP Tools
333
+
334
+ - `kanban_read` - Read tasks (list all, filter, or get specific task details)
335
+ - `kanban_create` - Create a new task
336
+ - `kanban_update` - Update tasks (move, toggle subtask, or edit details)
337
+ - `kanban_gui_start` - Start the web GUI server (returns URL)
338
+ - `kanban_gui_stop` - Stop the web GUI server
339
+ - `kanban_gui_status` - Check GUI server status
340
+
341
+ ## Development
342
+
343
+ ```bash
344
+ # Install dependencies
345
+ npm install
346
+
347
+ # Run tests
348
+ npm test
349
+
350
+ # Build (if needed)
351
+ npm run build
352
+ ```
353
+
354
+ ## License
355
+
356
+ MIT
357
+
358
+ ## Contributing
359
+
360
+ Contributions are welcome! Please feel free to submit a Pull Request.
@@ -0,0 +1,40 @@
1
+ #!/usr/bin/env node
2
+ const { spawn } = require('child_process');
3
+ const path = require('path');
4
+ const os = require('os');
5
+
6
+ // Find Python executable
7
+ function findPython() {
8
+ const pyCommands = os.platform() === 'win32' ? ['python', 'py'] : ['python3', 'python'];
9
+
10
+ for (const cmd of pyCommands) {
11
+ try {
12
+ const result = require('child_process').spawnSync(cmd, ['--version'], { stdio: 'ignore' });
13
+ if (result.status === 0) {
14
+ return cmd;
15
+ }
16
+ } catch (e) {
17
+ continue;
18
+ }
19
+ }
20
+ throw new Error('Python not found. Please install Python 3.7+');
21
+ }
22
+
23
+ // Main execution
24
+ const python = findPython();
25
+ const scriptPath = path.join(__dirname, '..', 'kanban-cmd.py');
26
+ const args = process.argv.slice(2);
27
+
28
+ const child = spawn(python, [scriptPath, ...args], {
29
+ stdio: 'inherit',
30
+ env: { ...process.env }
31
+ });
32
+
33
+ child.on('exit', (code) => {
34
+ process.exit(code || 0);
35
+ });
36
+
37
+ child.on('error', (err) => {
38
+ console.error('Error running kanban-cmd.py:', err.message);
39
+ process.exit(1);
40
+ });