claude-plugin-viban 1.3.11 → 1.3.13

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.
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "viban",
3
- "version": "1.3.11",
3
+ "version": "1.3.13",
4
4
  "description": "Terminal Kanban TUI for AI-human collaborative issue tracking",
5
5
  "author": {
6
6
  "name": "happy-nut"
package/README.md CHANGED
@@ -1,321 +1,286 @@
1
1
  # viban
2
2
 
3
- **Vi**sual Kan**ban** - A simple, lightweight local Kanban board for AI-human collaborative issue tracking.
3
+ **Vi**sual Kan**ban** Issue tracking designed for AI agents.
4
4
 
5
5
  [![CI](https://github.com/happy-nut/claude-plugin-viban/actions/workflows/ci.yml/badge.svg)](https://github.com/happy-nut/claude-plugin-viban/actions/workflows/ci.yml)
6
6
  [![npm version](https://badge.fury.io/js/claude-plugin-viban.svg)](https://www.npmjs.com/package/claude-plugin-viban)
7
7
  [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
8
8
 
9
- ![viban screenshot](assets/screenshot.png)
9
+ ![viban](assets/viban.png)
10
10
 
11
- ## Why viban?
12
-
13
- - **No Worktree Complexity** - Just a single JSON file. No git worktrees, no complex setup.
14
- - **Lightweight & Fast** - Pure shell script with minimal dependencies. Starts instantly.
15
- - **Local First** - Your issues stay in your repo. No external services or accounts needed.
16
- - **AI-Native** - Built for Claude Code integration from the ground up.
11
+ Register bugs. Claude picks them up, resolves them, and creates PRs — while you keep finding the next issue.
17
12
 
18
- ## Recommended Workflow
13
+ ```bash
14
+ # You find a bug and register it
15
+ /viban:add "Login fails after password reset"
19
16
 
20
- The most effective way to use viban is with **multiple terminal sessions**:
17
+ # Claude assigns itself the top-priority issue and starts working
18
+ /viban:assign
21
19
 
20
+ # Or resolve 3 issues in parallel — each in its own git worktree
21
+ /viban:parallel-assign 3
22
22
  ```
23
- ┌───────────────────┐ ┌───────────────────┐ ┌───────────────────┐
24
- │ Session 1 │ │ Session 2 │ │ Session 3 │
25
- │ │ │ │ │ │
26
- │ Product QA │ │ Issue Work │ │ viban TUI │
27
- │ + /viban:add │ │ + /viban:assign │ │ │
28
- │ │ │ │ │ (always open) │
29
- │ Find bugs, │ │ Pick & resolve │ │ Monitor board │
30
- │ register issues │ │ issues │ │ in real-time │
31
- └───────────────────┘ └───────────────────┘ └───────────────────┘
32
- ```
33
-
34
- - **Session 1**: QA your product, find issues, run `/viban:add` to register them
35
- - **Session 2**: Run `/viban:assign` to pick the next issue and resolve it
36
- - **Session 3**: Keep `viban` TUI open to monitor the board
37
-
38
- This separation keeps your workflow clean and prevents context switching.
39
-
40
- ## Features
41
23
 
42
- - **4-Column Kanban Board**: `backlog` → `in_progress` → `review` → `done`
43
- - **Priority Levels**: P0 (critical) to P3 (low priority)
44
- - **Type Tags**: bug, feat, chore, refactor
45
- - **TUI Navigation**: Interactive terminal UI with gum
46
- - **Parallel Sessions**: Multiple Claude Code sessions can work simultaneously
47
- - **Session Assignment**: Prevents duplicate work across parallel agents
48
- - **Claude Code Integration**: Built-in commands for automated issue resolution
49
-
50
- ## Requirements
24
+ ## Why viban?
51
25
 
52
- - zsh
53
- - python3 (macOS/Linux built-in)
54
- - [gum](https://github.com/charmbracelet/gum)
55
- - [jq](https://jqlang.github.io/jq/)
56
- - [gh](https://cli.github.com/) (optional, for GitHub Issues sync)
26
+ GitHub Issues, Linear, and Jira are built for humans coordinating with humans. viban is built for **humans coordinating with AI agents**.
57
27
 
58
- > **Tip:** If using Claude Code, run `/viban:setup` to install all dependencies automatically.
28
+ | | Traditional trackers | viban |
29
+ |---|---|---|
30
+ | **Who resolves issues?** | Human developers | AI agents (Claude Code) |
31
+ | **Parallel work** | Manual branch management | Isolated worktrees, zero conflicts |
32
+ | **Where it lives** | External SaaS | Your repo (single JSON file) |
33
+ | **Setup** | Accounts, permissions, integrations | `npm install -g claude-plugin-viban` |
34
+ | **Context switching** | Browser ↔ terminal | Everything in terminal |
35
+ | **Already using GitHub Issues?** | — | Two-way sync included |
59
36
 
60
- ## Installation
37
+ ## Quick Start
61
38
 
62
39
  ### For Claude Code Users
63
40
 
64
41
  ```bash
65
- /plugin marketplace add https://github.com/happy-nut/claude-plugin-viban
66
- /plugin install viban
67
- /viban:setup # Installs all dependencies automatically
42
+ /install claude-plugin-viban
43
+ /viban:setup
68
44
  ```
69
45
 
70
46
  ### For Terminal Users
71
47
 
72
- ```bash
73
- curl -fsSL https://raw.githubusercontent.com/happy-nut/claude-plugin-viban/main/install.sh | bash
74
- ```
75
-
76
- Or via npm (requires zsh, gum, jq pre-installed):
77
48
  ```bash
78
49
  npm install -g claude-plugin-viban
79
50
  ```
80
51
 
81
- <details>
82
- <summary>Troubleshooting: viban command not found</summary>
83
-
84
- Add npm global bin to your PATH:
85
- ```bash
86
- # For zsh
87
- echo 'export PATH="$PATH:$(npm config get prefix)/bin"' >> ~/.zshrc && source ~/.zshrc
88
-
89
- # For bash
90
- echo 'export PATH="$PATH:$(npm config get prefix)/bin"' >> ~/.bashrc && source ~/.bashrc
91
- ```
92
- </details>
93
-
94
- ## Usage
95
-
96
- ### TUI (Interactive Mode)
52
+ Then start tracking:
97
53
 
98
54
  ```bash
99
- viban # Launch TUI
55
+ viban add "Fix login error" "Users cannot login after password reset" P1 bug
56
+ viban add "Add dark mode" P2 feat
57
+ viban # Open TUI board
100
58
  ```
101
59
 
102
- **Navigation:**
60
+ ## How It Works
103
61
 
104
- | Level | Screen | Controls |
105
- |-------|--------|----------|
106
- | 1 | Column List | ↑↓ select, Enter to enter |
107
- | 2 | Card List | ↑↓ select, Enter for details, `a` to add |
108
- | 3 | Card Details | Change status, delete |
62
+ ### Sequential Mode
109
63
 
110
- **TUI Features:**
111
- - Navigate between backlog, in_progress, review, done columns
112
- - View issue cards with priority and type badges
113
- - Create new issues with rich descriptions
114
- - Move issues between statuses
115
- - Delete issues
64
+ Run multiple terminal sessions — one for QA, one for resolution, one for monitoring:
116
65
 
117
- ### CLI Commands
66
+ ![recommended workflow](assets/screenshot.png)
118
67
 
119
- ```bash
120
- viban list # Display kanban board
121
- viban add "Title" ["Desc"] [P0-P3] [type] [files...] # Create new issue
122
- viban attach <id> <file1> [file2...] # Attach files to issue
123
- viban priority <id> <P0-P3> # Set priority
124
- viban assign [session-id] # Assign top backlog issue
125
- viban review [id] # Move issue to review
126
- viban done <id> # Complete & remove
127
- viban edit <id> # Edit issue in editor
128
- viban get <id> # Get issue details (JSON)
129
- viban sync # Sync with external tracker
130
- viban migrate # Migrate: extract type from title
131
- viban update # Update to latest version
132
- viban help # Show help message
68
+ ```
69
+ ┌───────────────────┐ ┌───────────────────┐ ┌───────────────────┐
70
+ │ Session 1 │ │ Session 2 │ │ Session 3 │
71
+ │ │ │ │ │ │
72
+ │ Product QA │ │ Issue Work │ │ viban TUI │
73
+ │ + /viban:add │ │ + /viban:assign │ │ │
74
+ │ │ │ │ │ (always open) │
75
+ │ Find bugs, │ │ Pick & resolve │ │ Monitor board │
76
+ │ register issues │ │ issues │ │ in real-time │
77
+ └───────────────────┘ └───────────────────┘ └───────────────────┘
133
78
  ```
134
79
 
135
- **Examples:**
136
-
137
- ```bash
138
- # Add a high-priority bug
139
- viban add "Fix login error" "Users cannot login after password reset" P1 bug
140
-
141
- # Add an issue with file attachments
142
- viban add "Refactor auth" "Simplify login flow" P2 refactor src/auth.ts src/login.ts
143
-
144
- # List all issues
145
- viban list
146
-
147
- # Assign first backlog issue to current session
148
- viban assign
149
-
150
- # Change priority of issue #3
151
- viban priority 3 P1
80
+ ### Parallel Mode
152
81
 
153
- # Mark issue #5 as done
154
- viban done 5
82
+ Resolve multiple issues at once with `/viban:parallel-assign`:
155
83
 
156
- # Get issue details as JSON
157
- viban get 3
84
+ ```
85
+ ┌───────────────────┐
86
+ │ Coordinator │ /viban:parallel-assign 3
87
+ │ │
88
+ │ Assigns issues, │──┬──────────────────────────────────────┐
89
+ │ creates worktrees│ │ │
90
+ │ collects results │ ▼ ▼ ▼
91
+ │ │ ┌──────────┐ ┌──────────┐ ┌──────────┐
92
+ │ │ │ Agent 1 │ │ Agent 2 │ │ Agent 3 │
93
+ │ │ │ wt/#12 │ │ wt/#13 │ │ wt/#14 │
94
+ │ │ │ Analyze │ │ Analyze │ │ Analyze │
95
+ │ │ │ Implement│ │ Implement│ │ Implement│
96
+ │ │ │ Commit │ │ Commit │ │ Commit │
97
+ │ Push, create PRs │ └──────────┘ └──────────┘ └──────────┘
98
+ │ Run tests, report│
99
+ └───────────────────┘
158
100
  ```
159
101
 
160
- ### Claude Code Integration
161
-
162
- viban provides skills and commands for automated issue management in Claude Code:
102
+ - Each agent works in an isolated git worktree (`.viban/worktrees/{ID}`)
103
+ - Zero interference between agents — no merge conflicts
104
+ - Coordinator pushes branches, creates PRs, and runs tests after all agents finish
163
105
 
164
- #### `/viban:add` - Register structured issue
106
+ ## Claude Code Skills
165
107
 
166
- Analyzes a problem and creates a properly structured viban issue:
108
+ These are the core AI-agent commands. Each one is a Claude Code slash command.
167
109
 
168
- 1. Clarifies the problem if vague
169
- 2. Infers priority and type from description
170
- 3. Registers with proper title, description, priority, type
171
- 4. Optionally enters plan mode to design a solution
110
+ ### `/viban:add` Register an issue
172
111
 
173
- **Use cases:**
174
- - Bug reporting
175
- - Feature requests
176
- - Converting free-form descriptions to structured issues
112
+ Analyzes your description and creates a structured issue with proper priority, type, and description.
177
113
 
178
- #### `/viban:assign` - Assign next backlog issue
114
+ ```
115
+ /viban:add "Search is broken on mobile"
116
+ → Infers: P1 bug, enriches description, registers to backlog
117
+ ```
179
118
 
180
- Picks the highest priority backlog issue and assigns it to the current session:
119
+ ### `/viban:assign` Assign and resolve
181
120
 
182
- 1. Assigns top backlog issue
183
- 2. Evaluates description clarity
184
- 3. If unclear, interviews user and enriches the issue description
121
+ Picks the highest-priority unblocked backlog issue, assigns it, and follows your project's workflow to resolve it.
185
122
 
186
- This command is **assignment only** - it does not start implementation. Use your project's workflow (`.viban/workflow.md`) to define what happens next.
123
+ ```
124
+ /viban:assign
125
+ → Picks #7 (P0 bug), analyzes code, implements fix, creates PR
126
+ ```
187
127
 
188
- #### `/viban:parallel-assign` - Parallel resolution with worktrees
128
+ ### `/viban:parallel-assign` Parallel resolution
189
129
 
190
- Resolves multiple backlog issues simultaneously using isolated git worktrees:
130
+ Assigns N issues (default 3, max 5) and spawns one agent per issue in isolated git worktrees.
191
131
 
192
- 1. Assigns N issues (default: 3, max: 5) and creates worktrees
193
- 2. Spawns one opus agent per issue in its own worktree
194
- 3. Each agent analyzes, implements, commits, and creates a PR
195
- 4. Coordinator collects results, runs tests, and cleans up
132
+ ```
133
+ /viban:parallel-assign 3
134
+ Assigns #8, #9, #10 three agents work simultaneously
135
+ Each commits on its own branch, coordinator creates PRs
136
+ ```
196
137
 
197
- **Use cases:**
198
- - Batch processing a backlog
199
- - Parallel agent workflows with zero interference
200
- - Rapid issue throughput
138
+ ### `/viban:setup` — Install and configure
201
139
 
202
- #### `/viban:setup` - Install & configure
140
+ Installs dependencies, detects your project conventions, and generates a workflow file.
203
141
 
204
- Installs all dependencies and optionally configures a project workflow:
142
+ ## TUI
205
143
 
206
- 1. Detects OS and installs missing dependencies (zsh, gum, jq)
207
- 2. Installs/updates viban CLI via npm
208
- 3. Auto-detects project conventions (build/test, commit style, branch naming)
209
- 4. Interviews for workflow preferences (pipeline depth, issue numbering)
210
- 5. Generates `.viban/workflow.md` for `/viban:assign` to follow
144
+ ```bash
145
+ viban # Launch interactive board
146
+ ```
211
147
 
212
- ## External Tracker Sync
148
+ 3-column Kanban board (backlog → in_progress → review). Completed issues move to history.
213
149
 
214
- viban can sync two-way with external issue trackers. Currently supported: **GitHub Issues**.
150
+ | Level | Screen | Controls |
151
+ |-------|--------|----------|
152
+ | 1 | Column List | ↑↓ select, Enter to enter |
153
+ | 2 | Card List | ↑↓ select, Enter for details, `a` to add |
154
+ | 3 | Card Details | Change status, delete |
215
155
 
216
- ### Quick Start
156
+ ## CLI Reference
217
157
 
218
158
  ```bash
219
- # First time: initialize sync (auto-detects provider from git remote)
220
- viban sync --init
221
-
222
- # Preview what will change
223
- viban sync --dry-run
224
-
225
- # Run sync
226
- viban sync
159
+ # Board
160
+ viban list # Show board
161
+ viban list --status backlog --priority P0,P1 # Filter
162
+ viban list --type bug --search "auth" # Search
163
+ viban history # Completed issues
164
+ viban stats # Throughput metrics
165
+ viban export [md|html] # Export board
166
+
167
+ # Issues
168
+ viban add "Title" ["Desc"] [P0-P3] [type] [--parent <id>]
169
+ viban edit <id> # Edit in editor
170
+ viban get <id> # JSON details
171
+ viban priority <id> <P0-P3>
172
+ viban comment <id> "msg"
173
+ viban attach <id> <file1> [file2...]
174
+
175
+ # Workflow
176
+ viban assign # Assign top backlog
177
+ viban review [id] # → review
178
+ viban move <id> <status> # → any status
179
+ viban done <id> [--purge] [--dry-run] # → done
180
+
181
+ # Dependencies
182
+ viban link <id> blocks <id>
183
+ viban unlink <id> blocks <id> [--dry-run]
184
+
185
+ # Maintenance
186
+ viban sync # GitHub sync
187
+ viban backup / viban restore [file]
188
+ viban changelog [range]
189
+ viban update
227
190
  ```
228
191
 
229
- > **Tip:** Use `viban sync --dry-run` first to preview changes before syncing.
192
+ <details>
193
+ <summary><strong>GitHub Issues Sync</strong></summary>
230
194
 
231
- ### How It Works
195
+ Two-way sync with GitHub Issues. Comments, dependencies, and sub-tasks are synced.
232
196
 
233
- - **First sync** imports all open remote issues as backlog cards with external IDs (e.g. `github:42`)
234
- - **Subsequent syncs** pull remote changes and push local status updates
235
- - **New local cards** are NOT pushed unless `--push-new` is specified (local-first default)
236
- - **Conflicts** (both sides changed) resolve to remote-wins by default
197
+ ```bash
198
+ viban sync --init # Initialize (auto-detects from git remote)
199
+ viban sync --dry-run # Preview changes
200
+ viban sync # Pull + push
201
+ viban sync --push-new # Push local-only issues to GitHub
202
+ ```
237
203
 
238
- ### Status-to-Label Mapping
204
+ **Status mapping:**
239
205
 
240
- | viban status | GitHub label |
241
- |-------------|-------------|
206
+ | viban | GitHub |
207
+ |-------|--------|
242
208
  | `backlog` | *(no label)* |
243
209
  | `in_progress` | `in-progress` |
244
210
  | `review` | `review` |
245
211
  | `done` | *(issue closed)* |
246
212
 
247
- ### Requirements
213
+ Requires [gh CLI](https://cli.github.com/) authenticated with `gh auth login`.
248
214
 
249
- - [gh CLI](https://cli.github.com/) installed and authenticated (`gh auth login`)
250
- - Repository must have a GitHub remote
251
-
252
- ## Configuration
253
-
254
- ### Data Location (viban.json)
255
-
256
- viban stores issues in `viban.json` with the following priority:
215
+ </details>
257
216
 
258
- | Priority | Location | When Used |
259
- |----------|----------|-----------|
260
- | 1 | `$VIBAN_DATA_DIR` | Explicit override via environment variable |
261
- | 2 | `.viban/` | Default (all projects) |
217
+ <details>
218
+ <summary><strong>Issue Templates</strong></summary>
262
219
 
263
- **Auto-Migration:** If viban detects `viban.json` or `sync.json` in `.git/` (legacy location), it automatically moves them to `.viban/`.
220
+ Create `.viban/templates.json` to define defaults per issue type:
264
221
 
265
- **For Any Project:**
266
- ```bash
267
- # viban will automatically create .viban/viban.json in current directory
268
- cd /path/to/project
269
- viban add "First issue" "Description" P2 feat
270
- # Creates: /path/to/non-git-project/.viban/viban.json
222
+ ```json
223
+ {
224
+ "bug": {
225
+ "priority": "P1",
226
+ "description": "## Bug Report\n\n**Steps to reproduce:**\n\n**Expected:**\n\n**Actual:**"
227
+ },
228
+ "feat": {
229
+ "priority": "P2",
230
+ "description": "## Feature\n\n**User story:**\n\n**Acceptance criteria:**"
231
+ }
232
+ }
271
233
  ```
272
234
 
273
- **Custom Data Directory:**
274
- ```bash
275
- export VIBAN_DATA_DIR="/path/to/shared/data"
276
- viban list # Uses /path/to/shared/data/viban.json
277
- ```
235
+ Unset fields are filled from the template when the type matches.
278
236
 
279
- ### Auto-Initialization
237
+ </details>
280
238
 
281
- viban automatically initializes when first used:
282
- - Creates data directory if not exists
283
- - Creates `viban.json` with empty issue list
284
- - No manual setup required
239
+ <details>
240
+ <summary><strong>Configuration</strong></summary>
285
241
 
286
- ### Issue Status Flow
242
+ ### Data Location
287
243
 
288
- ```
289
- backlog → in_progress → review → done
290
- ↑ ↑
291
- (assign) (complete)
292
- ```
244
+ | Priority | Location | When |
245
+ |----------|----------|------|
246
+ | 1 | `$VIBAN_DATA_DIR` | Explicit override |
247
+ | 2 | `.viban/` | Default |
248
+
249
+ Auto-migrates from legacy `.git/` location.
293
250
 
294
251
  ### Priority Levels
295
252
 
296
253
  | Priority | Description |
297
254
  |----------|-------------|
298
- | **P0** | Critical - blocks all work |
299
- | **P1** | High - must do soon |
300
- | **P2** | Medium - normal priority |
301
- | **P3** | Low - nice to have |
255
+ | **P0** | Critical blocks all work |
256
+ | **P1** | High must do soon |
257
+ | **P2** | Medium normal priority |
258
+ | **P3** | Low nice to have |
302
259
 
303
260
  ### Type Tags
304
261
 
305
- | Type | Use Case |
306
- |------|----------|
307
- | **bug** | Fixing broken functionality |
308
- | **feat** | New feature or enhancement |
309
- | **refactor** | Code restructuring |
310
- | **chore** | Maintenance tasks |
262
+ `bug` · `feat` · `refactor` · `chore`
263
+
264
+ ### Status Flow
265
+
266
+ ```
267
+ backlog in_progress review → done
268
+ ↑ ↑ │
269
+ └───────────┴───────────┘
270
+ (viban move)
271
+ ```
272
+
273
+ </details>
311
274
 
312
- ## Data Structure
275
+ <details>
276
+ <summary><strong>Data Structure</strong></summary>
313
277
 
314
- Issues are stored in `viban.json`:
278
+ Issues are stored in `.viban/viban.json`:
315
279
 
316
280
  ```json
317
281
  {
318
- "version": 1,
282
+ "version": 2,
283
+ "next_id": 4,
319
284
  "issues": [
320
285
  {
321
286
  "id": 1,
@@ -325,115 +290,49 @@ Issues are stored in `viban.json`:
325
290
  "priority": "P1",
326
291
  "type": "bug",
327
292
  "assigned_to": "session-abc123",
328
- "created_at": "2025-01-23T10:00:00Z",
329
- "updated_at": "2025-01-23T14:30:00Z"
293
+ "parent_id": null,
294
+ "blocked_by": [3],
295
+ "comments": [
296
+ {"text": "Root cause found", "created_at": "2026-01-23T14:00:00Z"}
297
+ ],
298
+ "attachments": [],
299
+ "created_at": "2026-01-23T10:00:00Z",
300
+ "updated_at": "2026-01-23T14:30:00Z"
330
301
  }
331
302
  ]
332
303
  }
333
304
  ```
334
305
 
335
- ## Parallel Session Handling
336
-
337
- Multiple Claude Code sessions can work simultaneously:
338
-
339
- 1. Each session calls `/viban:assign`
340
- 2. Session ID is recorded in `assigned_to` field
341
- 3. Other sessions skip already-assigned issues
342
- 4. Completion moves issue to `review` or `done`
343
-
344
- This prevents duplicate work and enables parallel agent workflows.
306
+ </details>
345
307
 
346
- ## File Structure
308
+ ## Requirements
347
309
 
348
- ```
349
- claude-plugin-viban/
350
- ├── .claude-plugin/
351
- │ └── plugin.json # Plugin metadata
352
- ├── .github/
353
- │ └── workflows/
354
- │ ├── ci.yml # CI testing
355
- │ └── release.yml # NPM publishing
356
- ├── bin/
357
- │ └── viban # Main TUI/CLI script
358
- ├── commands/
359
- │ ├── add.md # /viban:add command
360
- │ ├── assign.md # /viban:assign command
361
- │ ├── parallel-assign.md # /viban:parallel-assign command
362
- │ └── setup.md # /viban:setup command
363
- ├── docs/
364
- │ ├── CLAUDE.md # Claude Code integration guide
365
- │ └── release.md # Release workflow
366
- ├── scripts/
367
- │ ├── check-deps.sh # Dependency checker
368
- │ ├── generate-release-notes.sh # Release notes generator
369
- │ ├── sync.sh # Core sync engine (provider-agnostic)
370
- │ ├── sync_create.sh # Sync initialization
371
- │ ├── providers/
372
- │ │ └── github.sh # GitHub Issues provider
373
- │ └── tui_coprocess.py # Persistent Python coprocess for TUI rendering
374
- ├── skills/
375
- │ ├── add/SKILL.md # /viban:add skill
376
- │ ├── assign/SKILL.md # /viban:assign skill
377
- │ ├── parallel-assign/SKILL.md # /viban:parallel-assign skill
378
- │ └── setup/SKILL.md # /viban:setup skill
379
- ├── tests/
380
- │ ├── run_all.zsh # Test runner
381
- │ ├── test_cmd_add.zsh # Add command tests
382
- │ ├── test_coprocess.zsh # Python coprocess tests
383
- │ ├── test_install.zsh # Installation tests
384
- │ ├── test_layout.zsh # TUI layout tests
385
- │ ├── test_pad_width.zsh # Unicode width tests
386
- │ ├── test_sort_order.zsh # Sort order tests
387
- │ ├── test_sync.zsh # Sync engine tests
388
- │ └── test_sync_auto.zsh # Auto-sync tests
389
- ├── LICENSE # MIT License
390
- ├── package.json # NPM package config
391
- └── README.md # This file
392
- ```
310
+ - zsh
311
+ - python3 (macOS/Linux built-in)
312
+ - [gum](https://github.com/charmbracelet/gum)
313
+ - [jq](https://jqlang.github.io/jq/)
314
+ - [gh](https://cli.github.com/) (optional, for GitHub sync)
393
315
 
394
316
  ## Development
395
317
 
396
- ### Running Tests
397
-
398
318
  ```bash
399
- # Install dependencies
400
319
  brew install gum jq
401
-
402
- # Run the full test suite (8 suites, 39 tests)
403
- zsh tests/run_all.zsh
320
+ zsh tests/run_all.zsh # 19 suites, 212 tests
404
321
  ```
405
322
 
406
- ### Publishing
407
-
408
- See [docs/release.md](docs/release.md) for the full release workflow.
409
-
410
- ```bash
411
- # GitHub Actions will automatically publish to npm on tag push
412
- ```
323
+ See [docs/release.md](docs/release.md) for publishing.
413
324
 
414
325
  ## Contributing
415
326
 
416
- Contributions are welcome! Please:
417
-
418
327
  1. Fork the repository
419
- 2. Create a feature branch (`git checkout -b feature/amazing-feature`)
420
- 3. Commit your changes (`git commit -m 'Add amazing feature'`)
421
- 4. Push to the branch (`git push origin feature/amazing-feature`)
422
- 5. Open a Pull Request
328
+ 2. Create a feature branch
329
+ 3. Commit your changes
330
+ 4. Open a Pull Request
423
331
 
424
332
  ## License
425
333
 
426
- MIT License - see [LICENSE](LICENSE) file for details.
427
-
428
- ## Author
429
-
430
- **happy-nut**
431
-
432
- - GitHub: [@happy-nut](https://github.com/happy-nut)
433
- - Repository: [claude-plugin-viban](https://github.com/happy-nut/claude-plugin-viban)
334
+ MIT see [LICENSE](LICENSE).
434
335
 
435
336
  ## Links
436
337
 
437
- - [npm package](https://www.npmjs.com/package/claude-plugin-viban)
438
- - [Documentation](https://github.com/happy-nut/claude-plugin-viban/tree/main/docs)
439
- - [Issues](https://github.com/happy-nut/claude-plugin-viban/issues)
338
+ - [npm](https://www.npmjs.com/package/claude-plugin-viban) · [Issues](https://github.com/happy-nut/claude-plugin-viban/issues) · [Docs](https://github.com/happy-nut/claude-plugin-viban/tree/main/docs)
Binary file