claude-plugin-viban 1.3.12 → 1.3.14

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